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

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

Ответ
 
reALien

offline
Опыт: 29,211
Активность:
Проблема с отдачей приказа
Писал тут одну вещь и на толкнулся на странную проблему
» код
void IAActions(){
    unit o = GetOrderedUnit()
    integer i = GetPlayerId(GetOwningPlayer(o))
    if(GetOrderTarget() == null){
        udg_InstantAttackX[i] = GetOrderPointX()
        udg_InstantAttackY[i] = GetOrderPointY()
    }else{
        unit u = GetOrderTargetUnit()
        udg_InstantAttackX[i] = GetUnitX(u)
        udg_InstantAttackY[i] = GetUnitY(u)
        u = null
    }
    IssueImmediateOrder(o, "stop")
}

void InitTrig_InstantAttack(){
    gg_trg_InstantAttack = CreateTrigger()
    TriggerAddAction(gg_trg_InstantAttack, function IAActions)
    int IATICounter = 0
    whilenot(IATICounter == 11){
        if(GetPlayerController(Player(IATICounter)) == MAP_CONTROL_USER){
            TriggerRegisterPlayerUnitEvent(gg_trg_InstantAttack, Player(IATICounter), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
            TriggerRegisterPlayerUnitEvent(gg_trg_InstantAttack, Player(IATICounter), EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, null)
        }
        IATICounter ++
    }
}
вся загвоздка в том, что не выполняется функция
IssueImmediateOrder(o, "stop")
причем, я уже с помощью дебагмесседжей выяснил, что все кроме нее работает и в переменной o записан существующий юнит.
Не могу понять, в чем дело=(
Старый 17.08.2010, 18:33
Doc

offline
Опыт: 63,163
Активность:
unit tmp 

tmp = o
TimerStart(CreateTimer(), 0.0, false, lambda void() {
DestroyTimer(GetExpiredTimer())
IssueImmediateOrderById(tmp, OrderId("stop"))
});
Сделай так, же.
Старый 17.08.2010, 18:54
reALien

offline
Опыт: 29,211
Активность:
Спасибо, я кажется понял в чем дело - там событием в триггере стоит тоже получение приказа и новый приказ конфликтует со старым.
reALien добавил:
В результате нужно просто давать его не сразу, а через время
Старый 17.08.2010, 19:21
ScorpioT1000
Работаем
offline
Опыт: отключен
GetTriggerUnit()
ScorpioT1000 добавил:
юзай либу IFDEBUG, вставляй везде IFDEBUG(o==null || u==null, )
Старый 17.08.2010, 19:23
Ответ

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

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

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

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



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