function Trig_Respawn_Timer takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit u = LoadUnitHandle(udg_hash, h,1) 
    //local integer pid = GetPlayerId(GetOwningPlayer(GetDyingUnit()))
    //call LoadTimerHandle(udg_hash, h, pid)
    local real x = GetRectMinX(gg_rct_GameArea)
    local real y = GetRectMinY(gg_rct_GameArea)
    local real x1 = GetRectMaxX(gg_rct_GameArea)
    local real y1 = GetRectMaxY(gg_rct_GameArea)
    local real x0
    local real y0
    set x0 = GetRandomReal(x,x1)
    set y0 = GetRandomReal(y,y1)
    call CreateUnit(GetOwningPlayer(u), 'h000', x0, y0, 0)
    if GetLocalPlayer() == GetOwningPlayer(u) then
    call PanCameraToTimed(x0,y0,0)
    endif
    t = null
endfunction

function Trig_Respawn_Actions takes nothing returns nothing
    local integer pi = GetPlayerId(GetOwningPlayer(GetDyingUnit()))
    local timer t
    local unit u = GetDyingUnit()
    //local integer ht = GetHandleId(t)
    local integer hu = GetHandleId(u)
    t = CreateTimer()
    call TimerStart(t, udg_RespawnTime[pi], false, function Trig_Respawn_Timer)
    //call SaveTimerHandle(udg_hash, ht, pi, t)
    call SaveUnitHandle(udg_hash, hu, 1, u)
    set t = null
    set u = null
    
endfunction
//===========================================================================
function InitTrig_Respawn takes nothing returns nothing
    set gg_trg_Respawn = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Respawn, EVENT_PLAYER_UNIT_DEATH) 
    call TriggerAddAction( gg_trg_Respawn, function Trig_Respawn_Actions )
endfunction
Вот сообственно код, есть еще один триггер но там из нужного только инициализация хеша. По сути должно работать, но нет... + Если что там нужно еще утечки убирать и хеш очищать, это потом, щас надо работоспособность наладить.
PS:Я новичок в hash таблицах.

На сайте же есть система респауна крипов xgm.guru/p/wc3/crs
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
4
там таймер на доли секунды а у меня срабатывать одновременно до 12 игроков, он сразу сломется
И таймеру меня 5 секунд, думаешь за эти 5 секунд никто не помрет?
28
VladSekret, какая разница сколько игроков
таймер должен быть 1
и если что то он перебирает до 500 юнитов за раз и не ломается
твои 12 игроков для него фигня
для твоей задачи лучше увеличить период до 1 секунды
короче читай статьи
4
Ты не понял, про то что, первый игрок возьмет таймер на себя, потом второй умрет в течение этих 5 секунд и таймер начнет заного действовать и 1-й игрок так и не воскреснет
14
call CreateUnit(GetOwningPlayer(u), 'h000', x0, y0, 0)
первое, что в глаза бросилось
set bj_lastCreatedUnit = CreateUnit(GetOwningPlayer(u), 'h000', x0, y0, 0)
28
VladSekret, бред не пиши
ты вообще статьи что я кинул читал?
таймер стартует в самом начале игры и тикает всю игру
перебирая циклом массив объектов и воскрешая их когда подходит время
а какому игроку принадлежал юнит и прочее содержимое объекта его не волнует
он просто следит за таймингом и ранит объекты когда приходит время
короче прочти те 2 статьи
потом прочти ещё тут
HolyMoon, а это в глаза не бросилось?
	local unit u = GetDyingUnit()
	local integer hu = GetHandleId(u)
	call SaveUnitHandle(udg_hash, hu, 1, u)
	. . .
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit u = LoadUnitHandle(udg_hash, h,1)
4
нвс мне кажется, что ты просто не понимаешь меня(. Зачем мне глобальный таймер во всю игру. Мне нужно конкретно локальный отдельно для каждого игрока! Юнит умер - через 5 секунд воскресить. Допустим умер юнит, прошла секунда умер другой, должно создаться два разных таймера и 1-го юнита воскресить через 4 секунды, второго через 5.
32
На сайте же есть система респауна крипов xgm.guru/p/wc3/crs
Принятый ответ
4
Неужели первый хороший ответ:) Спасибо, буду разбираться, тему впринципе можно закрыть, но прежде можешь еще какие-нибудь системки(наработки) скинуть интересные? Я видел огромный пак наработок который еще Melissa собирал, но потерял его:( В лс он мне не отвечает...
Постой, я там не могу найти обычный jass код, только gui и vjass
Да и там все не понятно, слишком много мне не нужного, есть другая наработка?
15
VladSekret, а если умрут сразу 1000 юнитов? Варкрафт лопнет от переизбытка таймеров
28
Tobi123, 1000 юнитов варик не потянет
но 50 таймеров достаточно для лагов
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.