Это ты мне намекаешь уже на новое задание по гуи насчет снарядов?)
Это я к тому, что смерть героя обычно редкое событие при игре и лишние переборы никто не заметит. Но в случае снарядов, действия выполняются больше десяти раз в секунду и там лишние переборы могут серьёзно залагать карту.
Как всегда избыточные костыли GUI: периодический триггер, переборы и массивы. Потом придётся ещё костылить, чтоб работало с расставлеными на карте героями. Притом это ещё простая задача, хоть и популярная. А на движении снарядов количество костылей на GUI уже начнёт зашкаливать))
Неужели, там действительно таймеры создаются динамически?
Если не разбираться ни в чём, кроме кривого GUI, то нет. Я вообще непонимаю, зачем городить костыли на гуях если можно написать несколько строчек кода.
Только почему не работает для таймеров превышение Раз. непонятно.
Не смотрел на 1.26, но на последнем патче InitGlobals выглядит так.
function InitGlobals takes nothing returns nothing
local integer i= 0
set i=0
loop
exitwhen ( i > 3 )
set udg_TIMER[i]=CreateTimer()
set i=i + 1
endloop
endfunction
То это не размер массива, а количество установленных значений. Например для целлочисленного массива с размером 3 и значением 6 будет выглядеть так [6,6,6].
TimerStart - это встроенная функция? Просто не понимаю, каким образом воскрешение запускается именно после окончания таймера? Т.е. lua позволяет повесить условие на любой таймер, который только что создался?
Статьи читать нужно, в этой например подробно всё разжёвано. Вызвать callback из таймера ещё jass позволял, просто в lua удобно переменные через замыкания передавать.
У любого игрока может быть любое количество героев
Притом использовали wait который не точен и игнорирует паузу, вместо лаконичного решения на lua.
local ReviveTrigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
local player = Player(i)
if GetPlayerController(player) == MAP_CONTROL_USER and GetPlayerSlotState(player) == PLAYER_SLOT_STATE_PLAYING then
TriggerRegisterPlayerUnitEvent(ReviveTrigger, player, EVENT_PLAYER_HERO_REVIVABLE)
end
end
TriggerAddAction(ReviveTrigger, function()
local hero = GetTriggerUnit()
local heroOwner = GetOwningPlayer(hero)
if GetPlayerController(heroOwner) ~= MAP_CONTROL_USER or GetPlayerSlotState(heroOwner) ~= PLAYER_SLOT_STATE_PLAYING then return end
local timer = CreateTimer()
local dialog = CreateTimerDialog(timer)
TimerDialogSetTitle(dialog, GetUnitName(hero))
TimerStart(timer, GetHeroLevel(hero) * 2, false, function()
local x, y = GetPlayerStartLocationX(heroOwner), GetPlayerStartLocationY(heroOwner)
ReviveHero(hero, x, y, true)
DestroyTimerDialog(dialog)
DestroyTimer(GetExpiredTimer())
end)
TimerDialogDisplay(dialog, true)
end)
Да запросто. У любого игрока может быть любое количество героев. После смерти героя запускается таймер с окном на 2*уровень героя секунд. После завершения таймера герой воскрешается.
» WarCraft 3 / Какими способами может быть отменено прицеливание способностью?
» WarCraft 3 / Приказ Группе jass
Ред. nazarpunk
» WarCraft 3 / Уровень моба
думатьпрограммировать не нужно.» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Приказ Группе jass
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
Ред. nazarpunk
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
Ред. nazarpunk
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
кривогоGUI, то нет. Я вообще непонимаю, зачем городить костыли на гуях если можно написать несколько строчек кода.» WarCraft 3 / Knights & Rogues COMPLETE EDITION
Ред. nazarpunk
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
Ред. nazarpunk
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / О критических ударах и уклонениях...
» WarCraft 3 / В восстановленной карте отсутствует war3map.j, что делать?
» WarCraft 3 / variable ot is uninitillized
Ред. nazarpunk
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Триггерный приказ каста "массовой телепортации"
» WarCraft 3 / Расстояние от рудника до ратуши