<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Book Mod</title>
		<link>http://book-mod.3dn.ru/</link>
		<description>Форум</description>
		<lastBuildDate>Wed, 05 Mar 2014 16:49:45 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://book-mod.3dn.ru/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Спавн НПС через all.spawn</title>
			<link>https://book-mod.3dn.ru/forum/25-93-1</link>
			<pubDate>Wed, 05 Mar 2014 16:49:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: Возрожденный&lt;br /&gt;Количество ответов: 25</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerG295wt&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerG295wt&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerG295wt&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerG295wt&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerG295wt&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Собственно урочек тута&apos;);$(&apos;#uSpoilerG295wt&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerG295wt&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerG295wt&apos;)).val(&apos;[+] Собственно урочек тута&apos;);$(&apos;#uSpoilerG295wt&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Собственно урочек тута&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;С помощью ACDC декомпилируем all.spawn &lt;br /&gt; Получаем кучу файлов типа : alife_l01_escape , way_l01_escape и тд. &lt;br /&gt; Создадим нового непися на Кордоне. Открываем alife_l01_escape, и крутим в самый низ. Если у вас чистая игра и вы ничего не делали в Олл спавне то посленяя секция у вас будет под номером 869. Добавляем туда вот такой код(в конец): &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;l01_escape_93] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = stalker &lt;br /&gt; name = noobik &lt;br /&gt; position = -172.21215820313,-19.941787719727,-161.09272766113 &lt;br /&gt; direction = 0.062321275472641,0.00316426996141672,0.0140644172206521 &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties &lt;br /&gt; money = 5000 &lt;br /&gt; character_profile = esc_noobik &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 52 &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 76655 &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; &amp;#91;logic] &lt;br /&gt; cfg = scripts&amp;#92;noobik_logic.ltx &lt;br /&gt;&lt;br /&gt; &amp;#91;smart_terrains] &lt;br /&gt; none = true &lt;br /&gt; END &lt;br /&gt; story_id = 10000 &lt;br /&gt;&lt;br /&gt; &amp;#91;spawn] &lt;br /&gt; conserva &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = actors&amp;#92;soldier&amp;#92;soldier_beret_1 &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties &lt;br /&gt; g_team = 0 &lt;br /&gt; g_squad = 1 &lt;br /&gt; g_group = 5 &lt;br /&gt; health = 1 &lt;br /&gt; dynamic_out_restrictions =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; dynamic_in_restrictions =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0x617a6b75 &lt;br /&gt; upd:creature_flags = 0x6b &lt;br /&gt; upd:position = -172.21215820313,-19.941787719727,-161.09272766113 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = 0.00316426996141672,0.062321275472641,0 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 1 &lt;br /&gt; upd:g_group = 5 &lt;br /&gt;&lt;br /&gt; ; cse_alife_monster_abstract properties &lt;br /&gt;&lt;br /&gt; upd:next_game_vertex_id = 65535 &lt;br /&gt; upd:prev_game_vertex_id = 65535 &lt;br /&gt; upd:distance_from_point = 0 &lt;br /&gt; upd:distance_to_point = 0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_human_abstract properties &lt;br /&gt; predicate5 = 1,2,2,1,2 &lt;br /&gt; predicate4 = 0,1,1,1 &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt;&lt;br /&gt; upd:start_dialog =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; ; se_stalker properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Разъясню некоторые пункты, чтобы в след. раз не пришлось прибегать к тутору. &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;section_name = stalker -//это для игры тут пишется к примеру если ето у тебя сталкера &lt;br /&gt; или бандюки то должно быть section_name = stalker &lt;br /&gt; name = noobik -//пишем что хотим &lt;br /&gt; position = -172.21215820313,-19.941787719727,-161.09272766113 -//позиция &lt;br /&gt; direction = 0,0,0 -// направление взгляда(можно писать всегда нули) &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties &lt;br /&gt; money = 5000 -//его бабло &lt;br /&gt; character_profile = esc_noobik -//ссылка на профиль в character_desc_локация(раз создаем &lt;br /&gt; в алайф эскейп значит и профиль будет искатсья в характер_деск_ескейп) &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 52 -// гейм вертекс &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 76655 -//левел вертекс &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt;&lt;br /&gt; [logic] &lt;br /&gt; cfg = scripts&amp;#92;noobik_logic.ltx -// ссылка на логику &lt;br /&gt;&lt;br /&gt; ; cse[smart_terrains] &lt;br /&gt; none = true &lt;br /&gt; END &lt;br /&gt; story_id = 10000 -//его стори айди &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = actors&amp;#92;soldier&amp;#92;soldier_beret_1 -// его визуал &lt;br /&gt;&lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0 &lt;br /&gt; upd:creature_flags = 0 &lt;br /&gt; upd:position = -172.21215820313,-19.941787719727,-161.09272766113 -//опять пишем позицию &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = 0.028013030067086,0,0.9996075630188 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 1 &lt;br /&gt; upd:g_group = 2 &lt;br /&gt;&lt;br /&gt; upd:next_game_vertex_id = 65535-//честно не знаю что это, я всегда пишу эти цифры &lt;br /&gt; upd:prev_game_vertex_id = 65535-//не знаю, но пишем всегда это &lt;br /&gt; upd:distance_from_point = 0 &lt;br /&gt; upd:distance_to_point = 0&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Компилируем, получаем файл all.spawn.new , копируем его в геймдату/спавнс и &lt;br /&gt; переименовываем просто в алл спавн. Это еще не все! &lt;br /&gt;&lt;br /&gt; Теперь открываем файл character_desc_escape перед профилем волка вставляем это: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;specific_character id=&quot;esc_noobik&quot; team_default = &quot;1&quot;&gt; &lt;br /&gt; &lt;name&gt;Нубик&lt;/name&gt; &lt;br /&gt; &lt;icon&gt;ui_npc_u_stalker_neytral_balon_1&lt;/icon&gt; &lt;br /&gt; &lt;bio&gt;esc_noobik&lt;/bio&gt; &lt;br /&gt;&lt;br /&gt; &lt;class&gt;esc_noobik&lt;/class&gt; &lt;br /&gt; &lt;community&gt;stalker&lt;/community&gt; &lt;terrain_sect&gt;stalker_terrain&lt;/terrain_sect&gt; &lt;br /&gt;&lt;br /&gt; &lt;rank&gt;434&lt;/rank&gt; &lt;br /&gt; &lt;reputation&gt;5&lt;/reputation&gt; &lt;br /&gt; &lt;money min=&quot;600&quot; max=&quot;2000&quot; infinitive=&quot;0&quot;&gt;&lt;/money&gt; &lt;br /&gt;&lt;br /&gt; &lt;snd_config&gt;characters_voice&amp;#92;human_01&amp;#92;stalker&amp;#92;&lt;/snd_config&gt; &lt;br /&gt; &lt;crouch_type&gt;-1&lt;/crouch_type&gt; &lt;br /&gt;&lt;br /&gt; &lt;visual&gt;actors&amp;#92;soldier&amp;#92;soldier_beret_1&lt;/visual&gt; &lt;br /&gt; &lt;supplies&gt; &lt;br /&gt; &amp;#91;spawn] &amp;#92;n &lt;br /&gt; wpn_pm &amp;#92;n &lt;br /&gt; ammo_9x18_fmj = 1 &amp;#92;n &lt;br /&gt; wpn_ak74u &amp;#92;n &lt;br /&gt; ammo_5.45x39_fmj &amp;#92;n &lt;br /&gt; &lt;/supplies&gt; &lt;br /&gt;&lt;br /&gt; #include &quot;gameplay&amp;#92;character_criticals_4.xml&quot; &lt;br /&gt;&lt;br /&gt; &lt;/specific_character&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; у нас будет чел с визуалом военного, иконкой волка, и голосом обычного сталкера. Теперь создаем файл логики, в папке config/scripts создаем файл noobik_logic.ltx и пишем туда: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = remark1 &lt;br /&gt; danger = danger_ignore &lt;br /&gt;&lt;br /&gt; &amp;#91;danger_ignore] &lt;br /&gt; ignore_distance = 5 &lt;br /&gt;&lt;br /&gt; &amp;#91;remark1] &lt;br /&gt; no_move = true&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Все, он никуда не уйдет пока на него не нападут &lt;img src=&quot;http://s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt; Теперь открываем файл game_story_ids.ltx и в самый низ вписываем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;10000 = &quot;esc_noobik&quot;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Далее открываем файл npc_profile.xml вставляем сие: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;character id=&quot;esc_noobik&quot;&gt; &lt;br /&gt; &lt;class&gt;esc_noobik&lt;/class&gt; &lt;br /&gt; &lt;specific_character&gt;esc_noobik&lt;/specific_character&gt; &lt;br /&gt; &lt;/character&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Все, мы на финишной прямой! Открываем файл spawn_sections.ltx и вписываем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;esc_noobik]:stalker &lt;br /&gt; $spawn = &quot;respawn&amp;#92;esc_noobik&quot; &lt;br /&gt; character_profile = esc_noobik &lt;br /&gt; spec_rank = novice &lt;br /&gt; community = stalker&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Все, все готово! Начинаем новую игру, и видем сталкера с именем Нубик = ) &lt;br /&gt; Послесловие &lt;br /&gt; Ну вот, если вы все сделали правильно, все будет работать. Это был тутор по &lt;br /&gt; созданию нового непися с нуля, то бишь не имея его нигде прописанным. Спасибо Николай ФеНиКс и Futura за помощь в находке метода = ) &lt;br /&gt;&lt;br /&gt; Автор статьи - stalkers-life &lt;br /&gt; &lt;!--/ust--&gt;&lt;!--usn(=Собственно урочек тута)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-93-1</guid>
		</item>
		<item>
			<title>Разбор программы xrSpawner</title>
			<link>https://book-mod.3dn.ru/forum/25-249-1</link>
			<pubDate>Sat, 03 Aug 2013 21:10:41 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Описание темы: Автор: Azzy, дополнил и доработал: TuMaN&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerQk7HkU&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerQk7HkU&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerQk7HkU&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerQk7HkU&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerQk7HkU&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Что такое xrSpawner&apos;);$(&apos;#uSpoilerQk7HkU&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerQk7HkU&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerQk7HkU&apos;)).val(&apos;[+] Что такое xrSpawner&apos;);$(&apos;#uSpoilerQk7HkU&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Что такое xrSpawner&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;xrSpawner - программа для редактирования файла all.spawn, позволяет добавлять в игру новые объекты или редактировать старые (NPC, монстров, транспорт, аномалии, и т.д.). &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/xrspawner_v0_13_1_beta/19-1-0-134&quot; target=&quot;_blank&quot;&gt;Скачать xrSpawner можно здесь&lt;/a&gt;&lt;!--/ust--&gt;&lt;!--usn(=Что такое xrSpawner)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerGFQc3w&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerGFQc3w&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerGFQc3w&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerGFQc3w&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerGFQc3w&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Рабочее поле&apos;);$(&apos;#uSpoilerGFQc3w&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerGFQc3w&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerGFQc3w&apos;)).val(&apos;[+] Рабочее поле&apos;);$(&apos;#uSpoilerGFQc3w&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Рабочее поле&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Окно программы делится на три части: &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Объекты&lt;/b&gt; &lt;br /&gt; После загрузки файла all.spawn, появится список Entity и Имя объекта. Здесь можно выбрать нужный объект для редактирования. &lt;br /&gt; В поле Номер объекта выводится порядковый номер выбранного вами объекта. &lt;br /&gt; В поле Версия выводится номер версии движка. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Параметры объекта&lt;/b&gt; &lt;br /&gt; Поле Entity - внутреннее название объекта. Берётся из ltx-файлов в папке config. &lt;br /&gt; Имя объекта- можно ввести любое. &lt;br /&gt; Level_ID - выбор уровня, на котором будет создан объект. &lt;br /&gt; Story ID - позволяет в квестах ставить в ПДА метку на объект. &lt;br /&gt; Путь к объекту&amp;#92;имя файла - вводим путь и имя модели из папки meshes, относительно папки gamedata&quot;, без расширения. &lt;br /&gt; Скрипт - секция со скриптом. &lt;br /&gt; Координаты X,Z,Y - координаты объекта на карте. &lt;br /&gt; Вектор X,Z,Y - куда будет повёрнут объект. &lt;br /&gt; Изменения сохраняем кнопкой &quot;&apos;Принять изменения&apos;&quot; &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Добавить объект&lt;/b&gt; &lt;br /&gt; Здесь можно добавить объект, нажимаем, и появляется список. &lt;br /&gt; Самому добавить объект в базу можно через меню Редактирование. &lt;br /&gt; Выбираем Добавить объект в базу... и выбираем из списка, или вводим новое название группы. Название обязательно вводите латинскими буквами, иначе будет написано &quot;???&quot;. &lt;br /&gt; Объекты сохраняются в файле spawn.base, который лежит в папке программы.&lt;!--/ust--&gt;&lt;!--usn(=Рабочее поле)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerdS1CSn&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerdS1CSn&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerdS1CSn&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerdS1CSn&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerdS1CSn&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Примеры&apos;);$(&apos;#uSpoilerdS1CSn&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerdS1CSn&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerdS1CSn&apos;)).val(&apos;[+] Примеры&apos;);$(&apos;#uSpoilerdS1CSn&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Примеры&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Итак, приведу несколько примеров, как можно пользоваться этой программой. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Пример 1&lt;/b&gt; &lt;br /&gt; Например, изменим первоначальное месторасположение Меченого и его стартовый инвентарь. &lt;br /&gt; В окошке Объекты в поиске введём аctor. Теперь в Параметры объекта изменим его координаты (например, поставим его в лагере новичков), в координатах пишем: x=(-204,4252), y=(-20,52197), z=(-147,9664). Вектор можно оставить тот же. &lt;br /&gt; В окне Скрипт мы видим: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;dont_spawn_character_supplies] &lt;br /&gt; &amp;#91;spawn] &lt;br /&gt; wpn_binoc &lt;br /&gt; detector_simple &lt;br /&gt; novice_outfit &lt;br /&gt; device_torch&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Добавим, например, FN2000 и патроны к нему: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;dont_spawn_character_supplies] &lt;br /&gt; &amp;#91;spawn] &lt;br /&gt; wpn_binoc &lt;br /&gt; detector_simple &lt;br /&gt; novice_outfit &lt;br /&gt; device_torch &lt;br /&gt; wpn_fn2000 &lt;br /&gt; ammo_5.56x45_ss190&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Нажмите Принять изменения ( иначе ничего сохраняться не будет ). &lt;br /&gt; Выберите Файл &gt; Сохранить. В папке с программой появляется all.spawn. Скопируйте его в папку gamedata/spawns. &lt;br /&gt; Вот и всё, теперь при начале новой игры, Меченый появится в лагере новичков, с FN2000. &lt;br /&gt; Да, и не забудьте - после изменения all.spawn всегда начинайте новую игру! &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Пример 2&lt;/b&gt; &lt;br /&gt; Добавим консервы в деревне новичков. &lt;br /&gt; Выберите Редактирование &gt; Добавить объект в базу. Введите название группы - например, items. Название объекта - conserva. Теперь, в поле Добавить объект выберите вашу группу items и нажмите кнопку Добавить. &lt;br /&gt; В самом конце списка Entity появится breakable_object. Выберите его. В параметрах объекта следует изменить поле Entity на conserva, то бишь внутреннее имя файла. &lt;br /&gt; Имя объекта тоже желательно изменить на любое другое. Координаты берём теже, что и ранее (x=(-204,4252), y=(-20,52197), z=(-147,9664)). Также можно использовать другие, если имеются. &lt;br /&gt; Вроде всё. Жмите Принять изменения, помещайте файл в spawns и начинайте новую игру.&lt;!--/ust--&gt;&lt;!--usn(=Примеры)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-249-1</guid>
		</item>
		<item>
			<title>Техника в игре</title>
			<link>https://book-mod.3dn.ru/forum/25-187-1</link>
			<pubDate>Tue, 07 May 2013 14:55:35 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Описание темы: Автор: Jesh&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerG7dhZu&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerG7dhZu&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerG7dhZu&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerG7dhZu&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerG7dhZu&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Пам парарам&apos;);$(&apos;#uSpoilerG7dhZu&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerG7dhZu&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerG7dhZu&apos;)).val(&apos;[+] Пам парарам&apos;);$(&apos;#uSpoilerG7dhZu&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Пам парарам&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Как известно из множества вырезанyого из игры особо запомнился транспорт Сейчас мы вернём один &quot;экземпляр&quot; - всеv известную &quot;Ниву&quot;. Для &quot;воскрешения&quot; понадобиться: &lt;br /&gt; vechicles.ltx (gamedata/config/creatures) &lt;br /&gt; all.spawn &lt;br /&gt; текстовый редактор &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/ac_dc_dlja_shadow_of_chernobyl/19-1-0-139&quot; target=&quot;_blank&quot;&gt;ACDC для ТЧ&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; 1. Распакуем файл all.spawn при помощи проги от AMK-team. Как распаковывать написано в readme.txt поэтому значит описывать данный этап не буду. &lt;br /&gt;&lt;br /&gt; 2. Находим файл alife_l01_escape.ltx &lt;br /&gt; Как видно там структура что то вроде этого: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;0] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = breakable_object &lt;br /&gt; name = meshes&amp;#92;brkbl#0.ogf &lt;br /&gt; position = −79.4930877685547,-3.16186141967773,-76.9341430664063 &lt;br /&gt; direction = 0.581841766834259,-1.45571649074554,-0.267672836780548 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 0 &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 594270 &lt;br /&gt; object_flags = 0xffffffba &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = meshes&amp;#92;brkbl#0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object_breakable properties &lt;br /&gt; health = 1&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; то есть очень простая... &lt;br /&gt; 3. заменять имеющееся не будем, а просто в самом конце напишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;870] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = m_car &lt;br /&gt; name = niva &lt;br /&gt; position = -239,8912,-19,43,-123,0998 &lt;br /&gt; direction = 0.581841766834259,-1.45571649074554,-0.267672836780548 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 0 &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 594270 &lt;br /&gt; object_flags = 0xffffffba &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = physics&amp;#92;vehicles&amp;#92;niva&amp;#92;veh_niva_u_01 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object_breakable properties &lt;br /&gt; health = 1 &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;&quot;niva&quot; это секция в ltx файле, которая будет использоваться для параметров объекта &lt;br /&gt; &quot;visual_name&quot; это расположение модели &lt;br /&gt; &quot;health = 1&quot; следовательно здоровье &lt;br /&gt; &quot;position&quot; и &quot;direction&quot; взяты с &quot;долго блуждающего&quot; по сети файла all.spawn, где автомобили находились прямо возле выхода от Сидоровича. Для выбора других координат можно использовать команду консоли &quot;rs_stats = 1&quot;&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; После чего сохраняем изменения компилируем all.spawn помещаем его в gamedata/spawns. Теперь нам понадобится файл vechicles.ltx. Открываем его и дописываем там: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;niva]&amp;nbsp;&amp;nbsp;&lt;br /&gt; GroupControlSection = spawn_group &lt;br /&gt; $spawn = &quot;vehicles&amp;#92;niva&quot; &lt;br /&gt; class = SCRPTCAR &lt;br /&gt; cform = skeleton &lt;br /&gt; visual = physics&amp;#92;vehicles&amp;#92;niva&amp;#92;veh_niva_u_01.ogf&amp;nbsp;&amp;nbsp;&lt;br /&gt; actor_visual = physics&amp;#92;vehicles&amp;#92;niva&amp;#92;veh_niva_u_01.ogf&amp;nbsp;&amp;nbsp;&lt;br /&gt; ef_equipment_type = 3 &lt;br /&gt; ph_mass = 100000 &lt;br /&gt; script_binding = bind_physic_object.init &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Всё! Начинаем новую игру, после выхода от Сидора вы увидите Ниву. Для того чтобы её завести, наберите в консоли &quot;bind turn_engine kb&quot;. По этом принципу можно заспавнить авто на любой локации.&lt;!--/ust--&gt;&lt;!--usn(=Пам парарам)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-187-1</guid>
		</item>
		<item>
			<title>Пути движения</title>
			<link>https://book-mod.3dn.ru/forum/25-182-1</link>
			<pubDate>Fri, 03 May 2013 18:02:16 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerBpyGKA&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerBpyGKA&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerBpyGKA&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerBpyGKA&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerBpyGKA&apos;)).val(&apos;[&amp;#92;&amp;#8211;] ПыщПыщ&apos;);$(&apos;#uSpoilerBpyGKA&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerBpyGKA&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerBpyGKA&apos;)).val(&apos;[+] ПыщПыщ&apos;);$(&apos;#uSpoilerBpyGKA&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] ПыщПыщ&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Сегодня мы разберем основу работы с ACDC. Но... для начала небольшое отступление. Вы зададите вопрос, почему же лучше работать с ACDC, нежели чем с xrSpawner? Отвечаю: xrSpawner, при всех его преимуществах, имеет множество более значительных минусов. Во первых, xrSpawner не определяет не game_vertex, ни level_vertex. А также он измеряет только позицию. Я думаю, работающие с xrSpawner замечали, что порой обьекты, которые они спаунят, не всегда появляются на месте. Или вообще не появляются. Потому что - повторяю - xrSpawner не определяет вертексы, т.е. точную позицию и распределение по АИ-сетке. Итак, начнём работу! &lt;br /&gt;&lt;br /&gt; У нас есть программа ACDC, руки и мозги в голове. Кладём all.spawn в папку utils и жмём на батник &quot;распаковка&quot;. Итак, all.spawn распакован! Видим файлы alife_*** и way_***. В файлах alife_*** только обьекты, которые спаунятся. А в way_*** только пути. Я думаю с алайфом всё понятно. Разберем way. Пути. Путь это и есть путь. По которому может двигаться живой обьект. Сейчас мы это рассмотрим. &lt;br /&gt;&lt;br /&gt; Для начала устроим текстовый беспредел:) &lt;br /&gt; Найдём файл alife_l01_escape, а в нём примерно такие строки: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;869] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = actor &lt;br /&gt; name = level_prefix_actor_0001 &lt;br /&gt; s_rp = 0 &lt;br /&gt; position = -139.449829101563,-29.6908683776855,-351.492797851563 &lt;br /&gt; direction = 0,0.00895109120756388,0 &lt;br /&gt; s_flags = 0x29 &lt;br /&gt;&lt;br /&gt; &amp;#91;dont_spawn_character_supplies] &lt;br /&gt;&lt;br /&gt; &amp;#91;spawn] &lt;br /&gt; wpn_binoc &lt;br /&gt; novice_outfit &lt;br /&gt; device_torch &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = actors&amp;#92;hero&amp;#92;stalker_novice &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties &lt;br /&gt; g_team = 0 &lt;br /&gt; g_squad = 0 &lt;br /&gt; g_group = 0 &lt;br /&gt; health = 1 &lt;br /&gt; dynamic_out_restrictions =&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; dynamic_in_restrictions =&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0x75732029 &lt;br /&gt; upd:creature_flags = 0x70 &lt;br /&gt; upd:position = -139.449829101563,-29.6908683776855,-351.492797851563 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = 0.00895109120756388,0,-0.999959945678711 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 0 &lt;br /&gt; upd:g_group = 0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties &lt;br /&gt; money = 40 &lt;br /&gt; trader_flags = 0 &lt;br /&gt; character_profile = actor &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_actor properties &lt;br /&gt;&lt;br /&gt; upd:actor_state = 0xd20 &lt;br /&gt; upd:actor_accel_header = 0 &lt;br /&gt; upd:actor_accel_data = 0 &lt;br /&gt; upd:actor_velocity_header = 0 &lt;br /&gt; upd:actor_velocity_data = 0 &lt;br /&gt; upd:actor_radiation = 0 &lt;br /&gt; upd:actor_weapon = 110 &lt;br /&gt; upd:num_items = 0&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Для начала расщедримся:) &lt;br /&gt; Припишем актору в [dont_spawn_character_supplies] такие строки: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;spawn] &lt;br /&gt; wpn_binoc &lt;br /&gt; wpn_vintorez &lt;br /&gt; ammo_9x39_pab9 = 20 &lt;br /&gt; wpn_usp &lt;br /&gt; ammo_11.43x23_hydro = 22 &lt;br /&gt; novice_outfit &lt;br /&gt; device_torch&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Получится, что мы подарим Меченому при начале игры Винторез, 600 патронов к нему, пистолет USP и 420 патронов к нему. Так. Теперь Меченый у нас будет крутым рэмбо:) Теперь ещё и подарим ему денежек: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;; cse_alife_trader_abstract properties &lt;br /&gt; money = 40 &lt;br /&gt; trader_flags = 0 &lt;br /&gt; character_profile = actor&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В строке money напишем любое число. Тока астрономические не надо (не проверял). Ну, теперь Меченый не только рэмбо, но и миллионер:). &lt;br /&gt;&lt;br /&gt; Теперь займемся кординатами. У нас они такие: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;position = -139.449829101563,-29.6908683776855,-351.492797851563 &lt;br /&gt; direction = 0,0.00895109120756388,0&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Это наши позиция и дирекция. &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;; cse_alife_object properties &lt;br /&gt; game_vertex_id = 19&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;тот самый вертекс на игре &lt;br /&gt; distance = 0.699999988079071 &lt;br /&gt; level_vertex_id = 111256&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;вертекс на уровне &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; А теперь пропишем туда такие кординаты: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;position = -167.232299804688,-25.4363708496094,-354.692901611328 &lt;br /&gt; direction = 0,-0.365248799324036,0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 0 &lt;br /&gt; distance = 0.699999988079071 &lt;br /&gt; level_vertex_id = 82413 &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0x75732029 &lt;br /&gt; upd:creature_flags = 0x70 &lt;br /&gt; upd:position = -167.232299804688,-25.4363708496094,-354.692901611328 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = -0.365248799324036,0,0.930909931659698 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 0 &lt;br /&gt; upd:g_group = 0&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Теперь игра начнётся в здании блокпоста на 2 этаже:). С этим мы закончим. &lt;br /&gt; Теперь создадим нового НПС: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;871] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = stalker &lt;br /&gt; name = esc_bridge_soldier1 &lt;br /&gt; position =&amp;nbsp;&amp;nbsp;-133.27989196777,-30.146812438965,-372.0263671875 &lt;br /&gt; direction = 0.028013030067086,0,0.9996075630188 &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties &lt;br /&gt; money = 5000 &lt;br /&gt; character_profile = esc_soldier_regular &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 20 &lt;br /&gt; distance = 16.1000003814697 &lt;br /&gt; level_vertex_id = 118083 &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; &amp;#91;logic] &lt;br /&gt; active = walker &lt;br /&gt;&lt;br /&gt; &amp;#91;walker] &lt;br /&gt; path_walk = hodim_dvor &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = actors&amp;#92;soldier&amp;#92;soldier_bandana_3 &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties &lt;br /&gt; g_team = 0 &lt;br /&gt; g_squad = 1 &lt;br /&gt; g_group = 2 &lt;br /&gt; health = 1 &lt;br /&gt; dynamic_out_restrictions =&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; dynamic_in_restrictions =&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0 &lt;br /&gt; upd:creature_flags = 0 &lt;br /&gt; upd:position = -133.27989196777,-30.146812438965,-372.0263671875 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = 0.028013030067086,0,0.9996075630188 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 1 &lt;br /&gt; upd:g_group = 2 &lt;br /&gt;&lt;br /&gt; ; cse_alife_monster_abstract properties &lt;br /&gt;&lt;br /&gt; upd:next_game_vertex_id = 65535 &lt;br /&gt; upd:prev_game_vertex_id = 65535 &lt;br /&gt; upd:distance_from_point = 0 &lt;br /&gt; upd:distance_to_point = 0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_human_abstract properties &lt;br /&gt; predicate5 = 1,2,2,1,2 &lt;br /&gt; predicate4 = 0,1,1,1 &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt;&lt;br /&gt; upd:start_dialog =&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; ; se_stalker properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Так вот он наш друг НПС - солдат на блокпосте:) Тут уже знакомы строки. Позиция, дирекция, вертексы... Но есть кое что новое:) &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = walker &lt;br /&gt;&lt;br /&gt; &amp;#91;walker] &lt;br /&gt; path_walk = hodim_dvor&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Элементарная логика НПС. hodim_dvor - это путь, по которому будет ходить НПС. &lt;br /&gt; НПС есть, всё готово. Но пути то у нас нет:) Создадим его в файле way_l01_escape. Припишем вот такие строчки: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;hodim_dvor] &lt;br /&gt; points = p0,p1 &lt;br /&gt; p0:name = name00 &lt;br /&gt; p0:position = -120.44634246826,-30.15016746521,-363.68786621094 &lt;br /&gt; p0:game_vertex_id = 24 &lt;br /&gt; p0:level_vertex_id = 132887 &lt;br /&gt; p0:links = p1(1&amp;#41; &lt;br /&gt;&lt;br /&gt; p1:name = name01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;номер точки &lt;br /&gt; p1:position = -132.61611938477,-30.142726898193,-363.87365722656 - только позиция&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; p1:game_vertex_id = 19&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;вертекс на игре &lt;br /&gt; p1:level_vertex_id = 118862&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;вертекс на уровне &lt;br /&gt; p1:links = p0(1&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;на какую точку после этой перейдёт НПС (тут он будет ходить туда-сюда, если не написать линкс, то он остановится на месте.&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Всё! Вгоняем в way_*** эти строки (тока мои коментарии писать не надо). Всё готово, можно тестить изменения &lt;img src=&quot;http://s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; Как снимать координаты и работать с PI, расскажу в следующей статье. Теперь жмём на батник &quot;запаковка&quot; и усё! Пихаем all.spawn в игру. Только лучше ещё поправить отношения актора к военным и наоборот в лучшую сторону. Чтобы непись сразу пошёл по своему пути. Он будет ходить от казармы до дома (там поймёте).&lt;!--/ust--&gt;&lt;!--usn(=ПыщПыщ)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-182-1</guid>
		</item>
		<item>
			<title>Создание проводников</title>
			<link>https://book-mod.3dn.ru/forum/25-179-1</link>
			<pubDate>Fri, 03 May 2013 16:37:14 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilernUln3L&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilernUln3L&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilernUln3L&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilernUln3L&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilernUln3L&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Начинаем представление&apos;);$(&apos;#uSpoilernUln3L&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilernUln3L&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilernUln3L&apos;)).val(&apos;[+] Начинаем представление&apos;);$(&apos;#uSpoilernUln3L&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Начинаем представление&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;&lt;b&gt;Цели урока: &lt;br /&gt; 1. Создание перехода на заранее подключенную локацию &lt;br /&gt; 2. Визуализация созданного перехода &lt;br /&gt; 3. Использование вольных сталкеров с целью перемещения по локации&lt;/b&gt; &lt;br /&gt; Описание урока: В данном уроке мы создадим переход на заранее подключенную нами локацию, установим на точку перехода аномалию «Пространственный Пузырь», используем вольных сталкеров для быстрого перемещения к нашей аномалии. &lt;br /&gt; Итак, преступим. Свет погас, открывается занавес. &lt;br /&gt; Содержание: &lt;br /&gt; &lt;b&gt; * 1 Акт первый, основной &lt;img src=&quot;http://s51.ucoz.net/sm/23/wink.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wink&quot; /&gt; &lt;br /&gt; * 2 Акт второй, Гламурный &lt;img src=&quot;http://s51.ucoz.net/sm/23/wink.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wink&quot; /&gt; &lt;br /&gt; * 3 Акт третий, Ленивый&lt;/b&gt; &lt;br /&gt;&lt;br /&gt; Акт первый, основной &lt;img src=&quot;http://s51.ucoz.net/sm/23/wink.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wink&quot; /&gt; &lt;br /&gt; Строго следуя &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/25-178-1&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;рекомендациям БАТИ-STALKER`a&lt;/a&gt; создаем переход на нашу локацию. Дальше идут цитаты (немного подправленные) из многим известного туториала вышеуказанного модмейкера &lt;img src=&quot;http://s51.ucoz.net/sm/23/wink.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wink&quot; /&gt; &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;Соединение с остальными уровнями. &lt;br /&gt; Предлагаю вам не терять зря времени, просто бегая по подключенной локации, а замерить координаты для создания перехода. Координаты будем снимать на 2-х локациях: на той с которой будем переходить и на той на которую вы хотите сделать переход соответственно. На каждой локации нам нужно снять по одной координате(координата местоположения самого перехода на первой локации и координата места в которое будет бросать при переходе на подключенную локацию). &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/5-104-1&quot; target=&quot;_blank&quot;&gt;Как снять координаты&lt;/a&gt;. &lt;br /&gt; Мы отмерили все необходимые нам координаты. &lt;br /&gt; Затем распаковываем сделанный нами ранее all.spawn. Теперь в нужных нам локациях, в alife_ файлах (для данного примера файл alife_zaton.ltx) добавляем следующую секцию спавна: (примечание от Freezer: в приведенном ниже &lt;br /&gt; коде имена и стартовые координаты указаны для уровня Затон, сам переход расположен левой верхней области карты уровня справа от дорожки, а конечные координаты для подключенного уровня Янтарь, ГГ появляется в бункере у Сахарова) &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_abstract properties&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; section_name = level_changer&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; name = yan_actor_arrive_walk- уникальное имя &lt;br /&gt; position = -278.19274902344,12.461790084839,621.68505859375 - координаты перехода &lt;br /&gt; direction = 0,0,0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; cse_abstract__unk1_h16 = 0x1&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_object properties&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; game_vertex_id = 33&amp;nbsp;&amp;nbsp;– геймвертексы перехода &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 389502&amp;nbsp;&amp;nbsp;– левелвертексы перехода &lt;br /&gt; object_flags = 0xffffff3e &lt;br /&gt; ; cse_shape properties&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shapes = shape0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:type = box&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:axis_x = 1.25219917297363,0,0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:axis_y = 0,3.09340000152588,0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:axis_z = 0,0,1.25219917297363&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:offset = 0,0,0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_space_restrictor properties&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; restrictor_type = 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_level_changer properties&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; dest_game_vertex_id = 934 – геймвертексы локи на которую ведет переход &lt;br /&gt; dest_level_vertex_id = 73102 - левелвертексы локи на которую ведет переход &lt;br /&gt; dest_position = 28.876106262207,-11.706871032715,-277.9711303710 - позиция куда кидает &lt;br /&gt; dest_direction = 0,0,0 - поворот гг &lt;br /&gt; dest_level_name = l07_yantar - на какую локу кидает &lt;br /&gt; dest_graph_point = start_actor_01 &lt;br /&gt; silent_mode = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; se_level_changer properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Изменяем только те места, которые я прокомментировал, комментарии соответственно, удаляем.&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Итак, сам переход мы создали можно собрать all.spawn и проверить работоспособность перехода. Перейдем к следующему этапу. &lt;br /&gt;&lt;br /&gt; Акт второй, Гламурный &lt;img src=&quot;http://s51.ucoz.net/sm/23/wink.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wink&quot; /&gt; &lt;br /&gt; Переход то мы собрали, вот только он невидимый, поэтому добавим гламура и поставим на место перехода всем известную аномалию «Пространственный Пузырь» aka шарик-телепортатор. Снова открываем alife_zaton.ltx (ибо переход мы разместили на нем), и добавляем следующую секцию: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;2] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = space_restrictor &lt;br /&gt; name = zat_teleport_sphere_to_yan – уникальное имя секции &lt;br /&gt; position = -278.19274902344,12.461790084839,621.68505859375 – координаты шарика (они точно соответствуют &lt;br /&gt; координатам созданного нами ранее перехода&amp;#41; &lt;br /&gt; direction = 0,0,0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 33 –геймвертекс шарика (соответствует геймвертексу перехода&amp;#41; &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 389502 –левелвертекс шарика (соответствует левелвертексу перехода&amp;#41; &lt;br /&gt; object_flags = 0xffffff3e &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; &amp;#91;logic] &lt;br /&gt; cfg = scripts&amp;#92;zaton&amp;#92;zat_teleport_sphere.ltx – уникальное имя используемого скрипта &lt;br /&gt; END &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_shape properties &lt;br /&gt; shapes = shape0 &lt;br /&gt; shape0:type = sphere &lt;br /&gt; shape0:offset = 0,0,0 &lt;br /&gt; shape0:radius = 1.40499997138977 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_space_restrictor properties &lt;br /&gt; restrictor_type = 3&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Сохраняем файл (если юзали контрол+цэ контрол+вэ незабываем удалить комменты). &lt;br /&gt; Открываем way_zaton.ltx в него добавляем следующую секцию: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;zat_teleport_sphere_to_yan] &lt;br /&gt; points = p0 &lt;br /&gt; p0:name = wp00 &lt;br /&gt; p0:flags = 0x1 &lt;br /&gt; p0:position = -278.19274902344,12.461790084839,621.68505859375 &lt;br /&gt; p0:game_vertex_id = 33 &lt;br /&gt; p0:level_vertex_id = 389502&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Думаю, что комменты по координатам не нужны. Обратите внимание на имя секции, оно соответствует уникальному имени в alife файле. Все, пока с alife и way мы закончили, можно собрать all.spawn &lt;br /&gt; Далее необходимо создать скрипт для шарика, имя скрипта мы указали в alife файле. Итак, в папке с игрой в gamedata&amp;#92;configs&amp;#92;scripts&amp;#92;zaton создаем файл zat_teleport_sphere.ltx. В файле пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = sr_particle@ zat_teleport_sphere_to_yan – имя активного партикла &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_particle@ zat_teleport_sphere_to_yan] – собственно начало самого партикла &lt;br /&gt; name = anomaly2&amp;#92;anomaly_spatial_bubble_idle &lt;br /&gt; path = zat_teleport_sphere_to_yan – имя секции в way файле в которой описан шарик &lt;br /&gt; mode = 2 &lt;br /&gt; looped = true&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Сохраняем файл по указанному пути, вспоминаем что юзали cntrl+c, cntr+v, снова открываем файл и удаляем мои комменты &lt;img src=&quot;http://s51.ucoz.net/sm/23/wink.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wink&quot; /&gt; &lt;br /&gt;&lt;br /&gt; Если все сделано правильно, то можно запустить игру и насладиться красивейшим явлением, аномалией «Пространственный Пузырь», расположенной в точке нашего перехода. &lt;br /&gt;&lt;br /&gt; Акт третий, Ленивый &lt;img src=&quot;http://s51.ucoz.net/sm/23/wink.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;wink&quot; /&gt; &lt;br /&gt; Итак, переход создан, визуализирован и радует нас своей красотой и функциональностью, но думаю, что за время всех проверок вы уже изрядно стерли кнопки на клаве, бегая по зоне пешком туда-сюда, поэтому, как говорил один &lt;br /&gt; известный пендосовский миллионер: «Я так хорошо выгляжу потому, что я никогда на стоял если можно сидеть и никогда не сидел если можно лежать». Ну вот, запустили мы новую игру, давайте пробежим немного прямо. Кто это? Опа, нам на встречу идут пара неписей. Из беседы мы узнаем, что за энную сумму бабла они могут нас отвести хоть на край света, да вот досада эти два осла с автоматами ничерта не знают о нашей прекрасной аномалии «Пространственный Пузырь». За чем же встало дело? Давайте просветим невежд, и в будущем будем на законных &lt;br /&gt; основаниях пользоваться их услугами. Преступим. Для начала снова замерим координаты на местности куда нас приведут npc (я снял координаты на пару метров левее самой аномалии). Далее в файле alife_zaton.ltx добавим следующую секцию: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;3] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = smart_terrain &lt;br /&gt; name = zat_b1000 – уникальное имя смарт террайна на который нас приведут неписи &lt;br /&gt; position = -317.98794555664,19.28000831604,608.48858642578 –координаты конечной точки на которую нас приведут &lt;br /&gt; неписи &lt;br /&gt; direction = 0,0,0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 212 &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 314120 &lt;br /&gt; object_flags = 0xffffff3e &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; &amp;#91;smart_terrain] &lt;br /&gt; cfg = scripts&amp;#92;zaton&amp;#92;smart&amp;#92;zat_b1000.ltx – уникальное имя используемого скрипта &lt;br /&gt; END &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_shape properties &lt;br /&gt; shapes = shape0 &lt;br /&gt; shape0:type = sphere &lt;br /&gt; shape0:offset = 0,0,0 &lt;br /&gt; shape0:radius = 2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_space_restrictor properties &lt;br /&gt; restrictor_type = 3 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; se_smart_terrain properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Сохраняем файл &lt;br /&gt; Открываем way_zaton.ltx &lt;br /&gt; Добавляем следующие секции: &lt;br /&gt; В данной секции пишем координаты куда нас должны привести &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;zat_b1000_traveller_actor] &lt;br /&gt; points = p0 &lt;br /&gt; p0:name = wp00 &lt;br /&gt; p0:position = -317.98794555664,19.28000831604,608.48858642578 &lt;br /&gt; p0:game_vertex_id = 212 &lt;br /&gt; p0:level_vertex_id = 314120&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Все секции, приведенные ниже это - вейпойнты для сопровождающих неписей, они нужны иначе никто никуда не идет, а все стоят и тупо гонят друг на друга, примерно так: &lt;br /&gt; ГГ: Я ж тебе сволочь денег дал, пошли!!! &lt;br /&gt; Непись: Да чет лениво мне как-то… ГГ: Тогда бабло верни!!!! Непись: Какое такое бабло? В это время движок уже отключил аи и управление, и как результат, ГГ кипит от злости за то, что его банально кинули на бабки, но даже в рожу неписю дать не может, а тот, скотина, стоит и ухмыляется. Вот такую картину я лицезрел пока не добавил нижеприведенные секции. Координаты в них я не менял, а секции банально скопировал из другого места, поэтому я иду к аномалии «Пространственный Пузырь», а сопровождающие неписи &quot;идут лесом&quot;, то есть к аномалии коготь (для желающих лицезреть проводников рядом с собой в конечной точке прибытия, небольшое домашнее задание по доработке координат в нижеприведенных секциях) &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;zat_b1000_traveller_squad] &lt;br /&gt; points = p0,p1 &lt;br /&gt; p0:name = wp00 &lt;br /&gt; p0:position = -24.9449501037598,1.29261004924774,-196.022598266602 &lt;br /&gt; p0:game_vertex_id = 56 &lt;br /&gt; p0:level_vertex_id = 895313 &lt;br /&gt; p0:links = p1(1&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; p1:name = wp01 &lt;br /&gt; p1:position = -26.4207763671875,1.04062795639038,-194.030059814453 &lt;br /&gt; p1:game_vertex_id = 56 &lt;br /&gt; p1:level_vertex_id = 892596 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;zat_b1000_walker_1_look] &lt;br /&gt; points = p0 &lt;br /&gt; p0:name = wp00|a=sit_ass &lt;br /&gt; p0:flags = 0x1 &lt;br /&gt; p0:position = -35.1018524169922,0.350845992565155,-193.619186401367 &lt;br /&gt; p0:game_vertex_id = 56 &lt;br /&gt; p0:level_vertex_id = 876236 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;zat_b1000_walker_1_walk] &lt;br /&gt; points = p0 &lt;br /&gt; p0:name = wp00 &lt;br /&gt; p0:flags = 0x1 &lt;br /&gt; p0:position = -33.450439453125,0.419611006975174,-192.414947509766 &lt;br /&gt; p0:game_vertex_id = 56 &lt;br /&gt; p0:level_vertex_id = 879043 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;zat_b1000_walker_2_look] &lt;br /&gt; points = p0 &lt;br /&gt; p0:name = wp00|a=sit &lt;br /&gt; p0:flags = 0x1 &lt;br /&gt; p0:position = -35.8835983276367,0.317862987518311,-193.98469543457 &lt;br /&gt; p0:game_vertex_id = 56 &lt;br /&gt; p0:level_vertex_id = 874818 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;zat_b1000_walker_2_walk] &lt;br /&gt; points = p0 &lt;br /&gt; p0:name = wp00 &lt;br /&gt; p0:flags = 0x1 &lt;br /&gt; p0:position = -35.9317092895508,0.310889005661011,-191.664642333984 &lt;br /&gt; p0:game_vertex_id = 56 &lt;br /&gt; p0:level_vertex_id = 874821 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;zat_b1000_walker_3_look] &lt;br /&gt; points = p0 &lt;br /&gt; p0:name = wp00 &lt;br /&gt; p0:flags = 0x1 &lt;br /&gt; p0:position = -35.1221542358398,0.349720001220703,-193.500946044922 &lt;br /&gt; p0:game_vertex_id = 56 &lt;br /&gt; p0:level_vertex_id = 876237 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;zat_b1000_walker_3_walk] &lt;br /&gt; points = p0 &lt;br /&gt; p0:name = wp00 &lt;br /&gt; p0:flags = 0x1 &lt;br /&gt; p0:position = -33.0930519104004,0.432388007640839,-191.15592956543 &lt;br /&gt; p0:game_vertex_id = 56 &lt;br /&gt; p0:level_vertex_id = 880435&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Сохраняем файл. Можно собирать all.spawn. &lt;br /&gt; Теперь вспомним о том что мы упоминали некий уникальный скрипт, итак создадим его. В папке с игрой gamedata&amp;#92;configs&amp;#92;scripts&amp;#92;zaton&amp;#92;smart создадим файл zat_b1000.ltx В нем пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;smart_terrain] &lt;br /&gt; squad_id = 32 &lt;br /&gt; max_population = 1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;exclusive] &lt;br /&gt; ;please leave this for sim - stalkers only &lt;br /&gt; zat_b29_stalker_rival_leader = zaton&amp;#92;zat_b29_stalkers_rivals.ltx &lt;br /&gt; zat_b29_stalker_rival_2 = zaton&amp;#92;zat_b29_stalkers_rivals.ltx &lt;br /&gt; zat_b29_stalker_rival_3 = zaton&amp;#92;zat_b29_stalkers_rivals.ltx&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; С содержимым файла разбираться времени не было, работает и ладно, оно тупо скопировано из другого подобного файла, так что вот вам еще одно домашнее задание: разберитесь для чего нужны последние 3 строки в этом файле. &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt; (&lt;span class=&quot;qName&quot;&gt;&lt;!--qn--&gt;Прим. автора&lt;!--/qn--&gt;&lt;/span&gt;)&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;да я лентяй ну и что ;)&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Далее в папке с распакованной геймдатой gamedata&amp;#92;configs&amp;#92;text&amp;#92;rus находим файл st_land_names.xml и кладем его в папку с игрой путь gamedata&amp;#92;configs&amp;#92;text&amp;#92;rus. Открываем скопированный файл и добавляем в него следующую секцию: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;string id=&quot;st_zat_b1000_name&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Пространственный Пузырь&lt;/text&gt; &lt;br /&gt; &lt;/string&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Сохраняем файл. &lt;br /&gt; Далее чешем в папку с распакованной геймдатой, там в gamedata&amp;#92;configs&amp;#92;misc&amp;#92; находим travel_manager.ltx и по аналогии с предыдущим файлом копируем его в папку с игрой. Открываем travel_manager.ltx Находим секции: «идентификатор st_&lt;комьюнити&gt;_zaton_smart_name_1» Пишем туда: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;zat_b1000 = st_stalker_zat_b1000&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Далее ниже находим: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;traveler]&amp;nbsp;&amp;nbsp;; Перечень точек, куда проводники могут отвести за бабосы. &lt;br /&gt; zat_stalker_base_smart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; name смарта&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; и пишем туда: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;zat_b1000&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Ну и в конце: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;zat_b1000] &lt;br /&gt; level = zaton &lt;br /&gt; name = st_zat_b1000_name &lt;br /&gt; condlist = true&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Все, сохраняем и запускаем игру!!!! &lt;!--/ust--&gt;&lt;!--usn(=Начинаем представление)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-179-1</guid>
		</item>
		<item>
			<title>Подключение локаций к ЧН и ЗП  с помощью проги от AMK Team</title>
			<link>https://book-mod.3dn.ru/forum/25-178-1</link>
			<pubDate>Fri, 03 May 2013 16:26:11 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Описание темы: Автор: БАТЯ-STALKER&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilermCU0uz&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilermCU0uz&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilermCU0uz&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilermCU0uz&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilermCU0uz&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Начнем пожалуй&apos;);$(&apos;#uSpoilermCU0uz&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilermCU0uz&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilermCU0uz&apos;)).val(&apos;[+] Начнем пожалуй&apos;);$(&apos;#uSpoilermCU0uz&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Начнем пожалуй&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Инструменты и ресурсы &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/activeperl_5_10_0_1004/19-1-0-158&quot; target=&quot;_blank&quot;&gt;ActivePerl&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/ac_dc_dlja_shadow_of_chernobyl/19-1-0-139&quot; target=&quot;_blank&quot;&gt;ACDC for SoC v.1.0004&lt;/a&gt; &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/ac_dc_dlja_clear_sky/19-1-0-140&quot; target=&quot;_blank&quot;&gt;ACDC for CS v.1.5.04&lt;/a&gt; &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/ac_dc_dlja_call_of_prypyat/19-1-0-141&quot; target=&quot;_blank&quot;&gt;ACDC for CoP&lt;/a&gt; &lt;br /&gt; или &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/universalnyj_ac_dc/19-1-0-161&quot; target=&quot;_blank&quot;&gt;универсальный ACDC&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; Скрипты для редактирования графов: &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/s_t_a_l_k_e_r_game_graph_tool/19-1-0-159&quot; target=&quot;_blank&quot;&gt;ggTool&lt;/a&gt; &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/s_t_a_l_k_e_r_ggeditor_v0_1/19-1-0-160&quot; target=&quot;_blank&quot;&gt;ggEditor v.0.1&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; Распакованные ресурсы ТЧ или мода, из которого взят уровень (если вы берете уровень из мода, то вам наверняка не подойдет простой ACDC). &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Подготовка&lt;/b&gt; &lt;br /&gt; Устанавливаем интерпретатор ActivePerl. &lt;br /&gt; Заходим в папку с программой ggEditor. Создаем там папки CS или CoP (смотря на какую игру делаете) и папку SoC.В папке SoC создаем папку gamedata и кидаем в нее файл game.graph (важно, чтобы game.graph лежал там, иначе программа не прочитает!) из мода, или от ТЧ. В папке gamedata создаем папку levels и кидаем туда папку с уровнем, который мы хотим портировать. Далее возвращаемся в папку SoC и туда кидаем папку с ACDC для ТЧ, туда же кладём all.spawn.Запускаем соответствующий батник для распаковки all.spawn`а. &lt;br /&gt; Далее в папку ggEditor_01&amp;#92;CoP или ggEditor_01&amp;#92;CS, кидаем папку с соответствующим ACDC, опять-же кладем туда all.spawn, распаковываем. &lt;br /&gt; В итоге у нас должно получиться 2 распакованных all.spawn`а, game.graph от ТЧ и папка с переносимым уровнем. &lt;br /&gt; С приготовлениями всё. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Основная работа.&lt;/b&gt; &lt;br /&gt; Запускаем программу ggEditor. Видим там два окошка. В левом открываем game.graph от ТЧ, а в правом — от ЗП или ЧН (в ЗП и ЧН граф вшит в all.spawn, ищите его там. Нужно выбрать тип файлов для ЧН — graph.bin, а для ЗП — все файлы и открыть в папке с ACDC файл section4.bin). В окошках мы видим список уровней. В левом окошке находим нужный нам уровень и нажимаем на соответствующую стрелку для переноса уровня в нужный нам граф. Нажимаем в правом окошке «сохранить». После того, как граф сохранился, можно закрыть программу, она нам больше не понадобится. Потом этого шагаем в папку с ACDC для ЧН/ЗП и удаляем старые файлы section4.bin или graph.bin. Затем переименовываем файлы graph.bin.new или section4.bin.new в graph.bin и соответственно section4.bin. &lt;br /&gt; Далее идем в папку с ACDC от ТЧ, находим там файл alife_наша_локация и копируем его. Затем шуруем в папку с ACDC от ЧН/ЗП, вставляем скопированный нами файл. Открываем этот файл, сносим все, оставляем только одну секцию спавна (лучше всего, если это будет какой-нибудь объект), присваиваем секции номер не меньше 20000, сворачиваем на время этот файл. Далее нужно подогнать вертексы. Для этого запускаем ggTool.bat, ждем некоторое время, после чего в parse_lvids.ltx появляются имена локаций, а рядом с ними числа. Смотрим это число рядом с нашей локацией (в ЧН это скорее всего будет 1620, а в ЗП 934). Далее разворачиваем alife_ файл с нашей локацией, ищем там строку game_vertex_id и пишем там число, которое появилось рядом с нашей локацией при запуске батника ggTool. А вот строку level_vertex_id трогать не следует, т.к. вершины уровня в нашем случае остаются неизменными. RedPython 10:04, 21 ноября 2010 (UTC) Мы подогнали вертексы. &lt;br /&gt; Затем открываем файл all.ltx. Вписываем туда свой alife_ файл локации, way_ файлы не трогаем. Меняем на соответствующее количество локаций строку level_count. &lt;br /&gt; После этого открываем файл alife_zaton (для ЗП) или alife_marsh (для ЧН) и ищем там ГГ по строке section_name = actor. Нашли? Отлично. Теперь присваиваем этой секции спавна позицию (новую позицию прописываем также в строке upd:position = ) и вертексы как у единственного предмета в файле alife_новая_локация. При следующей распаковке, если вы все сделали правильно, наш актор окажется в файле alife_новая_локация. &lt;br /&gt; Мы почти закончили с пробной сборкой новой локации (пока без переходов на другие уровни). &lt;br /&gt; Осталось только прописать наш новый уровень в файл ACDC_CoP&amp;#92;acdccop.pl (для ЗП), либо в файле ACDC_CS&amp;#92;stkutils&amp;#92;level.pm. &lt;br /&gt; В этих файлах ищем такие строки (для ЗП): &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;use constant levels_info =&gt; ( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 934, }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 883, name =&gt; &apos;jupiter_underground&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 857, name =&gt; &apos;labx8&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 666, name =&gt; &apos;pripyat&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 317, name =&gt; &apos;jupiter&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;zaton&apos; },&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; И если у вас число, когда мы запускали батник ggTool, тоже 934, то прописываем так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;use constant levels_info =&gt; ( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 934, name =&gt; &apos;ваша_локация&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 883, name =&gt; &apos;jupiter_underground&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 857, name =&gt; &apos;labx8&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 666, name =&gt; &apos;pripyat&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 317, name =&gt; &apos;jupiter&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;zaton&apos; },&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; А в файле level.pm от ACDC ЧН вы увидите такой текст: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;use constant levels_info =&gt; ( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1620, }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1573, name =&gt; &apos;l12_hospital&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1565, name =&gt; &apos;l11_stancia2&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1524, name =&gt; &apos;l10_limansk&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1511, name =&gt; &apos;l09_agroprom_undeground&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1313, name =&gt; &apos;l08_military&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1212, name =&gt; &apos;l07_yantar&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1057, name =&gt; &apos;l06_agroprom&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 961,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l05_red_forest&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 743,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l04_darkvalley&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 472,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l03_escape&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 245,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l02_garbage&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l01_marsh&apos; },&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Прописать там свой уровень нужно точно так-же как в файле от ACDC ЗП: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;use constant levels_info =&gt; ( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1620, name =&gt; &apos;ваша_локация&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1573, name =&gt; &apos;l12_hospital&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1565, name =&gt; &apos;l11_stancia2&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1524, name =&gt; &apos;l10_limansk&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1511, name =&gt; &apos;l09_agroprom_undeground&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1313, name =&gt; &apos;l08_military&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1212, name =&gt; &apos;l07_yantar&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 1057, name =&gt; &apos;l06_agroprom&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 961,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l05_red_forest&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 743,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l04_darkvalley&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 472,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l03_escape&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 245,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l02_garbage&apos; }, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ gvid0 =&gt; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l01_marsh&apos; },&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; По идее, в levels_info следует прописать также верхнюю вершину последнего уровня. RedPython 10:04, 21 ноября 2010 (UTC) &lt;br /&gt; Всё. Собираем all.spawn. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Сборка геймдаты.&lt;/b&gt; &lt;br /&gt; Осталось собрать gamedata`у для игры и посмотреть, что получилось. Итак, приступим. &lt;br /&gt; В папке с игрой создаем папку gamedata, а в ней папки configs, levels, spawns. В папку spawns кладем получившийся при сборке all.spawn.new (или new.spawn), не забывая переименовать его в all.spawn. В папку levels кладем уровень из ggEditor_01&amp;#92;SoC&amp;#92;gamedata&amp;#92;levels&amp;#92;ваша_локация&amp;#92;. Затем заходим в папку с уровнем, удаляем старый файл level.ai и переименовываем файл level.ai10 в level.ai. &lt;br /&gt; Теперь осталось только прописать уровень в конфигах. Из распакованной геймдаты игры берем файлы configs&amp;#92;game_graphs.ltx, &amp;#92;game_levels.ltx, &amp;#92;game_maps_single.ltx. &lt;br /&gt; game_graphs.ltx для ЧН должен выглядеть так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;location_0] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000 = &quot;...&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;001 = &quot;эскейп&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;002 = &quot;свалка&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;003 = &quot;агропром&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;004 = &quot;агропром-подземка&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;005 = &quot;темная долина&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;006 = &quot;лаборатория X-18&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;007 = &quot;даркскейп&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;008 = &quot;Бар&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;009 = &quot;Росток&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;010 = &quot;Янтарь&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;011 = &quot;лаборатория X-16&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;012 = &quot;Милитари&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;013 = &quot;Мертвый город&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;014 = &quot;Радар&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;015 = &quot;Радар бункер&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;016 = &quot;Припять&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;017 = &quot;станция АЭС&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;018 = &quot;ваша_локация&quot; &lt;br /&gt; &amp;#91;location_1] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000 = &quot;...&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;001 = &quot;ограниченный доступ&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;002 = &quot;запрещенный доступ&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;location_2] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000 = &quot;...&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;001 = &quot;не для игрока&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;location_3] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000 = &quot;...&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;001 = &quot;ваша_локация&quot;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; game_graphs.ltx для ЗП должен выглядеть так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;location_0] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000 = &quot;...&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;001 = &quot;ваша_локация&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;002 = &quot;sim_smart_2&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;003 = &quot;sim_smart_3&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;004 = &quot;sim_smart_4&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;005 = &quot;sim_smart_5&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;006 = &quot;sim_smart_6&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;007 = &quot;sim_smart_7&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;008 = &quot;sim_smart_8&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;009 = &quot;sim_smart_base&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;location_1] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000 = &quot;...&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;001 = &quot;ограниченный доступ&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;002 = &quot;запрещенный доступ&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;location_2] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000 = &quot;...&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;001 = &quot;не для игрока&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;location_3] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000 = &quot;...&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;112 = &quot;pri_a22_smart_terrain&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;113 = &quot;pri_a25_smart_terrain&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;114 = &quot;pri_a28_arch&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;115 = &quot;pri_a28_base&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;116 = &quot;pri_b28_evac&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;117 = &quot;pri_a28_heli&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;118 = &quot;pri_a28_school&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;119 = &quot;pri_a28_shop&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;120 = &quot;pri_b301&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;121 = &quot;pri_b302&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;122 = &quot;pri_b303&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;123 = &quot;pri_b304_monsters_smart_terrain&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;124 = &quot;pri_b305_dogs&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;125 = &quot;pri_b306&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;126 = &quot;pri_b307&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;127 = &quot;pri_b35_mercs&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;128 = &quot;pri_b35_military&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;129 = &quot;pri_b36_smart_terrain&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;130 = &quot;pri_sim_1&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;131 = &quot;pri_sim_2&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;132 = &quot;pri_sim_3&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;133 = &quot;pri_sim_4&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;134 = &quot;pri_sim_5&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;135 = &quot;pri_sim_6&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;136 = &quot;pri_sim_7&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;137 = &quot;pri_sim_8&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;138 = &quot;pri_sim_9&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;139 = &quot;pri_sim_10&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;140 = &quot;pri_sim_11&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;141 = &quot;pri_sim_12&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;142 = &quot;ваша_локация&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;graph_points_draw_color_palette] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0x6000ffff&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;000_000_000_000&amp;nbsp;&amp;nbsp;= 0x60ff00ff&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Далее лезем в game_levels.ltx. Там в самом начале, где список уровней, вписываем level183 (число не менее 183.) Листаем файл до самого конца и в конце пишем следующее: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;level183] &lt;br /&gt; name&amp;nbsp;&amp;nbsp;&amp;nbsp;= ваша_локация &lt;br /&gt; caption = &quot;ваша_локация&quot; &lt;br /&gt; offset&amp;nbsp;&amp;nbsp;= 700.0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1000.0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-840.0 &lt;br /&gt; weathers = &amp;#91;default] &lt;br /&gt; id&amp;nbsp;&amp;nbsp;= 183&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Затем открываем файл game_maps_single.ltx и прописываем свой уровень в секции [level_maps_single]. Затем создаем примерно такую секцию для нашего уровня: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;ваша_локация] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;global_rect = 307.0, 90.0, 717.0, 500.000000 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;weathers&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= dynamic_default&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Всё. Запускайте игру и пробуйте, что получилось. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Соединение с остальными уровнями.&lt;/b&gt; &lt;br /&gt; Предлагаю вам не терять зря времени, просто бегая по подключенной локации, а замерить координаты для создания перехода.Координаты будем снимать на 2-х локациях: на подключенной и на той, на которую вы хотите сделать переход соответственно. На каждой локации нам нужно снять по две координаты (координата самого перехода и координата места, в которое будет бросать при переходе с второй локации, вторую координату делаем на пару метров дальше, потому как если сделать близко, то сразу же будет кидать обратно, на локацию с которой переходим). &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/5-104-1&quot; target=&quot;_blank&quot;&gt;Как снять координаты&lt;/a&gt;. &lt;br /&gt; Мы отмерили все необходимые нам координаты. &lt;br /&gt; Затем распаковываем сделанный нами ранее all.spawn. Теперь в нужных нам локациях, в alife_ файлах добавляем следующую секцию спавна: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;40000] ;свободный номер секции &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = level_changer &lt;br /&gt; name = escgar_level_changer ;уникальное имя для секции перехода &lt;br /&gt; position = 28.060224533081,16.556184768677,685.80151367188 ;координаты перехода &lt;br /&gt; direction = 0,0,0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; cse_abstract__unk1_h16 = 0x1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 1142 ;геймвертексы &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 308110 ;левелвертексы &lt;br /&gt; object_flags = 0xffffff3e &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_shape properties&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shapes = shape0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:type = box&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:axis_x = 1.25219917297363,0,0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:axis_y = 0,3.09340000152588,0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:axis_z = 0,0,1.25219917297363&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; shape0:offset = 0,0,0&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_space_restrictor properties&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; restrictor_type = 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; cse_alife_level_changer properties&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; dest_game_vertex_id = 1187 ;вертексы локи, на которую ведет переход &lt;br /&gt; dest_level_vertex_id = 212769 ;вертексы локи, на которую ведет переход &lt;br /&gt; dest_position = 39.396331787109,0.48722490668297,-299.7674505469 ;позиция, куда кидает &lt;br /&gt; dest_direction = 0,0,0 ;направление взгляда игрока при появлении &lt;br /&gt; dest_level_name = l02_garbage ;имя локации, на которую ведет переход &lt;br /&gt; dest_graph_point = start_actor_01 &lt;br /&gt; silent_mode = 1 ;режим &quot;тихого&quot; перехода &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; se_level_changer properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;Пояснения после знаков ; желательно удалить. &lt;br /&gt; RedPython&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Всё готово. Собираем all.spawn и запихиваем в игру. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Метод исправления лайтмапов&lt;/b&gt; &lt;br /&gt; После переноса лок из ТЧ в ЧН/ЗП освещение локации вело себя странным образом, тени были жутко черные, тени от деревьев на зданиях имели странную форму, некоторые объекты вообще светились в темноте. А все дело заключалось в картах освещения, принцип их построения в ТЧ отличается от ЧН/ЗП, поэтому для получения более качественной картинки нужно произвести некоторые манипуляции с ними. Карты освещения хранятся в файлах &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;lmap#1_1.dds &lt;br /&gt; lmap#1_2.dds &lt;br /&gt; lmap#2_1.dds &lt;br /&gt; lmap#2_2.dds &lt;br /&gt; lmap#3_1.dds &lt;br /&gt; lmap#3_2.dds &lt;br /&gt; ...&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; в папке с локацией. Мапы с именем заканчивающимся на _1 менять не нужно а вот заканчивающимся на _2 нужно изменить. Значит так, открываем в фотошопе (ну, или в другом редакторе, не суть важно) карты: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;lmap#1_2.dds &lt;br /&gt; lmap#2_2.dds &lt;br /&gt; lmap#3_2.dds &lt;br /&gt; ...&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; и меняем местами альфа канал и RGB. Сохраняем. Теперь косяков с освещением не будет. Но в некоторых картах в файлах lmap#*.dds нет альфа канала, поэтому нужно в lmap#*_1.dds добавить черный альфа канал, а в lmap#*_2.dds канал rgb перенести в альфу, и залить rgb черным цветом.&lt;!--/ust--&gt;&lt;!--usn(=Начнем пожалуй)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;b&gt;Убедительная просьба к начинающим модмейкерам.&lt;/b&gt; Пожалуйста, если вы только начали заниматься модами, то я вам настоятельно не советую заниматься подключением локаций. Наберитесь опыта, подучитесь элементарному. Никто вас учить этому не подписывался. &lt;br /&gt; Да, и еще. Если будете переносить секции спавна, то для массовой замены геймвертексов и левелвертексов можно использовать блокнот: открываем наш файл в блокноте=&gt;правка=&gt;заменить, и пишем, что на что заменять.</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-178-1</guid>
		</item>
		<item>
			<title>Точный разбор секций all.spawn-а</title>
			<link>https://book-mod.3dn.ru/forum/25-177-1</link>
			<pubDate>Thu, 02 May 2013 21:19:26 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Описание темы: Автор: Rez@niy, Loxotron&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerdLh0Ip&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerdLh0Ip&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerdLh0Ip&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerdLh0Ip&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerdLh0Ip&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Разбор секции alife&apos;);$(&apos;#uSpoilerdLh0Ip&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerdLh0Ip&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerdLh0Ip&apos;)).val(&apos;[+] Разбор секции alife&apos;);$(&apos;#uSpoilerdLh0Ip&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Разбор секции alife&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;81] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = stalker &lt;br /&gt; name = esc_soldier_death &lt;br /&gt; position = -150.2001953125,-29.2462558746338,-228.743957519531 &lt;br /&gt; direction = -150.2001953125,-29.2462558746338,-228.743957519531 &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties &lt;br /&gt; money = 5000 &lt;br /&gt; character_profile = esc_sold_dead &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 98 &lt;br /&gt; distance = 16.1000003814697 &lt;br /&gt; level_vertex_id = 339597 &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; &amp;#91;smart_terrains] &lt;br /&gt; none=true &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = actors&amp;#92;soldier&amp;#92;soldier_bandana_3 &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties &lt;br /&gt; g_team = 0 &lt;br /&gt; g_squad = 1 &lt;br /&gt; g_group = 2 &lt;br /&gt; health = 1 &lt;br /&gt; dynamic_out_restrictions =&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; dynamic_in_restrictions =&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; upd:health = 0 &lt;br /&gt; upd:timestamp = 0 &lt;br /&gt; upd:creature_flags = 0 &lt;br /&gt; upd:position = -150.2001953125,-29.2462558746338,-228.743957519531 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = -150.2001953125,-29.2462558746338,-228.743957519531 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 1 &lt;br /&gt; upd:g_group = 2 &lt;br /&gt;&lt;br /&gt; ; cse_alife_monster_abstract properties &lt;br /&gt;&lt;br /&gt; upd:next_game_vertex_id = 65535 &lt;br /&gt; upd:prev_game_vertex_id = 65535 &lt;br /&gt; upd:distance_from_point = 0 &lt;br /&gt; upd:distance_to_point = 0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_human_abstract properties &lt;br /&gt; predicate5 = 1,2,2,1,2 &lt;br /&gt; predicate4 = 0,1,1,1 &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt;&lt;br /&gt; upd:start_dialog =&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; ; se_stalker properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Английские буквы..цифры.. &lt;img src=&quot;http://s51.ucoz.net/sm/23/sad.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;sad&quot; /&gt; Сейчас всё будет понятней: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;[81] порядковый номер обьекта(не должен повторяться) &lt;br /&gt; ; cse_abstract properties (имя секции в acdc.pl или функции я не кодер, так шо хз но ето нам и не надо) &lt;br /&gt; section_name = stalker (системное имя которое задано acdc.pl=&gt; функция package alife_object;) &lt;br /&gt; name = esc_soldier_death (свободное имя на английском языке) &lt;br /&gt; position = -150.2001953125,-29.2462558746338,-228.743957519531 (позиция типа x,y,z, на уровне) &lt;br /&gt; direction = -150.2001953125,-29.2462558746338,-228.743957519531 (направление взгляда x,y,z, на уровне) &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties (пропорции для торговли) &lt;br /&gt; money = 5000 (кол-во деньжат на старте игры) &lt;br /&gt; character_profile = esc_sold_dead (профиль сталкера из xml файлов смотри урок по созданию нового НПС) &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties (опции обьекта) &lt;br /&gt; game_vertex_id = 98 (вертекс уровня, подробно будет разобрано ниже) &lt;br /&gt; distance = 16.1000003814697 (хз чё за фигня, в переходах например как радиус действия) &lt;br /&gt; level_vertex_id = 339597 (всё понятно, вертекс на уровне ) &lt;br /&gt; object_flags = 0xffffffbf (флаг обьекта, типа offset для чтения движком и респавнером) &lt;br /&gt; custom_data = &lt;&lt;END (далее идёт логика, эта строчка может отсутствовать) &lt;br /&gt; [smart_terrains] &lt;br /&gt; none=true {далее логика, смотреть в другой статье &lt;br /&gt; END (завершение логики) &lt;br /&gt;&lt;br /&gt; ; cse_visual properties (Опция визуализации) &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties (опции создания обьекта, если дословно) &lt;br /&gt; g_team = 0 (команда НПС, все сталкеры 0) &lt;br /&gt; g_squad = 1 (...) &lt;br /&gt; g_group = 2 (группа, чё то около движка:() &lt;br /&gt; health = 1 (количество жизней при старте НПС) &lt;br /&gt; dynamic_out_restrictions = (...) &lt;br /&gt; dynamic_in_restrictions = (...) &lt;br /&gt;&lt;br /&gt; upd:health = 0 (...) &lt;br /&gt; upd:timestamp = 0 (...) &lt;br /&gt; upd:creature_flags = 0 (...) &lt;br /&gt; upd:position = -150.2001953125,-29.2462558746338,-228.743957519531 (дополнительная позиция, лично я её учитываю при спавне) &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = -150.2001953125,-29.2462558746338,-228.743957519531 (кординаты те же что и в дирекции) &lt;br /&gt; upd:g_team = 0 (...) &lt;br /&gt; upd:g_squad = 1 (...) &lt;br /&gt; upd:g_group = 2 (...) &lt;br /&gt;&lt;br /&gt; кое что: upd, скорее всего параметры которые не используются, или почти не используются &lt;br /&gt;&lt;br /&gt; cse_alife_monster_abstract properties &lt;br /&gt;&lt;br /&gt; upd:next_game_vertex_id = 31 (работает как гейм_вертекс) upd:prev_game_vertex_id = 15523 (работает как левел вертекс) upd:distance_from_point = 0 (...) значения не менять upd:distance_to_point = 0 (...) значения не менять &lt;br /&gt;&lt;br /&gt; cse_alife_human_abstract properties &lt;br /&gt;&lt;br /&gt; predicate5 = 2,2,0,1,1 (...) значение не менять predicate4 = 0,2,0,2 (...) значение не менять &lt;br /&gt;&lt;br /&gt; cse_ph_skeleton properties (...) &lt;br /&gt;&lt;br /&gt; upd:start_dialog = (...) &lt;br /&gt;&lt;br /&gt; se_stalker properties (...)&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;&lt;!--/ust--&gt;&lt;!--usn(=Разбор секции alife)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerOJunaF&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerOJunaF&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerOJunaF&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerOJunaF&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerOJunaF&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Подробный разбор некоторых секций game_vertex&apos;);$(&apos;#uSpoilerOJunaF&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerOJunaF&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerOJunaF&apos;)).val(&apos;[+] Подробный разбор некоторых секций game_vertex&apos;);$(&apos;#uSpoilerOJunaF&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Подробный разбор некоторых секций game_vertex&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; Действительно, очень интересная секция. Как известно, можно поставить лишь начальный вертекс уровня и НПС заспавнится там где надо. Но уровни у GSC большие. Для удобства движок делит уровень на секции (сектора, поля, полигоны, называйте как хотите). Каждому уровню присвоен свой начальный game_vertex и исходя из него он делится на части.&lt;!--/ust--&gt;&lt;!--usn(=Подробный разбор некоторых секций game_vertex)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoiler8kVuw6&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoiler8kVuw6&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8kVuw6&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8kVuw6&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler8kVuw6&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Разбор некоторых штук и закидонов acdc.pl&apos;);$(&apos;#uSpoiler8kVuw6&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoiler8kVuw6&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoiler8kVuw6&apos;)).val(&apos;[+] Разбор некоторых штук и закидонов acdc.pl&apos;);$(&apos;#uSpoiler8kVuw6&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Разбор некоторых штук и закидонов acdc.pl&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; Разберём некоторые секции acdc.pl package alife_object; содержит: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; actor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_creature_actor&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;graph_point&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_graph_point&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;stalker&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;stalker_monolith&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;stalker_zombied&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;stalker_trader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;stalker_sakharov&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_barman&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_osoznanie&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mil_killer_respawn_1&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_trader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_trader&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mil_freedom_respawn_1&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mil_freedom_respawn_3&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dolg_regular&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_bloodsucker_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bloodsucker_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bloodsucker_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bloodsucker_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bloodsucker_arena&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bloodsucker_mil&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_boar_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;boar_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;boar_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;boar_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_burer_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;burer_arena&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_burer_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_burer_normal_black&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;burer_indoor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;burer_outdoor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_cat_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cat_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cat_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cat_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_chimera_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;chimera_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;chimera_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;chimera_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_controller_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_controller_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_controller_normal_fat&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_controller_old&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_controller_old_fat&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;controller_tubeman&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_crow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_creature_crow&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_dog_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dog_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dog_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dog_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_flesh_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;flesh_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;flesh_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;flesh_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_fracture_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;fracture_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;fracture_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_gigant_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;gigant_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;gigant_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_phantom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_creature_phantom&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_poltergeist_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_poltergeist_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_poltergeist_normal_tele&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_poltergeist_tele_outdoor&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_poltergeist_normal_flame&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_poltergeist_strong_flame&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_pseudodog_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pseudodog_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pseudodog_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pseudodog_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;pseudodog_arena&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;psy_dog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;psy_dog_phantom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# cse_alife_psy_dog_phantom really &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;psy_dog_radar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;,&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Теперь по русски. &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;dodik(класс из dll&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_dodik&apos;, (имя скрипта&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Чтобы не переименовывать all.spawn смотрите конец acdc.pl и просто смените формат с all.spawn.new на all.spawn&lt;!--/ust--&gt;&lt;!--usn(=Разбор некоторых штук и закидонов acdc.pl)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-177-1</guid>
		</item>
		<item>
			<title>Работающее радио</title>
			<link>https://book-mod.3dn.ru/forum/25-167-1</link>
			<pubDate>Wed, 01 May 2013 13:21:35 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerF0heCc&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerF0heCc&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerF0heCc&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerF0heCc&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerF0heCc&apos;)).val(&apos;[&amp;#92;&amp;#8211;] АдынАдын&apos;);$(&apos;#uSpoilerF0heCc&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerF0heCc&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerF0heCc&apos;)).val(&apos;[+] АдынАдын&apos;);$(&apos;#uSpoilerF0heCc&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] АдынАдын&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;1. Для начала, в gamedata&amp;#92;sounds&amp;#92;characters_voice&amp;#92;scenario&amp;#92; создать папку, например, esc_mafon. &lt;br /&gt; И в получившуюся директорию &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;gamedata&amp;#92;sounds&amp;#92;characters_voice&amp;#92;scenario&amp;#92;esc_mafon&amp;#92;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; положить музыку с названием day_music_1.ogg, day_music_2.ogg и т.д. (будет играть днём). И в эту же папку добавляем night_music_1.ogg, night_music_2.ogg, ... (будет играть ночью). &lt;br /&gt; 2. В файл sound_theme.script (gamedata&amp;#92;scripts&amp;#92;) добавить: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;ph_snd_themes&amp;#91;&quot;day_music&quot;] = {&quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_1&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_2&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_3&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_4&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_5&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_6&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_7&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_8&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_9&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;day_music_10&quot; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; ph_snd_themes&amp;#91;&quot;night_music&quot;] = {&quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_1&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_2&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_3&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_4&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_5&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_6&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_7&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_8&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_9&quot;, &lt;br /&gt; &quot;characters_voice&amp;#92;&amp;#92;scenario&amp;#92;&amp;#92;esc_mafon&amp;#92;&amp;#92;night_music_10&quot; &lt;br /&gt; }&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Я довёл счёт до 10-ти файлов. Можно продолжить - зависит от того, сколько песен планируется добавить. &lt;br /&gt; 3. Распаковать all.spawn и в в файл alife_l01_escape.ltx добавить в конце: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;888] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = physic_object &lt;br /&gt; name = esc_mafon &lt;br /&gt; position = -212.976898193359,-22.2855587005615,-127.408164978027 &lt;br /&gt; direction = 0,2.40000009536743,0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 59 &lt;br /&gt; distance = 0.400000005960464 &lt;br /&gt; level_vertex_id = 41277 &lt;br /&gt; object_flags = 0xffffff3a &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; &amp;#91;logic] &lt;br /&gt; cfg = scripts&amp;#92;esc_mafon.ltx &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = equipments&amp;#92;mafon &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt; skeleton_flags = 1 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object_physic properties &lt;br /&gt; physic_type = 0x3 &lt;br /&gt; mass = 10 &lt;br /&gt; fixed_bones = link&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; 4. Теперь сама логика. В gamedata&amp;#92;config&amp;#92;scripts&amp;#92;, создать файл esc_mafon.ltx и заполнить: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = ph_sound@day &lt;br /&gt;&lt;br /&gt; &amp;#91;ph_sound@day] &lt;br /&gt; snd = day_music &lt;br /&gt; on_info = {!is_day} ph_sound@night &lt;br /&gt;&lt;br /&gt; &amp;#91;ph_sound@night] &lt;br /&gt; snd = night_music &lt;br /&gt; on_info = {=is_day} ph_sound@day&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Либо: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = ph_sound@day &lt;br /&gt;&lt;br /&gt; &amp;#91;ph_sound@day] &lt;br /&gt; snd = day_music &lt;br /&gt; on_signal = sound_end| {!is_day} ph_sound@night &lt;br /&gt;&lt;br /&gt; &amp;#91;ph_sound@night] &lt;br /&gt; snd = night_music &lt;br /&gt; on_signal = sound_end| {=is_day} ph_sound@day&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В первом варианте, музыка с дневной на ночную, переключится сразу, как наступит ночь. Во втором варианте, музыка так же переключится с наступлением ночи, но песня не прервётся, а доиграется до конца. Второй вариант, так скажем, покрасивее будет.&lt;!--/ust--&gt;&lt;!--usn(=АдынАдын)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-167-1</guid>
		</item>
		<item>
			<title>Респавн</title>
			<link>https://book-mod.3dn.ru/forum/25-105-1</link>
			<pubDate>Thu, 18 Apr 2013 09:36:45 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Респаун, один из самых часто задаваемый вопросов на форумах. Вот, решил написать статью, дабы не втирать одно и тоже каждому, кто не может с этим разобраться. &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilero4BlN8&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilero4BlN8&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilero4BlN8&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilero4BlN8&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilero4BlN8&apos;)).val(&apos;[&amp;#92;&amp;#8211;] РЕСПАВН НПС&apos;);$(&apos;#uSpoilero4BlN8&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilero4BlN8&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilero4BlN8&apos;)).val(&apos;[+] РЕСПАВН НПС&apos;);$(&apos;#uSpoilero4BlN8&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] РЕСПАВН НПС&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; Для создания респавна, понадобится два файла, all.spawn и spawn_section.ltx. Это минимальный набор. &lt;br /&gt; Для полной настройки респавнера, нужны ещё character_desc_simulation.xml и npc_profile.xml. &lt;br /&gt; ---------------------- &lt;br /&gt;&lt;br /&gt; 1. В all.spawn создаём секцию респавнера &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;10000] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = respawn &lt;br /&gt; name = имя респавнера &lt;br /&gt; position = координаты (x,y,z&amp;#41; &lt;br /&gt; direction = 0,0,0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = гейм-вертекс &lt;br /&gt; distance = 10 &lt;br /&gt; level_vertex_id = левел-вертекс &lt;br /&gt; object_flags = 0xffffff3e &lt;br /&gt; custom_data = END &lt;br /&gt; &amp;#91;respawn] &lt;br /&gt; respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9 &lt;br /&gt; max_count = 8 &lt;br /&gt; min_count = 4 &lt;br /&gt; max_spawn = 2 &lt;br /&gt; idle_spawn = medium &lt;br /&gt; conditions = 100 &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_shape properties &lt;br /&gt; shapes = shape0 &lt;br /&gt; shape0type = sphere &lt;br /&gt; shape0offset = 0,0,0 &lt;br /&gt; shape0radius = 1 &lt;br /&gt;&lt;br /&gt; ; cse_alife_space_restrictor properties &lt;br /&gt; restrictor_type = 0 &lt;br /&gt;&lt;br /&gt; ; se_respawn properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Если используется программа XrSpawner, то копируем любую секцию respawn; меняем имя объекта, координаты, и в окошке скрипт прописываем &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;respawn] &lt;br /&gt; respawn_section = esc_urody_respawn_1,12, esc_urody_respawn_2,9 &lt;br /&gt; max_count = 8 &lt;br /&gt; min_count = 4 &lt;br /&gt; max_spawn = 2 &lt;br /&gt; idle_spawn = medium &lt;br /&gt; conditions = 100&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Где: &lt;br /&gt; respawn_section - id респавн-секций из файла spawn_section.ltx. Цифры после запятой, означают отношение одной секции к другой. Если планируется одинаковое количество респавна из каждой секции, то цифры ставить не требуется. &lt;br /&gt; max_count - количество респавн-запросов за период времени, пока ГГ находится &lt;br /&gt; на уровне. При переходе на другой уровень, счётчик max_count сбрасывается. (ставить не обязательно) &lt;br /&gt; min_count - минимальное количество нпс, для экстренного респавна. (ставить не обязательно) &lt;br /&gt; max_spawn - количество нпс за один цикл респавна. &lt;br /&gt; idle_spawn - тип спавна. Известно три типа medium, often, seldom. &lt;br /&gt; Обычно используется тип medium. &lt;br /&gt; conditions - Условие респавна. Можно установить проверку условий &lt;br /&gt; (инфопоршень), где респавн будет происходить только при выполнении условия. Номер означает общий процент выполнения респавна. Например так &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;conditions = {+инфо} 100, 0&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; где респавн будет происходить со сто-процентной вероятностью, только при наличии установленного инфопоршня. &lt;br /&gt;&lt;br /&gt; ---------------------- &lt;br /&gt;&lt;br /&gt; 2. В файле spawn_section.ltx, создаём респавн-секции &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;esc_urody_respawn_1]stalker &lt;br /&gt; $spawn = respawnesc_urody_respawn_1 &lt;br /&gt; character_profile = sim_urody_novice &lt;br /&gt; spec_rank = novice &lt;br /&gt; community = bandit &lt;br /&gt;&lt;br /&gt; &amp;#91;esc_urody_respawn_2]stalker &lt;br /&gt; $spawn = respawnesc_urody_respawn_2 &lt;br /&gt; character_profile = sim_urody_regular &lt;br /&gt; spec_rank = regular &lt;br /&gt; community = bandit&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Где: &lt;br /&gt; esc_urody_respawn_1 - id респавн-секции. &lt;br /&gt; sim_urody_novice и sim_urody_regular - классы профайлов нпс. &lt;br /&gt; novice и regular - ранги нпс &lt;br /&gt; bandit - группировка нпс. &lt;br /&gt;&lt;br /&gt; ---------------------- &lt;br /&gt;&lt;br /&gt; 3. В файле npc_profile.xml регистрируем классы sim_urody_regular и sim_urody_novice &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;character id=sim_urody_regular&gt; &lt;br /&gt; &lt;classsim_urody_regularclass&gt; &lt;br /&gt; &lt;/character&gt; &lt;br /&gt;&lt;br /&gt; &lt;character id=sim_urody_novice&gt; &lt;br /&gt; &lt;classsim_urody_noviceclass&gt; &lt;br /&gt; &lt;/character&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; ---------------------- &lt;br /&gt;&lt;br /&gt; 4. Создаём профили, в файле character_desc_simulation.xml, с классами sim_urody_regular и sim_urody_novice и группировкой bandit. &lt;br /&gt; &lt;!--/ust--&gt;&lt;!--usn(=РЕСПАВН НПС)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilereXWp5P&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilereXWp5P&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilereXWp5P&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilereXWp5P&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilereXWp5P&apos;)).val(&apos;[&amp;#92;&amp;#8211;] РЕСПАВН МУТАНТОВ&apos;);$(&apos;#uSpoilereXWp5P&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilereXWp5P&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilereXWp5P&apos;)).val(&apos;[+] РЕСПАВН МУТАНТОВ&apos;);$(&apos;#uSpoilereXWp5P&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] РЕСПАВН МУТАНТОВ&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt;&lt;br /&gt; В принципе, респавн мутантов идентичен респавну нпс. Но с одним лишь отличием, которое его значительно &lt;br /&gt; упрощает. Вся настройка респавна мутантов, ограничивается секцией в файле all.spawn. Вписываем секцию &lt;br /&gt; респавнера, как указано в респавне НПС. Все настройки идентичны, кроме строки respawn_section = *** &lt;br /&gt; В ней прописываем типы мутантов, из файла se_respawn.script. Такие как flesh_weak, flesh_normal, dog_weak, &lt;br /&gt; boar_strong, и т.д.. &lt;br /&gt; &lt;!--/ust--&gt;&lt;!--usn(=РЕСПАВН МУТАНТОВ)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerxgE9t3&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerxgE9t3&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerxgE9t3&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerxgE9t3&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerxgE9t3&apos;)).val(&apos;[&amp;#92;&amp;#8211;] ОБЩИЕ НАСТРОЙКИ&apos;);$(&apos;#uSpoilerxgE9t3&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerxgE9t3&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerxgE9t3&apos;)).val(&apos;[+] ОБЩИЕ НАСТРОЙКИ&apos;);$(&apos;#uSpoilerxgE9t3&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] ОБЩИЕ НАСТРОЙКИ&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; Обязательные условия респавна &lt;br /&gt;&lt;br /&gt; 1. На уровне обязательно должен быть хоть один гулаг для респавнящихся нпс и мутантов. Так как колличество &lt;br /&gt; неписей для респавна, ориентируется по доступным местам в гулагах. &lt;br /&gt;&lt;br /&gt; 2. Респавн производится, только если под гулагами есть доступные работы. &lt;br /&gt;&lt;br /&gt; 3. На каждом уровне, респавн ограничен определёнными типами неписей. Данные ограничения установлены в файле &lt;br /&gt; misc&amp;#92;smart_terrain_presets.ltx. Чтобы сделать возможным респавн неписей, не предусмотренных на данном уровне. &lt;br /&gt; Надо в секции нужного уровня, дописать требуемые типы неписей. &lt;br /&gt;&lt;br /&gt; ---------------------- &lt;br /&gt;&lt;br /&gt; Для проверки созданного респавнера, можно не ждать когда сработает системный респавн, а вызвать принудительно &lt;br /&gt; респавн в нужной секции. Для этого, прописываем в любой логике, вызов функции &lt;br /&gt; %=respawner_spawn(имя респавнера)%. Где, имя респавнера - имя секции, созданой в файле all.spawn. Скобки &lt;br /&gt; обязательны. &lt;br /&gt;&lt;br /&gt; Например, можно создать рядом с зоной респавнера, временный рестриктор. И в кастом дате рестриктора, прописать &lt;br /&gt; вызов функции принудительного вызова респавна, в нужном респавнере, при входе ГГ в зону рестриктора &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = sr_idle@in &lt;br /&gt;&lt;br /&gt; &amp;#91;sr_idle@in] &lt;br /&gt; on_actor_inside = %=respawner_spawn(имя респавнера&amp;#41;% sr_idle@out &lt;br /&gt;&lt;br /&gt; &amp;#91;sr_idle@out] &lt;br /&gt; on_actor_outside = sr_idle@in&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Функция принудительного вызова респавна, находится в файле xr_effects.script. &lt;br /&gt; &lt;!--/ust--&gt;&lt;!--usn(=ОБЩИЕ НАСТРОЙКИ)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilera4Xc6c&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilera4Xc6c&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilera4Xc6c&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilera4Xc6c&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilera4Xc6c&apos;)).val(&apos;[&amp;#92;&amp;#8211;] РЕСПАВН ПРЕДМЕТОВ&apos;);$(&apos;#uSpoilera4Xc6c&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilera4Xc6c&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilera4Xc6c&apos;)).val(&apos;[+] РЕСПАВН ПРЕДМЕТОВ&apos;);$(&apos;#uSpoilera4Xc6c&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] РЕСПАВН ПРЕДМЕТОВ&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt;&lt;br /&gt; Респавн инвентаря в инвентарных ящиках, несколько отличается от способа респавна неписей. &lt;br /&gt;&lt;br /&gt; 1. Первое, что нам нужно сделать, это создать инвентарный ящик в файле all.spawn &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;10000] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = inventory_box &lt;br /&gt; name =&amp;nbsp;&amp;nbsp;имя ящика &lt;br /&gt; position = координаты x,y,z &lt;br /&gt; direction = 0,0,0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = гейм-вертекс &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = левел-вертекс &lt;br /&gt; object_flags = 0xffffffba &lt;br /&gt;&lt;br /&gt; story_id = ай-ди ящика &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = equipmentsitem_box_01&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; ---------------------- &lt;br /&gt;&lt;br /&gt; 2. Затем, в файле game_story_id.ltx регистрируем id ящика. (выбираем любое свободное число). &lt;br /&gt;&lt;br /&gt; ---------------------- &lt;br /&gt;&lt;br /&gt; 3. Создаём респавнер в файле all.spawn. Координаты и размеры зоны респавнера, должны быть такими, чтобы инвентарный ящик поместился внутри зоны респавнера &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;10001] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = respawn &lt;br /&gt; name = имя респавнера &lt;br /&gt; position = координаты x,y,z &lt;br /&gt; direction = 0,0,0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = гейм-вертекс &lt;br /&gt; distance = 2 &lt;br /&gt; level_vertex_id = левел-вертекс &lt;br /&gt; object_flags = 0xffffff3e &lt;br /&gt; custom_data = END &lt;br /&gt; &amp;#91;respawn] &lt;br /&gt; respawn_section = список вещей респавна &lt;br /&gt; idle_spawn = -1 &lt;br /&gt; parent = ай-ди ящика &lt;br /&gt; item_spawn = true &lt;br /&gt; max_count = 7 &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_shape properties &lt;br /&gt; shapes = shape0 &lt;br /&gt; shape0type = box &lt;br /&gt; shape0axis_x = 0.5,0,0&amp;nbsp;&amp;nbsp;&amp;nbsp;(ширина зоны респавнера, по X&amp;#41; &lt;br /&gt; shape0axis_y = 0,0.5,0&amp;nbsp;&amp;nbsp;&amp;nbsp;(высота зоны респавнера&amp;#41; &lt;br /&gt; shape0axis_z = 0,0,1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(ширина зоны респавнера, по Z&amp;#41; &lt;br /&gt; shape0offset = 0,0,0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_space_restrictor properties &lt;br /&gt; restrictor_type = 3 &lt;br /&gt;&lt;br /&gt; ; se_respawn properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Где: &lt;br /&gt; respawn_section = список вещей респавна. Как и в респавнерах неписей, возможна прописка соотношений между &lt;br /&gt; вещами. Например &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;respawn_section = wpn_pm,2, vodka,2, medkit,1, energy_drink, ammo_9x18_fmj,3&amp;nbsp;&amp;nbsp;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; idle_spawn = тип спавна. Инвентарь не имеет типов спавна, поэтому ставится (-1). &lt;br /&gt;&lt;br /&gt; parent = ай-ди инвентарного ящика, в котором производить респавн вещей. &lt;br /&gt;&lt;br /&gt; item_spawn = (truefalse) возможность включения и отключения респавна. Можно задавать условия. &lt;br /&gt;&lt;br /&gt; max_count = количество респав-циклов за определённый период времени. (Пока ГГ находится на уровне. После &lt;br /&gt; перехода ГГ на другой уровень, счётчик сбрасывается). &lt;br /&gt;&lt;br /&gt; ---------------------- &lt;br /&gt;&lt;br /&gt; 4. Создаём вызов респавна. Обычно вызов производится из smart_terrain. В custom_data любого подходящего &lt;br /&gt; smart_terrain, под секцией [smart_terrain], вписываем вызов респавна &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;smart_terrain] &lt;br /&gt; respawn = имя_респавнера &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; И респавн будет производиться, при каждом пополнении нпс, под данным смартом. &lt;br /&gt; &lt;!--/ust--&gt;&lt;!--usn(=РЕСПАВН ПРЕДМЕТОВ)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-105-1</guid>
		</item>
		<item>
			<title>Распаковка all.spawn</title>
			<link>https://book-mod.3dn.ru/forum/25-40-1</link>
			<pubDate>Sun, 22 Apr 2012 21:07:33 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Для того, чтобы распаковать олл.спавн, нам потребуется acdc. Для каждой версии игры нам понадобиться свой. Я описываю для ЗП ( во всех частях сталкера этот процесс идентичен), поэтому и пользуюсь acdc от ЗП. Для того, чтобы запустить acdc нам будет нужен ActivePerl. После того, как вы скачали acdc, установите эктивперл(если вы этого еще не сделали). Распакуйте acdc и скопируйте в эту папку свой all.spawn. Запустите .bat файл decompile(если его нет, то откройте блокнот, запишите в нем такие строки: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;perl acdccop.pl -d all.spawn &lt;br /&gt; pause&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; И сохраните под именем &quot;decompile.bat&quot; Запускайте батник. Через некоторое время появятся .ltx файлы. Все, ол спавн распакован и ждет шаманства над собой &lt;img src=&quot;http://s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt;&lt;br /&gt; Структура файлов &lt;br /&gt; Рассмотрим структуру файлов. Файлы типа alife_ - это основные файлы, в которых содержаться секции спавна. Файлы типа way_ - это и есть &quot;вэй&quot;. Сквады, логика и прочая дребедень. Трогать мы их не будем. Откроем любой alife_ файл и увидим там много секций спавна. Вот одна из них: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;0] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = breakable_object &lt;br /&gt; name = meshes&amp;#92;brkbl#0.ogf &lt;br /&gt; position = -160.539749145508,21.5325393676758,-195.387329101563 &lt;br /&gt; direction = -0.00700339116156101,-0.108852192759514,0.412739604711533 &lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 0 &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 293223 &lt;br /&gt; object_flags = 0xffffffba &lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = meshes&amp;#92;brkbl#0 &lt;br /&gt; ; cse_alife_object_breakable properties &lt;br /&gt; health = 1&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; А теперь подробнее &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;0] - уникальный &quot;id&quot;, то бишь номер секции &lt;br /&gt; ; cse_abstract properties - комментарий &lt;br /&gt; section_name = breakable_object - название секции( НЕ В КОЕМ СЛУЧАЕ НЕ СТАВТЕ ЗДЕСЬ СВОЕ НАЗВАНИЕ, ИНАЧЕ all.spawn ВЫ НЕ ЗАПАКУЕТЕ&amp;#41; &lt;br /&gt; name = meshes&amp;#92;brkbl#0.ogf - тоже название... Тут уже что годно можно написать &lt;br /&gt; position = -160.539749145508,21.5325393676758,-195.387329101563 - позиция на которой будет спавн &lt;br /&gt; direction = -0.00700339116156101,-0.108852192759514,0.412739604711533 - направление. В какую сторону &quot;смотрит&quot; обьект. &lt;br /&gt; ; cse_alife_object properties - комментарий &lt;br /&gt; game_vertex_id = 0 - вертикс. &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 293223 - тоже вертикс. (зачем они объяснять не буду&amp;#41; &lt;br /&gt; object_flags = 0xffffffba - флаги обьекта. тоже рассматривать не будем &lt;br /&gt; ; cse_visual properties - комментарий &lt;br /&gt; visual_name = meshes&amp;#92;brkbl#0 - визуал. &lt;br /&gt; ; cse_alife_object_breakable properties - комментарий. &lt;br /&gt; health = 1 - здоровье.&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Файл all.ltx - это список файлов, которые упакованы в олл спавн. &lt;br /&gt;&lt;br /&gt; Создаем новую секцию спавна &lt;br /&gt; Ну вот, самое интересное начинается ) Открываем любой файл. Я буду спавнить свои объекты, на новой локации. &lt;br /&gt;&lt;br /&gt; Допустим, нам нужно заспавнить сталкера. Создаем секцию спавна. (ВНИМАНИЕ! ПРЕЖДЕ ЧЕМ СПАВНИТЬ СТАЛКЕРА, ЕГО НУЖНО СОЗДАТЬ). Как описывать новых напсано &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/7-93-1&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;тута&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;20927] - уникальный номер секции &lt;br /&gt; ; cse_abstract properties - коментарий &lt;img src=&quot;http&amp;#58;//s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt; section_name = stalker - название секции. Если спавните сталкера - stalker. Своих названий быть не должно. &lt;br /&gt; name = marsh_koster_stalker - имя. я использую имя профиля, которого вы создавали при создании нпс &lt;br /&gt; position = -150.17852783203,0.63608288764954,-293.19580078125 - координаты. &lt;br /&gt; direction = 0.062321275472641,0.00316426996141672,0.0140644172206521 - направление. Куда сталкер будет смотреть. &lt;br /&gt; ; cse_alife_trader_abstract properties - &lt;br /&gt; money = 5000 - деньги &amp;#41; &lt;br /&gt; character_profile = marsh_koster_stalker - профиль, который вы указали при создании нпс. Вот тут нужно указывать его &lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 934 - вертикс локации &lt;br /&gt; distance = 4.90000009536743 - дистанция, зачем нужна не знаю. &lt;br /&gt; level_vertex_id = 1418 - вертикс локации &amp;#41; &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END - кастом дата. Очень важный элемент при создании нпс. Проще говоря - логика. &lt;br /&gt; cfg = scripts/marsh/koster.ltx - путь к конфигу кастом даты &lt;br /&gt; &amp;#91;smart_terrains] - смарт террайны ( не рассматривается&amp;#41; &lt;br /&gt; END - окончание кастом даты &lt;br /&gt; ; cse_alife_creature_abstract properties &lt;br /&gt; g_team = 0 &lt;br /&gt; g_squad = 1 &lt;br /&gt; g_group = 5 &lt;br /&gt; health = 1 &lt;br /&gt; dynamic_out_restrictions = &lt;br /&gt; dynamic_in_restrictions = &lt;br /&gt; (зачем нужно это не совсем понимаю, но заполнять так же, как и в основной секции&amp;#41; &lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0x2009656c &lt;br /&gt; upd:creature_flags = 0x3d &lt;br /&gt; upd:position = -150.17852783203,0.63608288764954,-293.19580078125 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = 0.00316426996141672,0.062321275472641,0 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 1 &lt;br /&gt; upd:g_group = 5 &lt;br /&gt; ; cse_alife_monster_abstract properties &lt;br /&gt; upd:next_game_vertex_id = 65535 &lt;br /&gt; upd:prev_game_vertex_id = 65535 &lt;br /&gt; upd:distance_from_point = 0 &lt;br /&gt; upd:distance_to_point = 0 &lt;br /&gt; ; cse_alife_human_abstract properties &lt;br /&gt; predicate5 = 1,1,0,0,1 &lt;br /&gt; predicate4 = 2,2,0,2 &lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt; upd:start_dialog = &lt;br /&gt; ; se_stalker properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Сохраняем. Запаковываем ол спавн, файлом compile.bat. Если такого батника нет, то опять открываем блокнот, пишем в него следующие строки и сохраняем как батник: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;acdc_soc.pl -c all.ltx -o ./new.all.spawn &lt;br /&gt; pause&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В папке gamedata создаем папку spawns и копируем файл new.all.spawn(он будет называться именно так). Потом переименовываем в all.spawn.</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-40-1</guid>
		</item>
		<item>
			<title>Спавн предметов в ЗП</title>
			<link>https://book-mod.3dn.ru/forum/25-41-1</link>
			<pubDate>Fri, 30 Mar 2012 14:53:05 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Тема которая будет расмотрена в данной статье, это спавн предметов в ЗП. &lt;br /&gt;&lt;br /&gt; Для начала попробуем заспавнить что-нибудь……например…… О, вертолёт!!!! &lt;br /&gt;&lt;br /&gt; Что для этого нам нужно? &lt;br /&gt; 1)&lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/prochie_programmy/ac_dc_dlja_call_of_prypyat/19-1-0-141&quot; target=&quot;_blank&quot;&gt;ACDC для ЗП&lt;/a&gt; &lt;br /&gt; 2)Activeperl 8.7. &lt;br /&gt; 3)Распакованная игра (CoP) &lt;br /&gt;&lt;br /&gt; Начнём: &lt;br /&gt; Поместим файл All.spawn(который находится по адресу: gamedata&amp;#92;spawns) в папку с ACDC. Распаковываем. &lt;br /&gt;&lt;br /&gt; В итоге появятся файлы .ltx с названием секций. Нас интересуют Файлы alife_*******.ltx Так как они отвечают за спавн. &lt;br /&gt;&lt;br /&gt; Для Начала нам нужно снять координаты того места Где должен появится наш вертолёт. Кто не знает - &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/5-104-1&quot; target=&quot;_blank&quot;&gt;сюда&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt; Я выбрал место спавна прямо на палубе Скадовска. &lt;br /&gt; Всё теперь спавним вертолёт. &lt;br /&gt; Выберем понравившуюся секцию. Для примера я взял Затон, поэтому открываем alife_zaton.ltx и добавляем : &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;1922] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = helicopter &lt;br /&gt; name = pri_a28_heli_1 &lt;br /&gt; position = 154.740036,-2.654960,182.621597 &lt;br /&gt; direction = 0,-0.0252000000327826,0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 316 &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 1216486 &lt;br /&gt; object_flags = 0xffffffb2 &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = dynamics&amp;#92;vehicles&amp;#92;mi24&amp;#92;veh_mi24_u_01 &lt;br /&gt;&lt;br /&gt; ; cse_motion properties &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt; skeleton_name = idle &lt;br /&gt;&lt;br /&gt; ; cse_alife_helicopter properties &lt;br /&gt; startup_animation = idle &lt;br /&gt; engine_sound = vehicles&amp;#92;helicopter&amp;#92;helicopter&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Помните !!!!! Всё должно быть по порядкку !!!!!Если перед этим номер скрипта был допустим [1921] то в номер нашего будет [1922] &lt;br /&gt; теперь с пояснениями: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;[1922] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = helicopter -- Имя секции &lt;br /&gt; name = pri_a28_heli_1 -- Уникальное имя скрипта &lt;br /&gt; position = 154.740036,-2.654960,182.621597 -- координаты места где мы хотим чтобы появился вертолёт &lt;br /&gt; direction = 0,-0.0252000000327826,0 -- поворот вертолёта &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 316 -- гейм вертекс уровня &lt;br /&gt; distance = 0 &lt;br /&gt; level_vertex_id = 1216486 -- Левел уровень &lt;br /&gt; object_flags = 0xffffffb2 &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = dynamics&amp;#92;vehicles&amp;#92;mi24&amp;#92;veh_mi24_u_01 -- визуал вертолёта &lt;br /&gt;&lt;br /&gt; ; cse_motion properties &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt; skeleton_name = idle &lt;br /&gt;&lt;br /&gt; ; cse_alife_helicopter properties &lt;br /&gt; startup_animation = idle &lt;br /&gt; engine_sound = vehicles&amp;#92;helicopter&amp;#92;helicopter&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Всё вставляем скрипт в секцию (без комментов конечно). Теперь можно запускать игру и смотреть на вертолет)</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-41-1</guid>
		</item>
		<item>
			<title>Разбор секции alife</title>
			<link>https://book-mod.3dn.ru/forum/25-39-1</link>
			<pubDate>Fri, 30 Mar 2012 14:49:11 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Разбор секции alife &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;81] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = stalker &lt;br /&gt; name = esc_soldier_death &lt;br /&gt; position = -150.2001953125,-29.2462558746338,-228.743957519531 &lt;br /&gt; direction = -150.2001953125,-29.2462558746338,-228.743957519531 &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties &lt;br /&gt; money = 5000 &lt;br /&gt; character_profile = esc_sold_dead &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 98 &lt;br /&gt; distance = 16.1000003814697 &lt;br /&gt; level_vertex_id = 339597 &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; &amp;#91;smart_terrains] &lt;br /&gt; none=true &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = actors&amp;#92;soldier&amp;#92;soldier_bandana_3 &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties &lt;br /&gt; g_team = 0 &lt;br /&gt; g_squad = 1 &lt;br /&gt; g_group = 2 &lt;br /&gt; health = 1 &lt;br /&gt; dynamic_out_restrictions = &lt;br /&gt; dynamic_in_restrictions = &lt;br /&gt;&lt;br /&gt; upd:health = 0 &lt;br /&gt; upd:timestamp = 0 &lt;br /&gt; upd:creature_flags = 0 &lt;br /&gt; upd:position = -150.2001953125,-29.2462558746338,-228.743957519531 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = -150.2001953125,-29.2462558746338,-228.743957519531 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 1 &lt;br /&gt; upd:g_group = 2 &lt;br /&gt;&lt;br /&gt; ; cse_alife_monster_abstract properties &lt;br /&gt;&lt;br /&gt; upd:next_game_vertex_id = 65535 &lt;br /&gt; upd:prev_game_vertex_id = 65535 &lt;br /&gt; upd:distance_from_point = 0 &lt;br /&gt; upd:distance_to_point = 0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_human_abstract properties &lt;br /&gt; predicate5 = 1,2,2,1,2 &lt;br /&gt; predicate4 = 0,1,1,1 &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt;&lt;br /&gt; upd:start_dialog = &lt;br /&gt;&lt;br /&gt; ; se_stalker properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Английские буквы..цифры... &lt;img src=&quot;http://s51.ucoz.net/sm/23/sad.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;sad&quot; /&gt; Сейчас всё будет понятней: &lt;br /&gt;&lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;[81] порядковый номер обьекта(не должен повторяться) &lt;br /&gt; ; cse_abstract properties (имя секции в acdc.pl или функции я не кодер, так шо хз но ето нам и не надо) &lt;br /&gt; section_name = stalker (системное имя которое задано acdc.pl=&gt; функция package alife_object;) &lt;br /&gt; name = esc_soldier_death (свободное имя на английском языке) &lt;br /&gt; position = -150.2001953125,-29.2462558746338,-228.743957519531 (позиция типа x,y,z, на уровне) &lt;br /&gt; direction = -150.2001953125,-29.2462558746338,-228.743957519531 (направление взгляда x,y,z, на уровне) &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties (пропорции для торговли) &lt;br /&gt; money = 5000 (кол-во деньжат на старте игры) &lt;br /&gt; character_profile = esc_sold_dead (профиль сталкера из xml,ltx файлов смотри урок по созданию нового НПС) &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties (опции обьекта) &lt;br /&gt; game_vertex_id = 98 (вертекс уровня, подробно будет разобрано ниже) &lt;br /&gt; distance = 16.1000003814697 (хз чё за фигня, в переходах например как радиус действия) &lt;br /&gt; level_vertex_id = 339597 (всё понятно, вертекс на уровне ) &lt;br /&gt; object_flags = 0xffffffbf (флаг обьекта, типа offset для чтения движком и респавнером) &lt;br /&gt; custom_data = &lt;&lt;END (далее идёт логика, эта строчка может отсутствовать) &lt;br /&gt; [smart_terrains] &lt;br /&gt; none=true {далее логика, смотреть в другой статье &lt;br /&gt; END (завершение логики) &lt;br /&gt;&lt;br /&gt; ; cse_visual properties (Опция визуализации) &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties (опции создания обьекта, если дословно) &lt;br /&gt; g_team = 0 (команда НПС, все сталкеры 0) &lt;br /&gt; g_squad = 1 (...) &lt;br /&gt; g_group = 2 (группа, чё то около движка:() &lt;br /&gt; health = 1 (количество жизней при старте НПС) &lt;br /&gt; dynamic_out_restrictions = (...) &lt;br /&gt; dynamic_in_restrictions = (...) &lt;br /&gt;&lt;br /&gt; upd:health = 0 (...) &lt;br /&gt; upd:timestamp = 0 (...) &lt;br /&gt; upd:creature_flags = 0 (...) &lt;br /&gt; upd:position = -150.2001953125,-29.2462558746338,-228.743957519531 (дополнительная позиция, лично я её учитываю при спавне) &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = -150.2001953125,-29.2462558746338,-228.743957519531 (кординаты те же что и в дирекции) &lt;br /&gt; upd:g_team = 0 (...) &lt;br /&gt; upd:g_squad = 1 (...) &lt;br /&gt; upd:g_group = 2 (...)кое что: upd, скорее всего параметры которые не используются, или почти не используются &lt;br /&gt;&lt;br /&gt; cse_alife_monster_abstract properties &lt;br /&gt; upd:next_game_vertex_id = 31 (работает как гейм_вертекс) upd:prev_game_vertex_id = 15523 (работает как левел вертекс) upd:distance_from_point = 0 (...) значения не менять upd:distance_to_point = 0 (...) значения не менять &lt;br /&gt;&lt;br /&gt; cse_alife_human_abstract properties &lt;br /&gt; predicate5 = 2,2,0,1,1 (...) значение не менять predicate4 = 0,2,0,2 (...) значение не менять &lt;br /&gt;&lt;br /&gt; cse_ph_skeleton properties (...) &lt;br /&gt; upd:start_dialog = (...) &lt;br /&gt;&lt;br /&gt; se_stalker properties (...)&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt;&lt;br /&gt; Автора не забываем указать &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Участник:Rez@niy &lt;br /&gt; Участник:Loxotron&lt;/b&gt; &lt;br /&gt;&lt;br /&gt; Подробный разбор некоторых секций &lt;br /&gt; game_vertex. Действительно, очень интересная секция. Как известно, можно поставить лишь начальный вертекс уровня и НПС заспавнится там где надо. Но уровни у GSC большие. Для удобства движок делит уровень на секции (сектора, поля, полигоны, называйте как хотите). Каждому уровню присвоен свой начальный game_vertex и исходя из него он делится на части. &lt;br /&gt;&lt;br /&gt; Разбор некоторых &quot;штук&quot; и закидонов acdc.pl &lt;br /&gt; Разберём некоторые секции acdc.pl package alife_object; содержит: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;actor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_creature_actor&apos;, &lt;br /&gt;&lt;br /&gt; graph_point&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_graph_point&apos;, &lt;br /&gt;&lt;br /&gt; stalker&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; stalker_monolith&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; stalker_zombied&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; stalker_trader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; stalker_sakharov&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; m_barman&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; m_osoznanie&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; mil_killer_respawn_1&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&lt;br /&gt; m_trader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_trader&apos;, &lt;br /&gt;&lt;br /&gt; mil_freedom_respawn_1&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; mil_freedom_respawn_3&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt; dolg_regular&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_stalker&apos;, &lt;br /&gt;&lt;br /&gt; m_bloodsucker_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; bloodsucker_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; bloodsucker_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; bloodsucker_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; bloodsucker_arena&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; bloodsucker_mil&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_boar_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; boar_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; boar_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; boar_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_burer_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; burer_arena&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_burer_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_burer_normal_black&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; burer_indoor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; burer_outdoor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_cat_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; cat_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; cat_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; cat_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_chimera_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; chimera_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; chimera_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; chimera_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_controller_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_controller_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_controller_normal_fat&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_controller_old&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_controller_old_fat&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; controller_tubeman&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_crow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_creature_crow&apos;, &lt;br /&gt;&lt;br /&gt; m_dog_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; dog_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; dog_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; dog_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_flesh_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; flesh_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; flesh_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; flesh_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_fracture_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; fracture_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; fracture_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_gigant_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; gigant_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; gigant_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_phantom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;cse_alife_creature_phantom&apos;, &lt;br /&gt;&lt;br /&gt; m_poltergeist_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_poltergeist_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_poltergeist_normal_tele&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_poltergeist_tele_outdoor&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_poltergeist_normal_flame&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; m_poltergeist_strong_flame&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt;&lt;br /&gt; m_pseudodog_e&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; pseudodog_weak&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; pseudodog_normal&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; pseudodog_strong&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; pseudodog_arena&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; psy_dog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;, &lt;br /&gt; psy_dog_phantom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# cse_alife_psy_dog_phantom really &lt;br /&gt; psy_dog_radar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; &apos;se_monster&apos;,&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Теперь по русски. &lt;br /&gt;&lt;br /&gt; dodik(класс из dll) =&gt; &apos;se_dodik&apos;, (имя скрипта) &lt;br /&gt; Чтобы не переименовывать all.spawn смотрите конец acdc.pl и просто смените формат с all.spawn.new на all.spawn</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-39-1</guid>
		</item>
		<item>
			<title>Работа с ACDC</title>
			<link>https://book-mod.3dn.ru/forum/25-38-1</link>
			<pubDate>Fri, 30 Mar 2012 14:48:29 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Сегодня мы разберем основу работы с ACDC. Но... для начала небольшое отступление. Вы зададите вопрос, почему же лучше работать с ACDC, нежели чем с xrSpawner? Отвечаю: xrSpawner, при всех его преимуществах, имеет множество более значительных минусов. Во первых, xrSpawner не определяет не game_vertex, ни level_vertex. А также он измеряет только позицию. Я думаю, работающие с xrSpawner замечали, что порой объекты, которые они спаунят, не всегда появляются на месте. Или вообще не появляются. Потому что - повторяю - xrSpawner не определяет вертексы, т.е. точную позицию и распределение по АИ-сетке. Итак, начнём работу! &lt;br /&gt;&lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerKV6fZR&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerKV6fZR&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerKV6fZR&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerKV6fZR&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerKV6fZR&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Продолжаем разговор&apos;);$(&apos;#uSpoilerKV6fZR&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerKV6fZR&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerKV6fZR&apos;)).val(&apos;[+] Продолжаем разговор&apos;);$(&apos;#uSpoilerKV6fZR&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Продолжаем разговор&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;У нас есть программа ACDC, руки и мозги в голове. Кладём all.spawn в папку с программой и жмём на батник &quot;decompile&quot;. Итак, all.spawn распакован! Видим файлы alife_*** и way_***. В файлах alife_*** только обьекты, которые спаунятся. А в way_*** только пути. Я думаю с алайфом всё понятно. &lt;br /&gt; Разберем way. Пути. Путь это и есть путь. По которому может двигаться живой обьект. Сейчас мы это рассмотрим. &lt;br /&gt;&lt;br /&gt; Для начала устроим текстовый беспредел:) &lt;br /&gt;&lt;br /&gt; Найдём файл alife_l01_escape.ltx, а в нём примерно такие строки: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;869] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = actor &lt;br /&gt; name = level_prefix_actor_0001 &lt;br /&gt; s_rp = 0 &lt;br /&gt; position = -139.449829101563,-29.6908683776855,-351.492797851563 &lt;br /&gt; direction = 0,0.00895109120756388,0 &lt;br /&gt; s_flags = 0x29 &lt;br /&gt;&lt;br /&gt; &amp;#91;dont_spawn_character_supplies] &lt;br /&gt;&lt;br /&gt; &amp;#91;spawn] &lt;br /&gt; wpn_binoc &lt;br /&gt; novice_outfit &lt;br /&gt; device_torch &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = actors&amp;#92;hero&amp;#92;stalker_novice &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties &lt;br /&gt; g_team = 0 &lt;br /&gt; g_squad = 0 &lt;br /&gt; g_group = 0 &lt;br /&gt; health = 1 &lt;br /&gt; dynamic_out_restrictions = &lt;br /&gt; dynamic_in_restrictions = &lt;br /&gt;&lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0x75732029 &lt;br /&gt; upd:creature_flags = 0x70 &lt;br /&gt; upd:position = -139.449829101563,-29.6908683776855,-351.492797851563 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = 0.00895109120756388,0,-0.999959945678711 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 0 &lt;br /&gt; upd:g_group = 0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties &lt;br /&gt; money = 40 &lt;br /&gt; trader_flags = 0 &lt;br /&gt; character_profile = actor &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_actor properties &lt;br /&gt;&lt;br /&gt; upd:actor_state = 0xd20 &lt;br /&gt; upd:actor_accel_header = 0 &lt;br /&gt; upd:actor_accel_data = 0 &lt;br /&gt; upd:actor_velocity_header = 0 &lt;br /&gt; upd:actor_velocity_data = 0 &lt;br /&gt; upd:actor_radiation = 0 &lt;br /&gt; upd:actor_weapon = 110 &lt;br /&gt; upd:num_items = 0&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Для начала расщедримся:) &lt;br /&gt; Припишем актору в [dont_spawn_character_supplies] такие строки: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt; &amp;#91;spawn] &lt;br /&gt; wpn_binoc &lt;br /&gt; wpn_vintorez &lt;br /&gt; ammo_9x39_pab9 = 20 &lt;br /&gt; wpn_usp &lt;br /&gt; ammo_11.43x23_hydro = 22 &lt;br /&gt; novice_outfit &lt;br /&gt; device_torch&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Получится, что мы подарим Меченому при начале игры Винторез, 600 патронов к нему, пистолет USP и &lt;br /&gt; 420 патронов к нему. Так. Теперь Меченый у нас будет крутым рэмбо:) Теперь ещё и подарим ему денежек: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;; cse_alife_trader_abstract properties &lt;br /&gt; money = 40 &lt;br /&gt; trader_flags = 0 &lt;br /&gt; character_profile = actor&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В строке money напишем любое число. Только астрономические не надо. Ну, теперь Меченый не только рэмбо, но и миллионер:). &lt;br /&gt;&lt;br /&gt; Теперь займемся кординатами. У нас они такие: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;position = -139.449829101563,-29.6908683776855,-351.492797851563 &lt;br /&gt; direction = 0,0.00895109120756388,0&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Это наши позиция и дирекция. &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;; cse_alife_object properties &lt;br /&gt; game_vertex_id = 19 ;тот самый вертекс на игре &lt;br /&gt; distance = 0.699999988079071 &lt;br /&gt; level_vertex_id = 111256 ;вертекс на уровне &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; А теперь пропишем туда такие кординаты: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;position = -167.232299804688,-25.4363708496094,-354.692901611328 &lt;br /&gt; direction = 0,-0.365248799324036,0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 0 &lt;br /&gt; distance = 0.699999988079071 &lt;br /&gt; level_vertex_id = 82413 &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0x75732029 &lt;br /&gt; upd:creature_flags = 0x70 &lt;br /&gt; upd:position = -167.232299804688,-25.4363708496094,-354.692901611328 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = -0.365248799324036,0,0.930909931659698 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 0 &lt;br /&gt; upd:g_group = 0&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Теперь игра начнётся в здании блокпоста на 2 этаже:). С этим мы закончим. &lt;br /&gt;&lt;br /&gt; Теперь создадим нового НПС: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;871] &lt;br /&gt; ; cse_abstract properties &lt;br /&gt; section_name = stalker &lt;br /&gt; name = esc_bridge_soldier1 &lt;br /&gt; position = -133.27989196777,-30.146812438965,-372.0263671875 &lt;br /&gt; direction = 0.028013030067086,0,0.9996075630188 &lt;br /&gt;&lt;br /&gt; ; cse_alife_trader_abstract properties &lt;br /&gt; money = 5000 &lt;br /&gt; character_profile = esc_soldier_regular &lt;br /&gt;&lt;br /&gt; ; cse_alife_object properties &lt;br /&gt; game_vertex_id = 20 &lt;br /&gt; distance = 16.1000003814697 &lt;br /&gt; level_vertex_id = 118083 &lt;br /&gt; object_flags = 0xffffffbf &lt;br /&gt; custom_data = &lt;&lt;END &lt;br /&gt; &amp;#91;logic] &lt;br /&gt; active = walker &lt;br /&gt;&lt;br /&gt; &amp;#91;walker] &lt;br /&gt; path_walk = hodim_dvor &lt;br /&gt; END &lt;br /&gt;&lt;br /&gt; ; cse_visual properties &lt;br /&gt; visual_name = actors&amp;#92;soldier&amp;#92;soldier_bandana_3 &lt;br /&gt;&lt;br /&gt; ; cse_alife_creature_abstract properties &lt;br /&gt; g_team = 0 &lt;br /&gt; g_squad = 1 &lt;br /&gt; g_group = 2 &lt;br /&gt; health = 1 &lt;br /&gt; dynamic_out_restrictions = &lt;br /&gt; dynamic_in_restrictions = &lt;br /&gt;&lt;br /&gt; upd:health = 1 &lt;br /&gt; upd:timestamp = 0 &lt;br /&gt; upd:creature_flags = 0 &lt;br /&gt; upd:position = -133.27989196777,-30.146812438965,-372.0263671875 &lt;br /&gt; upd:o_model = 0 &lt;br /&gt; upd:o_torso = 0.028013030067086,0,0.9996075630188 &lt;br /&gt; upd:g_team = 0 &lt;br /&gt; upd:g_squad = 1 &lt;br /&gt; upd:g_group = 2 &lt;br /&gt;&lt;br /&gt; ; cse_alife_monster_abstract properties &lt;br /&gt;&lt;br /&gt; upd:next_game_vertex_id = 65535 &lt;br /&gt; upd:prev_game_vertex_id = 65535 &lt;br /&gt; upd:distance_from_point = 0 &lt;br /&gt; upd:distance_to_point = 0 &lt;br /&gt;&lt;br /&gt; ; cse_alife_human_abstract properties &lt;br /&gt; predicate5 = 1,2,2,1,2 &lt;br /&gt; predicate4 = 0,1,1,1 &lt;br /&gt;&lt;br /&gt; ; cse_ph_skeleton properties &lt;br /&gt;&lt;br /&gt; upd:start_dialog = &lt;br /&gt;&lt;br /&gt; ; se_stalker properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Так вот он наш друг НПС - солдат на блокпосте:) Тут уже знакомы строки. Позиция, дирекция, вертексы... Но есть кое что новое:) &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = walker &lt;br /&gt;&lt;br /&gt; &amp;#91;walker] &lt;br /&gt; path_walk = hodim_dvor&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Элементарная логика НПС. hodim_dvor - это путь, по которому будет ходить НПС. &lt;br /&gt; НПС есть, всё готово. Но путя то у нас нет:) Создадим его в файле way_l01_escape. Припишем вот такие строчки: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;hodim_dvor] &lt;br /&gt; points = p0,p1 &lt;br /&gt; p0:name = name00 &lt;br /&gt; p0:position = -120.44634246826,-30.15016746521,-363.68786621094 &lt;br /&gt; p0:game_vertex_id = 24 &lt;br /&gt; p0:level_vertex_id = 132887 &lt;br /&gt; p0:links = p1(1&amp;#41; &lt;br /&gt;&lt;br /&gt; p1:name = name01 ;номер точки &lt;br /&gt; p1:position = -132.61611938477,-30.142726898193,-363.87365722656 - только позиция &lt;br /&gt; p1:game_vertex_id = 19 ;вертекс на игре &lt;br /&gt; p1:level_vertex_id = 118862 ;вертекс на уровне &lt;br /&gt; p1:links = p0(1&amp;#41; ;на какую точку после этой перейдёт НПС (тут он будет ходить туда-сюда, если не написать линкс, то он остановится на месте.&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Всё! Вгоняем в way_*** эти строки (только коментарии писать не надо). Всё готово, можно &lt;br /&gt; тестить изменения. Теперь жмём на батник &quot;compile&quot; и всё! Пихаем all.spawn в игру. Только лучше ещё поправить отношения актора к военным и наоборот в лучшую сторону. Чтобы непись сразу пошёл по своему пути. Он будет ходить от казармы до дома (там поймёте).&lt;!--/ust--&gt;&lt;!--usn(=Продолжаем разговор)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-38-1</guid>
		</item>
		<item>
			<title>Отображение нового уровня в ACDC</title>
			<link>https://book-mod.3dn.ru/forum/25-37-1</link>
			<pubDate>Fri, 30 Mar 2012 14:46:58 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Итак, чтобы в распакованном all.spawn отображались новые уровни(а не lxx_unkown) проводим простую манипуляцию Открываем блокнотом acdc.pl и находим в нём строчку constant levels_info &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;use constant levels_info =&gt; ( &lt;br /&gt; { gvid0 =&gt; 2792, }, &lt;br /&gt; { gvid0 =&gt; 2697,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;deadcity&apos; }, &lt;br /&gt; { gvid0 =&gt; 2332,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l13_generators&apos; }, &lt;br /&gt; { gvid0 =&gt; 2328,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;rem_basa&apos; }, &lt;br /&gt; { gvid0 =&gt; 2326,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;marsh&apos; }, &lt;br /&gt; { gvid0 =&gt; 2243,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;red_forest&apos; }, &lt;br /&gt; { gvid0 =&gt; 2099,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l12_stancia_2&apos; }, &lt;br /&gt; { gvid0 =&gt; 2049,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l12u_control_monolith&apos; }, &lt;br /&gt; { gvid0 =&gt; 1984,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l12u_sarcofag&apos; }, &lt;br /&gt; { gvid0 =&gt; 1855,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l12_stancia&apos; }, &lt;br /&gt; { gvid0 =&gt; 1699,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l11_pripyat&apos; }, &lt;br /&gt; { gvid0 =&gt; 1029,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l10_radar&apos; }, &lt;br /&gt; { gvid0 =&gt; 1127,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l07_military&apos; }, &lt;br /&gt; { gvid0 =&gt; 1111,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l08u_brainlab&apos; }, &lt;br /&gt; { gvid0 =&gt; 1020,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l08_yantar&apos; }, &lt;br /&gt; { gvid0 =&gt; 890,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l06_rostok&apos; }, &lt;br /&gt; { gvid0 =&gt; 883,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l05_bar&apos; }, &lt;br /&gt; { gvid0 =&gt; 824,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name =&gt; &apos;l04u_labx18&apos; }, &lt;br /&gt; { gvid0 =&gt; 811,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l04_darkvalley&apos; }, &lt;br /&gt; { gvid0 =&gt; 703,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l03u_agr_underground&apos; }, &lt;br /&gt; { gvid0 =&gt; 416,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l03_agroprom&apos; }, &lt;br /&gt; { gvid0 =&gt; 252,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l02_garbage&apos; }, &lt;br /&gt; { gvid0 =&gt; 0,&amp;nbsp;&amp;nbsp;name =&gt; &apos;l01_escape&apos; }, &lt;br /&gt; &amp;#41;;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;Цифры..английские буквы..страшно? Мне нет &lt;img src=&quot;http://s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; Я понимаю, думаете мне в первый раз было лучше?:) Буду краток как наш президент &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;{ gvid =&gt; нижний гейм вертекс уровня, name =&gt; &apos;имя_левела_соотвествущюего_вертексу&apos; },&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Вот собсно и усё. Теперь рассмотрим траблу глубже. &lt;br /&gt;&lt;br /&gt; Как известно, если добавляешь много локаций (более 3, а то и двух) сталкиваешься с этакой фигней: в ltx&apos;сах спавна все обьекты сбиваются...Например то, что заспавнено на милитари появляется на кордоне...обьекты спавнятся не там где надо и.т.д короч полный зАд! Делаем следущее. Отедяем наши локи от общего спавна, стираем в acdc.pl в use constant levels_info все локи кроме нашй. Компилим. Подтираем лишние обьекты, берём спаун из СДК кидаем туда оригинальные обьекты, совмещаем с нашими локами и всё! Может пару десятков обьектов надо будет перелопатить, но не 8000 с лишним) Статейка маленькая, но дмаю принесёт пользу. &lt;br /&gt;&lt;br /&gt; Немного теории. АСДС&apos;шка создаёт лтиксы именно по &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;use constant levels_info&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; этой схеме. На самом деле довольно просто, лтикс создаётся с именем уровня и в него вписываются обьекты с принадлежащим гейм_вертексом. Напомню, в gvid0 указывать только начальный вертекс уровня.</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-37-1</guid>
		</item>
		<item>
			<title>Один из методов спавна</title>
			<link>https://book-mod.3dn.ru/forum/25-36-1</link>
			<pubDate>Fri, 30 Mar 2012 14:46:20 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/25&quot;&gt;Правка файла all.spawn&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Суть идеи &lt;br /&gt; Создание на лету рабочих аномалий, вертолётов, переходов между уровнями, рестрикторов, точек воспроизводства и других объектов, конструктор которых задаёт не все необходимые для полноценного функционирования параметры. &lt;br /&gt;&lt;br /&gt; Идея проста. &lt;br /&gt;&lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;1) Создаём объект стандартным методом:local obj = alife():create(...) &lt;br /&gt; 2) Создаём экземпляр класса net_packet:local packet = net_packet() &lt;br /&gt; 3) Сохраняем состояние объекта в пакет:obj:STATE_Write(packet) &lt;br /&gt; 4) Считываем _все_ сохраняемые свойства в переменные:local property1 = packet:r_u32()...local propertyN = packet:r_float() &lt;br /&gt; 5) Записываем эти переменные опять, меняя или дополняя необходимые параметры:packet:w_u32(property1)...propertyN = new_valuepacket:w_float(propertyN) &lt;br /&gt; 6) Считываем модифицированное состояние объекта:packet:r_seek(0)obj:STATE_Read(packet, packet:w_tell())&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Где брать список сохраняемых параметров и их размеры? Самый верный способ - дизассемблирование методов STATE_Write и STATE_Read всех классов вида CSE_ALife... в xrGame.dll. Более простой - смотреть методы state_read &quot;классов&quot; cse_alife_... в acdc.pl (это альтернативный редактор all.spawn). Но там могут быть ошибки. &lt;br /&gt;&lt;br /&gt; Нюансы &lt;br /&gt; 1) Для некоторых типов объектов желательно дёргать UPDATE_Write/UPDATE_Read. Смотрите в том же acdc.pl методы update_read (если есть). &lt;br /&gt;&lt;br /&gt; 2) Стоит попробовать поиграться с аномалиями, которые создаются при активации артефактов. Если у них таймер не внешний, то есть шанс регулировки времени жизни. Ссылку на серверный объект можно получить через биндер, например.</content:encoded>
			<category>Правка файла all.spawn</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/25-36-1</guid>
		</item>
	</channel>
</rss>