Ограничение времени на выполнение квеста
Материал из S.T.A.L.K.E.R. Inside Wiki
Если вам вдруг захотелось создать квест, который будет атоматически провален по истечении определённого количества игрового времени, то вот один из способов.
Понадобятся файлы:
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.
ПОЧЕМУ никто не удаляет такие глупости ?