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
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
4
8 лет назад
0
там таймер на доли секунды а у меня срабатывать одновременно до 12 игроков, он сразу сломется
И таймеру меня 5 секунд, думаешь за эти 5 секунд никто не помрет?
0
28
8 лет назад
Отредактирован nvc123
0
VladSekret, какая разница сколько игроков
таймер должен быть 1
и если что то он перебирает до 500 юнитов за раз и не ломается
твои 12 игроков для него фигня
для твоей задачи лучше увеличить период до 1 секунды
короче читай статьи
0
4
8 лет назад
0
Ты не понял, про то что, первый игрок возьмет таймер на себя, потом второй умрет в течение этих 5 секунд и таймер начнет заного действовать и 1-й игрок так и не воскреснет
0
14
8 лет назад
Отредактирован HolyMoon
0
call CreateUnit(GetOwningPlayer(u), 'h000', x0, y0, 0)
первое, что в глаза бросилось
set bj_lastCreatedUnit = CreateUnit(GetOwningPlayer(u), 'h000', x0, y0, 0)
0
28
8 лет назад
0
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)
0
4
8 лет назад
0
нвс мне кажется, что ты просто не понимаешь меня(. Зачем мне глобальный таймер во всю игру. Мне нужно конкретно локальный отдельно для каждого игрока! Юнит умер - через 5 секунд воскресить. Допустим умер юнит, прошла секунда умер другой, должно создаться два разных таймера и 1-го юнита воскресить через 4 секунды, второго через 5.
1
32
8 лет назад
1
На сайте же есть система респауна крипов xgm.guru/p/wc3/crs
Принятый ответ
0
4
8 лет назад
0
Неужели первый хороший ответ:) Спасибо, буду разбираться, тему впринципе можно закрыть, но прежде можешь еще какие-нибудь системки(наработки) скинуть интересные? Я видел огромный пак наработок который еще Melissa собирал, но потерял его:( В лс он мне не отвечает...
Постой, я там не могу найти обычный jass код, только gui и vjass
Да и там все не понятно, слишком много мне не нужного, есть другая наработка?
0
14
8 лет назад
0
nvc123, дальше я не стал читать :D
0
15
8 лет назад
0
VladSekret, а если умрут сразу 1000 юнитов? Варкрафт лопнет от переизбытка таймеров
0
28
8 лет назад
Отредактирован nvc123
0
Tobi123, 1000 юнитов варик не потянет
но 50 таймеров достаточно для лагов
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.