Ограничение времени на выполнение квеста — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Akheront (обсуждение | вклад) (Новая страница: «Если вам вдруг захотелось создать квест, который будет атоматически провален по истечени...») |
|||
Строка 1: | Строка 1: | ||
+ | |||
Если вам вдруг захотелось создать квест, который будет атоматически провален по истечении определённого количества игрового времени, то вот один из способов.<br> | Если вам вдруг захотелось создать квест, который будет атоматически провален по истечении определённого количества игрового времени, то вот один из способов.<br> | ||
Понадобятся файлы:<br> | Понадобятся файлы:<br> | ||
Строка 57: | Строка 58: | ||
Здесь '''game.time()''' это игровое время в миллисекундах, а '''<tt>tim</tt>''' - время которое вы отведёте для выполнения задания<br> | Здесь '''game.time()''' это игровое время в миллисекундах, а '''<tt>tim</tt>''' - время которое вы отведёте для выполнения задания<br> | ||
Одна игровая минута = 50000. | Одна игровая минута = 50000. | ||
+ | |||
+ | |||
+ | [[Категория:Скрипты]] |
Версия 21:47, 30 августа 2011
Если вам вдруг захотелось создать квест, который будет атоматически провален по истечении определённого количества игрового времени, то вот один из способов.
Понадобятся файлы:
gamedata\config\gameplay\info_portion.xml
gamedata\scripts\bind_stalker.script
Открываем блокнот и пишем:
function quest_time() if has_alife_info("task_info") then -- проверка наличия квеста(в данном случае инфопоршень) tim = 72000000 -- время по истечении которого квест будет провален (1 мин. = 50000) end timer_t = (game.time() + tim) -- присвоение значения переменной db.actor:disable_info_portion("quest_time_begin") -- отключение условия присвоения значения, чтобы значение было присвоено только один раз end function time_bind() -- функция для bind_stalker if has_alife_info("quest_time_begin") then -- условие присвоения значения (инфопоршень) даётся в начале квеста qwest_time() end if timer_t and not has_alife_info("quest_time_done") then -- проверка истечения времени if timer_t <= game.time() then if has_alife_info("task_info") then -- проверка наличия квеста (вдруг уже выполнен или провален по другой причине) db.actor:give_info_portion("imfo_task_fail") -- выдача условия на провал (в данном случае инфопоршень) db.actor:give_info_portion("quest_time_done") -- отключение счетчика времени end end end end
Теперь сохраняем всё это в
gamedata\scripts\имя_вашего_скрипта.script
Далее открываем info_portion.xml и дописываем туда две строки
<info_portion id="quest_time_begin"></info_portion> -- инфопоршень дающий право на включение счётчика
<info_portion id="quest_time_done"></info_portion> -- инфопоршень дающий право на выключение счётчика
Выглядит примерно так:
<?xml version='1.0' encoding="windows-1251"?> <game_information_portions> <info_portion id="quest_time_begin"></info_portion> <info_portion id="quest_time_done"></info_portion>
Далее открываем bind_stalker.script и дописываем туда, в функцию function actor_binder:update(delta)
строчку имя_вашего_скрипта.time_bind()
Выглядит примерно так:
function actor_binder:update(delta) object_binder.update(self, delta) имя_вашего_скрипта.time_bind()
Всё. Ваш квест будет провален когда значение game.time() превысит game.time() + tim
Здесь game.time() это игровое время в миллисекундах, а tim - время которое вы отведёте для выполнения задания
Одна игровая минута = 50000.