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

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

Ответ
 
BesitzeRuf

offline
Опыт: 560
Активность:
Два события в одном триге
Помогите написать такой триггер ....гер кастует заклинание (канальное , то есть пока кастует, он стоит...).. так вот.. скастовал. триггер запустился... и вот в нем надо отловить событие, если юнит прервал заклинание или оно само прекратилось или его кто застанил, и оно о пять прекратилось... думаю так понятно что я хочу???
Отлов события в триггере
Старый 21.05.2010, 23:51
Doc

offline
Опыт: 63,163
Активность:
Это 3 события. Если подождешь до завтра то напишу, недавно делал такую штуку.
Старый 21.05.2010, 23:54
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
BesitzeRuf,
EVENT_PLAYER_UNIT_SPELL_CAST - спел кастует
EVENT_PLAYER_UNIT_SPELL_ENDCAST - спел прерван
ввиде
function A takes nothing returns nothing
if GetTriggerEventId() == EVENT_PLAYER_UNIT_SPELL_CAST then
//делай нужное
else
//делай нужное при сбросе канала
endif
endfunction

function Init takes nothing returns nothing
local trigger tr=CreateTrigger()
TriggerRegisterAnyUnitEventBJ(tr, EVENT_PLAYER_UNIT_SPELL_CAST  )
TriggerRegisterAnyUnitEventBJ(tr, EVENT_PLAYER_UNIT_SPELL_ENDCAST  )
TriggerAddActions(tr, function A)
set tr=null
endfunction
AlexKARASb добавил:
Any ивент для примера, под каждого плеера думаю сам сможешь
AlexKARASb добавил:
Это 3 события.
почему не 2? вернее а какое третье?
Старый 22.05.2010, 00:04
BesitzeRuf

offline
Опыт: 560
Активность:
хм... интересно... Доктор, если сможешь сделать, спасибо !!!.. все проверю и сделаю что-нить ))) вот интересно у Алекса, как это работает...ну допустим я кастанул..... тригер запустился.. и там делается действие с таймером... при прекращении вызываеться опять же этот триггер (все на локалках будет ессеснно) и... как я остановлю именно этот таймер.. а если я кастану 100 раз сразу?
Старый 22.05.2010, 00:21
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
BesitzeRuf, хеш или глобалки или структуры
AlexKARASb добавил:
» testcode
scope A

private struct Data
unit u
endstruct

private function Wait takes nothing returns nothing
    timer t = GetExpiredTimer()
    Data D = LoadInteger(H, Id(t), 0)
    
endfunction 

private function Actions takes nothing returns nothing
    unit u = GetTriggerUnit()
    timer t
    Data D
    if GetTriggerEventId() == EVENT_PLAYER_UNIT_SPELL_CAST then
        t = CreateTimer()
        D = Data.create()
        SaveInteger(H, Id(t), 0, D)
        SaveTimerHandle(H, Id(u), 0, t)
        TimerStart(t, Time, false, function Wait)
    else
        t = LoadTimerHandle(H, Id(u), 0)
        PauseTimer(t)
        D = LoadInteger(H, Id(t), 0)
        D.u=null
        D.destroy()
        DestroyTimer(t)
    endif
endfunction

endscope
Старый 22.05.2010, 00:32
BesitzeRuf

offline
Опыт: 560
Активность:
если сможешь на этом пример сделать, выложи плиз...глобалки не потянут...
Старый 22.05.2010, 01:29
Doc

offline
Опыт: 63,163
Активность:
Как бы одно событие начало, второе - прерывание каста в том числе его окончание, а третье именно естесственный конец каста.
Старый 22.05.2010, 01:32
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
на этом пример сделать, выложи плиз...
уже выложено, приглядись, никаких глобалок - а хеш
DoctorGester, да ты прав я и не подумал что можно это как событие расчитывать
Старый 22.05.2010, 12:44
BesitzeRuf

offline
Опыт: 560
Активность:
DoctorGester:
Как бы одно событие начало, второе - прерывание каста в том числе его окончание, а третье именно естесственный конец каста.
Конец каста можно or приписать ко второму условию....щас пытаюсь понять, как это все работает (со структурами еще ни чего не делал...хотя теорию о них всю знаю... просто ничего еще на них не писал )))
Старый 22.05.2010, 14:11
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
пример
если ты еще что-то хочешь другое, опиши просто попонятнее
Старый 22.05.2010, 14:16
BesitzeRuf

offline
Опыт: 560
Активность:
спасибо за пример.. но я уже понял по какому принципу делать .. нужно таймер сохранять в ХТ на ид юнита, скастовавшего спел))) спасибо!!!
Старый 22.05.2010, 14:30
Ответ

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

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

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

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



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