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

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%98%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D1%8B%D0%BB%D0%B5%D1%82%D0%B0_%D0%BF%D1%80%D0%B8_%D1%81%D1%82%D1%80%D0%B5%D0%BB%D1%8C%D0%B1%D0%B5_%D0%B2_%D0%B1%D0%B0%D1%80%D0%BC%D0%B5%D0%BD%D0%B0</id>
		<title>Исправление вылета при стрельбе в бармена</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%98%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D1%8B%D0%BB%D0%B5%D1%82%D0%B0_%D0%BF%D1%80%D0%B8_%D1%81%D1%82%D1%80%D0%B5%D0%BB%D1%8C%D0%B1%D0%B5_%D0%B2_%D0%B1%D0%B0%D1%80%D0%BC%D0%B5%D0%BD%D0%B0"/>
				<updated>2011-08-27T17:07:39Z</updated>
		
		<summary type="html">&lt;p&gt;First Tramp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Предыстория==&lt;br /&gt;
&lt;br /&gt;
При создании своего мода я обнаружил что если в Бармена стрелять, либо если монстр тронет его, то через некоторое время происходит вылет без лога. Проверено на патче 1.004, который является весьма популярным у модостроителей. Довольно долгое гугление результатов не дало, потому пришлось проблему решать самому. Сами понимаете, что вылеты без лога - вещь вообще трудноисправимая, и на решение у меня ушло довольно много времени. Посему, чтобы остальным мододелам, если они столкнутся с этой проблемой, не изобретать велосипед заново, я и хочу описать решение здесь.&lt;br /&gt;
&lt;br /&gt;
==Причина вылета==&lt;br /&gt;
&lt;br /&gt;
Вылет происходит при переключении Бармена из режима ведения боя в обычный, точнее не в сам момент, а в момент окончания анимации когда он прячет оружие за спину.&lt;br /&gt;
&lt;br /&gt;
==Решение==&lt;br /&gt;
&lt;br /&gt;
Наиболее простым решением было отключить вообще любую реакцию на боевые раздражители. В принципе, также как и Сидоровичу, ему эта реакция ни к чему - он все равно бессмертный. Поэтому открываем файл &lt;br /&gt;
&lt;br /&gt;
gamegata\config\scripts\[[bar_barman.ltx]]&lt;br /&gt;
&lt;br /&gt;
и в его содержимое добавляем строки, которые в листинге ниже отмечены комментарием &amp;lt;u&amp;gt;;добавляем строку&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
&lt;br /&gt;
active = walker@at_hole&lt;br /&gt;
&lt;br /&gt;
combat_ignore = combat_ignore&lt;br /&gt;
&lt;br /&gt;
trade = misc\trade_barman.ltx&lt;br /&gt;
&lt;br /&gt;
inv_max_weight = 10000&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[walker@at_hole]&lt;br /&gt;
&lt;br /&gt;
path_walk = bar_barman_hole_walk&lt;br /&gt;
&lt;br /&gt;
path_look = bar_barman_hole_look&lt;br /&gt;
&lt;br /&gt;
def_state_standing = barman_wait_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving1 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving2 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving3 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
meet = meet@at_hole&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,&lt;br /&gt;
&lt;br /&gt;
{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[walker@zone_1]&lt;br /&gt;
&lt;br /&gt;
path_walk = barman_zone_1_walk&lt;br /&gt;
&lt;br /&gt;
path_look = barman_zone_1_look&lt;br /&gt;
&lt;br /&gt;
def_state_standing = barman_wait_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving1 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving2 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving3 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
meet = meet@at_hole&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,&lt;br /&gt;
&lt;br /&gt;
{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[walker@zone_2]&lt;br /&gt;
&lt;br /&gt;
path_walk = barman_zone_2_walk&lt;br /&gt;
&lt;br /&gt;
path_look = barman_zone_2_look&lt;br /&gt;
&lt;br /&gt;
def_state_standing = barman_wait_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving1 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving2 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving3 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
meet = meet@at_hole&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,&lt;br /&gt;
&lt;br /&gt;
{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[walker@zone_3]&lt;br /&gt;
&lt;br /&gt;
path_walk = barman_zone_3_walk&lt;br /&gt;
&lt;br /&gt;
path_look = barman_zone_3_look&lt;br /&gt;
&lt;br /&gt;
def_state_standing = barman_wait_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving1 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving2 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving3 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
meet = meet@at_hole&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,&lt;br /&gt;
&lt;br /&gt;
{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[meet@at_hole]&lt;br /&gt;
&lt;br /&gt;
meet_state = 2|barman_talk_free@bar_bar_barmen_hello&lt;br /&gt;
&lt;br /&gt;
meet_state_wpn = 2|barman_talk_free@bar_bar_barmen_hello&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
victim = 2|actor&lt;br /&gt;
&lt;br /&gt;
victim_wpn = 2|actor&lt;br /&gt;
&lt;br /&gt;
use = true&lt;br /&gt;
&lt;br /&gt;
use_wpn = true&lt;br /&gt;
&lt;br /&gt;
meet_dialog		=  bar_bar_barmen_start&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[danger_condition@barman]&lt;br /&gt;
&lt;br /&gt;
ignore_distance       = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Авторы=&lt;br /&gt;
&lt;br /&gt;
Статья создана: Cjayho&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
P.S. Статью такую не нашел, но это весьма не плохая статья, поэтому перенёс с другой Wiki&lt;/div&gt;</summary>
		<author><name>First Tramp</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%98%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D1%8B%D0%BB%D0%B5%D1%82%D0%B0_%D0%BF%D1%80%D0%B8_%D1%81%D1%82%D1%80%D0%B5%D0%BB%D1%8C%D0%B1%D0%B5_%D0%B2_%D0%B1%D0%B0%D1%80%D0%BC%D0%B5%D0%BD%D0%B0</id>
		<title>Исправление вылета при стрельбе в бармена</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%98%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D1%8B%D0%BB%D0%B5%D1%82%D0%B0_%D0%BF%D1%80%D0%B8_%D1%81%D1%82%D1%80%D0%B5%D0%BB%D1%8C%D0%B1%D0%B5_%D0%B2_%D0%B1%D0%B0%D1%80%D0%BC%D0%B5%D0%BD%D0%B0"/>
				<updated>2011-08-27T17:06:15Z</updated>
		
		<summary type="html">&lt;p&gt;First Tramp: Новая страница: «==Предыстория==  При создании своего мода я обнаружил что если в Бармена стрелять, либо если...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Предыстория==&lt;br /&gt;
&lt;br /&gt;
При создании своего мода я обнаружил что если в Бармена стрелять, либо если монстр тронет его, то через некоторое время происходит вылет без лога. Проверено на патче 1.004, который является весьма популярным у модостроителей. Довольно долгое гугление результатов не дало, потому пришлось проблему решать самому. Сами понимаете, что вылеты без лога - вещь вообще трудноисправимая, и на решение у меня ушло довольно много времени. Посему, чтобы остальным мододелам, если они столкнутся с этой проблемой, не изобретать велосипед заново, я и хочу описать решение здесь.&lt;br /&gt;
&lt;br /&gt;
==Причина вылета==&lt;br /&gt;
&lt;br /&gt;
Вылет происходит при переключении Бармена из режима ведения боя в обычный, точнее не в сам момент, а в момент окончания анимации когда он прячет оружие за спину.&lt;br /&gt;
&lt;br /&gt;
==Решение==&lt;br /&gt;
&lt;br /&gt;
Наиболее простым решением было отключить вообще любую реакцию на боевые раздражители. В принципе, также как и Сидоровичу, ему эта реакция ни к чему - он все равно бессмертный. Поэтому открываем файл &lt;br /&gt;
&lt;br /&gt;
gamegata\config\scripts\[[bar_barman.ltx]]&lt;br /&gt;
&lt;br /&gt;
и в его содержимое добавляем строки, которые в листинге ниже отмечены комментарием &amp;lt;u&amp;gt;;добавляем строку&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
&lt;br /&gt;
active = walker@at_hole&lt;br /&gt;
&lt;br /&gt;
combat_ignore = combat_ignore&lt;br /&gt;
&lt;br /&gt;
trade = misc\trade_barman.ltx&lt;br /&gt;
&lt;br /&gt;
inv_max_weight = 10000&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[walker@at_hole]&lt;br /&gt;
&lt;br /&gt;
path_walk = bar_barman_hole_walk&lt;br /&gt;
&lt;br /&gt;
path_look = bar_barman_hole_look&lt;br /&gt;
&lt;br /&gt;
def_state_standing = barman_wait_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving1 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving2 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving3 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
meet = meet@at_hole&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,&lt;br /&gt;
&lt;br /&gt;
{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[walker@zone_1]&lt;br /&gt;
&lt;br /&gt;
path_walk = barman_zone_1_walk&lt;br /&gt;
&lt;br /&gt;
path_look = barman_zone_1_look&lt;br /&gt;
&lt;br /&gt;
def_state_standing = barman_wait_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving1 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving2 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving3 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
meet = meet@at_hole&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,&lt;br /&gt;
&lt;br /&gt;
{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[walker@zone_2]&lt;br /&gt;
&lt;br /&gt;
path_walk = barman_zone_2_walk&lt;br /&gt;
&lt;br /&gt;
path_look = barman_zone_2_look&lt;br /&gt;
&lt;br /&gt;
def_state_standing = barman_wait_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving1 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving2 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving3 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
meet = meet@at_hole&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,&lt;br /&gt;
&lt;br /&gt;
{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[walker@zone_3]&lt;br /&gt;
&lt;br /&gt;
path_walk = barman_zone_3_walk&lt;br /&gt;
&lt;br /&gt;
path_look = barman_zone_3_look&lt;br /&gt;
&lt;br /&gt;
def_state_standing = barman_wait_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving1 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving2 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
def_state_moving3 = barman_walk_free&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
meet = meet@at_hole&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
on_info = {=actor_in_zone(bar_barman_meet_zone_1)} walker@zone_1, {=actor_in_zone(bar_barman_meet_zone_2)} walker@zone_2,&lt;br /&gt;
&lt;br /&gt;
{=actor_in_zone(bar_barman_meet_zone_3)} walker@zone_3, walker@at_hole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[meet@at_hole]&lt;br /&gt;
&lt;br /&gt;
meet_state = 2|barman_talk_free@bar_bar_barmen_hello&lt;br /&gt;
&lt;br /&gt;
meet_state_wpn = 2|barman_talk_free@bar_bar_barmen_hello&lt;br /&gt;
&lt;br /&gt;
danger = danger_condition@barman&lt;br /&gt;
&lt;br /&gt;
victim = 2|actor&lt;br /&gt;
&lt;br /&gt;
victim_wpn = 2|actor&lt;br /&gt;
&lt;br /&gt;
use = true&lt;br /&gt;
&lt;br /&gt;
use_wpn = true&lt;br /&gt;
&lt;br /&gt;
meet_dialog		=  bar_bar_barmen_start&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always ; добавляем строку&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[danger_condition@barman]&lt;br /&gt;
&lt;br /&gt;
ignore_distance       = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[combat_ignore]&lt;br /&gt;
&lt;br /&gt;
combat_ignore_cond = always&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Авторы=&lt;br /&gt;
&lt;br /&gt;
Статья создана: Cjayho&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
P.S. Статью такую не нашел, но это весьма не плохая статья, поэтому перенёс с другой Wiki&lt;/div&gt;</summary>
		<author><name>First Tramp</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D1%89%D0%B8%D0%BA_%D0%BF%D0%B0%D1%82%D1%80%D0%BE%D0%BD%D0%BE%D0%B2_SoC</id>
		<title>Перепаковщик патронов SoC</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D1%89%D0%B8%D0%BA_%D0%BF%D0%B0%D1%82%D1%80%D0%BE%D0%BD%D0%BE%D0%B2_SoC"/>
				<updated>2011-08-27T10:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;First Tramp: надеюсь проблема &amp;quot;двух патрон&amp;quot; решена? или просто скрипт выдернут из какого-либо мода?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Вступление==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Привет всем. Сегодня наш урок будет о том как сделать перепаковщик пачек патронов для Тени Чернобыля. Ведь когда играешь и собираешь куча патронов не получается сделать элементарную нычку какую либо, потому что патроны собранные с убитых вами сталкеров состоят из 3, 7, 10, 14 и т.д патронов в каждой пачке, а ахота чтобы все эти патроны перепаковывались в одну или несколько нормальных пачек, вот поэтому я сегодня объясню как сделать такой же перепаковщик пачек патронов как и во многих других глобальный модах.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Действие 1==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Заходим в (gamedata/scripts) и создаём там новый скрипт с таким названием: dunin_ammo.script и вписываем в него вот это:&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
local ammo = {}&lt;br /&gt;
local inited = false&lt;br /&gt;
local repack = false &lt;br /&gt;
&lt;br /&gt;
--------&lt;br /&gt;
-- инициализация переменных, выполняется единожды&lt;br /&gt;
--------&lt;br /&gt;
function init()&lt;br /&gt;
	local i, result, section, value&lt;br /&gt;
	-- отсюда возьмём размеры полных пачек&lt;br /&gt;
	local sys = system_ini()&lt;br /&gt;
	-- список патронов возьмём из &amp;quot;death_generic.ltx&amp;quot;&lt;br /&gt;
	local ini = ini_file(&amp;quot;misc\\death_generic.ltx&amp;quot;)&lt;br /&gt;
	local n = ini:line_count(&amp;quot;ammo_sections&amp;quot;)&lt;br /&gt;
	for i=0,n-1 do&lt;br /&gt;
		result, section, value = ini:r_line(&amp;quot;ammo_sections&amp;quot;,i,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
		ammo[section] = {}&lt;br /&gt;
		ammo[section].repack = false&lt;br /&gt;
		ammo[section].box = sys:r_u32(section, &amp;quot;box_size&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	repack = false&lt;br /&gt;
	inited = true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------&lt;br /&gt;
-- вызывается при добавлении в инвентарь ГГ любых патрон&lt;br /&gt;
--  obj - game_object добавляемой пачки&lt;br /&gt;
-- здесь будем только ставить флажки о необходимости проверки,&lt;br /&gt;
-- саму проверку и перепаковку сделаем в апдейте актёра,&lt;br /&gt;
-- если перепаковку делать прям здесь, то будет глюк при загрузки и&lt;br /&gt;
-- при взятии из нычки кучи патрон (взять всё)&lt;br /&gt;
--------&lt;br /&gt;
function on_take(obj)&lt;br /&gt;
	if not inited then&lt;br /&gt;
		init()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local section = obj:section()&lt;br /&gt;
	--dbglog(&amp;quot;on_take('%s')&amp;quot;, section)&lt;br /&gt;
         --local msg = string.format(&amp;quot;on_take('%s')&amp;quot;, obj: name())&lt;br /&gt;
	--get_console():execute(&amp;quot;dbg:&amp;quot; .. msg)&lt;br /&gt;
&lt;br /&gt;
	if ammo[section] ~= nil and section ~= nil and ammo[section].repack == false then&lt;br /&gt;
		if get_ammo_size(obj) &amp;lt; ammo[section].box then&lt;br /&gt;
			ammo[section].repack = true&lt;br /&gt;
			repack = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------&lt;br /&gt;
-- вызывается из апдейта актёра&lt;br /&gt;
-- проверяет наличие флажков и вызывает процедуру переупаковки&lt;br /&gt;
--------&lt;br /&gt;
function on_update()&lt;br /&gt;
	if repack then&lt;br /&gt;
		local section, data&lt;br /&gt;
		for section, data in pairs(ammo) do&lt;br /&gt;
			if data.repack then&lt;br /&gt;
				repack_ammo(section, data.box)&lt;br /&gt;
				data.repack = false&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		repack = false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------&lt;br /&gt;
-- переупаковка патронов заданного типа&lt;br /&gt;
--  section - строка, имя секции (тип патрон)&lt;br /&gt;
--  box_size - колличество патрон в полной пачке&lt;br /&gt;
-- сначало составляем список неполных пачек, затем&lt;br /&gt;
-- удаляем их и создаём нужное колличество полных&lt;br /&gt;
--------&lt;br /&gt;
function repack_ammo(section, box_size)&lt;br /&gt;
	--dbglog(&amp;quot;repack_ammo('%s')&amp;quot;, section)&lt;br /&gt;
	local s, t = enum_ammo(section, box_size)&lt;br /&gt;
	if (s &amp;gt; 0) and (table.getn(t) &amp;gt; 1) then&lt;br /&gt;
		--dbglog(&amp;quot;repacking(magazins=%d, bullets=%d)&amp;quot;, table.getn(t), s)&lt;br /&gt;
		local i, id&lt;br /&gt;
		local sim = alife()&lt;br /&gt;
		local pos = db.actor:position()&lt;br /&gt;
		local lvid = db.actor:level_vertex_id()&lt;br /&gt;
		local gvid = db.actor:game_vertex_id()&lt;br /&gt;
		local pid = db.actor:id()&lt;br /&gt;
&lt;br /&gt;
		for i, id in pairs(t) do&lt;br /&gt;
			sim:release(sim:object(id), true)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		while s &amp;gt;= box_size do&lt;br /&gt;
			sim:create_ammo(section, pos, lvid, gvid, pid, box_size)&lt;br /&gt;
			s = s - box_size&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if s &amp;gt; 0 then&lt;br /&gt;
			sim:create_ammo(section, pos, lvid, gvid, pid, s)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------&lt;br /&gt;
-- пробегаемся по инветарю ГГ и собираем инфу о неполных пачках&lt;br /&gt;
--  section - строка, имя секции (тип патрон)&lt;br /&gt;
--  box_size - колличество патрон в полной пачке&lt;br /&gt;
-- возвращает сумарное колличество патрон в неполных пачках и массив id-шников этих пачек&lt;br /&gt;
--------&lt;br /&gt;
function enum_ammo(section, box_size)&lt;br /&gt;
	local i, obj, size&lt;br /&gt;
	local s = 0&lt;br /&gt;
	local t = {}&lt;br /&gt;
	for i=0, db.actor:object_count()-1 do&lt;br /&gt;
		obj = db.actor:object(i)&lt;br /&gt;
		if obj:section() == section then&lt;br /&gt;
			size = get_ammo_size(obj)&lt;br /&gt;
			if size &amp;lt; box_size then&lt;br /&gt;
				table.insert(t, obj:id())&lt;br /&gt;
				s = s + size&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return s, t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------&lt;br /&gt;
-- возвращает колличество патрон в пачке&lt;br /&gt;
-- вроде подходящих функций нет, пришлось делать через net_packet&lt;br /&gt;
--------&lt;br /&gt;
function get_ammo_size(obj)&lt;br /&gt;
	local se_obj = alife():object(obj:id())&lt;br /&gt;
	local packet = net_packet()&lt;br /&gt;
	cse_alife_item_ammo.STATE_Write(se_obj, packet)&lt;br /&gt;
	--packet:r_advance(18)&lt;br /&gt;
	--packet:r_stringZ()&lt;br /&gt;
	--packet:r_advance(8)&lt;br /&gt;
	--packet:r_stringZ()&lt;br /&gt;
	--packet:r_advance(5)&lt;br /&gt;
	packet:r_seek(packet:w_tell() - 2)&lt;br /&gt;
	return packet:r_u16()&lt;br /&gt;
end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Действие 2:==&lt;br /&gt;
Теперь нам нужно вписать наш перепаковщик патронов в bind_stalker.script, открываем его и ищем там такую функцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;function actor_binder:on_item_take (obj)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и ставим внизу перед &amp;quot;end&amp;quot; вот такую функцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dunin_ammo.on_take(obj)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот как должно у нас получится:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;function actor_binder:on_item_take (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_take_item (obj, self.object)&lt;br /&gt;
    dunin_ammo.on_take(obj)&lt;br /&gt;
end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее в этом же bind_stalker.script ищем функцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-- апдейт звуковой схемы актера&lt;br /&gt;
	xr_sound.update_actor()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И ставим после неё функцию нашего перепаковщика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-- перепаковщик патронов&lt;br /&gt;
        dunin_ammo.on_update()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот как должно получится:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-- апдейт звуковой схемы актера&lt;br /&gt;
	xr_sound.update_actor()&lt;br /&gt;
&lt;br /&gt;
        -- перепаковщик патронов&lt;br /&gt;
        dunin_ammo.on_update()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь также в этом же файле ищем вот такую функцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;--' Вывод сообщения о большой радиации&lt;br /&gt;
	if self.object.radiation &amp;gt;= 0.7 then&lt;br /&gt;
		local hud = get_hud()&lt;br /&gt;
		local custom_static = hud:GetCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;)&lt;br /&gt;
		if custom_static == nil then&lt;br /&gt;
			hud:AddCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;, true)&lt;br /&gt;
			hud:GetCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;):wnd():SetTextST(&amp;quot;st_radiation_danger&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local hud = get_hud()&lt;br /&gt;
		local custom_static = hud:GetCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;)&lt;br /&gt;
		if custom_static ~= nil then&lt;br /&gt;
			hud:RemoveCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И ставим после неё функцию перепаковщика:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-- dunin_ammo.on_update()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот как должно получится:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-- обновление пси-антенны&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:update(delta)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--' Вывод сообщения о большой радиации&lt;br /&gt;
	if self.object.radiation &amp;gt;= 0.7 then&lt;br /&gt;
		local hud = get_hud()&lt;br /&gt;
		local custom_static = hud:GetCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;)&lt;br /&gt;
		if custom_static == nil then&lt;br /&gt;
			hud:AddCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;, true)&lt;br /&gt;
			hud:GetCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;):wnd():SetTextST(&amp;quot;st_radiation_danger&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local hud = get_hud()&lt;br /&gt;
		local custom_static = hud:GetCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;)&lt;br /&gt;
		if custom_static ~= nil then&lt;br /&gt;
			hud:RemoveCustomStatic(&amp;quot;cs_radiation_danger&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--	dunin_ammo.on_update()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Всё, готово, сохраняем bind_stalker.script и тестируем.&lt;br /&gt;
&lt;br /&gt;
[[Участник:VIPeRs]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>First Tramp</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BC%D0%B5%D0%BD%D1%8E_%D1%81_%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B5%D0%B9.</id>
		<title>CoP создание главного меню с анимацией.</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BC%D0%B5%D0%BD%D1%8E_%D1%81_%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B5%D0%B9."/>
				<updated>2011-06-26T11:56:36Z</updated>
		
		<summary type="html">&lt;p&gt;First Tramp: Маловато коллега, желательно побольше + скрины&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Доброго времени суток, сегодня мы научимся создавать собственное меню с анимацией.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Что нам понадобится:&amp;lt;br /&amp;gt;&lt;br /&gt;
Распакованная игра S.T.A.L.K.E.R.: Call of Pripyat;&amp;lt;br/&amp;gt;&lt;br /&gt;
Adobe Photoshop или любой другой графический редактор способный править альфа-каналы и открывать .dds файлы;&amp;lt;br /&amp;gt;&lt;br /&gt;
Любой видео конвертер способный переконвертировать в .ogm формат;&amp;lt;br/&amp;gt;&lt;br /&gt;
Блокнот для правки конфигов.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Начнём.&amp;lt;br /&amp;gt;&lt;br /&gt;
Предполагается, что у вас уже есть готовая текстурка и видеофайл. И осталось только подредактировать альфа-канал.&amp;lt;br /&amp;gt;&lt;br /&gt;
Выделяем на нашем меню то место, которое будет анимационным. После того, как вы его выделили переходим на альфа-канал и закрашиваем то, что выделяли черным.&amp;lt;br /&amp;gt;&lt;br /&gt;
Снимаем координаты места с анимацией, записываем (если у вас не идеальная память) и закрываем нашу текстурку.&amp;lt;br /&amp;gt;&lt;br /&gt;
Далее идем в папку '''S.T.A.L.K.E.R. - Зов Припяти\gamedata\configs\ui'''&amp;lt;br /&amp;gt;&lt;br /&gt;
И находим там файл '''ui_mm_main.xml'''&amp;lt;br /&amp;gt;&lt;br /&gt;
В данном файле нам нужно найти вот такое высказывание:&lt;br /&gt;
&amp;lt;code&amp;gt;	&lt;br /&gt;
	&amp;lt;background width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;auto_static x=&amp;quot;500&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;432&amp;quot; height=&amp;quot;160&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;texture width=&amp;quot;432&amp;quot; height=&amp;quot;160&amp;quot;&amp;gt;ui\video_voroni_crop&amp;lt;/texture&amp;gt;&lt;br /&gt;
		&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;auto_static x=&amp;quot;413&amp;quot; y=&amp;quot;352&amp;quot; width=&amp;quot;576&amp;quot; height=&amp;quot;416&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;texture width=&amp;quot;576&amp;quot; height=&amp;quot;416&amp;quot;&amp;gt;ui\video_water_crop&amp;lt;/texture&amp;gt;&lt;br /&gt;
		&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
	    &amp;lt;auto_static width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;texture&amp;gt;ui_inGame2_background&amp;lt;/texture&amp;gt;&lt;br /&gt;
	    &amp;lt;/auto_static&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
А точнее, нас интересует только эта часть кода:&lt;br /&gt;
&amp;lt;code&amp;gt;		&lt;br /&gt;
		&amp;lt;auto_static x=&amp;quot;500&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;432&amp;quot; height=&amp;quot;160&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;   &amp;lt;----- это координаты расположения видео на текстуре&lt;br /&gt;
			&amp;lt;texture width=&amp;quot;432&amp;quot; height=&amp;quot;160&amp;quot;&amp;gt;ui\video_voroni_crop&amp;lt;/texture&amp;gt;   &amp;lt;----- расположение видео&lt;br /&gt;
		&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
В ней прописаны координаты размещения видео и его размер, а так же и само название.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сколько видеороликов вы собираетесь запихнуть, столько таких строчек и нужно делать.&amp;lt;br /&amp;gt;&lt;br /&gt;
Вписываем свои координаты, и размер своего ролика.&amp;lt;br /&amp;gt;&lt;br /&gt;
Сохраняем.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''&amp;lt;big&amp;gt;Внимание! Фон видеоролика должен совпадать с фоном текстуры, иначе будет должного эффекта.&amp;lt;/big&amp;gt;'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Категория:Texturing]]&lt;/div&gt;</summary>
		<author><name>First Tramp</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2_%D0%A7%D0%9D</id>
		<title>Создание броника в ЧН</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2_%D0%A7%D0%9D"/>
				<updated>2011-06-15T14:14:04Z</updated>
		
		<summary type="html">&lt;p&gt;First Tramp: автор учи вики разметку&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Создание модифицированного бронежилета в ЧН&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
И так, в этой статье я опишу как создать модифицируемый бронежилет в ЧН. Для примера создадим комбенизон наёмника. Для этого нам понадобятся вот эти файлы:&lt;br /&gt;
&lt;br /&gt;
gamedata\configs\item_upgrades.ltx&lt;br /&gt;
gamedata\configs\misc\outfit.ltx&lt;br /&gt;
gamedata\configs\misc\inventory_upgrades.ltx&lt;br /&gt;
gamedata\configs\misc\stalkers_upgarde_info.ltx&lt;br /&gt;
gamedata\configs\misc\trade\trade_trader_mar_csky.ltx&lt;br /&gt;
gamedata\configs\ui\inventory_upgrade.xml&lt;br /&gt;
gamedata\configs\ui\inventory_upgrade_16.xml&lt;br /&gt;
gamedata\configs\text\rus\st_items_outfit.xml&lt;br /&gt;
&lt;br /&gt;
И так, приступаем. Открываем файл outfit.ltx и в самый конец добавляем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;;---------------------------------------------------------------------------------------------&lt;br /&gt;
;		КОМБЕНИЗОН НАЁМНИКА&lt;br /&gt;
;---------------------------------------------------------------------------------------------&lt;br /&gt;
[killer_outfit]:outfit_base&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;outfit\killer_outfit&amp;quot;&lt;br /&gt;
;$prefetch 		= 32&lt;br /&gt;
class			= E_STLK&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = dynamics\outfit\stalker_outfit&lt;br /&gt;
actor_visual	= actors\stalker_neutral\stalker_neutral_2.ogf&lt;br /&gt;
player_hud_section	= actor_hud_01&lt;br /&gt;
&lt;br /&gt;
ef_equipment_type	= 3&lt;br /&gt;
&lt;br /&gt;
inv_name			= killer_outfit_name&lt;br /&gt;
inv_name_short		= killer_outfit_name&lt;br /&gt;
description			= killer_outfit_description&lt;br /&gt;
inv_weight			= 5.0&lt;br /&gt;
inv_grid_width		= 2&lt;br /&gt;
inv_grid_height		= 3&lt;br /&gt;
inv_grid_x			= 4&lt;br /&gt;
inv_grid_y			= 15&lt;br /&gt;
full_icon_name		= npc_icon_stalker_outfit&lt;br /&gt;
&lt;br /&gt;
cost				= 6250&lt;br /&gt;
slot				= 6&lt;br /&gt;
full_scale_icon		= 14,11			;иконка сталкера в костюме в полный рост&lt;br /&gt;
nightvision_sect	= ;effector_nightvision_bad&lt;br /&gt;
&lt;br /&gt;
additional_inventory_weight		= 0		; +max_walk_weight&lt;br /&gt;
additional_inventory_weight2	= 0		;	+40 kg&lt;br /&gt;
artefact_count                  = 2&lt;br /&gt;
&lt;br /&gt;
default_to_ruck     = false&lt;br /&gt;
immunities_sect		= sect_killer_outfit_immunities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; LOW RESISTANCE&lt;br /&gt;
burn_protection 				= 0.015&lt;br /&gt;
shock_protection 				= 0.015&lt;br /&gt;
radiation_protection 			= 0.015&lt;br /&gt;
chemical_burn_protection 		= 0.015&lt;br /&gt;
telepatic_protection 			= 0.0&lt;br /&gt;
strike_protection 				= 0.25&lt;br /&gt;
explosion_protection 			= 0.25&lt;br /&gt;
wound_protection				= 0.25&lt;br /&gt;
fire_wound_protection  			= 0.0&lt;br /&gt;
physic_strike_wound_immunity 	= 0.15&lt;br /&gt;
&lt;br /&gt;
power_loss = 1.0&lt;br /&gt;
bones_koeff_protection = actor_light_armor&lt;br /&gt;
hit_fraction_actor = 0.3&lt;br /&gt;
control_inertion_factor = 1.2&lt;br /&gt;
&lt;br /&gt;
upgrades                = up_gr_ab_killer_outfit, up_gr_cd_killer_outfit, up_gr_ef_killer_outfit, up_gr_gh_killer_outfit, up_gr_i_killer_outfit&lt;br /&gt;
installed_upgrades      =&lt;br /&gt;
upgrade_scheme          = upgrade_killer_outfit       &lt;br /&gt;
&lt;br /&gt;
[sect_killer_outfit_immunities]&lt;br /&gt;
burn_immunity				= 0.03			;коэффициенты иммунитета самого костюма&lt;br /&gt;
strike_immunity				= 0.0&lt;br /&gt;
shock_immunity				= 0.0&lt;br /&gt;
wound_immunity				= 0.03&lt;br /&gt;
radiation_immunity			= 0.0&lt;br /&gt;
telepatic_immunity			= 0.0&lt;br /&gt;
chemical_burn_immunity		= 0.03&lt;br /&gt;
explosion_immunity			= 0.03&lt;br /&gt;
fire_wound_immunity			= 0.015&lt;br /&gt;
&lt;br /&gt;
[sect_killer_outfit_immunities_1]&lt;br /&gt;
burn_immunity				= 0.015			;коэффициенты иммунитета самого костюма&lt;br /&gt;
strike_immunity				= 0.0&lt;br /&gt;
shock_immunity				= 0.0&lt;br /&gt;
wound_immunity				= 0.015&lt;br /&gt;
radiation_immunity			= 0.0&lt;br /&gt;
telepatic_immunity			= 0.0&lt;br /&gt;
chemical_burn_immunity		= 0.015&lt;br /&gt;
explosion_immunity			= 0.015&lt;br /&gt;
fire_wound_immunity			= 0.010&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее в этом же файле только в самом верху после строки &amp;lt;code&amp;gt;&amp;quot;#include &amp;quot;outfit_upgrades\o_military_outfit_up.ltx&amp;quot;&amp;lt;/code&amp;gt; ставим новую: &amp;lt;code&amp;gt;&amp;quot;#include &amp;quot;outfit_upgrades\o_killer_outfit_up.ltx&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Всё, теперь сохраняем. Далее открываем &amp;quot;st_items_outfit.xml&amp;quot; и в самом конце прописываем:&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;code&amp;gt;&amp;lt;string id=&amp;quot;killer_outfit_description&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Комбенизон членов группировки наёмников, защитные характеристики костюма очень малы, что крайне не достаточно в условиях зоны.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;killer_outfit_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Комбенизон наёмника&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так, сохроняем всё теперь и открываем файл item_upgrades.ltx (gamedata/configs), и в самом конце прописываем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#include &amp;quot;misc\outfit_upgrades\o_killer_outfit_up.ltx&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем всё. Далее открываем по очереди &amp;quot;inventory_upgrade.xml&amp;quot; и &amp;quot;inventory_upgrade_16.xml&amp;quot; и в самом конце прописываем структуру:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;template name=&amp;quot;upgrade_killer_outfit&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;column&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;5&amp;quot;   /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;50&amp;quot;  /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;145&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;195&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;240&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;290&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;335&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;385&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/column&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;column&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;50&amp;quot;  /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;240&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;290&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;385&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/column&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;column&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;220&amp;quot; y=&amp;quot;385&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/column&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/template&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Далее создаём по такому пути (gamedata\configs\misc) папку с таким названием outfit_upgrades а внутри папки новый конфиг с названием o_killer_outfit_up.ltx, после открываем конфиг и прописываем в нём:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[up_sect_a_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value2		= st_upg_cevlars_armor_battle&lt;br /&gt;
inv_weight	= 2.0&lt;br /&gt;
bones_koeff_protection = actor_light_armor_1&lt;br /&gt;
&lt;br /&gt;
[up_sect_b_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +5&lt;br /&gt;
additional_inventory_weight		= 5		; +max_walk_weight&lt;br /&gt;
additional_inventory_weight2	= 5	&lt;br /&gt;
&lt;br /&gt;
[up_sect_c_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +30&lt;br /&gt;
inv_weight	= 0.5&lt;br /&gt;
strike_protection 			= 0.02	;0.25&lt;br /&gt;
wound_protection			= 0.02	;0.25&lt;br /&gt;
explosion_protection 		= 0.02	;0.25&lt;br /&gt;
;hit_fraction_actor			= -0.05&lt;br /&gt;
&lt;br /&gt;
[up_sect_d_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +20&lt;br /&gt;
inv_weight	= 0.5&lt;br /&gt;
burn_protection 			= 0.008 ;0.3&lt;br /&gt;
shock_protection 			= 0.008 ;0.3&lt;br /&gt;
&lt;br /&gt;
[up_sect_e_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +50&lt;br /&gt;
immunities_sect		= sect_stalker_outfit_immunities_1&lt;br /&gt;
&lt;br /&gt;
[up_sect_f_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +20&lt;br /&gt;
burn_protection 			= 0.008 ;0.3&lt;br /&gt;
shock_protection 			= 0.008 ;0.3&lt;br /&gt;
&lt;br /&gt;
[up_sect_g_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
nightvision_sect = effector_nightvision_bad&lt;br /&gt;
&lt;br /&gt;
[up_sect_h_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +50&lt;br /&gt;
radiation_protection 		= 0.008 ;0.1&lt;br /&gt;
chemical_burn_protection 	= 0.008 ;0.1&lt;br /&gt;
&lt;br /&gt;
[up_sect_i_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
inv_weight	= 1.0&lt;br /&gt;
artefact_count				= 1&lt;br /&gt;
&lt;br /&gt;
[up_sect_ac_killer_outfit]&lt;br /&gt;
cost 		= 3750&lt;br /&gt;
value2		= st_upg_cevlars_armor_battle&lt;br /&gt;
inv_weight	= 2.0&lt;br /&gt;
bones_koeff_protection = actor_light_armor_2&lt;br /&gt;
&lt;br /&gt;
[up_sect_bd_killer_outfit]&lt;br /&gt;
cost 		= 3750&lt;br /&gt;
value		= +10&lt;br /&gt;
additional_inventory_weight		= 10		; +max_walk_weight&lt;br /&gt;
additional_inventory_weight2	= 10&lt;br /&gt;
&lt;br /&gt;
[up_sect_eg_killer_outfit]&lt;br /&gt;
cost 		= 3750&lt;br /&gt;
value		= +50&lt;br /&gt;
inv_weight	= 0.3 &lt;br /&gt;
strike_protection 			= 0.03	;0.15&lt;br /&gt;
wound_protection			= 0.03	;0.15&lt;br /&gt;
explosion_protection 		= 0.03	;0.15&lt;br /&gt;
;hit_fraction_actor			= -0.05&lt;br /&gt;
&lt;br /&gt;
[up_sect_fh_killer_outfit]&lt;br /&gt;
cost 		= 3750&lt;br /&gt;
value 		= +50&lt;br /&gt;
radiation_protection 		= 0.008 ;0.1&lt;br /&gt;
chemical_burn_protection 	= 0.008 ;0.1&lt;br /&gt;
&lt;br /&gt;
[up_sect_i2_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
inv_weight	= 1.0&lt;br /&gt;
artefact_count				= 1&lt;br /&gt;
&lt;br /&gt;
[up_sect_i3_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
inv_weight	= 1.0&lt;br /&gt;
artefact_count				= 1&lt;br /&gt;
&lt;br /&gt;
[up_a_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 0&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_ac_killer_outfit&lt;br /&gt;
section                 = up_sect_a_killer_outfit&lt;br /&gt;
property                = prop_armor&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_cevlars_armor_battle&lt;br /&gt;
description             = st_upg_cevlars_armor_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_06&lt;br /&gt;
&lt;br /&gt;
[up_b_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 1&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_bd_killer_outfit&lt;br /&gt;
section                 = up_sect_b_killer_outfit&lt;br /&gt;
property                = prop_tonnage&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_outfit_a_stalk&lt;br /&gt;
description             = st_upg_outfit_a_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_01&lt;br /&gt;
&lt;br /&gt;
[up_c_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 2&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_ac_killer_outfit&lt;br /&gt;
section                 = up_sect_c_killer_outfit&lt;br /&gt;
property                = prop_damage&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_slice_leather_battle&lt;br /&gt;
description             = st_upg_slice_leather_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_13&lt;br /&gt;
&lt;br /&gt;
[up_d_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 3&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_bd_killer_outfit&lt;br /&gt;
section                 = up_sect_d_killer_outfit&lt;br /&gt;
property                = prop_thermo_electro&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_polymer_suit_stalk&lt;br /&gt;
description             = st_upg_polymer_suit_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_10&lt;br /&gt;
&lt;br /&gt;
[up_e_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 4&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_eg_killer_outfit&lt;br /&gt;
section                 = up_sect_e_killer_outfit&lt;br /&gt;
property                = prop_durability&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_double_layer_body_armor_battle&lt;br /&gt;
description             = st_upg_double_layer_body_armor_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_25&lt;br /&gt;
&lt;br /&gt;
[up_f_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 5&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_fh_killer_outfit&lt;br /&gt;
section                 = up_sect_f_killer_outfit&lt;br /&gt;
property                = prop_thermo_electro&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_spec_coating_stalk&lt;br /&gt;
description             = st_upg_spec_coating_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_11&lt;br /&gt;
&lt;br /&gt;
[up_g_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 6&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_eg_killer_outfit&lt;br /&gt;
section                 = up_sect_g_killer_outfit&lt;br /&gt;
property                = prop_night_vision&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_night_vision_battle&lt;br /&gt;
description             = st_upg_night_vision_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_22&lt;br /&gt;
&lt;br /&gt;
[up_h_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 7&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_fh_killer_outfit&lt;br /&gt;
section                 = up_sect_h_killer_outfit&lt;br /&gt;
property                = prop_radio_chem&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_anti_gas_stalk&lt;br /&gt;
description             = st_upg_anti_gas_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_18&lt;br /&gt;
&lt;br /&gt;
[up_i_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 8&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_i2_killer_outfit&lt;br /&gt;
section                 = up_sect_i_killer_outfit&lt;br /&gt;
property                = prop_artefact&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_artefact_slot&lt;br /&gt;
description             = st_upg_artefact_slot_descr&lt;br /&gt;
icon                    = ui_am_upgrade_05&lt;br /&gt;
&lt;br /&gt;
[up_ac_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 0&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_ac_killer_outfit&lt;br /&gt;
property                = prop_armor&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_cevlars_armor_battle&lt;br /&gt;
description             = st_upg_cevlars_armor_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_06&lt;br /&gt;
&lt;br /&gt;
[up_bd_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 1&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_bd_killer_outfit&lt;br /&gt;
property                = prop_tonnage&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_outfit_b_stalk&lt;br /&gt;
description             = st_upg_outfit_b_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_02&lt;br /&gt;
&lt;br /&gt;
[up_eg_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 2&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_eg_killer_outfit&lt;br /&gt;
property                = prop_damage&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_sintetic_pillow_battle&lt;br /&gt;
description             = st_upg_sintetic_pillow_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_14&lt;br /&gt;
&lt;br /&gt;
[up_fh_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 3&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_fh_killer_outfit&lt;br /&gt;
property                = prop_radio_chem&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_active_filter_stalk&lt;br /&gt;
description             = st_upg_active_filter_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_19&lt;br /&gt;
&lt;br /&gt;
[up_i2_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 4&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_i3_killer_outfit&lt;br /&gt;
section                 = up_sect_i2_killer_outfit&lt;br /&gt;
property                = prop_artefact&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_artefact_slot&lt;br /&gt;
description             = st_upg_artefact_slot_descr&lt;br /&gt;
icon                    = ui_am_upgrade_05&lt;br /&gt;
&lt;br /&gt;
[up_i3_killer_outfit]&lt;br /&gt;
scheme_index            = 2, 0&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_i3_killer_outfit&lt;br /&gt;
property                = prop_artefact&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_artefact_slot&lt;br /&gt;
description             = st_upg_artefact_slot_descr&lt;br /&gt;
icon                    = ui_am_upgrade_05&lt;br /&gt;
&lt;br /&gt;
[up_gr_ab_killer_outfit]&lt;br /&gt;
elements                = up_a_killer_outfit, up_b_killer_outfit&lt;br /&gt;
[up_gr_cd_killer_outfit]&lt;br /&gt;
elements                = up_c_killer_outfit, up_d_killer_outfit&lt;br /&gt;
[up_gr_ef_killer_outfit]&lt;br /&gt;
elements                = up_e_killer_outfit, up_f_killer_outfit&lt;br /&gt;
[up_gr_gh_killer_outfit]&lt;br /&gt;
elements                = up_g_killer_outfit, up_h_killer_outfit&lt;br /&gt;
[up_gr_i_killer_outfit]&lt;br /&gt;
elements                = up_i_killer_outfit&lt;br /&gt;
&lt;br /&gt;
[up_gr_ac_killer_outfit]&lt;br /&gt;
elements                = up_ac_killer_outfit&lt;br /&gt;
[up_gr_bd_killer_outfit]&lt;br /&gt;
elements                = up_bd_killer_outfit&lt;br /&gt;
[up_gr_eg_killer_outfit]&lt;br /&gt;
elements                = up_eg_killer_outfit&lt;br /&gt;
[up_gr_fh_killer_outfit]&lt;br /&gt;
elements                = up_fh_killer_outfit&lt;br /&gt;
[up_gr_i2_killer_outfit]&lt;br /&gt;
elements                = up_i2_killer_outfit&lt;br /&gt;
&lt;br /&gt;
[up_gr_i3_killer_outfit]&lt;br /&gt;
elements                = up_i3_killer_outfit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Осталось ещё немного. Открываем &amp;quot;stalkers_upgarde_info.ltx&amp;quot; и прописываем наш бронежилет на апгрейд любому технику в зоне, которому хотим доверить модифицирование нашего бронежилета, я для примера пропишу Новикову. Для этого в самом конце записи &amp;quot;[mar_csky_tech]&amp;quot;, после stalker_outfit прописываем killer_outfit и сохраняем файл. После открываем &amp;quot;inventory_upgrades.ltx&amp;quot; и в самом конце после dolg_heavy_outfit ставим killer_outfit, сохраняем всё. Теперь осталось только прописать продажу нашего бронежилета торговцам, я для примера взял Суслова на болотах. Открываем файл trade_trader_mar_csky.ltx и прописываем:&lt;br /&gt;
&lt;br /&gt;
В функции: [trade_generic_buy] после:&lt;br /&gt;
dolg_heavy_outfit		= 0.01, 0.01&lt;br /&gt;
Ставим: &amp;lt;code&amp;gt;killer_outfit		= 0.01, 0.01&lt;br /&gt;
&lt;br /&gt;
В функциях: [supplies_generic],[supplies_exp_1],[supplies_exp_2],[supplies_exp_3] где нибудь:&lt;br /&gt;
killer_outfit			= 3,	0.5&lt;br /&gt;
&lt;br /&gt;
В функциях: [trade_generic_sell] и [trade_friend_sell] после:&lt;br /&gt;
dolg_heavy_outfit		;NO TRADE&lt;br /&gt;
Ставим:&lt;br /&gt;
killer_outfit			= 1, 3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Всё, сохраняем и тестируем.&lt;br /&gt;
[[Категория:Неоформленные статьи]]&lt;/div&gt;</summary>
		<author><name>First Tramp</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2_%D0%A7%D0%9D</id>
		<title>Создание броника в ЧН</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%B2_%D0%A7%D0%9D"/>
				<updated>2011-06-15T14:09:10Z</updated>
		
		<summary type="html">&lt;p&gt;First Tramp: рассвовал по кодам, исправил ошибки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                         '''Создание модифицированного бронежилета в ЧН'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
И так, в этой статье я опишу как создать модифицируемый бронежилет в ЧН. Для примера создадим комбенизон наёмника. Для этого нам понадобятся вот эти файлы:&lt;br /&gt;
&lt;br /&gt;
gamedata\configs\item_upgrades.ltx&lt;br /&gt;
gamedata\configs\misc\outfit.ltx&lt;br /&gt;
gamedata\configs\misc\inventory_upgrades.ltx&lt;br /&gt;
gamedata\configs\misc\stalkers_upgarde_info.ltx&lt;br /&gt;
gamedata\configs\misc\trade\trade_trader_mar_csky.ltx&lt;br /&gt;
gamedata\configs\ui\inventory_upgrade.xml&lt;br /&gt;
gamedata\configs\ui\inventory_upgrade_16.xml&lt;br /&gt;
gamedata\configs\text\rus\st_items_outfit.xml&lt;br /&gt;
&lt;br /&gt;
И так, приступаем. Открываем файл outfit.ltx и в самый конец добавляем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;;---------------------------------------------------------------------------------------------&lt;br /&gt;
;		КОМБЕНИЗОН НАЁМНИКА&lt;br /&gt;
;---------------------------------------------------------------------------------------------&lt;br /&gt;
[killer_outfit]:outfit_base&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;outfit\killer_outfit&amp;quot;&lt;br /&gt;
;$prefetch 		= 32&lt;br /&gt;
class			= E_STLK&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = dynamics\outfit\stalker_outfit&lt;br /&gt;
actor_visual	= actors\stalker_neutral\stalker_neutral_2.ogf&lt;br /&gt;
player_hud_section	= actor_hud_01&lt;br /&gt;
&lt;br /&gt;
ef_equipment_type	= 3&lt;br /&gt;
&lt;br /&gt;
inv_name			= killer_outfit_name&lt;br /&gt;
inv_name_short		= killer_outfit_name&lt;br /&gt;
description			= killer_outfit_description&lt;br /&gt;
inv_weight			= 5.0&lt;br /&gt;
inv_grid_width		= 2&lt;br /&gt;
inv_grid_height		= 3&lt;br /&gt;
inv_grid_x			= 4&lt;br /&gt;
inv_grid_y			= 15&lt;br /&gt;
full_icon_name		= npc_icon_stalker_outfit&lt;br /&gt;
&lt;br /&gt;
cost				= 6250&lt;br /&gt;
slot				= 6&lt;br /&gt;
full_scale_icon		= 14,11			;иконка сталкера в костюме в полный рост&lt;br /&gt;
nightvision_sect	= ;effector_nightvision_bad&lt;br /&gt;
&lt;br /&gt;
additional_inventory_weight		= 0		; +max_walk_weight&lt;br /&gt;
additional_inventory_weight2	= 0		;	+40 kg&lt;br /&gt;
artefact_count                  = 2&lt;br /&gt;
&lt;br /&gt;
default_to_ruck     = false&lt;br /&gt;
immunities_sect		= sect_killer_outfit_immunities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; LOW RESISTANCE&lt;br /&gt;
burn_protection 				= 0.015&lt;br /&gt;
shock_protection 				= 0.015&lt;br /&gt;
radiation_protection 			= 0.015&lt;br /&gt;
chemical_burn_protection 		= 0.015&lt;br /&gt;
telepatic_protection 			= 0.0&lt;br /&gt;
strike_protection 				= 0.25&lt;br /&gt;
explosion_protection 			= 0.25&lt;br /&gt;
wound_protection				= 0.25&lt;br /&gt;
fire_wound_protection  			= 0.0&lt;br /&gt;
physic_strike_wound_immunity 	= 0.15&lt;br /&gt;
&lt;br /&gt;
power_loss = 1.0&lt;br /&gt;
bones_koeff_protection = actor_light_armor&lt;br /&gt;
hit_fraction_actor = 0.3&lt;br /&gt;
control_inertion_factor = 1.2&lt;br /&gt;
&lt;br /&gt;
upgrades                = up_gr_ab_killer_outfit, up_gr_cd_killer_outfit, up_gr_ef_killer_outfit, up_gr_gh_killer_outfit, up_gr_i_killer_outfit&lt;br /&gt;
installed_upgrades      =&lt;br /&gt;
upgrade_scheme          = upgrade_killer_outfit       &lt;br /&gt;
&lt;br /&gt;
[sect_killer_outfit_immunities]&lt;br /&gt;
burn_immunity				= 0.03			;коэффициенты иммунитета самого костюма&lt;br /&gt;
strike_immunity				= 0.0&lt;br /&gt;
shock_immunity				= 0.0&lt;br /&gt;
wound_immunity				= 0.03&lt;br /&gt;
radiation_immunity			= 0.0&lt;br /&gt;
telepatic_immunity			= 0.0&lt;br /&gt;
chemical_burn_immunity		= 0.03&lt;br /&gt;
explosion_immunity			= 0.03&lt;br /&gt;
fire_wound_immunity			= 0.015&lt;br /&gt;
&lt;br /&gt;
[sect_killer_outfit_immunities_1]&lt;br /&gt;
burn_immunity				= 0.015			;коэффициенты иммунитета самого костюма&lt;br /&gt;
strike_immunity				= 0.0&lt;br /&gt;
shock_immunity				= 0.0&lt;br /&gt;
wound_immunity				= 0.015&lt;br /&gt;
radiation_immunity			= 0.0&lt;br /&gt;
telepatic_immunity			= 0.0&lt;br /&gt;
chemical_burn_immunity		= 0.015&lt;br /&gt;
explosion_immunity			= 0.015&lt;br /&gt;
fire_wound_immunity			= 0.010&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее в этом же файле только в самом верху после строки &amp;lt;code&amp;gt;&amp;quot;#include &amp;quot;outfit_upgrades\o_military_outfit_up.ltx&amp;quot;&amp;lt;/code&amp;gt; ставим новую: &amp;lt;code&amp;gt;&amp;quot;#include &amp;quot;outfit_upgrades\o_killer_outfit_up.ltx&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Всё, теперь сохраняем. Далее открываем &amp;quot;st_items_outfit.xml&amp;quot; и в самом конце прописываем:&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;code&amp;gt;&amp;lt;string id=&amp;quot;killer_outfit_description&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Комбенизон членов группировки наёмников, защитные характеристики костюма очень малы, что крайне не достаточно в условиях зоны.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;killer_outfit_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Комбенизон наёмника&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так, сохроняем всё теперь и открываем файл item_upgrades.ltx (gamedata/configs), и в самом конце прописываем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#include &amp;quot;misc\outfit_upgrades\o_killer_outfit_up.ltx&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем всё. Далее открываем по очереди &amp;quot;inventory_upgrade.xml&amp;quot; и &amp;quot;inventory_upgrade_16.xml&amp;quot; и в самом конце прописываем структуру:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;template name=&amp;quot;upgrade_killer_outfit&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;column&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;5&amp;quot;   /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;50&amp;quot;  /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;145&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;195&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;240&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;290&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;335&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;20&amp;quot; y=&amp;quot;385&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/column&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;column&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;50&amp;quot;  /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;100&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;240&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;290&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;120&amp;quot; y=&amp;quot;385&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/column&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;column&amp;gt;&lt;br /&gt;
        &amp;lt;cell x=&amp;quot;220&amp;quot; y=&amp;quot;385&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/column&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/template&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Далее создаём по такому пути (gamedata\configs\misc) папку с таким названием outfit_upgrades а внутри папки новый конфиг с названием o_killer_outfit_up.ltx, после открываем конфиг и прописываем в нём:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[up_sect_a_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value2		= st_upg_cevlars_armor_battle&lt;br /&gt;
inv_weight	= 2.0&lt;br /&gt;
bones_koeff_protection = actor_light_armor_1&lt;br /&gt;
&lt;br /&gt;
[up_sect_b_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +5&lt;br /&gt;
additional_inventory_weight		= 5		; +max_walk_weight&lt;br /&gt;
additional_inventory_weight2	= 5	&lt;br /&gt;
&lt;br /&gt;
[up_sect_c_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +30&lt;br /&gt;
inv_weight	= 0.5&lt;br /&gt;
strike_protection 			= 0.02	;0.25&lt;br /&gt;
wound_protection			= 0.02	;0.25&lt;br /&gt;
explosion_protection 		= 0.02	;0.25&lt;br /&gt;
;hit_fraction_actor			= -0.05&lt;br /&gt;
&lt;br /&gt;
[up_sect_d_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +20&lt;br /&gt;
inv_weight	= 0.5&lt;br /&gt;
burn_protection 			= 0.008 ;0.3&lt;br /&gt;
shock_protection 			= 0.008 ;0.3&lt;br /&gt;
&lt;br /&gt;
[up_sect_e_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +50&lt;br /&gt;
immunities_sect		= sect_stalker_outfit_immunities_1&lt;br /&gt;
&lt;br /&gt;
[up_sect_f_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +20&lt;br /&gt;
burn_protection 			= 0.008 ;0.3&lt;br /&gt;
shock_protection 			= 0.008 ;0.3&lt;br /&gt;
&lt;br /&gt;
[up_sect_g_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
nightvision_sect = effector_nightvision_bad&lt;br /&gt;
&lt;br /&gt;
[up_sect_h_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
value		= +50&lt;br /&gt;
radiation_protection 		= 0.008 ;0.1&lt;br /&gt;
chemical_burn_protection 	= 0.008 ;0.1&lt;br /&gt;
&lt;br /&gt;
[up_sect_i_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
inv_weight	= 1.0&lt;br /&gt;
artefact_count				= 1&lt;br /&gt;
&lt;br /&gt;
[up_sect_ac_killer_outfit]&lt;br /&gt;
cost 		= 3750&lt;br /&gt;
value2		= st_upg_cevlars_armor_battle&lt;br /&gt;
inv_weight	= 2.0&lt;br /&gt;
bones_koeff_protection = actor_light_armor_2&lt;br /&gt;
&lt;br /&gt;
[up_sect_bd_killer_outfit]&lt;br /&gt;
cost 		= 3750&lt;br /&gt;
value		= +10&lt;br /&gt;
additional_inventory_weight		= 10		; +max_walk_weight&lt;br /&gt;
additional_inventory_weight2	= 10&lt;br /&gt;
&lt;br /&gt;
[up_sect_eg_killer_outfit]&lt;br /&gt;
cost 		= 3750&lt;br /&gt;
value		= +50&lt;br /&gt;
inv_weight	= 0.3 &lt;br /&gt;
strike_protection 			= 0.03	;0.15&lt;br /&gt;
wound_protection			= 0.03	;0.15&lt;br /&gt;
explosion_protection 		= 0.03	;0.15&lt;br /&gt;
;hit_fraction_actor			= -0.05&lt;br /&gt;
&lt;br /&gt;
[up_sect_fh_killer_outfit]&lt;br /&gt;
cost 		= 3750&lt;br /&gt;
value 		= +50&lt;br /&gt;
radiation_protection 		= 0.008 ;0.1&lt;br /&gt;
chemical_burn_protection 	= 0.008 ;0.1&lt;br /&gt;
&lt;br /&gt;
[up_sect_i2_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
inv_weight	= 1.0&lt;br /&gt;
artefact_count				= 1&lt;br /&gt;
&lt;br /&gt;
[up_sect_i3_killer_outfit]&lt;br /&gt;
cost 		= 2500&lt;br /&gt;
inv_weight	= 1.0&lt;br /&gt;
artefact_count				= 1&lt;br /&gt;
&lt;br /&gt;
[up_a_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 0&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_ac_killer_outfit&lt;br /&gt;
section                 = up_sect_a_killer_outfit&lt;br /&gt;
property                = prop_armor&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_cevlars_armor_battle&lt;br /&gt;
description             = st_upg_cevlars_armor_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_06&lt;br /&gt;
&lt;br /&gt;
[up_b_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 1&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_bd_killer_outfit&lt;br /&gt;
section                 = up_sect_b_killer_outfit&lt;br /&gt;
property                = prop_tonnage&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_outfit_a_stalk&lt;br /&gt;
description             = st_upg_outfit_a_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_01&lt;br /&gt;
&lt;br /&gt;
[up_c_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 2&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_ac_killer_outfit&lt;br /&gt;
section                 = up_sect_c_killer_outfit&lt;br /&gt;
property                = prop_damage&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_slice_leather_battle&lt;br /&gt;
description             = st_upg_slice_leather_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_13&lt;br /&gt;
&lt;br /&gt;
[up_d_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 3&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_bd_killer_outfit&lt;br /&gt;
section                 = up_sect_d_killer_outfit&lt;br /&gt;
property                = prop_thermo_electro&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_polymer_suit_stalk&lt;br /&gt;
description             = st_upg_polymer_suit_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_10&lt;br /&gt;
&lt;br /&gt;
[up_e_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 4&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_eg_killer_outfit&lt;br /&gt;
section                 = up_sect_e_killer_outfit&lt;br /&gt;
property                = prop_durability&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_double_layer_body_armor_battle&lt;br /&gt;
description             = st_upg_double_layer_body_armor_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_25&lt;br /&gt;
&lt;br /&gt;
[up_f_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 5&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_fh_killer_outfit&lt;br /&gt;
section                 = up_sect_f_killer_outfit&lt;br /&gt;
property                = prop_thermo_electro&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_spec_coating_stalk&lt;br /&gt;
description             = st_upg_spec_coating_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_11&lt;br /&gt;
&lt;br /&gt;
[up_g_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 6&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_eg_killer_outfit&lt;br /&gt;
section                 = up_sect_g_killer_outfit&lt;br /&gt;
property                = prop_night_vision&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_night_vision_battle&lt;br /&gt;
description             = st_upg_night_vision_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_22&lt;br /&gt;
&lt;br /&gt;
[up_h_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 7&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_fh_killer_outfit&lt;br /&gt;
section                 = up_sect_h_killer_outfit&lt;br /&gt;
property                = prop_radio_chem&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_anti_gas_stalk&lt;br /&gt;
description             = st_upg_anti_gas_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_18&lt;br /&gt;
&lt;br /&gt;
[up_i_killer_outfit]&lt;br /&gt;
scheme_index            = 0, 8&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_i2_killer_outfit&lt;br /&gt;
section                 = up_sect_i_killer_outfit&lt;br /&gt;
property                = prop_artefact&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_artefact_slot&lt;br /&gt;
description             = st_upg_artefact_slot_descr&lt;br /&gt;
icon                    = ui_am_upgrade_05&lt;br /&gt;
&lt;br /&gt;
[up_ac_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 0&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_ac_killer_outfit&lt;br /&gt;
property                = prop_armor&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_cevlars_armor_battle&lt;br /&gt;
description             = st_upg_cevlars_armor_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_06&lt;br /&gt;
&lt;br /&gt;
[up_bd_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 1&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_bd_killer_outfit&lt;br /&gt;
property                = prop_tonnage&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_outfit_b_stalk&lt;br /&gt;
description             = st_upg_outfit_b_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_02&lt;br /&gt;
&lt;br /&gt;
[up_eg_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 2&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_eg_killer_outfit&lt;br /&gt;
property                = prop_damage&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_sintetic_pillow_battle&lt;br /&gt;
description             = st_upg_sintetic_pillow_battle_descr&lt;br /&gt;
icon                    = ui_am_upgrade_14&lt;br /&gt;
&lt;br /&gt;
[up_fh_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 3&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_fh_killer_outfit&lt;br /&gt;
property                = prop_radio_chem&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_active_filter_stalk&lt;br /&gt;
description             = st_upg_active_filter_stalk_descr&lt;br /&gt;
icon                    = ui_am_upgrade_19&lt;br /&gt;
&lt;br /&gt;
[up_i2_killer_outfit]&lt;br /&gt;
scheme_index            = 1, 4&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = up_gr_i3_killer_outfit&lt;br /&gt;
section                 = up_sect_i2_killer_outfit&lt;br /&gt;
property                = prop_artefact&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_artefact_slot&lt;br /&gt;
description             = st_upg_artefact_slot_descr&lt;br /&gt;
icon                    = ui_am_upgrade_05&lt;br /&gt;
&lt;br /&gt;
[up_i3_killer_outfit]&lt;br /&gt;
scheme_index            = 2, 0&lt;br /&gt;
known                   = 1&lt;br /&gt;
effects                 = &lt;br /&gt;
section                 = up_sect_i3_killer_outfit&lt;br /&gt;
property                = prop_artefact&lt;br /&gt;
&lt;br /&gt;
precondition_functor    = inventory_upgrades.precondition_functor_a&lt;br /&gt;
precondition_parameter  = a &amp;amp; b&lt;br /&gt;
&lt;br /&gt;
effect_functor          = inventory_upgrades.effect_functor_a&lt;br /&gt;
effect_parameter        = something_here&lt;br /&gt;
&lt;br /&gt;
prereq_functor          = inventory_upgrades.prereq_functor_a&lt;br /&gt;
prereq_tooltip_functor  = inventory_upgrades.prereq_tooltip_functor_a&lt;br /&gt;
prereq_params           = money(1000), item(habar)&lt;br /&gt;
name                    = st_upg_artefact_slot&lt;br /&gt;
description             = st_upg_artefact_slot_descr&lt;br /&gt;
icon                    = ui_am_upgrade_05&lt;br /&gt;
&lt;br /&gt;
[up_gr_ab_killer_outfit]&lt;br /&gt;
elements                = up_a_killer_outfit, up_b_killer_outfit&lt;br /&gt;
[up_gr_cd_killer_outfit]&lt;br /&gt;
elements                = up_c_killer_outfit, up_d_killer_outfit&lt;br /&gt;
[up_gr_ef_killer_outfit]&lt;br /&gt;
elements                = up_e_killer_outfit, up_f_killer_outfit&lt;br /&gt;
[up_gr_gh_killer_outfit]&lt;br /&gt;
elements                = up_g_killer_outfit, up_h_killer_outfit&lt;br /&gt;
[up_gr_i_killer_outfit]&lt;br /&gt;
elements                = up_i_killer_outfit&lt;br /&gt;
&lt;br /&gt;
[up_gr_ac_killer_outfit]&lt;br /&gt;
elements                = up_ac_killer_outfit&lt;br /&gt;
[up_gr_bd_killer_outfit]&lt;br /&gt;
elements                = up_bd_killer_outfit&lt;br /&gt;
[up_gr_eg_killer_outfit]&lt;br /&gt;
elements                = up_eg_killer_outfit&lt;br /&gt;
[up_gr_fh_killer_outfit]&lt;br /&gt;
elements                = up_fh_killer_outfit&lt;br /&gt;
[up_gr_i2_killer_outfit]&lt;br /&gt;
elements                = up_i2_killer_outfit&lt;br /&gt;
&lt;br /&gt;
[up_gr_i3_killer_outfit]&lt;br /&gt;
elements                = up_i3_killer_outfit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Осталось ещё немного. Открываем &amp;quot;stalkers_upgarde_info.ltx&amp;quot; и прописываем наш бронежилет на апгрейд любому технику в зоне, которому хотим доверить модифицирование нашего бронежилета, я для примера пропишу Новикову. Для этого в самом конце записи &amp;quot;[mar_csky_tech]&amp;quot;, после stalker_outfit прописываем killer_outfit и сохраняем файл. После открываем &amp;quot;inventory_upgrades.ltx&amp;quot; и в самом конце после dolg_heavy_outfit ставим killer_outfit, сохраняем всё. Теперь осталось только прописать продажу нашего бронежилета торговцам, я для примера взял Суслова на болотах. Открываем файл trade_trader_mar_csky.ltx и прописываем:&lt;br /&gt;
&lt;br /&gt;
В функции: [trade_generic_buy] после:&lt;br /&gt;
dolg_heavy_outfit		= 0.01, 0.01&lt;br /&gt;
Ставим: &amp;lt;code&amp;gt;killer_outfit		= 0.01, 0.01&lt;br /&gt;
&lt;br /&gt;
В функциях: [supplies_generic],[supplies_exp_1],[supplies_exp_2],[supplies_exp_3] где нибудь:&lt;br /&gt;
killer_outfit			= 3,	0.5&lt;br /&gt;
&lt;br /&gt;
В функциях: [trade_generic_sell] и [trade_friend_sell] после:&lt;br /&gt;
dolg_heavy_outfit		;NO TRADE&lt;br /&gt;
Ставим:&lt;br /&gt;
killer_outfit			= 1, 3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Всё, сохраняем и тестируем.&lt;br /&gt;
[[Категория:Неоформленные статьи]]&lt;/div&gt;</summary>
		<author><name>First Tramp</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82</id>
		<title>Спавн через скрипт</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82"/>
				<updated>2011-06-04T14:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;First Tramp: ну сколько раз говорить что нужно ставить db.actor:level_vertex_id()  а не &amp;quot;1&amp;quot;??!!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Теория==&lt;br /&gt;
&lt;br /&gt;
В скриптах есть одна единственная функция, отвечающая за спавн объектов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
alife():create(section,position,levelvertex,gamevertex)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;Строго говоря, их две: create и create_ammo но различия между ними не существенны. [[Участник:Imp|Imp]] 22:45, 23 июля 2007 (EEST)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первый параметр - секция в конфигурациях, описывающая объект, например &amp;quot;bolt&amp;quot;,&amp;quot;medkit&amp;quot; - это простые секции, простых объектов&lt;br /&gt;
а есть объекты, которые переходят в онлайн/оффлайн, это неписи, монстры и так далее, например mil_killer_respawn_2 - спавнится снайпер группировки киллеров.&lt;br /&gt;
&lt;br /&gt;
С позицией, думаю объяснять не надо, только существует нюанс - высота это Y, а не Z.&lt;br /&gt;
Задать позицию можно такой конструкцией: vector():set(x,y,z), где x, y и z - координаты точки на уровне, где спавним объект.&lt;br /&gt;
&lt;br /&gt;
Вертекс в игре Сталкер не тоже самое, что вертекс в трехмерной графике. Vertex - определенная зона малого размера за которой закреплен индивидуальный номер в пределах уровня или целой игры. &lt;br /&gt;
level_vertex определяет зону на уровне, по которой можно пройти NPC. game_vertex определяют зоны для свободного хождения, т.е. под руководством ИИ, а также между уровнями. Вертексы имеют одно из первостепенных значений. Точность положения указывается уже через точку спавна.&lt;br /&gt;
Например, можно получить вертекс ближайший к актору - db.actor:level_vertex_id()&lt;br /&gt;
&lt;br /&gt;
game_vertex_id нужен для того, чтобы указать на какой карте спавнить объект.&lt;br /&gt;
&lt;br /&gt;
Соответственно, чтобы заспавнить что-нибудь на другой карте, достаточно указать game_vertex_id в четвертом параметре.&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
db.actor:game_vertex_id()&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, чтобы, например, заспавнить болт под ногами актора, пишем: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
alife():create(&amp;quot;bolt&amp;quot;, db.actor():position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Почему 1, а не level_vertex_id? Проверено - разницы особой нет, какой level_vertex_id, хотя в некоторых случаях надо прописывать валидный вертекс, а то предмет может просто заспавнится не там, где планировалось... Но по большей части все проходит нормально и с единицей (игнорирование level_vertex_id может приводить к проваливанию произведенных предметов/персонажей под землю).&lt;br /&gt;
А вот game_vertex решает все - он указывает на каком уровне спавнить предмет, поэтому его надо указывать. Теоретически можно просто найти для каждого уровня по одному game_vertex'у и использовать их в скриптах.&lt;br /&gt;
На самом деле game_vertex показывает какой фрагмент карты используется (вся карта разбита на кусочки, имеющие сквозную нумерацию по всем уровням, и game_vertex выбирает нужный) соответственно неправильное использование черевато....&lt;br /&gt;
&lt;br /&gt;
Кроме того, есть еще один параметр - ID объекта, если указать ID NPC или актора - то предмет заспавнится у него в инвентаре.&lt;br /&gt;
&lt;br /&gt;
Пример (спавним артефакт Медуза в инвентаре у актора):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
alife():create(&amp;quot;af_medusa&amp;quot;, db.actor():position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функция спавна возвращает серверный объект, то есть ни NPC, ни монстра ни что-либо еще.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;Серверный обьект позволяет свежесозданного NPC или тайник затарить разными рулезами/артефактами. Например, вот так создадим перед входом к Сидоровичу долговца и засунем в него пачку патронов:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
	local obj&lt;br /&gt;
	local a = vector() -- Задаем тип переменной&lt;br /&gt;
	local dir    = db.actor:direction()&lt;br /&gt;
&lt;br /&gt;
	a.x = -243.61	-- координата X&lt;br /&gt;
	a.y = -19.52	-- высота Y&lt;br /&gt;
	a.z = -127.17	-- координата Z&lt;br /&gt;
&lt;br /&gt;
	obj = alife():create(&amp;quot;bar_dolg_respawn_3&amp;quot;, a, 13193, 8, 65535)&lt;br /&gt;
	alife():create_ammo(&amp;quot;ammo_9x18_fmj&amp;quot;,&lt;br /&gt;
		obj.position,&lt;br /&gt;
		obj.m_level_vertex_id,&lt;br /&gt;
		obj.m_game_vertex_id,&lt;br /&gt;
		obj.id,&lt;br /&gt;
		20) -- число патронов&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Кстати, create_ammo - практически тоже самое, что и create, разница в том, что create_ammo предназначена специально для спавна патронов и позволяет создавать неполные пачки патронов. Возможно есть еще какие-то отличия. Стоит учесть, что сами авторы игры спавнят патроны исключительно через create_ammo. [[Участник:Imp|Imp]] 22:38, 23 июля 2007 (EEST)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Просто минимальный набор - координаты, ID, секция,а из него (серверного объекта) обычно нужен только ID, так как по ID можно получить этот самый серверный объект:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
(alife():object(id))&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Его можно использовать, чтобы поставить метку, например, но я его лично использую для других целей - спавн сложных объектов, конкретно – NPC.&lt;br /&gt;
&lt;br /&gt;
Например надо решить следующую задачу - надо создать наемника, сменить ему группировку и изменить его инвентарь, ну и в нагрузку - сделать другом для игрока.&lt;br /&gt;
&lt;br /&gt;
В определенный момент заспавненный объект переходит онлайн, в этот момент вызывается callback - net_spawn.&lt;br /&gt;
&lt;br /&gt;
Что мы делаем? Сверяем ID онлайн объекта с сохраненным ID!&lt;br /&gt;
&lt;br /&gt;
Если они совпадают, например так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
if obj:id()==saved_id then ...&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно то, что у серверного объекта ID - это параметр, а у онлайнового объекта ID получается с помощью функции. Это важно, а то можно прогореть.&lt;br /&gt;
&lt;br /&gt;
Итак, мы поймали нашего киллера по ID.&lt;br /&gt;
&lt;br /&gt;
Далее все очень просто - вызываем команды для спавна гаусса и патронов к нему в инвентаре NPC (см. выше), меняем группировку специальной функцией, и делаем его другом.&lt;br /&gt;
&lt;br /&gt;
Зачем такие сложности? Просто в оффлайне NPC как бы не существует, есть только косвенное упоминание о нем, и, плюс, все эти функции работают именно с объектом типа &amp;quot;NPC&amp;quot;, а не с серверными объектами.&lt;br /&gt;
&lt;br /&gt;
Более простая функция спауна в одну строчку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
alife():create(section,position,levelvertex,gamevertex)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
section -- это секция предмета&lt;br /&gt;
position -- это его позиция (Через vector()) Брать в игре с помощью консольной команды rs_stats 1 или rs_cam_pos 1 (Тока в ЧН)&lt;br /&gt;
levelvertex - пусть равно 1&lt;br /&gt;
gamevertex - его Game Vertex, определяет уровень где будет спаун.&lt;br /&gt;
GV можно взять либо скриптом, либо через распакованный all.spawn.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
alife():create(&amp;quot;stalker&amp;quot;,vector():set(0,0,0),1,135) -- спаунит сталкера на водокачке (игра ЧН, на уровне Болото).&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Практика (часть 1)==&lt;br /&gt;
&lt;br /&gt;
'''1.''' Чтобы не повторяться в описании создания нового квеста, просто изучите [[Создание квестов (Fr3nzy)|статью по созданию квестов]] от Fr3nzy – лучшей статьи на эту тему я просто не видел :) Мы просто свяжем все воедино и научимся спавнить объекты из скрипта. &lt;br /&gt;
&lt;br /&gt;
Небольшое отступление:&lt;br /&gt;
&lt;br /&gt;
Почему предпочтительнее делать спавн скриптом, а не через тот же [http://stalkerin.gameru.net/downloads/stutils/zeed/xrspawner.rar xrSpawner]? Программа xrSpawner, при всех своих достоинствах, обладает одним недостатком, а именно – редактирует спавн через файл all.spawn, что приводит к:&lt;br /&gt;
&lt;br /&gt;
* Невозможности совместить два мода, такой спавн использующих&lt;br /&gt;
* Необходимости каждый раз начинать новую игру&lt;br /&gt;
&lt;br /&gt;
При спавне через скрипт ситуация иная: в подавляющем большинстве случаев, ранее сохранённые игры будут работать, что не может не радовать :)&lt;br /&gt;
&lt;br /&gt;
Итак, определимся с квестом.&lt;br /&gt;
&lt;br /&gt;
'''Задача:''' после разговора с Сидоровичем спавним зомби на территории фабрики в первой локации. Для того, чтобы не повредить оригинальный сюжет игры, задание будет выдаваться '''после''' прохождения квеста с флешкой Шустрого, так как появись там зомби одновременно с бандитами и Шустрым... я думаю, исход боя предрешен :)&lt;br /&gt;
&lt;br /&gt;
Реализация: Постараюсь описать все действия максимально подробно, буквально по шагам. Первым делом запустите игру :) &lt;br /&gt;
&lt;br /&gt;
В консоли введите команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
rs_stats on или rs_stats 1&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тем самым мы включаем вывод информации на экран. &lt;br /&gt;
Далее вводим еще одну команду:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
demo_record 1&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И «летим» на фабрику. Нам нужно выбрать место для спавна объектов и данный режим как нельзя лучше подходит для реализации задуманного. Помещаем камеру в точке предполагаемого спавна и записываем координаты - у меня получились 115, -6, -16. &lt;br /&gt;
&lt;br /&gt;
Для выхода из режима demo_record нажимаем Esc, в консоли пишем rs_stats off или rs_stats 0 (убираем вывод информации).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;Другой способ получения тех же сведений - прийти в нужное место и запустить там скрипт, который выдаст все нужные координаты. Я пользуюсь следующим скриптом (вызываю общеизвестным способом, через main_menu):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function main_menu:main_cheat_f3()&lt;br /&gt;
	-- Выдадим сообщение о нашем местоположении&lt;br /&gt;
	local text&lt;br /&gt;
	local vid&lt;br /&gt;
	local gvid&lt;br /&gt;
	local a = vector() -- Тип переменной&lt;br /&gt;
	local text&lt;br /&gt;
&lt;br /&gt;
	a    = db.actor:position()        -- Наше положение в координатах&lt;br /&gt;
	vid  = db.actor:level_vertex_id() &lt;br /&gt;
	gvid = db.actor:game_vertex_id() &lt;br /&gt;
	text = &amp;quot;Позиция:\\nX= &amp;quot;..a.x..&amp;quot;\\nY= &amp;quot;..a.y..&amp;quot;\\nZ= &amp;quot;..a.z..&amp;quot;\\nlevel_vertex= &amp;quot;..vid..&amp;quot;\\ngame_vertex_id= &amp;quot;..gvid&lt;br /&gt;
	news_manager.send_tip(db.actor, text, nil, nil, 30000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате не нужно экспериментировать, мы сразу получаем все, в том числе и level_vertex и  game_vertex. [[Участник:Imp|Imp]] 22:38, 23 июля 2007 (EEST)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;&lt;br /&gt;
Или же используем готовые скрипты с автообновлением позиционирования:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://stalkerin.gameru.net/downloads/stutils/LVIDGVID_script.7z LVID GVID Script SoC]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://stalkerin.gameru.net/downloads/stutils/script_position_cs.rar LVID GVID Script CS]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://stalkerin.gameru.net/downloads/stutils/LVID_GVID_COP.rar LVID GVID Script CoP]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://stalkerin.gameru.net/downloads/stutils/lv_gv_id_3120.rar LVID GVID Script 3120]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://stalkerin.gameru.net/downloads/stutils/LVIDGVID_script_amk.7z LVID GVID Script AMK]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Участник:RedPython|RedPython]] 16:09, 10 октября 2010 (UTC)&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выходим из игры, идем в папку с установленной игрой и создаем каталог gamedata (предполагается, что «лепим» свой «мод» на «чистую» игру,  без установленных модов, и имеем распакованные ресурсы игры в папке, скажем, gamedata source).&lt;br /&gt;
&lt;br /&gt;
В папке gamedata создаем папку config, а в ней - папку creatures. Скопируем из оригинальной папки файл m_zombie.ltx и откроем его на редактирование.&lt;br /&gt;
&lt;br /&gt;
В файлах игры присутствуют 5 моделей гражданских зомби: файлы zombi_1.ogf, zombi_1_ghost.ogf, zombi_2.ogf, zombi_trup.ogf, zombi_trup_2.ogf.&lt;br /&gt;
&lt;br /&gt;
Вернем в игру их всех :)&lt;br /&gt;
&lt;br /&gt;
Уже имеются секции:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[zombie_weak]:m_zombie_e, [zombie_normal]:m_zombie_e, [zombie_strong]:m_zombie_e и [zombie_immortal]:zombie_strong.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Два последних типа используют одну и ту же модель zombi_trup.ogf, хм... непорядок, исправляем. &lt;br /&gt;
Последняя секция выглядит теперь так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[zombie_immortal]:zombie_strong&lt;br /&gt;
$spawn				= &amp;quot;monsters\zombies\zombie_immortal&amp;quot;&lt;br /&gt;
visual				= monsters\zombi\zombi_trup_2&lt;br /&gt;
panic_threshold		= 0.05&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Добавим пятую модель. &lt;br /&gt;
&lt;br /&gt;
Для этого в конце файла создадим секцию:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[zombie_ghost]:zombie_strong&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это означает, что наш пятый зомби наследует все параметры zombie_strong, мы добавим лишь визуальное представление.&lt;br /&gt;
 &lt;br /&gt;
Пишем дальше:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
$spawn				= &amp;quot;monsters\zombies\zombie_ghost&amp;quot;&lt;br /&gt;
visual				= monsters\zombi\zombi_1_ghost&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все. Сохраняем изменения и закрываем файл.&lt;br /&gt;
&lt;br /&gt;
'''2.''' Пишем скрипт спавна. В папке gamedata создаем новую папку scripts, в ней создаем новый текстовый документ и называем его esc_zombie.script. &lt;br /&gt;
&lt;br /&gt;
Отступление третье:&lt;br /&gt;
&lt;br /&gt;
При написании статьи использовался оригинальный скрипт zombie_story.script из horror-mod’а. Концепция спавна перенесена практически без изменений, поэтому на авторство этого способа спавна я никоим образом не претендую :)&lt;br /&gt;
&lt;br /&gt;
Итак, открываем наш пустой файл на редактирование, первой строкой объявляем переменную, в которой хранятся наши зомби:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
local zombie_types = {&amp;quot;zombie_weak&amp;quot;, &amp;quot;zombie_normal&amp;quot;, &amp;quot;zombie_strong&amp;quot;, &amp;quot;zombie_immortal&amp;quot;, &amp;quot;zombie_ghost&amp;quot;}&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее пишем функцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function spawn_zombies( position, total )&lt;br /&gt;
	local zombie_index                              -- тип зомби из массива zombie_types&lt;br /&gt;
	local new_pos, x_offset, z_offset               -- объявляем переменные 	&lt;br /&gt;
	for zombie_index=1, total do                    -- крутим цикл столько раз, сколько задает переменная total&lt;br /&gt;
		x_offset = math.random(5)               -- случайное (рандомное)  x от 1 до 5&lt;br /&gt;
		z_offset = math.random(5)               -- случайное (рандомное)  z от 1 до 5&lt;br /&gt;
		new_pos = position                      -- передаем координаты в функцию&lt;br /&gt;
		new_pos.x = new_pos.x + x_offset                -- прибавляем к указанной нами координате x полученное выше рандомное x&lt;br /&gt;
		new_pos.z = new_pos.z + z_offset                -- прибавляем к указанной нами координате z полученное выше рандомное z&lt;br /&gt;
-- Ниже, собственно и вызывается функция спавна случайного типа зомби zombie_types[math.random(5)] привязанного к нашим координатам&lt;br /&gt;
	alife():create(zombie_types[math.random(5)],new_pos,db.actor:level_vertex_id(),db.actor:game_vertex_id())&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И последнее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function zombie_story_1( actor, npc )&lt;br /&gt;
-- десять зомби на фабрике (Кордон)&lt;br /&gt;
	local spawn_point = vector():set( 115, -6, -16 )    -- здесь указываем координаты,&lt;br /&gt;
                                                            -- выбранные нами для спавна, когда «летали» камерой :)&lt;br /&gt;
	spawn_zombies( spawn_point, 10 )                    -- собственно вызов предыдущей функции&lt;br /&gt;
                                                            -- с передачей ей координат и количества объектов&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все. Сохраняем и закрываем файл.&lt;br /&gt;
&lt;br /&gt;
Продолжаем разговор :) &lt;br /&gt;
&lt;br /&gt;
Для того, чтобы игра не вылетала после того, как мы добавили новый тип монстров, их нужно добавить в файл xr_statistic.script. Итак, скопируем этот файл из папки ресурсов игры scripts в нашу папку к файлу esc_zombie.script и откроем на редактирование. &lt;br /&gt;
&lt;br /&gt;
Добавим в local killCountProps  к монстрам строчку:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
zombie_weak = 1, zombie_normal = 2, zombie_strong = 3, zombie_immortal = 4, zombie_ghost = 5&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В local sect_alias после строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
zombied_novice = 1, zombied_experienced = 2, zombied_veteran = 3, zombied_master = 4,&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Допишем эти строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
zombie_weak = &amp;quot;zombie_weak&amp;quot;, zombie_normal  = &amp;quot;zombie_normal&amp;quot;, zombie_strong = &amp;quot;zombie_strong&amp;quot;,&lt;br /&gt;
zombie_immortal = &amp;quot;zombie_immortal&amp;quot;, zombie_ghost = &amp;quot;zombie_ghost&amp;quot;,&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А ниже в monster_classes строчку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
[clsid.zombie_s] = &amp;quot;zombie&amp;quot;&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В функцию getNpcType(npc) добавляем конструкцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
elseif npc:character_community() == &amp;quot;zombie&amp;quot; then&lt;br /&gt;
			community = &amp;quot;zombie&amp;quot;&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем изменения и закрываем файл.&lt;br /&gt;
&lt;br /&gt;
Все будет работать на ура, пока мы не попробуем обыскать убитого зомби. Как только мы это сделаем, игра вылетит с примерно такой ошибкой.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
Expression    : fatal error&lt;br /&gt;
Function      : CInifile::r_string&lt;br /&gt;
File          : D:\xray-svn\xrCore\Xr_ini.cpp&lt;br /&gt;
Line          : 351&lt;br /&gt;
Description   : &amp;lt;no expression&amp;gt;&lt;br /&gt;
Arguments     : Can't find variable icon in [zombie_weak]&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все верно – игра не знает, какую иконку нам показывать для зомби. Иконки монстров хранятся в файле ui_npc_monster.dds. Здесь есть два варианта:&lt;br /&gt;
&lt;br /&gt;
* Если дружите с Фотошопом, отредактировать этот файл (нарисовать, добавить иконки);&lt;br /&gt;
* Взять готовый из любого мода, естественно, с разрешения авторов мода. Сейчас мы пропустим данный аспект и присвоим нашим зомби иконки контролера :)&lt;br /&gt;
&lt;br /&gt;
Вернемся к файлу m_zombie.ltx и в секцию [m_zombie_e]:monster_base впишем параметр&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
icon = ui_npc_monster_kontroler&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все. Вылетов не будет.&lt;br /&gt;
&lt;br /&gt;
3. Тема данной статьи не предусматривает подробного описания того, как сделать новый диалог. В начале статьи я упомянул источник, где можно найти исчерпывающую информацию по созданию диалогов, могу также привести в пример [[Создание диалогов|статью по созданию диалогов]] от BAC9-FLCL.&lt;br /&gt;
&lt;br /&gt;
Нам нужно просто проверить работоспособность скриптового спавна, поэтому я приведу просто собственно сам измененный диалог из файла dialogs_escape.xml:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;dialog id=&amp;quot;escape_trader_talk_info&amp;quot;&amp;gt;&lt;br /&gt;
………&lt;br /&gt;
………&lt;br /&gt;
………&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;999&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_999&amp;lt;/text&amp;gt;&lt;br /&gt;
	          &amp;lt;next&amp;gt;7770&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9991&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9992&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9993&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9994&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9996&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;9992&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_9992&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;99922&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;99922&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_99922&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9996&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;9993&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_9993&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;99933&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;9995&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_9995&amp;lt;/text&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;3121&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_3121&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9996&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;3131&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_3131&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9996&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;41&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_41&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9996&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
	&amp;lt;/phrase&amp;gt;&lt;br /&gt;
	&amp;lt;!------Наш диалог: Начало-------&amp;gt;&lt;br /&gt;
		&amp;lt;phrase id=&amp;quot;7770&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;text&amp;gt;escape_trader_talk_info_7770&amp;lt;/text&amp;gt;&lt;br /&gt;
				&amp;lt;next&amp;gt;7771&amp;lt;/next&amp;gt;&lt;br /&gt;
			&amp;lt;/phrase&amp;gt;&lt;br /&gt;
			&amp;lt;phrase id=&amp;quot;7771&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;text&amp;gt;escape_trader_talk_info_7771&amp;lt;/text&amp;gt;&lt;br /&gt;
				&amp;lt;next&amp;gt;7772&amp;lt;/next&amp;gt;&lt;br /&gt;
				&amp;lt;next&amp;gt;7773&amp;lt;/next&amp;gt;&lt;br /&gt;
			&amp;lt;/phrase&amp;gt;&lt;br /&gt;
			&amp;lt;phrase id=&amp;quot;7772&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;text&amp;gt;escape_trader_talk_info_7772&amp;lt;/text&amp;gt;&lt;br /&gt;
				&amp;lt;next&amp;gt;7777&amp;lt;/next&amp;gt;&lt;br /&gt;
			&amp;lt;/phrase&amp;gt;&lt;br /&gt;
			&amp;lt;phrase id=&amp;quot;7773&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;text&amp;gt;escape_trader_talk_info_7773&amp;lt;/text&amp;gt;&lt;br /&gt;
				&amp;lt;next&amp;gt;7779&amp;lt;/next&amp;gt;&lt;br /&gt;
			&amp;lt;/phrase&amp;gt;&lt;br /&gt;
			&amp;lt;phrase id=&amp;quot;7779&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;text&amp;gt;escape_trader_talk_info_7779&amp;lt;/text&amp;gt;&lt;br /&gt;
				&amp;lt;next&amp;gt;9996&amp;lt;/next&amp;gt;&lt;br /&gt;
               			 &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
			&amp;lt;/phrase&amp;gt;&lt;br /&gt;
			&amp;lt;phrase id=&amp;quot;7777&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;text&amp;gt;escape_trader_talk_info_7777&amp;lt;/text&amp;gt;&lt;br /&gt;
				&amp;lt;action&amp;gt;esc_zombie.zombie_story_1&amp;lt;/action&amp;gt;&lt;br /&gt;
				&amp;lt;next&amp;gt;9996&amp;lt;/next&amp;gt;&lt;br /&gt;
               			 &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
          			 &amp;lt;/phrase&amp;gt;&lt;br /&gt;
	&amp;lt;!------Наш диалог: Конец-------&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;51&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;escape_trader_talk_info_51&amp;lt;/text&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9996&amp;lt;/next&amp;gt;&lt;br /&gt;
                &amp;lt;next&amp;gt;9995&amp;lt;/next&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
………&lt;br /&gt;
………&lt;br /&gt;
………&lt;br /&gt;
    &amp;lt;/dialog&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И также связанный с ним файл stable_dialogs_escape.xml.&lt;br /&gt;
В самом начале файла пишем следующее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_talk_info_7770&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Происшествий никаких не было?&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_talk_info_7771&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Да знаешь... Вроде как тихо все у нас. Хотя, вот, вспомнил! Говорили мне &lt;br /&gt;
на днях, что на фабрике, ну, там, где бандюки околачиваются постоянно, видели какиих-то то ли &lt;br /&gt;
людей, то ли призраков... Мало ли что спьяну почудится - я и сказал этим паникерам, мол, &lt;br /&gt;
закусывать надо! Хех, блин, алкаши...&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_talk_info_7772&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Дык мне по любому мимо фабрики топать - заодно и посмотрю на этих &lt;br /&gt;
&amp;quot;людей-призраков&amp;quot;.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_talk_info_7773&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Да я как-то не собирался в ту сторону...&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_talk_info_7779&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Ну, смотри сам, все равно будь осторожен.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;escape_trader_talk_info_7777&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Ага. Сходи, проветрись. Потом зайдешь, расскажешь, что там и как.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;esc_bridge_soldiers_start_11&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Здесь проход воспрещён, сталкер.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Все. Можно запускать игру, идти на Кордон, после разговора с Сидоровичем, в зависимости &lt;br /&gt;
от выбранного Меченным решения, бежим на фабрику и … смотрим сами :)&lt;br /&gt;
&lt;br /&gt;
 [http://www.sendspace.com/file/2kx7uf Готовые файлы примера](перезалито)&lt;br /&gt;
 [http://slil.ru/24600587 Spawn Lib]&lt;br /&gt;
&lt;br /&gt;
Домашнее задание - вернуть в игру 6-ой тип гражданского зомби :)&lt;br /&gt;
&lt;br /&gt;
Продолжение следует…&lt;br /&gt;
&lt;br /&gt;
==Практика (часть 2)==&lt;br /&gt;
&lt;br /&gt;
'''4.''' Сегодня мы закончим с зомби в полном объеме – добавим их описания в энциклопедию,  добавим иконки, и разберемся с «домашним заданием»:) Думаю, что внимательно изучив эту статью, вы ''сами'' сможете через скриптовые функции восстановить любого персонажа, не вошедшего в финальный релиз игры. Если у кого хватит времени и желания, те могут даже написать что-то типа «Ночи живых мертвецов» :) - серию квестов, связанную своим собственным сюжетом. &lt;br /&gt;
Итак, «домашнее задание» - добавляем в игру шестого зомби.&lt;br /&gt;
&lt;br /&gt;
* Создаем в папке gamedata папку meshes, в ней папку monsters, а там – папку zombi. В папке meshes хранятся модели персонажей, объектов, окружения, присутствующих в игре. Как я уже говорил выше, в игре представлено 5 моделей гражданских зомби, а вот текстур – 6. Также немного смутила нумерация моделей – 1, 2, 4... А где третий? Наверное, сбежал :)&lt;br /&gt;
&lt;br /&gt;
* Скопируем из папки с оригинальными файлами игры в созданную нами папку файл zombi файл zombi_2.ogf и переименуем его в zombi_3.ogf. Откроем файл нашей новой модели любым HexEditor’ом, я использую BiEd (Binary Editor 1.00). Так как данная статья рассчитана не только на «продвинутых юзеров», но и на «обычных чайников», которые, тем не менее, хотят «что-нить замутить» и при этом не сильно «парить моск», я не буду рассказывать здесь про адресацию, двухбайтовую запись и т.д., я просто наглядно покажу, где что поправить :)&lt;br /&gt;
&lt;br /&gt;
[http://www.golushkov.pp.net.ua/photo/11-0-717-3 Файл модели '''до''' редактирования]&lt;br /&gt;
&lt;br /&gt;
[http://www.golushkov.pp.net.ua/photo/11-0-718-3 Файл модели '''после''' редактирования]&lt;br /&gt;
&lt;br /&gt;
На скринах видно, что мы просто изменили для этой модели путь к текстуре. Все. Без использования 3D-редакторов и затраты кучи времени на обработку модели в них, мы получили абсолютно новую (на внешний вид) модель. :)&lt;br /&gt;
&lt;br /&gt;
'''5.''' Теперь пропишем нашего нового зомби во все файлы, которые мы создали ранее. В файл m_zombie.ltx в самый конец добавляем секцию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[zombie_old]:zombie_normal&lt;br /&gt;
$spawn				= &amp;quot;monsters\zombies\zombie_old&amp;quot;&lt;br /&gt;
visual				= monsters\zombi\zombi_3&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в файле esc_zombie.script изменяем массив в первой строке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
local zombie_types = {&amp;quot;zombie_weak&amp;quot;, &amp;quot;zombie_normal&amp;quot;, &amp;quot;zombie_strong&amp;quot;, &amp;quot;zombie_immortal&amp;quot;, &lt;br /&gt;
&amp;quot;zombie_old&amp;quot;, &amp;quot;zombie_ghost&amp;quot;}&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В функции spawn_zombies изменяем строку спавна:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
alife():create(zombie_types[math.random(6)],new_pos,&lt;br /&gt;
db.actor:level_vertex_id(),db.actor:game_vertex_id())&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В функции zombie_story_1 меняем число объектов на кратное 6-ти (необязательно):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
spawn_zombies( spawn_point, 12 )&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Всё. Сохраняем и закрываем.&lt;br /&gt;
&lt;br /&gt;
'''6.''' Копируем в папку gamedata\config\gameplay\  файл encyclopedia_mutants.xml, добавляем описание зомби в энциклопедию:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
    &amp;lt;!-------------------------------- Zombieg -----------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;article id=&amp;quot;mutant_zombieg_general&amp;quot; name=&amp;quot;Zombieg&amp;quot; group=&amp;quot;Mutants&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;texture&amp;gt;ui_npc_monster_zombieg&amp;lt;/texture&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;enc_mutant_zombieg_general&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И в связанный с ним файл string_table_enc_mutants.xml в папке gamedata\config\text\rus\ добавляем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;Zombie&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Зомби, гражданский&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;Zombieg&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Зомби-призрак, гражданский&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;enc_mutant_zombieg_general&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Зомби-привидение отличается от обычного зомби лишь тем, что &lt;br /&gt;
воздействие Выжигателя мозгов полностью разрушило не только структуру личности, но и &lt;br /&gt;
тело, поэтому зомби-призрак несколько более живуч по сравнению с обычным зомби.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;enc_mutant_zombie_general&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Воздействие Выжигателя мозгов полностью разрушает структуру личности, &lt;br /&gt;
оставляя только телесную оболочку.\n\n Побродив немного по Зоне, лишённые разума тела &lt;br /&gt;
начинают превращаться в настоящих зомби. Из рефлексов у них остаются лишь самые примитивные, &lt;br /&gt;
оружие и экипировка скоро приходят в негодность. В результате зомби становятся собой ни чем &lt;br /&gt;
иным, как медлительными полутрупами, которых наличествуют лишь два эффективных раздражителя: &lt;br /&gt;
еда и сон. Зомби совершенно неразборчивы в выборе пищи и питья, поэтому их тела буквально &lt;br /&gt;
пропитаны радиацией и токсинами. Как правило, эти существа бесцельно бродят по Зоне или, &lt;br /&gt;
словно трупы, валяются внутри заброшенных построек. Однако, лишь только зомби почует близкое &lt;br /&gt;
присутствие живого человека, он сразу же пытается атаковать. Умудрённые опытом сталкеры &lt;br /&gt;
стараются обходить эти неуклюжие опустошённые оболочки.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Копируем сюда же файл stable_statistic_caption.xml и изменяем в нем 3 строчки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;zombie_normal&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;зомбированный, гражданский&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;zombie_strong&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;зомби-призрак, гражданский&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;zombie_weak&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;зомби, гражданский&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем и закрываем.&lt;br /&gt;
&lt;br /&gt;
'''7.''' И последнее – добавим иконки. Скажу сразу, воспользовался готовым файлом, уже содержащим иконки зомби и других «восстановленных монстров» (спасибо Fr3nzy). Поэтому просто скопируйте файл ui_npc_monster.dds из архива в папку gamedata\textures\ui\, а файл ui_npc_monster.xml – в папку gamedata\config\ui\. Если вы хотите сделать собственные - прочитайте урок по [[Изменение текстур (BAC9-FLCL)|изменению текстур]].&lt;br /&gt;
&lt;br /&gt;
Вкратце, что описывает файл ui_npc_monster.xml: в нем задаются координаты иконок, расположенных в файле ui_npc_monster.dds, применительно к каждому типу монстров в игре.&lt;br /&gt;
&lt;br /&gt;
Заключительный штрих. Откройте файл m_zombie.ltx и в первой секции замените строку&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
icon = ui_npc_monster_kontroler&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
на:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
icon = ui_npc_monster_zombie&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В секцию [zombie_ghost] добавьте строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
icon = ui_npc_monster_zombieg&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняйте изменения. Всё. &lt;br /&gt;
&lt;br /&gt;
Вот [http://data.cod.ru/1290894794 готовые файлы примера].&lt;br /&gt;
Удачи и спасибо за внимание :)&lt;br /&gt;
&lt;br /&gt;
==Спавн NPC==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;Эта часть статьи написана [[Участник:Arhet|Arhet]] и создана на примере того, как в SRP Mod были созданы NPC группировки &amp;quot;Грех&amp;quot;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Задействуем файлы:&lt;br /&gt;
&lt;br /&gt;
* gamedata\config\gameplay\character_desc_escape.xml&lt;br /&gt;
* gamedata\config\gameplay\npc_profile.ltx&lt;br /&gt;
* gamedata\config\creatures\spawn_sections.ltx&lt;br /&gt;
&lt;br /&gt;
Начнем с ''character_desc_escape.xml''. Описание, что значит каждая строка, писать не буду, так как все до меня уже сделано.&lt;br /&gt;
&lt;br /&gt;
Тут создадим нового персонажа:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;specific_character id=&amp;quot;esc_dark_stalker_1&amp;quot; team_default = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;GENERATE_NAME_bandit&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;icon&amp;gt;ui_npc_dark_1&amp;lt;/icon&amp;gt;&lt;br /&gt;
&amp;lt;map_icon x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/map_icon&amp;gt;&lt;br /&gt;
&amp;lt;bio&amp;gt;sim_stalker_novice_bio&amp;lt;/bio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;class&amp;gt;esc_dark_stalker_01&amp;lt;/class&amp;gt; - вот тут наш новый класс кстати.&lt;br /&gt;
&amp;lt;community&amp;gt;dark_stalker&amp;lt;/community&amp;gt; &amp;lt;terrain_sect&amp;gt;stalker_terrain&amp;lt;/terrain_sect&amp;gt;&lt;br /&gt;
&amp;lt;money min=&amp;quot;200&amp;quot; max=&amp;quot;600&amp;quot; infinitive=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/money&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;rank&amp;gt;198&amp;lt;/rank&amp;gt;&lt;br /&gt;
&amp;lt;reputation&amp;gt;-24&amp;lt;/reputation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;visual&amp;gt;actors\dark_stalker\dark_stalker_1&amp;lt;/visual&amp;gt;&lt;br /&gt;
&amp;lt;snd_config&amp;gt;characters_voice\human_01\monolith\&amp;lt;/snd_config&amp;gt;&lt;br /&gt;
&amp;lt;crouch_type&amp;gt;-1&amp;lt;/crouch_type&amp;gt;&lt;br /&gt;
&amp;lt;panic_treshold&amp;gt;0&amp;lt;/panic_treshold&amp;gt;&lt;br /&gt;
&amp;lt;supplies&amp;gt;&lt;br /&gt;
[spawn] \n&lt;br /&gt;
wpn_dark_colt1911 \n&lt;br /&gt;
ammo_11.43x23_hydro \n&lt;br /&gt;
#include &amp;quot;gameplay\character_items.xml&amp;quot; \n&lt;br /&gt;
#include &amp;quot;gameplay\character_drugs.xml&amp;quot; \n&lt;br /&gt;
#include &amp;quot;gameplay\character_food.xml&amp;quot;&lt;br /&gt;
&amp;lt;/supplies&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;gameplay\character_criticals_3.xml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;start_dialog&amp;gt;dm_hello_dialog&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt;dm_cool_info_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;/specific_character&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Впишем наш код после какого-нибудь &amp;lt;/specific_character&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Теперь идем в ''npc_profile.xml'' и туда вгоняем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;character id=&amp;quot;esc_dark_stalker_1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;class&amp;gt;esc_dark_stalker_01&amp;lt;/class&amp;gt;&lt;br /&gt;
&amp;lt;specific_character&amp;gt;esc_dark_stalker_1&amp;lt;/specific_character&amp;gt;&lt;br /&gt;
&amp;lt;/character&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь надо заняться ''spawn_sections.ltx''. Скрипт будет «брать NPC» как раз из этого файла. Пишем туда:&lt;br /&gt;
&lt;br /&gt;
* [esc_dark_stalker_1]:stalker – имя секции для скрипта..&lt;br /&gt;
* $spawn = &amp;quot;respawn\esc_dark_stalker_1&amp;quot;&lt;br /&gt;
* character_profile = esc_dark_stalker_1 – ссылка на описание нашего NPC&lt;br /&gt;
* spec_rank = regular – спец ранг&lt;br /&gt;
* community = dark_stalker – группировка.&lt;br /&gt;
&lt;br /&gt;
Теперь берем любой скрипт спавна NPC, вгоняем туда имя секции из spawn_sections.ltx и ву-а-ля.&lt;br /&gt;
&lt;br /&gt;
Ну, к примеру, создаем свой файл со скриптом спавна, назовем его - spaw_new_npc.script&lt;br /&gt;
и запишем туда вот такую функцию (взял из статьи):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function spaw_n_n() --тут задается сама функция, которая в последующем будет активирована, к примеру с помощью диалога&lt;br /&gt;
	local a = vector() -- db.actor:position() -- тип переменной, которая будет задействована в спавне, вместо кооржинат будет писаться a &lt;br /&gt;
	a.x = -220.21&lt;br /&gt;
	a.y = -19.93&lt;br /&gt;
	a.z = -158.98&lt;br /&gt;
	alife():create(&amp;quot;wpn_ak47&amp;quot;,a,33447,47,65535) -- здесь сам спавн объекта, a - тип переменной которую мы указали выше&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вот и весь скрипт! Теперь надо его активировать, ну к примеру через диалог, после диалога вставляем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;action&amp;gt;spaw_new_npc.spaw_n_n&amp;lt;/action&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
распишу, что значит:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;action&amp;gt;названиескрипта.функциякоторуюнеобходимоактивировать&amp;lt;/action&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;game_dialogs&amp;gt;&lt;br /&gt;
………&lt;br /&gt;
………&lt;br /&gt;
………&lt;br /&gt;
    &amp;lt;dialog id=&amp;quot;lokationname_testdialog_start&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;phrase_list&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;locationname_testdialog_start_1&amp;lt;/text&amp;gt;    &amp;lt;!-- ссылка на файл с текстом фразы --&amp;gt;&lt;br /&gt;
                &amp;lt;action&amp;gt;test_script.testfunction&amp;lt;/action&amp;gt;    &amp;lt;!-- ссылка на функцию testfunction скрипта test_script --&amp;gt;&lt;br /&gt;
            &amp;lt;/phrase&amp;gt;&lt;br /&gt;
        &amp;lt;/phrase_list&amp;gt;&lt;br /&gt;
    &amp;lt;/dialog&amp;gt;&lt;br /&gt;
………&lt;br /&gt;
………&lt;br /&gt;
………&lt;br /&gt;
&amp;lt;/game_dialogs&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
[[Участник:RedPython|RedPython]] 16:09, 10 октября 2010 (UTC)&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тока забыли что данному НПС будет присвоенная дефолтовая логика (т.е. тупо хожу куда сам не знаю) забыли упомянуть про (ххх - лока):&amp;lt;br&amp;gt;&lt;br /&gt;
ххх gulag.script (действия НПС! Где можно: где можно присвоить статус кампера; волкера; и.д.т)&amp;lt;br&amp;gt;&lt;br /&gt;
ххх gulag.ltx (дублер логики т.е. дублирует кратко действия НПС)&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана:&lt;br /&gt;
&lt;br /&gt;
* [[Участник:XStream|xStream]]&lt;br /&gt;
* [[Участник:RekLatS|OffBar]]&lt;br /&gt;
* [[Участник:Fr3nzy|Fr3nzy]]&lt;br /&gt;
* [[Участник:Imp|Imp]]&lt;br /&gt;
* [[Участник:Arhet|Arhet]]&lt;br /&gt;
&lt;br /&gt;
Статья исправлена:&lt;br /&gt;
* [[Участник:Rekongstor|Rekongstor]]&lt;br /&gt;
&lt;br /&gt;
В статью добавили:&lt;br /&gt;
* [[Участник:Byurrer]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>First Tramp</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8</id>
		<title>SoC. Создаем худ маски</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8"/>
				<updated>2011-05-29T18:29:57Z</updated>
		
		<summary type="html">&lt;p&gt;First Tramp: Винчестер покажи пожалуйста где проверяется что одет именно костюм сталкера\наемника? Тут проверяется только то что он его имеет костюм&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Теория===&lt;br /&gt;
Мне кажется многие задавались вопросом &amp;quot;Как же создать худ маски&amp;quot;?&lt;br /&gt;
Немного пораздумав, я создал функцию, которая крепит текстуру к определенному костюму.&lt;br /&gt;
&lt;br /&gt;
Опытным '''модмейкерам''' может показаться моя функция усложненной, но главное, что все '''работает и не вылетает'''!&lt;br /&gt;
===Практика===&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
&lt;br /&gt;
Первым делом в директории '''gamedata\scripts''' создайте файл с названием '''xr_mask.script'''&lt;br /&gt;
Открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function hud_gas()&lt;br /&gt;
   local slot = db.actor:item_in_slot(6)&lt;br /&gt;
   local object = db.actor:object(&amp;quot;stalker_outfit&amp;quot;) or db.actor:object(&amp;quot;killer_outfit&amp;quot;)&lt;br /&gt;
       if slot ~= nil and object ~= nil then&lt;br /&gt;
                local hud = get_hud()&lt;br /&gt;
                local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
                if custom_static == nil then&lt;br /&gt;
                        hud:AddCustomStatic(&amp;quot;hud_gas&amp;quot;, true)&lt;br /&gt;
                end&lt;br /&gt;
        else&lt;br /&gt;
                local hud = get_hud()&lt;br /&gt;
                local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
                if custom_static ~= nil then&lt;br /&gt;
                        hud:RemoveCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
                end&lt;br /&gt;
        end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;function hud_gas() -- функция&lt;br /&gt;
   local slot = db.actor:item_in_slot(6) -- переменная - слот костюмов&lt;br /&gt;
   local object = db.actor:object(&amp;quot;stalker_outfit&amp;quot;) or db.actor:object(&amp;quot;killer_outfit&amp;quot;) -- переменная объектов, если именно этот костюм одет, запускаем текстуру&lt;br /&gt;
       if slot ~= nil and object ~= nil then -- соединяем переменную - слот костюмов и переменную объектов&lt;br /&gt;
                local hud = get_hud() -- переменная худа&lt;br /&gt;
                local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;) -- переменная худа в XML - описателе&lt;br /&gt;
                if custom_static == nil then -- проверяем переменную худа в XML описателе&lt;br /&gt;
                        hud:AddCustomStatic(&amp;quot;hud_gas&amp;quot;, true) -- тоже самое переменная худа в XML - описателе и ниже тому подобное&lt;br /&gt;
                end&lt;br /&gt;
        else&lt;br /&gt;
                local hud = get_hud()&lt;br /&gt;
                local custom_static = hud:GetCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
                if custom_static ~= nil then&lt;br /&gt;
                        hud:RemoveCustomStatic(&amp;quot;hud_gas&amp;quot;)&lt;br /&gt;
                end&lt;br /&gt;
        end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''bind_stalker.script''', который находится в '''gamedata\scripts''',&lt;br /&gt;
найдем функцию:&lt;br /&gt;
function actor_binder:update(delta) &lt;br /&gt;
и после пишем: xr_mask.hud_gas() &lt;br /&gt;
в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
        xr_mask.hud_gas()&lt;br /&gt;
	object_binder.update(self, delta)&lt;br /&gt;
        local time = time_global()&lt;br /&gt;
        game_stats.update (delta, self.object)&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
&lt;br /&gt;
Итак, заходим в директорию '''gamedata\config\ui''', находим файл с названием '''ui_custom_msgs''', открываем его &lt;br /&gt;
и в самом конце перед строкой: &amp;lt;/header&amp;gt; пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;hud_gas x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;texture&amp;gt;hud\hud_gas&amp;lt;/texture&amp;gt;&lt;br /&gt;
  &amp;lt;/hud_gas&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;hud_gas x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;texture&amp;gt;hud\hud_gas&amp;lt;/texture&amp;gt; -- текстура маски. Посмотрите внимательно в скрипте мы указывали '''hud_gas'''&lt;br /&gt;
  &amp;lt;/hud_gas&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Текстура===&lt;br /&gt;
&lt;br /&gt;
Теперь заходим в '''gamedata\textures\ui''', находим файл с названием '''ui_mainmenu.dds'''.&lt;br /&gt;
Копируем его, заходим в '''gamedata\textures\hud''' вставляем его и переминуем в '''hud_gas.dds'''&lt;br /&gt;
Открываем программой '''Adobe Photoshop''' и рисуем подходящую для вас маску.&lt;br /&gt;
Как работать с текстурами описано в этой статье:&lt;br /&gt;
http://www.stalkerin.gameru.net/wiki/index.php/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D1%83%D1%80&lt;br /&gt;
Вот и все! Начинаем новую игру, ищем костюм сталкера или наемника, надеваем и видим вашу текстуру.&lt;br /&gt;
&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>First Tramp</name></author>	</entry>

	</feed>