Добавлен Стас Орлов
Я создал триггер, в котором умирает юнит и спустя N-е количество времени воскрешается.
function Trig_Kill_Unit_Actions takes nothing returns nothing
local unit dead = GetTriggerUnit() //Присваиваем убитого юнита
local integer idead = GetHandleId(dead) //Узнаём его ID
local timer t = CreateTimer() //Создаём таймер
local integer s = GetHandleId(t) //Узнаём его ID
call SaveUnitHandle(udg_hash, s,6, dead) //Сохраняем юнита
call SaveInteger(udg_hash, s,5, idead) //Сохраняем его ID
call TimerStart(t,10,false,function Reborn) //Активируем одноразовый таймер на 10 секунд
endfunction
Вторая функция
function Reborn takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer s = GetHandleId(t)
local unit dead = LoadUnitHandle (udg_hash, s,6)
local integer idead = LoadInteger (udg_hash, s,5)
set dead = CreateUnit(GetOwningPlayer(dead), GetUnitTypeId(dead), GetUnitX(dead), GetUnitY(dead), bj_UNIT_FACING)
call DestroyTimer(t)
endfunction
Но юнит не создаётся, таймер работает, я проверял, отправляя через него сообщения, данные тоже переносятся(проверял), но юнит всё равно не создаётся, где ошибка. Прошу написать мне ответ не джасс, не говоря про ГУИ и прочее.
Заранее спасибо
Принятый ответ
действительно, почему же не работает?
Это вообще никак не влияет. Ты ещё скажи, что set a = a + 1 не работает.
Дело может быть в том, что юнит за 10 секунд разлагается.
немного исправленный код
function Reborn takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer s = GetHandleId(t)
local unit dead = LoadUnitHandle (udg_hash, s, 6)
call FlushChildHashtable(udg_hash, s)
call CreateUnit(GetOwningPlayer(dead), GetUnitTypeId(dead), GetUnitX(dead), GetUnitY(dead), GetUnitFacing(dead))
call DestroyTimer(t)
set dead = null
set t = null
endfunction
function Trig_Kill_Unit_Actions takes nothing returns nothing
local unit dead = GetTriggerUnit() //Присваиваем убитого юнита
local timer t = CreateTimer() //Создаём таймер
local integer s = GetHandleId(t) //Узнаём его ID
call SaveUnitHandle(udg_hash, s, 6, dead) //Сохраняем юнита
call TimerStart(t, 10, false, function Reborn) //Активируем одноразовый таймер на 10 секунд
set dead = null
set t = null
endfunction
код с учётом разложения
function Reborn takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer s = GetHandleId(t)
local player p = LoadPlayerHandle(udg_hash, s, 0)
local integer id = LoadInteger(udg_hash, s, 0)
local real x = LoadReal(udg_hash, s, 0)
local real y = LoadReal(udg_hash, s, 1)
local real f = LoadReal(udg_hash, s, 2)
call CreateUnit(p, id, x, y, f)
call FlushChildHashtable(udg_hash, s)
call DestroyTimer(t)
set t = null
set p = null
endfunction
function Trig_Kill_Unit_Actions takes nothing returns nothing
local unit dead = GetTriggerUnit()
local timer t = CreateTimer()
local integer s = GetHandleId(t)
call SavePlayerHandle(udg_hash, s, 0, GetOwningPlayer(dead))
call SaveInteger(udg_hash, s, 0, GetUnitTypeId(dead))
call SaveReal(udg_hash, s, 0, GetUnitX(dead))
call SaveReal(udg_hash, s, 1, GetUnitY(dead))
call SaveReal(udg_hash, s, 2, GetUnitFacing(dead))
call TimerStart(t, 10, false, function Reborn)
set dead = null
set t = null
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Феникс
Юзай другую переменную для создания
Ред. PT153