Якщо вам раптом захотілося створити квест, який буде атоматично провалений після закінчення певної кількості ігрового часу, то один із способів.
Знадобляться файли:
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.