Таймеры — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Строка 40: | Строка 40: | ||
Вуаля, теперь всё работает. Спасибо за внимание. | Вуаля, теперь всё работает. Спасибо за внимание. | ||
Да, кстати, из диалога вызываем функцию '''function_onetimer'''. | Да, кстати, из диалога вызываем функцию '''function_onetimer'''. | ||
+ | |||
+ | === Но есть способ проще === | ||
+ | <lua> | ||
+ | function start_timer_0() | ||
+ | -- взводим таймер на 10 секунд | ||
+ | iTimer = time_global() + 10000 | ||
+ | -- ставим апдейт | ||
+ | level.add_call(check_timer, action_timer_0) | ||
+ | end | ||
+ | |||
+ | function check_timer() | ||
+ | return time_global() > iTimer | ||
+ | end | ||
+ | |||
+ | function action_timer_0() | ||
+ | .... ваш код по истечению таймера .... | ||
+ | end | ||
+ | </lua> | ||
+ | |||
+ | |||
+ | По сути, это то же самое, но реализация проще. Все умещается в одном файле, без редактирования '''bind_stalker.script'''. | ||
+ | |||
+ | |||
[[Категория:Скрипты]] | [[Категория:Скрипты]] |
Версия 14:23, 8 июля 2015
Для чего нужны таймеры?
Предположим, вы хотите, чтобы Меченому после диалога пришло сообщение на ПДА, но не сразу, а для придания большего реализма с задержкой в ~7-8 секунд. В таком случае, если вы читаете эту статью, то у вас есть:
- Готовый диалог
- Необходимая функция в свежем скриптовом файле.
Для того, чтобы создать таймер, необходимо открыть файл с вашими скриптами и написать следующее :
local iTimer function function_onetimer() iTimer = time_global() + 6*1000 end function timer_5_minutes() if iTimer and iTimer < time_global() then iTimer = nil wolfscripts.humorist_killed_msg() end end
Разъясню:
function function_onetimer() — название функции (это главная функция и её будем вызывать из диалога) iTimer = time_global() + 6*1000 -- задержка по времени (6 секунд) function timer_5_minutes() — собственно, настройки таймера iTimer = nil -- отключаем таймер wolfscripts.humorist_killed_msg() -- название скрипта.название функции
Тут, вроде бы, всё просто. Но таймер просто так не заработает. Лезем в bind_stalker.script и в
function actor_binder:update(delta)
пишем:
название_вашего_скрипта.timer_5_minutes()
Вуаля, теперь всё работает. Спасибо за внимание. Да, кстати, из диалога вызываем функцию function_onetimer.
Но есть способ проще
function start_timer_0() -- взводим таймер на 10 секунд iTimer = time_global() + 10000 -- ставим апдейт level.add_call(check_timer, action_timer_0) end function check_timer() return time_global() > iTimer end function action_timer_0() .... ваш код по истечению таймера .... end
По сути, это то же самое, но реализация проще. Все умещается в одном файле, без редактирования bind_stalker.script.