Ограничение времени на выполнение квеста — S.T.A.L.K.E.R. Inside Wiki

Ограничение времени на выполнение квеста

Материал из 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.

ПОЧЕМУ никто не удаляет такие глупости ?

Другие места
LANGUAGE