<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://stalkerin.gameru.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=145.255.172.143&amp;*</id>
		<title>S.T.A.L.K.E.R. Inside Wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=145.255.172.143&amp;*"/>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/145.255.172.143"/>
		<updated>2026-06-09T10:36:18Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%84%D1%80%D0%B8%D0%BF%D0%BB%D0%B5%D0%B9_%D0%B7%D0%B0_%D0%BF%D0%B0%D1%80%D1%83-%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D1%83_%D0%BC%D0%B8%D0%BD%D1%83%D1%82.</id>
		<title>SoC. Создаем фриплей за пару-тройку минут.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%84%D1%80%D0%B8%D0%BF%D0%BB%D0%B5%D0%B9_%D0%B7%D0%B0_%D0%BF%D0%B0%D1%80%D1%83-%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D1%83_%D0%BC%D0%B8%D0%BD%D1%83%D1%82."/>
				<updated>2015-07-07T09:49:10Z</updated>
		
		<summary type="html">&lt;p&gt;145.255.172.143: /* Землетрясение и подключение скриптов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Отключение смертельных зон на ЧАЭС-2 ==&lt;br /&gt;
Открываем '''sr_aes_deadzone.script'''. В начале функций: action_postprocess:reset_scheme (), action_postprocess:deactivate(), action_postprocess:update_params (), action_postprocess:update_hit (delta) напишите это:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
if not has_alife_info(&amp;quot;freeplay&amp;quot;) then&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Это значит, что «зона» будет работать до подачи этого поршня. Но поршня нету.&lt;br /&gt;
&lt;br /&gt;
== Поршни ==&lt;br /&gt;
Открывает config/gameplay/info_l19stanciya.xml&lt;br /&gt;
Туда дописываем где-нибудь:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
	&amp;lt;info_portion id=&amp;quot;freeplay&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
	&amp;lt;info_portion id=&amp;quot;game_end&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Таймеры на ЧАЭС-1 и в X-16 ==&lt;br /&gt;
В файле '''sr_timer.script''' все свяжем с новым поршнем freeplay. Опустошите файл и напишите в нем:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Таймер с выводом изображения на экран.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local k,v = 0,0&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;action_timer&amp;quot;&lt;br /&gt;
function action_timer:__init(obj, storage)&lt;br /&gt;
	self.object = obj&lt;br /&gt;
	self.st = storage&lt;br /&gt;
end&lt;br /&gt;
function action_timer:update(delta)&lt;br /&gt;
if not has_alife_info(&amp;quot;freeplay&amp;quot;) then&lt;br /&gt;
	local actor = db.actor&lt;br /&gt;
	if xr_logic.try_switch_to_another_section(self.object, self.st, actor) then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	-- Высчитываем сколько времени уже работает счетчик&lt;br /&gt;
	local nn = time_global() - db.storage[self.object:id()].activation_time&lt;br /&gt;
	&lt;br /&gt;
	-- Изменяем значение счетчика&lt;br /&gt;
	local value_time = 0&lt;br /&gt;
	if self.st.type == &amp;quot;inc&amp;quot; then&lt;br /&gt;
		value_time = self.st.start_value + nn&lt;br /&gt;
	else&lt;br /&gt;
		value_time = self.st.start_value - nn&lt;br /&gt;
	end&lt;br /&gt;
	if value_time &amp;lt;= 0 then&lt;br /&gt;
		value_time = 0&lt;br /&gt;
	end&lt;br /&gt;
	-- Формируем строку счетчика&lt;br /&gt;
	local hours = math.floor(value_time/3600000)&lt;br /&gt;
	local minutes = math.floor(value_time/60000 - hours*60)&lt;br /&gt;
	local seconds = math.floor(value_time/1000 - hours*3600 - minutes*60)&lt;br /&gt;
	local str = tostring(hours)..&amp;quot;:&amp;quot;..sr_timer.time2str(minutes)..&amp;quot;:&amp;quot;..sr_timer.time2str(seconds)&lt;br /&gt;
&lt;br /&gt;
	self.st.timer:SetTextST(str)&lt;br /&gt;
&lt;br /&gt;
	-- Определяем нужно ли куда то переходить.&lt;br /&gt;
	for k,v in pairs(self.st.on_value) do&lt;br /&gt;
		if (self.st.type == &amp;quot;dec&amp;quot; and value_time &amp;lt;= v.dist) or&lt;br /&gt;
		   (self.st.type == &amp;quot;inc&amp;quot; and value_time &amp;gt;= v.dist)&lt;br /&gt;
		then&lt;br /&gt;
			-- Обработка значения.&lt;br /&gt;
			xr_logic.switch_to_section(self.object, self.st, xr_logic.pick_section_from_condlist(db.actor, self.object, v.state))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
function action_timer:deactivate(delta)&lt;br /&gt;
if not has_alife_info(&amp;quot;freeplay&amp;quot;) then&lt;br /&gt;
	self.st.ui:RemoveCustomStatic(self.st.timer_id)&lt;br /&gt;
	if self.st.string ~= nil then&lt;br /&gt;
		self.st.ui:RemoveCustomStatic(&amp;quot;hud_timer_text&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
--function action_timer:save()&lt;br /&gt;
--	xr_logic.pstor_store( self.object, &amp;quot;timer_value&amp;quot;, self.state )	&lt;br /&gt;
--end&lt;br /&gt;
&lt;br /&gt;
function time2str(n)&lt;br /&gt;
	if n &amp;gt;= 10 then&lt;br /&gt;
		return tostring(n)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;0&amp;quot;..tostring(n)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function add_to_binder(obj, ini, scheme, section, storage)&lt;br /&gt;
	local action = action_timer(obj, storage)&lt;br /&gt;
	xr_logic.subscribe_action_for_events(obj, storage, action)&lt;br /&gt;
end&lt;br /&gt;
function set_scheme(obj, ini, scheme, section, gulag_name)&lt;br /&gt;
if not has_alife_info(&amp;quot;freeplay&amp;quot;) then&lt;br /&gt;
	local st = xr_logic.assign_storage_and_bind(obj, ini, scheme, section)&lt;br /&gt;
	st.logic = xr_logic.cfg_get_switch_conditions(ini, section, obj)&lt;br /&gt;
	st.type = utils.cfg_get_string( ini, section, &amp;quot;type&amp;quot;, obj, false, &amp;quot;&amp;quot;, &amp;quot;inc&amp;quot;)&lt;br /&gt;
	if st.type ~= &amp;quot;inc&amp;quot; and st.type ~= &amp;quot;dec&amp;quot; then&lt;br /&gt;
		abort(&amp;quot;ERROR: wrong sr_timer type. Section [%s], Restrictor [%s]&amp;quot;, section, obj:name())&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if st.type == &amp;quot;dec&amp;quot; then&lt;br /&gt;
		st.start_value = utils.cfg_get_number(ini, section, &amp;quot;start_value&amp;quot;, obj, true)&lt;br /&gt;
	else&lt;br /&gt;
		st.start_value = utils.cfg_get_number(ini, section, &amp;quot;start_value&amp;quot;, obj, false, 0)&lt;br /&gt;
	end&lt;br /&gt;
	-- Вычитываем значения перехода.&lt;br /&gt;
	st.on_value = parse_data(obj, utils.cfg_get_string(ini, section, &amp;quot;on_value&amp;quot;, obj, false, &amp;quot;&amp;quot;))&lt;br /&gt;
	st.timer_id = utils.cfg_get_string( ini, section, &amp;quot;timer_id&amp;quot;, obj, false, &amp;quot;&amp;quot;, &amp;quot;hud_timer&amp;quot;)&lt;br /&gt;
	st.string	= utils.cfg_get_string( ini, section, &amp;quot;string&amp;quot;, obj, false, &amp;quot;&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
	st.ui = get_hud()&lt;br /&gt;
	st.ui:AddCustomStatic(st.timer_id, true)&lt;br /&gt;
	st.timer = st.ui:GetCustomStatic(st.timer_id):wnd()&lt;br /&gt;
	&lt;br /&gt;
	if st.string ~= nil then&lt;br /&gt;
		st.ui:AddCustomStatic(&amp;quot;hud_timer_text&amp;quot;, true)&lt;br /&gt;
		local timer_text = st.ui:GetCustomStatic(&amp;quot;hud_timer_text&amp;quot;):wnd()&lt;br /&gt;
		timer_text:SetTextST(st.string)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function parse_data(npc,s)&lt;br /&gt;
	local t = {}&lt;br /&gt;
&lt;br /&gt;
    if s then&lt;br /&gt;
		for name in string.gfind( s, &amp;quot;(%|*%d+%|[^%|]+)%p*&amp;quot; ) do&lt;br /&gt;
			local dat = {	dist = nil,&lt;br /&gt;
							state = nil}	&lt;br /&gt;
			&lt;br /&gt;
			local t_pos = string.find( name, &amp;quot;|&amp;quot;, 1, true )&lt;br /&gt;
						&lt;br /&gt;
			local dist = string.sub( name, 1, t_pos - 1 )&lt;br /&gt;
			local state	= string.sub( name, t_pos + 1)&lt;br /&gt;
			&lt;br /&gt;
				&lt;br /&gt;
			dat.dist = tonumber(dist)&lt;br /&gt;
			if state then&lt;br /&gt;
				dat.state = xr_logic.parse_condlist(npc, dist, state, state)&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(t, dat)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Землетрясение и подключение скриптов ==&lt;br /&gt;
Находим функцию в файле xr_effects.script    aes_earthshake в начале напишите:&lt;br /&gt;
&amp;lt;code&amp;gt;if not has_alife_info(&amp;quot;freeplay&amp;quot;) then&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Открываем ui_credits.xml. &lt;br /&gt;
Находим:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;function_on_stop&amp;gt;xr_effects.after_credits&amp;lt;/function_on_stop&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Меняем на:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;function_on_stop&amp;gt;freeplay.set_lchanger&amp;lt;/function_on_stop&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Сами скрипты ==&lt;br /&gt;
Создаем в папке /scripts файл freeplay.script. Пихаем туда:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
-- Спавним левел-чейнджер&lt;br /&gt;
function spawn_level_changer(sid, from_pos, from_level, dest_pos, dest_level, hint, mode, dest_dir)&lt;br /&gt;
&lt;br /&gt;
local vertexes = {&lt;br /&gt;
l01_escape = {lvid=594266, gvid=0},&lt;br /&gt;
l04_darkvalley = {lvid=121712, gvid=815},&lt;br /&gt;
l11_pripyat = {lvid=142116, gvid=2270},&lt;br /&gt;
l12_stancia = {lvid=405348, gvid=2400},&lt;br /&gt;
l12_stancia_2 = {lvid=9914, gvid=2517}&lt;br /&gt;
-- l12_stancia_2 = {lvid=227423, gvid=2635}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local obj = alife():create(&amp;quot;level_changer&amp;quot;, from_pos, vertexes[from_level][&amp;quot;lvid&amp;quot;], vertexes[from_level][&amp;quot;gvid&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
if obj then&lt;br /&gt;
&lt;br /&gt;
	level.map_add_object_spot(obj.id, &amp;quot;level_changer&amp;quot;, hint)&lt;br /&gt;
&lt;br /&gt;
	local packet = net_packet()&lt;br /&gt;
&lt;br /&gt;
	obj:STATE_Write(packet)&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_alife_object&lt;br /&gt;
	local game_vertex_id = packet:r_u16()&lt;br /&gt;
	local cse_alife_object__unk1_f32 = packet:r_float()&lt;br /&gt;
	local cse_alife_object__unk2_u32 = packet:r_s32()&lt;br /&gt;
	local level_vertex_id = packet:r_s32()&lt;br /&gt;
	local object_flags = packet:r_s32()&lt;br /&gt;
	local custom_data = packet:r_stringZ()&lt;br /&gt;
	local story_id = packet:r_s32()&lt;br /&gt;
	local cse_alife_object__unk3_u32 = packet:r_s32()&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_shape&lt;br /&gt;
	local shape_count = packet:r_u8()&lt;br /&gt;
	local shape_type&lt;br /&gt;
	local center&lt;br /&gt;
	local radius&lt;br /&gt;
&lt;br /&gt;
	if shape_count == 0 then&lt;br /&gt;
		shape_type = 0&lt;br /&gt;
		center = vector():set(0,0,0)&lt;br /&gt;
		radius = 10.0&lt;br /&gt;
		shape_count = 1&lt;br /&gt;
	else&lt;br /&gt;
		for i=1,shape_count do&lt;br /&gt;
			local shape_type = packet:r_u8()&lt;br /&gt;
			if shape_type == 0 then&lt;br /&gt;
				local center = packet:r_vec3()&lt;br /&gt;
				local radius = packet:r_float()&lt;br /&gt;
			else&lt;br /&gt;
				local v1 = packet:r_vec3()&lt;br /&gt;
				local v2 = packet:r_vec3()&lt;br /&gt;
				local v3 = packet:r_vec3()&lt;br /&gt;
				local v4 = packet:r_vec3()&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_alife_space_restrictor&lt;br /&gt;
	local restrictor_type = packet:r_u8()&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_alife_level_changer&lt;br /&gt;
	local dest_game_vertex_id = packet:r_u16()&lt;br /&gt;
	local dest_level_vertex_id = packet:r_s32()&lt;br /&gt;
	local dest_position = packet:r_vec3()&lt;br /&gt;
	local dest_direction = packet:r_vec3()&lt;br /&gt;
	local dest_level_name = packet:r_stringZ()&lt;br /&gt;
	local dest_graph_point = packet:r_stringZ()&lt;br /&gt;
	local silent_mode = packet:r_u8()&lt;br /&gt;
&lt;br /&gt;
	if packet:r_elapsed() ~= 0 then get_console():execute(&amp;quot;left=&amp;quot;..packet:r_elapsed()) end&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_alife_object&lt;br /&gt;
	packet:w_u16(game_vertex_id)&lt;br /&gt;
	packet:w_float(cse_alife_object__unk1_f32)&lt;br /&gt;
	packet:w_s32(cse_alife_object__unk2_u32)&lt;br /&gt;
	packet:w_s32(level_vertex_id)&lt;br /&gt;
	packet:w_s32(object_flags)&lt;br /&gt;
	packet:w_stringZ(custom_data)&lt;br /&gt;
	packet:w_s32(sid)&lt;br /&gt;
	packet:w_s32(cse_alife_object__unk3_u32)&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_shape&lt;br /&gt;
	packet:w_u8(shape_count)&lt;br /&gt;
&lt;br /&gt;
	for i=1,shape_count do&lt;br /&gt;
		packet:w_u8(shape_type)&lt;br /&gt;
		if shape_type == 0 then&lt;br /&gt;
			packet:w_vec3(vector():set(0,0,0))&lt;br /&gt;
			packet:w_float(3)&lt;br /&gt;
		else&lt;br /&gt;
			packet:w_vec3(vector():set(3,0,0))&lt;br /&gt;
			packet:w_vec3(vector():set(0,3,0))&lt;br /&gt;
			packet:w_vec3(vector():set(0,0,3))&lt;br /&gt;
			packet:w_vec3(vector():set(0,0,0))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_alife_space_restrictor&lt;br /&gt;
	packet:w_u8(restrictor_type)&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_alife_level_changer&lt;br /&gt;
	packet:w_u16(vertexes[dest_level][&amp;quot;gvid&amp;quot;])&lt;br /&gt;
	packet:w_s32(vertexes[dest_level][&amp;quot;lvid&amp;quot;])&lt;br /&gt;
	packet:w_vec3(dest_pos)&lt;br /&gt;
	if dest_dir then &lt;br /&gt;
		packet:w_vec3(dest_dir)&lt;br /&gt;
	else&lt;br /&gt;
		packet:w_vec3(dest_direction)&lt;br /&gt;
	end&lt;br /&gt;
	packet:w_stringZ(dest_level)&lt;br /&gt;
	packet:w_stringZ(dest_graph_point)&lt;br /&gt;
	packet:w_u8(mode)&lt;br /&gt;
&lt;br /&gt;
	obj:STATE_Read(packet, packet:w_tell()-packet:r_tell())&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Удаление лишних переходов&lt;br /&gt;
function disable_sar_entrance()&lt;br /&gt;
for i=1,65535 do&lt;br /&gt;
	local obj = alife():object(i)&lt;br /&gt;
	if obj and obj:name()==&amp;quot;exit_to_sarcofag_01&amp;quot; then&lt;br /&gt;
		alife():release(obj, true)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Спавн всех нужных переходов&lt;br /&gt;
function set_lchanger()&lt;br /&gt;
&lt;br /&gt;
if not db.actor or not has_alife_info(&amp;quot;game_end&amp;quot;) then&lt;br /&gt;
	xr_effects.after_credits()&lt;br /&gt;
else&lt;br /&gt;
&lt;br /&gt;
level.add_pp_effector(&amp;quot;teleport.ppe&amp;quot;, 2008, false)&lt;br /&gt;
&lt;br /&gt;
-- Кордон - Темная долина&lt;br /&gt;
spawn_level_changer(6001, vector():set(368.9,15.17,-42.65), &amp;quot;l01_escape&amp;quot;, vector():set(-44.77, 0.43, -541.35), &amp;quot;l04_darkvalley&amp;quot;, &amp;quot;to_darkvalley&amp;quot;, 0)&lt;br /&gt;
&lt;br /&gt;
-- ЧАЭС - Припять&lt;br /&gt;
spawn_level_changer(6002, vector():set(918.1,-0.1,-401.96), &amp;quot;l12_stancia&amp;quot;, vector():set(31.28,1.135,420.61), &amp;quot;l11_pripyat&amp;quot;, &amp;quot;to_pripyat&amp;quot;, 0, vector():set(0,-3.1,0))&lt;br /&gt;
&lt;br /&gt;
-- ЧАЭС2 - ЧАЭС&lt;br /&gt;
-- spawn_level_changer(6003, vector():set(554.52,150,201), &amp;quot;l12_stancia_2&amp;quot;, vector():set(117.6,-0.1,-76.3), &amp;quot;l12_stancia&amp;quot;, &amp;quot;to_aes&amp;quot;, 1, vector():set(0,-1.5,0))&lt;br /&gt;
spawn_level_changer(6003, vector():set(-42.15,-0.02,56.03), &amp;quot;l12_stancia_2&amp;quot;, vector():set(126,-0.1,-76.3), &amp;quot;l12_stancia&amp;quot;, &amp;quot;to_aes&amp;quot;, 0, vector():set(0,-1.5,0))&lt;br /&gt;
&lt;br /&gt;
-- ЧАЭС - ЧАЭС2&lt;br /&gt;
spawn_level_changer(6004, vector():set(117.6,-0.1,-76.3), &amp;quot;l12_stancia&amp;quot;, vector():set(-42.15,-0.02,64), &amp;quot;l12_stancia_2&amp;quot;, &amp;quot;to_aes&amp;quot;, 0)&lt;br /&gt;
&lt;br /&gt;
-- Удаление лишних переходов&lt;br /&gt;
disable_sar_entrance()&lt;br /&gt;
&lt;br /&gt;
-- Перемещаем актора, засчитываем все задания&lt;br /&gt;
db.actor:set_actor_position(vector():set(1035.12,-0.0999,229.564))&lt;br /&gt;
set_complete_tasks()&lt;br /&gt;
&lt;br /&gt;
-- Ставим стандартную погоду&lt;br /&gt;
level.set_weather(&amp;quot;default&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- Пометим&lt;br /&gt;
mark_lc()&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Отмечаем на карте новые точки перехода&lt;br /&gt;
function mark_lc()&lt;br /&gt;
local obj = alife():story_object(6001)&lt;br /&gt;
if obj then&lt;br /&gt;
	level.map_add_object_spot(obj.id, &amp;quot;level_changer&amp;quot;, &amp;quot;to_darkvalley&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
local obj = alife():story_object(6002)&lt;br /&gt;
if obj then&lt;br /&gt;
	level.map_add_object_spot(obj.id, &amp;quot;level_changer&amp;quot;, &amp;quot;to_pripyat&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
local obj = alife():story_object(6003)&lt;br /&gt;
if obj then&lt;br /&gt;
	level.map_add_object_spot(obj.id, &amp;quot;level_changer&amp;quot;, &amp;quot;to_aes&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
local obj = alife():story_object(6004)&lt;br /&gt;
if obj then&lt;br /&gt;
	level.map_add_object_spot(obj.id, &amp;quot;level_changer&amp;quot;, &amp;quot;to_aes&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
if has_alife_info(&amp;quot;freeplay&amp;quot;) and (level.name()==&amp;quot;l12_stancia&amp;quot; or level.name()==&amp;quot;l12_stancia_2&amp;quot; or level.name()==&amp;quot;l11_pripyat&amp;quot; or level.name()==&amp;quot;l10_radar&amp;quot;) then&lt;br /&gt;
	level.set_weather(&amp;quot;default&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Засчитываем задание &amp;quot;Убить Стрелка&amp;quot;&lt;br /&gt;
function set_complete_tasks()&lt;br /&gt;
if has_alife_info(&amp;quot;aes2_monolit_teleport_ready_final&amp;quot;) and not has_alife_info(&amp;quot;freeplay&amp;quot;) and (level.name()==&amp;quot;l12_stancia&amp;quot; or level.name()==&amp;quot;l12_stancia_2&amp;quot;) then&lt;br /&gt;
	db.actor:iterate_inventory(del_q_items,db.actor)&lt;br /&gt;
	db.actor:give_info_portion(&amp;quot;cit_fail_first_task&amp;quot;)&lt;br /&gt;
	db.actor:give_info_portion(&amp;quot;freeplay&amp;quot;)&lt;br /&gt;
	db.actor:disable_info_portion(&amp;quot;game_end&amp;quot;)&lt;br /&gt;
	db.gameover_credits_started = false&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Удаляем ненужные квестовые предметы&lt;br /&gt;
function del_q_items(npc, item)&lt;br /&gt;
	if item==nil or alife():object(item:id())==nil then return end&lt;br /&gt;
	local section = item:section()&lt;br /&gt;
	if section==&amp;quot;gunslinger_flash&amp;quot; or &lt;br /&gt;
		section==&amp;quot;good_psy_helmet&amp;quot; or &lt;br /&gt;
		section==&amp;quot;bad_psy_helmet&amp;quot; or &lt;br /&gt;
		section==&amp;quot;decoder&amp;quot; or&lt;br /&gt;
		section==&amp;quot;pri_decoder_documents&amp;quot; then&lt;br /&gt;
			alife():release(alife():object(item:id()), true)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------- Copyright 2007-2008 DEXXX ---------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
If you're going to use the whole of this script or its parts in your own creative &lt;br /&gt;
developments for the S.T.A.L.K.E.R. game, please don't become such a goddamn &lt;br /&gt;
motherfucker like the notorious author of the ABC Mod - Carbrobro. Leave the &lt;br /&gt;
copyrights, note the real author(s) and don't claim others' ideas and their &lt;br /&gt;
realization to be your own ones. It's just simple Modmakers' Ethics. Thank you!&lt;br /&gt;
&lt;br /&gt;
Если вы собираетесь использовать данный скрипт целиком или частично в своих &lt;br /&gt;
разработках по игре S.T.A.L.K.E.R., пожалуйста не опускайтесь до уровня печально &lt;br /&gt;
известного автора ABC мода - Carbrobro. Не удаляйте копирайты, указывайте настоящего &lt;br /&gt;
автора(ов) и не выдавайте чужие идеи и их реализацию за свои. Ведь это элементарная &lt;br /&gt;
этика модостроителей! Спасибо за понимание.&lt;br /&gt;
&lt;br /&gt;
]]--&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Авторы ==&lt;br /&gt;
&amp;lt;big&amp;gt;Скрипты&amp;lt;/big&amp;gt;&lt;br /&gt;
Взято из OGSM.&lt;br /&gt;
&amp;lt;big&amp;gt;Статья&amp;lt;/big&amp;gt;&lt;br /&gt;
vllzl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Благодарность ==&lt;br /&gt;
Автору мода OGSM&lt;br /&gt;
[[Категория:Неоформленные статьи]]&lt;/div&gt;</summary>
		<author><name>145.255.172.143</name></author>	</entry>

	</feed>