Добавлен Starman2222
Можно Ли как то передать параметры локальных перемен в периодические таймеры
Принятый ответ
Хэш таблица. Удобна и практична. Кстати, не забудь создать глобальную переменную Hash, типа хэш-таблица и при инициализации карты инициализировать Hash, иначе не будет работать.
function Trig_HealImp_Timer takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer hid = GetHandleId(t)
local unit caster = LoadUnitHandle(udg_Hash, hid, 0) //Наш юнит хранится по ссылке "0", вытаскиваем его, чтобы с ним работать
local integer i = LoadInteger(udg_Hash, hid, 1) //Счетчик
local real hp1 = GetUnitState(caster, ConvertUnitState(0)) //текущее здоровье
local real hp = GetUnitState(caster, ConvertUnitState(1)) //максимальное здоровье
local real chp = (hp/100)*0.8 //значение, на которое лечим юнит
if i != 50 then //Срабатывание таймера 0,1. Так как длительность лечения составляет 5 сек, то таймер должен сработать 50 раз. Кстати, исходя из этого, высчитываем chp.
set i = i + 1 //Увеличиваем значение счетчика
call SetUnitState(caster, ConvertUnitState(0), hp1+chp) //лечим юнит
call SaveInteger(udg_Hash, hid, 1, i) //Сохраняем новое значение счетчика. Если этого не будет, счетчик вечно будет равен 0.
else //Когда счетчик равен 50, мы останавливаем таймер и чистим Хэш
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash, hid)
endif
set t=null
set caster = null
endfunction
function Trig_HealImp_Actions takes nothing returns nothing
local timer t = CreateTimer() //Таймер
local integer hid = GetHandleId(t) ) //Id таймера
local unit caster =GetTriggerUnit() //юнит, который мы будем лечить, по факту тот, кто активировал способность
call SaveUnitHandle(udg_Hash, hid, 0, caster) //сохраняем в Хэш юнит caster с ссылкой "0".
call SaveInteger(udg_Hash, hid, 1, 0) //сохраняем значение 0 с ссылкой "1". Это будет счетчик длительности лечения.
call TimerStart(t, 0.1, true, function Trig_HealImp_Timer) //запускаем таймер.
set t = null
set caster = null
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. JaBeN_Симфер
Ред. nvc123
вот с хешем
quq_CCCP, зато для обычных таймеров он хорош
особенно если надо много значений передать
тогда работает быстрее чем хеш