XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Anufis

offline
Опыт: 6,290
Активность:
Отмена текущих приказов и быстрокликеры
Есть абилки, которые перехватывают контроль у игрока над персонажем над юнитом(заставляют юнита атаковать или бежать). Но если игрок начинает активно кликать не в том направлении, то юнит подтормаживает и иногда прерывается или затормаживается нужное действие. Есть ли способ решения этой проблемы? Ниже привожу кусок кода. Помимо приведенного кода ниже те же самые приказы отдаются юниту с интервалами в 0.1 секунду.

Код:
nothing UnitsInFear() {
  unit u=GetTriggerUnit()
  integer uid=GetHandleId(u)
  unit fearer=LoadUnitHandle(udg_h,uid,36)
  if GetIssuedOrderId()!=851973 && GetWidgetLife(u)>0. && GetUnitAbilityLevel(u,'BPSE')==0 then
    if LoadInteger(udg_h,uid,37)>0 and GetWidgetLife(fearer)>0. then
      real angle=AngleBetweenUnits(fearer,u)
      DisableTrigger(FearTrigger)
      IssuePointOrder(u,"move",GetUnitX(u)+70.*CosBJ(angle),GetUnitY(u)+70.*SinBJ(angle))
      EnableTrigger(FearTrigger)
    elseif LoadInteger(udg_h,uid,65)>0
      fearer=LoadUnitHandle(udg_h,uid,66)
      if LoadInteger(udg_h,uid,65)>0 and GetWidgetLife(fearer)>0. then
        DisableTrigger(FearTrigger)
        IssueTargetOrder(u,"attack",fearer)
        EnableTrigger(FearTrigger)
      endif
    elseif LoadInteger(udg_h,uid,84)>0
      fearer=GetSkillNearestAlly(GetUnitX(u),GetUnitY(u),800.,u)
      if fearer!=null then
        DisableTrigger(FearTrigger)
        IssueTargetOrder(u,"attack",fearer)
        EnableTrigger(FearTrigger)
      else
        DisableTrigger(FearTrigger)
        IssueImmediateOrder(u,"hold")
        EnableTrigger(FearTrigger)
      endif
    endif
  endif
  u=null
  fearer=null
}

    FearTrigger=CreateTrigger()
    TriggerRegisterAnyUnitEventBJ(FearTrigger,EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER)  
    TriggerRegisterAnyUnitEventBJ(FearTrigger,EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER)
    TriggerRegisterAnyUnitEventBJ(FearTrigger,EVENT_PLAYER_UNIT_ISSUED_ORDER)
    TriggerAddCondition(FearTrigger,Condition(function UnitsInFear_c))
    TriggerAddAction(FearTrigger,function UnitsInFear)
Старый 05.11.2012, 17:36
DioD

offline
Опыт: 45,134
Активность:
лочить контроль можно, используя молот бурь или любой другой стан или морфы, как именно - это эксплойт, вам необходимо отдавать приказа не когда вы хотите, а ровно в тот момент когда юнит оглушен.
Старый 05.11.2012, 17:47
Anufis

offline
Опыт: 6,290
Активность:
Цитата:
Сообщение от DioD
лочить контроль можно, используя молот бурь или любой другой стан или морфы, как именно - это эксплойт, вам необходимо отдавать приказа не когда вы хотите, а ровно в тот момент когда юнит оглушен.

Как я понял
Событие: юнит получил приказ
условие: юнит должен делать что-то другое, а не то что хотел пользователь
действие: оглушить юнита, в момент стана отдать нужный приказ
но если события происходят в такой последовательности
1. юнит замахивается на врагу
2. игрок начинает усиленно закликивать своего персонажа, чтобы тот не атаковал врага
3. юнит ловит стан от триггера
и от такого замах прекратится и начнется с нуля, разве нет? Или этот эксплойт не прервет текущего приказа?
Старый 05.11.2012, 17:52
DioD

offline
Опыт: 45,134
Активность:
зачем фантазировать? я сказал что к чему, почему бы не проверить а?
Старый 05.11.2012, 18:52
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 19:12.