Библиотека Timers из Angel Arena Reborn
Автор библиотеки: BMD
Недавно я начал разработку карты по типу Angel Arena Reborn и задался вопросом спавна крипов. Я решил вскрыть файлы Angel Arena Reborn. В итоге я разобрался как там устроены спавны крипов. Главной проблемой было сделать этот спавн каждую минуту начиная с 00:00 на таймере. Я сразу обнаружил файл timers.lua. Я понял что это библиотека т.е этот файл можно подключить к любому аддону. Вы спросите как же подключить эту библиотеку.
[li]Создайте папку lib или libs в папке *\scripts\vscripts (Это не обязательно но так принято в программировании)[/li]
[li]Добавите в созданную папку библиотеку timers.lua[/li]
[li]Подключите библиотеку к вашему аддону. По умолчанию вы можете сделать это в файле *\scripts\vscripts\addon_game_mode[/li]
Код:
require('lib/timers')
Теперь вы можите использовать эту библиотеку в любом файле который связан с addon_game_mode в приделах аддона.
Но вы спросите как же приручить эту библиотеку и что она может?
Вы можете создать таймер в любой функции или условии. Например:
Код:
function CAddonTemplateGameMode:InitGameMode() --[[Функция выполняется при запуске аддона]]
print( "Template addon is loaded." ) --[[Выводит в консоль Template addon is loaded.]]--
GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 ) --[[Я не знаю что это можите мне объяснить если вам не лень]]
ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(GrandArenaOfGods, 'OnGameStateChange'), self) --[[Объявление слушателя события game_rules_state_change создаёт кастомную функцию под это событие. Эта функция вызывается function CAddonTemplateGameMode:OnGameStateChange()]]
end
function CAddonTemplateGameMode:OnGameStateChange()
if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then --[[Условие выполняется при начале игры кода на таймере 00:00 и звучит горн]]
Timers:CreateTimer(0.1, function() --[[Создание таймер для спавна нейтралов]]
SpawnCreeps() --[[Вызывает кастомную функцию SpawnCreeps()]]
return 60.0 --[[Этот таймер сработает через 60 секунд]]
end )
end
end
Таймер, выполняющийся каждую секунду, которая начинается сразу на следующем кадре, учитывает паузы
Таймер, выполняющий каждую секунду, которая начинается через 5 секунд в будущем, соблюдает паузы
10 секунд с задержкой, запуск один раз с использованием gametime (соблюдает паузы)
10 секунд с задержкой, выполняется один раз независимо от пауз
Таймер работает каждую секунду, которая начинается через 2 минуты независимо от пауз
Самый легкий тамер
Код:
Timers:CreateTimer(function()
print ("Hello. I'm running immediately and then every second thereafter.")
return 1.0
end
)
Код:
Timers:CreateTimer(5, function()
print ("Hello. I'm running 5 seconds after you called me and then every second thereafter.")
return 1.0
end
)
Код:
Timers:CreateTimer({
endTime = 10, -- when this timer should first execute, you can omit this if you want it to run first on the next frame
callback = function()
print ("Hello. I'm running 10 seconds after when I was started.")
end
})
Код:
Timers:CreateTimer({
useGameTime = false,
endTime = 10, -- when this timer should first execute, you can omit this if you want it to run first on the next frame
callback = function()
print ("Hello. I'm running 10 seconds after I was started even if someone paused the game.")
end
})
Код:
Timers:CreateTimer("uniqueTimerString3", {
useGameTime = false,
endTime = 120,
callback = function()
print ("Hello. I'm running after 2 minutes and then every second thereafter.")
return 1
end
})
Код:
Timers:CreateTimer(0.1, function() --[[Создание таймер для спавна нейтралов]]
SpawnCreeps() --[[Вызывает кастомную функцию SpawnCreeps()]]
return 60.0 --[[Этот таймер сработает через 60 секунд]]
end )
Последнее редактирование модератором: