<?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=128.72.2.170&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=128.72.2.170&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/128.72.2.170"/>
		<updated>2026-04-29T21:19:30Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%9E%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80%D0%B0_%D0%B8_%D0%B2%D1%8B%D0%B1%D1%80%D0%BE%D1%81%D0%B0_%D0%BD%D0%B0_%D0%A7%D0%90%D0%AD%D0%A1</id>
		<title>SoC. Отключение таймера и выброса на ЧАЭС</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%9E%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B9%D0%BC%D0%B5%D1%80%D0%B0_%D0%B8_%D0%B2%D1%8B%D0%B1%D1%80%D0%BE%D1%81%D0%B0_%D0%BD%D0%B0_%D0%A7%D0%90%D0%AD%D0%A1"/>
				<updated>2015-03-31T12:47:22Z</updated>
		
		<summary type="html">&lt;p&gt;128.72.2.170: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Навестим скрипты и инфопоршни! ==&lt;br /&gt;
В '''sr_timer.script''' и '''sr_aes_deadzone.script''' в начале каждой из функций напишите:&lt;br /&gt;
&amp;lt;code&amp;gt;if (not has_alife_info(&amp;quot;no_deadzone&amp;quot;)) then&amp;lt;/code&amp;gt;&lt;br /&gt;
В конце добавьте второе end&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;no_deadzone&amp;quot;)) then&amp;lt;/code&amp;gt;&lt;br /&gt;
В конце добавьте второе end&lt;br /&gt;
&lt;br /&gt;
Мы упоминали некий инфопоршень, о нем игра не знает. Добавим его в игру.&lt;br /&gt;
&lt;br /&gt;
Откроем '''info_l19_stanciya.xml'''('''gamedata/config/gameplay'''). Допишем инфопоршень:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;info_portion id=&amp;quot;deadzone&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Активация! ==&lt;br /&gt;
Отключить таймер и выброс:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function start(actor, npc)&lt;br /&gt;
db.actor:give_info_portion(&amp;quot;deadzone&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Упомянуть в каком-нибудь диалоге.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>128.72.2.170</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D1%82%D0%BE%D1%87%D0%B5%D0%BA_%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B0_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%D0%BC%D0%B8</id>
		<title>SoC. Спавн точек перехода между уровнями</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D1%82%D0%BE%D1%87%D0%B5%D0%BA_%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B0_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%D0%BC%D0%B8"/>
				<updated>2015-03-31T12:45:04Z</updated>
		
		<summary type="html">&lt;p&gt;128.72.2.170: /* Дополняет авторы: vllzl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В этой статье я попытаюсь передать практический опыт скриптового создания точек перехода между уровнями. Файл ''all.spawn'' меняться не будет, поэтому такой механизм более удобен для совмещения модов и не требует начала новой игры.&lt;br /&gt;
&lt;br /&gt;
В качестве примера попробуем реализовать режим ''freeplay'' - продолжение игры после уничтожения О-Сознания. Для этого нужно создать как минимум две точки — возврат на ЧАЭС-1 со внутреннего дворика (после уничтожения О-Сознания) и переход из ЧАЭС-1 в Припять. К слову сказать, если вернуться на ЧАЭС-1, то там будет продолжать действовать таймер &amp;quot;выброса&amp;quot;, который в конце-концов включит &amp;quot;deadzone&amp;quot;. Отключить счетчик мне пока не удалось, но зато можно легко отключить сам &amp;quot;выброс&amp;quot; и всласть побегать по уровню.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Часть 1. Генерация работающего LEVEL_CHANGER ==&lt;br /&gt;
&lt;br /&gt;
Стандартной функции alife():create(…) недостаточно для создания полноценного level_changer.&lt;br /&gt;
&lt;br /&gt;
Ниже я привожу код функции, которая создает и инициализирует level_changer (пишется в созданный нами файл '''_freeplay_sa.script'''): &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function create_level_changer(&lt;br /&gt;
	p_story_id,	-- STORY_ID нового level_changer (понадобится нам позже)&lt;br /&gt;
	p_position,	-- вектор, координаты точки, в которой будет располагаться центр нового level_changer&lt;br /&gt;
	p_lvertex_id,	-- level_vertext_id  - идентифицируют уровень, на котором будет создан level_changer&lt;br /&gt;
	p_gvertex_id,	-- game_vertext_id   	&lt;br /&gt;
&lt;br /&gt;
	p_dest_lv,	-- level_vertex_id   - идентифицируют уровень, на который level_changer будет перебрасывать игрока &lt;br /&gt;
	p_dest_gv,	-- game_vertex_id&lt;br /&gt;
	p_dest_pos,	-- координаты точки, в которой на новом уровне окажется игрок&lt;br /&gt;
	p_dest_dir,	-- направрение взгляда игрока&lt;br /&gt;
	p_dest_level,	-- название уровня, например &amp;quot;L11_Pripyat&amp;quot;&lt;br /&gt;
	p_silent	-- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход)&lt;br /&gt;
)&lt;br /&gt;
	local obj = alife():create(&amp;quot;level_changer&amp;quot;, p_position, p_lvertex_id, p_gvertex_id)&lt;br /&gt;
&lt;br /&gt;
	level.map_add_object_spot(obj.id, &amp;quot;level_changer&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local packet = net_packet()&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_u32()&lt;br /&gt;
	local level_vertex_id 			= packet:r_u32()&lt;br /&gt;
	local object_flags 			= packet:r_u32()&lt;br /&gt;
	local custom_data 			= packet:r_stringZ()&lt;br /&gt;
	local story_id 				= packet:r_u32()&lt;br /&gt;
	local spawn_story_id			= packet:r_u32()&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_shape&lt;br /&gt;
	local shape_count 			= packet:r_u8()&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;
			-- sphere&lt;br /&gt;
			local center 		= packet:r_vec3()&lt;br /&gt;
			local radius 		= packet:r_float()&lt;br /&gt;
		else&lt;br /&gt;
			-- box&lt;br /&gt;
			local axis_x_x = packet:r_float()&lt;br /&gt;
			local axis_x_y = packet:r_float()&lt;br /&gt;
			local axis_x_z = packet:r_float()&lt;br /&gt;
			local axis_y_x = packet:r_float()&lt;br /&gt;
			local axis_y_y = packet:r_float()&lt;br /&gt;
			local axis_y_z = packet:r_float()&lt;br /&gt;
			local axis_z_x = packet:r_float()&lt;br /&gt;
			local axis_z_y = packet:r_float()&lt;br /&gt;
			local axis_z_z = packet:r_float()&lt;br /&gt;
			local offset_x = packet:r_float()&lt;br /&gt;
			local offset_y = packet:r_float()&lt;br /&gt;
			local offset_z = packet:r_float()&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_level_changer&lt;br /&gt;
	local dest_game_vertex_id		= packet:r_u16()  &lt;br /&gt;
	local dest_level_vertex_id 		= packet:r_u32()  &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;
&lt;br /&gt;
	packet:w_begin(game_vertex_id)			-- game_vertex_id&lt;br /&gt;
	packet:w_float(cse_alife_object__unk1_f32)&lt;br /&gt;
	packet:w_u32(cse_alife_object__unk2_u32) &lt;br /&gt;
	packet:w_u32(level_vertex_id)			-- level_vertex_id&lt;br /&gt;
	packet:w_u32( bit_not(193) )			-- object_flags = -193 = 0xFFFFFF3E&lt;br /&gt;
	packet:w_stringZ(custom_data)&lt;br /&gt;
	packet:w_u32(p_story_id)			-- story_id&lt;br /&gt;
	packet:w_u32(spawn_story_id)&lt;br /&gt;
&lt;br /&gt;
	packet:w_u8(1)			-- количество фигур&lt;br /&gt;
--		packet:w_u8(0)			-- тип фигуры: сфера&lt;br /&gt;
--		packet:w_vec3(vector():set(0, 0, 0))  -- sphere_center&lt;br /&gt;
--		packet:w_float(3.0)&lt;br /&gt;
	packet:w_u8(1)			-- тип фигуры: box&lt;br /&gt;
	packet:w_float(2)	   -- axis_x_x&lt;br /&gt;
	packet:w_float(0)	   -- axis_x_y&lt;br /&gt;
	packet:w_float(0)	   -- axis_x_z&lt;br /&gt;
	packet:w_float(0)	   -- axis_y_x&lt;br /&gt;
	packet:w_float(4)	   -- axis_y_y&lt;br /&gt;
	packet:w_float(0)	   -- axis_y_z&lt;br /&gt;
	packet:w_float(0)	   -- axis_z_x&lt;br /&gt;
	packet:w_float(0)	   -- axis_z_y&lt;br /&gt;
	packet:w_float(4)	   -- axis_z_z&lt;br /&gt;
	packet:w_float(0)	   -- offset_x&lt;br /&gt;
	packet:w_float(0)	   -- offset_y&lt;br /&gt;
	packet:w_float(0)          -- offset_z&lt;br /&gt;
&lt;br /&gt;
	packet:w_u8(3)	 	   -- restrictor_type&lt;br /&gt;
&lt;br /&gt;
	packet:w_u16(p_dest_gv)			-- destination game_vertex_id&lt;br /&gt;
	packet:w_u32(p_dest_lv)			-- destination level_vertex_id&lt;br /&gt;
	packet:w_vec3(p_dest_pos)		-- destination position&lt;br /&gt;
	packet:w_vec3(p_dest_dir)		-- destination direction (направление взгляда)&lt;br /&gt;
	packet:w_stringZ(p_dest_level)		-- destination level name&lt;br /&gt;
	packet:w_stringZ(&amp;quot;start_actor_99&amp;quot;)	-- some string, always const&lt;br /&gt;
	packet:w_u8(p_silent)			-- 1 for silent level changing&lt;br /&gt;
&lt;br /&gt;
	packet:r_seek(0)&lt;br /&gt;
	obj:STATE_Read(packet, packet:w_tell())&lt;br /&gt;
&lt;br /&gt;
--	news_manager.send_tip(db.actor, &amp;quot;LC creation finished&amp;quot;, nil, nil, 30000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Ее вы просто скопируете в наш файл. Изменять ничего не надо.&lt;br /&gt;
&lt;br /&gt;
== Часть 2. '''Создание точек перехода''' ==&lt;br /&gt;
&lt;br /&gt;
Теперь следует написать функции создания нужных точек перехода и подключить их к игре. Сами функции просты (тоже в файл '''_freeplay_sa.script''')&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function refuze_o_sozn()&lt;br /&gt;
	if (not has_alife_info(&amp;quot;freeplay_activated2&amp;quot;)) then&lt;br /&gt;
		create_level_changer(21410, vector():set(946.872, 6.0, 167.66), 240852, 2637,&lt;br /&gt;
			472710,&lt;br /&gt;
			2280,&lt;br /&gt;
			vector():set( 1062.15, -0.0982, -3.512 ),&lt;br /&gt;
			vector():set(    0.0 ,  0.0   , -1.0 ),&lt;br /&gt;
			&amp;quot;L12_Stancia&amp;quot;,&lt;br /&gt;
			1)&lt;br /&gt;
	&lt;br /&gt;
		db.actor:give_info_portion(&amp;quot;freeplay_activated2&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- создается переход из ЧАЭС в Припять&lt;br /&gt;
	create_chaes2pripyat_exit()&lt;br /&gt;
&lt;br /&gt;
	-- актер перебрасывается в level_changer, возвращающий его к правым воротам ЧАЭС&lt;br /&gt;
	db.actor:set_actor_position( vector():set(946.872, 6.0, 167.66) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function create_chaes2pripyat_exit()&lt;br /&gt;
	-- создается переход из ЧАЭС в Припять&lt;br /&gt;
	if (not has_alife_info(	&amp;quot;exit_chaes2pripyat_created&amp;quot; )) then&lt;br /&gt;
		create_level_changer(31410, vector():set( 917.35, 0.419, -316.35 ), 403866, 2401,&lt;br /&gt;
			73868,&lt;br /&gt;
			2117,&lt;br /&gt;
			vector():set( 31.3, 3.0, 240.0 ),&lt;br /&gt;
			vector():set(  0.0, 0.0,  -1.0 ),&lt;br /&gt;
			&amp;quot;L11_Pripyat&amp;quot;,&lt;br /&gt;
			0)&lt;br /&gt;
&lt;br /&gt;
		db.actor:give_info_portion(&amp;quot;exit_chaes2pripyat_created&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функция '''refuze_o_sozn''' создает «тихий» переход на уровень ЧАЭС-1 и обычный - в начале уровня ЧАЭС-1 для возврата в Припять, после чего перебрасывает игрока в новый переход. Все переходы защищаются уникальными info_portions, дабы избежать их повторного создания, ведь игрок может захотеть «закончить» игру несколько раз.&lt;br /&gt;
&lt;br /&gt;
Теперь подключение.&lt;br /&gt;
Во-первых надо добавить новые info-portions. Я решил не изменять оригинальные файлы игры, а сделал для них (ну и для других тоже) отдельный файл&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
		config\gameplay\_info_sa.xml&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
следующего вида:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;game_information_portions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;info_portion id=&amp;quot;freeplay_activated2&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
	&amp;lt;info_portion id=&amp;quot;exit_chaes2pripyat_created&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/game_information_portions&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Теперь в этот файл можно будет добавлять новые info_portion, которые вы будете использовать в своих сюжетах.&lt;br /&gt;
Подключается этот файл в system.ltx в секции «info_portions»:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[info_portions]&lt;br /&gt;
;список xml файлов, содержащих info_portions&lt;br /&gt;
files = _info_sa, info_portions, ....................&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Кстати, именно так я рекомендую добавлять новые диалоги и новых персонажей. Это упростит процессы совмещения модов и аддонов.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий шаг - подключение наших скриптов к игре. Для этого откройте файл &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
		config\ui\ui_movies.xml&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чуть ниже «''mov_desire_5''» находится тэг ролика для концовки «Присоединение к О-Сознанию». Его мы трогать не будем - Меченый станет медузой. А вот после него - тэг для ролика «Отказ от О-Сознания»: «''mov_refuse_osoznanie''». Функцию завершения в нем заменим следующим образом:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
		&amp;lt;function_on_stop&amp;gt;_freeplay_sa.refuze_o_sozn&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно запускать и, если есть сохранения перед монолитом и/или о-сознанием, тестировать. Первые переходы срабатывают «тихо» - запрос на смену уровня не выдается (в параметре p_silent задана 1). До перехода в Припять можно успеть добежать, пока не сработал выброс... Но это как-то неправильно, выброс надо остановить (он же произошел, пока мы были внутри станции). «По-честному» (скриптом, без модификации ''all.spawn'') таймер выброса отключить не получится, но зато выброс можно подавить небольшим «хаком». Найдите файл xr_logic.script, а в нем - функцию '''switch_to_section'''. Ее нужно модифицировать следующим образом:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
-- Выполняет переключение на указанную секцию, если задана.&lt;br /&gt;
-- Если section == nil, остается работать старая секция.&lt;br /&gt;
function switch_to_section(npc, st, section)&lt;br /&gt;
  if section == nil or section == &amp;quot;&amp;quot; then&lt;br /&gt;
    return false&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- 15.03.2008 by SA:&lt;br /&gt;
  -- отключает &amp;quot;смертельные зоны&amp;quot; на ЧАЭС после запуска режима FREEPLAY&lt;br /&gt;
  -- 	таймер не отключается, но сам &amp;quot;выброс&amp;quot; не происходит&lt;br /&gt;
  if (section == &amp;quot;sr_aes_deadzone&amp;quot;) then&lt;br /&gt;
	if (has_alife_info(&amp;quot;freeplay_activated2&amp;quot;)) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  ... далее без изменений ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данный способ оставляет висящий на нулях таймер и все эффекты начала выброса, но сам «''выброс''» отключается.&lt;br /&gt;
&lt;br /&gt;
И последнее: переход ЧАЭС1-Припять необходимо отметить на карте. Для этого существует вполне «легальный» механизм. Находим файл '''level_tasks.script''' и в конце функции '''add_lchanger_location''' дописываем следующее:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
-- aes&lt;br /&gt;
obj = sim:story_object(31410)&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;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь 31410 - story_id нашего level_changer, который создается нашей функцией '''create_chaes2pripyat_exit'''.&lt;br /&gt;
&lt;br /&gt;
На этом пока все (мелкие огрехи типа направления взгляда игрока после смены уровня исправлю позже).&lt;br /&gt;
Прошу тестировать и дополнять.&lt;br /&gt;
&lt;br /&gt;
С уважением, sarthur.&lt;br /&gt;
&lt;br /&gt;
== Дополнение ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
«По-честному» (скриптом, без модификации ''all.spawn'') таймер выброса отключить не получится.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Можно удалить таймер скриптом&lt;br /&gt;
Для этого в начале всех функций в sr_timer.script и sr_aes_deadzone.script написать:&lt;br /&gt;
&amp;lt;code&amp;gt;if not has_alife_info(&amp;quot;freeplay_activated1&amp;quot;) or (&amp;quot;freeplay_activated2&amp;quot;) then&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Не забываем поставить второе end в конце функции.&lt;br /&gt;
&lt;br /&gt;
Удалит таймер и выброс из игры во фриплее.&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>128.72.2.170</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%94%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC_%D0%B2%D1%8B%D0%B1%D1%80%D0%BE%D1%81_%D0%BA%D0%B0%D0%BA_%D0%B2_%D0%BC%D0%BE%D0%B4%D0%B0%D1%85</id>
		<title>SoC. Делаем выброс как в модах</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%94%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC_%D0%B2%D1%8B%D0%B1%D1%80%D0%BE%D1%81_%D0%BA%D0%B0%D0%BA_%D0%B2_%D0%BC%D0%BE%D0%B4%D0%B0%D1%85"/>
				<updated>2015-03-31T12:36:15Z</updated>
		
		<summary type="html">&lt;p&gt;128.72.2.170: /* Программируем */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Сегодня мы создадим выброс.&lt;br /&gt;
&lt;br /&gt;
== Программируем ==&lt;br /&gt;
В папке scripts создаем файл surge_manager.script с таким содержанием:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function select_surge()&lt;br /&gt;
    -- включаем предварительный эффект выброса&lt;br /&gt;
    xr_effects.start_small_reject (actor, npc)&lt;br /&gt;
&lt;br /&gt;
    -- сделаем чтобы для урона была вероятность&lt;br /&gt;
    if math.random(0, 1001) &amp;lt; 999 then&lt;br /&gt;
&lt;br /&gt;
    -- создаем урон&lt;br /&gt;
    local h = hit()&lt;br /&gt;
    h.direction = vector():set( 1, 0, 0 ) &lt;br /&gt;
    h.impulse = 1 &lt;br /&gt;
    h.draftsman = db.actor &lt;br /&gt;
    h.power = 1 &lt;br /&gt;
    h.type = hit.telepatic&lt;br /&gt;
    db.actor:hit(h)&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Вызывать через диалог&lt;br /&gt;
&lt;br /&gt;
[[Категория:Неоформленные статьи]]&lt;/div&gt;</summary>
		<author><name>128.72.2.170</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D1%82%D0%BE%D1%87%D0%B5%D0%BA_%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B0_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%D0%BC%D0%B8</id>
		<title>SoC. Спавн точек перехода между уровнями</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D1%82%D0%BE%D1%87%D0%B5%D0%BA_%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B0_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%D0%BC%D0%B8"/>
				<updated>2015-03-31T12:15:32Z</updated>
		
		<summary type="html">&lt;p&gt;128.72.2.170: /* Часть 2. Создание точек перехода */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В этой статье я попытаюсь передать практический опыт скриптового создания точек перехода между уровнями. Файл ''all.spawn'' меняться не будет, поэтому такой механизм более удобен для совмещения модов и не требует начала новой игры.&lt;br /&gt;
&lt;br /&gt;
В качестве примера попробуем реализовать режим ''freeplay'' - продолжение игры после уничтожения О-Сознания. Для этого нужно создать как минимум две точки — возврат на ЧАЭС-1 со внутреннего дворика (после уничтожения О-Сознания) и переход из ЧАЭС-1 в Припять. К слову сказать, если вернуться на ЧАЭС-1, то там будет продолжать действовать таймер &amp;quot;выброса&amp;quot;, который в конце-концов включит &amp;quot;deadzone&amp;quot;. Отключить счетчик мне пока не удалось, но зато можно легко отключить сам &amp;quot;выброс&amp;quot; и всласть побегать по уровню.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Часть 1. Генерация работающего LEVEL_CHANGER ==&lt;br /&gt;
&lt;br /&gt;
Стандартной функции alife():create(…) недостаточно для создания полноценного level_changer.&lt;br /&gt;
&lt;br /&gt;
Ниже я привожу код функции, которая создает и инициализирует level_changer (пишется в созданный нами файл '''_freeplay_sa.script'''): &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function create_level_changer(&lt;br /&gt;
	p_story_id,	-- STORY_ID нового level_changer (понадобится нам позже)&lt;br /&gt;
	p_position,	-- вектор, координаты точки, в которой будет располагаться центр нового level_changer&lt;br /&gt;
	p_lvertex_id,	-- level_vertext_id  - идентифицируют уровень, на котором будет создан level_changer&lt;br /&gt;
	p_gvertex_id,	-- game_vertext_id   	&lt;br /&gt;
&lt;br /&gt;
	p_dest_lv,	-- level_vertex_id   - идентифицируют уровень, на который level_changer будет перебрасывать игрока &lt;br /&gt;
	p_dest_gv,	-- game_vertex_id&lt;br /&gt;
	p_dest_pos,	-- координаты точки, в которой на новом уровне окажется игрок&lt;br /&gt;
	p_dest_dir,	-- направрение взгляда игрока&lt;br /&gt;
	p_dest_level,	-- название уровня, например &amp;quot;L11_Pripyat&amp;quot;&lt;br /&gt;
	p_silent	-- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход)&lt;br /&gt;
)&lt;br /&gt;
	local obj = alife():create(&amp;quot;level_changer&amp;quot;, p_position, p_lvertex_id, p_gvertex_id)&lt;br /&gt;
&lt;br /&gt;
	level.map_add_object_spot(obj.id, &amp;quot;level_changer&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local packet = net_packet()&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_u32()&lt;br /&gt;
	local level_vertex_id 			= packet:r_u32()&lt;br /&gt;
	local object_flags 			= packet:r_u32()&lt;br /&gt;
	local custom_data 			= packet:r_stringZ()&lt;br /&gt;
	local story_id 				= packet:r_u32()&lt;br /&gt;
	local spawn_story_id			= packet:r_u32()&lt;br /&gt;
&lt;br /&gt;
	-- свойства cse_shape&lt;br /&gt;
	local shape_count 			= packet:r_u8()&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;
			-- sphere&lt;br /&gt;
			local center 		= packet:r_vec3()&lt;br /&gt;
			local radius 		= packet:r_float()&lt;br /&gt;
		else&lt;br /&gt;
			-- box&lt;br /&gt;
			local axis_x_x = packet:r_float()&lt;br /&gt;
			local axis_x_y = packet:r_float()&lt;br /&gt;
			local axis_x_z = packet:r_float()&lt;br /&gt;
			local axis_y_x = packet:r_float()&lt;br /&gt;
			local axis_y_y = packet:r_float()&lt;br /&gt;
			local axis_y_z = packet:r_float()&lt;br /&gt;
			local axis_z_x = packet:r_float()&lt;br /&gt;
			local axis_z_y = packet:r_float()&lt;br /&gt;
			local axis_z_z = packet:r_float()&lt;br /&gt;
			local offset_x = packet:r_float()&lt;br /&gt;
			local offset_y = packet:r_float()&lt;br /&gt;
			local offset_z = packet:r_float()&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_level_changer&lt;br /&gt;
	local dest_game_vertex_id		= packet:r_u16()  &lt;br /&gt;
	local dest_level_vertex_id 		= packet:r_u32()  &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;
&lt;br /&gt;
	packet:w_begin(game_vertex_id)			-- game_vertex_id&lt;br /&gt;
	packet:w_float(cse_alife_object__unk1_f32)&lt;br /&gt;
	packet:w_u32(cse_alife_object__unk2_u32) &lt;br /&gt;
	packet:w_u32(level_vertex_id)			-- level_vertex_id&lt;br /&gt;
	packet:w_u32( bit_not(193) )			-- object_flags = -193 = 0xFFFFFF3E&lt;br /&gt;
	packet:w_stringZ(custom_data)&lt;br /&gt;
	packet:w_u32(p_story_id)			-- story_id&lt;br /&gt;
	packet:w_u32(spawn_story_id)&lt;br /&gt;
&lt;br /&gt;
	packet:w_u8(1)			-- количество фигур&lt;br /&gt;
--		packet:w_u8(0)			-- тип фигуры: сфера&lt;br /&gt;
--		packet:w_vec3(vector():set(0, 0, 0))  -- sphere_center&lt;br /&gt;
--		packet:w_float(3.0)&lt;br /&gt;
	packet:w_u8(1)			-- тип фигуры: box&lt;br /&gt;
	packet:w_float(2)	   -- axis_x_x&lt;br /&gt;
	packet:w_float(0)	   -- axis_x_y&lt;br /&gt;
	packet:w_float(0)	   -- axis_x_z&lt;br /&gt;
	packet:w_float(0)	   -- axis_y_x&lt;br /&gt;
	packet:w_float(4)	   -- axis_y_y&lt;br /&gt;
	packet:w_float(0)	   -- axis_y_z&lt;br /&gt;
	packet:w_float(0)	   -- axis_z_x&lt;br /&gt;
	packet:w_float(0)	   -- axis_z_y&lt;br /&gt;
	packet:w_float(4)	   -- axis_z_z&lt;br /&gt;
	packet:w_float(0)	   -- offset_x&lt;br /&gt;
	packet:w_float(0)	   -- offset_y&lt;br /&gt;
	packet:w_float(0)          -- offset_z&lt;br /&gt;
&lt;br /&gt;
	packet:w_u8(3)	 	   -- restrictor_type&lt;br /&gt;
&lt;br /&gt;
	packet:w_u16(p_dest_gv)			-- destination game_vertex_id&lt;br /&gt;
	packet:w_u32(p_dest_lv)			-- destination level_vertex_id&lt;br /&gt;
	packet:w_vec3(p_dest_pos)		-- destination position&lt;br /&gt;
	packet:w_vec3(p_dest_dir)		-- destination direction (направление взгляда)&lt;br /&gt;
	packet:w_stringZ(p_dest_level)		-- destination level name&lt;br /&gt;
	packet:w_stringZ(&amp;quot;start_actor_99&amp;quot;)	-- some string, always const&lt;br /&gt;
	packet:w_u8(p_silent)			-- 1 for silent level changing&lt;br /&gt;
&lt;br /&gt;
	packet:r_seek(0)&lt;br /&gt;
	obj:STATE_Read(packet, packet:w_tell())&lt;br /&gt;
&lt;br /&gt;
--	news_manager.send_tip(db.actor, &amp;quot;LC creation finished&amp;quot;, nil, nil, 30000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Ее вы просто скопируете в наш файл. Изменять ничего не надо.&lt;br /&gt;
&lt;br /&gt;
== Часть 2. '''Создание точек перехода''' ==&lt;br /&gt;
&lt;br /&gt;
Теперь следует написать функции создания нужных точек перехода и подключить их к игре. Сами функции просты (тоже в файл '''_freeplay_sa.script''')&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function refuze_o_sozn()&lt;br /&gt;
	if (not has_alife_info(&amp;quot;freeplay_activated2&amp;quot;)) then&lt;br /&gt;
		create_level_changer(21410, vector():set(946.872, 6.0, 167.66), 240852, 2637,&lt;br /&gt;
			472710,&lt;br /&gt;
			2280,&lt;br /&gt;
			vector():set( 1062.15, -0.0982, -3.512 ),&lt;br /&gt;
			vector():set(    0.0 ,  0.0   , -1.0 ),&lt;br /&gt;
			&amp;quot;L12_Stancia&amp;quot;,&lt;br /&gt;
			1)&lt;br /&gt;
	&lt;br /&gt;
		db.actor:give_info_portion(&amp;quot;freeplay_activated2&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- создается переход из ЧАЭС в Припять&lt;br /&gt;
	create_chaes2pripyat_exit()&lt;br /&gt;
&lt;br /&gt;
	-- актер перебрасывается в level_changer, возвращающий его к правым воротам ЧАЭС&lt;br /&gt;
	db.actor:set_actor_position( vector():set(946.872, 6.0, 167.66) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function create_chaes2pripyat_exit()&lt;br /&gt;
	-- создается переход из ЧАЭС в Припять&lt;br /&gt;
	if (not has_alife_info(	&amp;quot;exit_chaes2pripyat_created&amp;quot; )) then&lt;br /&gt;
		create_level_changer(31410, vector():set( 917.35, 0.419, -316.35 ), 403866, 2401,&lt;br /&gt;
			73868,&lt;br /&gt;
			2117,&lt;br /&gt;
			vector():set( 31.3, 3.0, 240.0 ),&lt;br /&gt;
			vector():set(  0.0, 0.0,  -1.0 ),&lt;br /&gt;
			&amp;quot;L11_Pripyat&amp;quot;,&lt;br /&gt;
			0)&lt;br /&gt;
&lt;br /&gt;
		db.actor:give_info_portion(&amp;quot;exit_chaes2pripyat_created&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функция '''refuze_o_sozn''' создает «тихий» переход на уровень ЧАЭС-1 и обычный - в начале уровня ЧАЭС-1 для возврата в Припять, после чего перебрасывает игрока в новый переход. Все переходы защищаются уникальными info_portions, дабы избежать их повторного создания, ведь игрок может захотеть «закончить» игру несколько раз.&lt;br /&gt;
&lt;br /&gt;
Теперь подключение.&lt;br /&gt;
Во-первых надо добавить новые info-portions. Я решил не изменять оригинальные файлы игры, а сделал для них (ну и для других тоже) отдельный файл&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
		config\gameplay\_info_sa.xml&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
следующего вида:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;game_information_portions&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;info_portion id=&amp;quot;freeplay_activated2&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
	&amp;lt;info_portion id=&amp;quot;exit_chaes2pripyat_created&amp;quot;&amp;gt;&amp;lt;/info_portion&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/game_information_portions&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Теперь в этот файл можно будет добавлять новые info_portion, которые вы будете использовать в своих сюжетах.&lt;br /&gt;
Подключается этот файл в system.ltx в секции «info_portions»:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[info_portions]&lt;br /&gt;
;список xml файлов, содержащих info_portions&lt;br /&gt;
files = _info_sa, info_portions, ....................&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Кстати, именно так я рекомендую добавлять новые диалоги и новых персонажей. Это упростит процессы совмещения модов и аддонов.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий шаг - подключение наших скриптов к игре. Для этого откройте файл &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
		config\ui\ui_movies.xml&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чуть ниже «''mov_desire_5''» находится тэг ролика для концовки «Присоединение к О-Сознанию». Его мы трогать не будем - Меченый станет медузой. А вот после него - тэг для ролика «Отказ от О-Сознания»: «''mov_refuse_osoznanie''». Функцию завершения в нем заменим следующим образом:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
		&amp;lt;function_on_stop&amp;gt;_freeplay_sa.refuze_o_sozn&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно запускать и, если есть сохранения перед монолитом и/или о-сознанием, тестировать. Первые переходы срабатывают «тихо» - запрос на смену уровня не выдается (в параметре p_silent задана 1). До перехода в Припять можно успеть добежать, пока не сработал выброс... Но это как-то неправильно, выброс надо остановить (он же произошел, пока мы были внутри станции). «По-честному» (скриптом, без модификации ''all.spawn'') таймер выброса отключить не получится, но зато выброс можно подавить небольшим «хаком». Найдите файл xr_logic.script, а в нем - функцию '''switch_to_section'''. Ее нужно модифицировать следующим образом:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
-- Выполняет переключение на указанную секцию, если задана.&lt;br /&gt;
-- Если section == nil, остается работать старая секция.&lt;br /&gt;
function switch_to_section(npc, st, section)&lt;br /&gt;
  if section == nil or section == &amp;quot;&amp;quot; then&lt;br /&gt;
    return false&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- 15.03.2008 by SA:&lt;br /&gt;
  -- отключает &amp;quot;смертельные зоны&amp;quot; на ЧАЭС после запуска режима FREEPLAY&lt;br /&gt;
  -- 	таймер не отключается, но сам &amp;quot;выброс&amp;quot; не происходит&lt;br /&gt;
  if (section == &amp;quot;sr_aes_deadzone&amp;quot;) then&lt;br /&gt;
	if (has_alife_info(&amp;quot;freeplay_activated2&amp;quot;)) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  ... далее без изменений ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данный способ оставляет висящий на нулях таймер и все эффекты начала выброса, но сам «''выброс''» отключается.&lt;br /&gt;
&lt;br /&gt;
И последнее: переход ЧАЭС1-Припять необходимо отметить на карте. Для этого существует вполне «легальный» механизм. Находим файл '''level_tasks.script''' и в конце функции '''add_lchanger_location''' дописываем следующее:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
-- aes&lt;br /&gt;
obj = sim:story_object(31410)&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;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь 31410 - story_id нашего level_changer, который создается нашей функцией '''create_chaes2pripyat_exit'''.&lt;br /&gt;
&lt;br /&gt;
На этом пока все (мелкие огрехи типа направления взгляда игрока после смены уровня исправлю позже).&lt;br /&gt;
Прошу тестировать и дополнять.&lt;br /&gt;
&lt;br /&gt;
С уважением, sarthur.&lt;br /&gt;
&lt;br /&gt;
== Дополняет авторы: vllzl ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
«По-честному» (скриптом, без модификации ''all.spawn'') таймер выброса отключить не получится.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Можно удалить таймер скриптом (удаляет рестриктор из игры)&lt;br /&gt;
Для этого в начале всех функций в sr_timer.script и sr_aes_deadzone.script написать:&lt;br /&gt;
&amp;lt;code&amp;gt;if not has_alife_info(&amp;quot;freeplay_activated1&amp;quot;) or (&amp;quot;freeplay_activated2&amp;quot;) then&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Не забываем поставить второе end в конце функции(особенность Lua).&lt;br /&gt;
&lt;br /&gt;
Удалит таймер и выброс из игры во фриплее. Vllzl&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>128.72.2.170</name></author>	</entry>

	</feed>