Добавлен N1ghtSiren
Есть задача - при касте "перевоплощения" давать юниту абилку на время перевоплощения, и когда оно закончится, забирать её назад.
function Trig_castadd_Conditions takes nothing returns boolean
if GetAbilityName(GetSpellAbilityId()) == "Перевоплощение Нах" then
return true
endif
return false
endfunction
function tt2 takes timer t, unit u returns nothing
//takes timer t, unit u равно или не равно
//local timer t = CreateTimer()
//local unit u
call DestroyTimer(t)
call UnitRemoveAbility(u, 'A000')
set u = null
endfunction
function Trig_castadd_Actions takes nothing returns nothing
local timer t = CreateTimer()
local unit u = GetTriggerUnit()
call UnitAddAbility(u,'A000')
call TimerStart(t , 60 , false , function tt2(t,u))
set u = null
endfunction
//===========================================================================
function InitTrig_castadd takes nothing returns nothing
set gg_trg_castadd = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_castadd, EVENT_PLAYER_UNIT_SPELL_FINISH )
call TriggerAddCondition( gg_trg_castadd, Condition( function Trig_castadd_Conditions ) )
call TriggerAddAction( gg_trg_castadd, function Trig_castadd_Actions )
endfunction
Компилятор ругается на эту строку:
call TimerStart(t , 60 , false , function tt2(t,u))
//Строка 50: Отсутствует символ '//
Использую шарпкрафт, ибо ни одна из версий JPNG не хочет работать
Итак - вопрос
Как переносить данные с триггера на триггер, не используя глобалки.
Насколько я понял, код,
Итак - вопрос
Как переносить данные с триггера на триггер, не используя глобалки.
Насколько я понял, код,
call TimerStart(udg_t , 60 , false , function tt2(udg_t,u))
использованный через глобалку, забивает её на 60 секунд.
т.е при её изменении, действия уже не будет (Поправьте меня)
Как синхронизировать глобальные таймеры (по массиву) в пределах двух-пяти функций, используя локальный i для переноса хендла? (От чего брать хендл в текущей ситуации)
т.е при её изменении, действия уже не будет (Поправьте меня)
Как синхронизировать глобальные таймеры (по массиву) в пределах двух-пяти функций, используя локальный i для переноса хендла? (От чего брать хендл в текущей ситуации)
Принятый ответ
Функции, исполняемые при тиках таймеров не должны принимать параметров. Для передачи данных нужно пользоватся хеш-таблицами.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. N1ghtSiren
Будет ли первая функция будет автоматом создавать локалки, в виде таймера t, юнита u и брать значения с её вызова?
call TimerStart(t,60,false, function tt(t,GetTriggerUnit())
т.е. синхронизировать таймер с вызова и свой только что созданный (или не созданный) таймер?
Ред. Raised