<?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=46.63.198.185&amp;*</id>
		<title>S.T.A.L.K.E.R. Inside Wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.63.198.185&amp;*"/>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/46.63.198.185"/>
		<updated>2026-04-29T14:46:07Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<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%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B0</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%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B0"/>
				<updated>2011-10-10T13:29:24Z</updated>
		
		<summary type="html">&lt;p&gt;46.63.198.185: /* Авторы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Новый торговец==&lt;br /&gt;
&lt;br /&gt;
Болезненная тема для многих начинающих модмейкеров. Для создания нового тороговца требуется постигать навыки работы со спавн-файлом. Для создания торговца придётся запастись кое-какими утилитами:&lt;br /&gt;
&lt;br /&gt;
'''acdc''' от ''bardak'' [http://stalkerin.gameru.net/developer/mods/acdc11oct.rar скачать]&lt;br /&gt;
&lt;br /&gt;
'''ActivePerl 5.8.8''' для работы программы '''acdc''' [http://www.avege.ru/russian/perl/perl01.shtml скачать]&lt;br /&gt;
&lt;br /&gt;
==Практика==&lt;br /&gt;
&lt;br /&gt;
===Создание непися и профиля===&lt;br /&gt;
&lt;br /&gt;
И так. Сперва мы создаём профиль непися. Например, в файле ''character_desc_escape.xml'' по адресу ''gamedata\config\gameplay\''&lt;br /&gt;
Можно создать отдельный файл для наших неписей, это упрощает совмещение модов.&lt;br /&gt;
В файле ''character_desc_escape.xml'', в самом низу, '''перед''' тегом &amp;lt;/xml&amp;gt; пишем профиль нового непися:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;specific_character id=&amp;quot;esc_dark_stalker_voron&amp;quot; no_random = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
;важно при создании торговца, указать параметр no_random = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt;Ворон&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;icon&amp;gt;ui_npc_dark_voron&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;
;т.к. мы спавним уникального непися, класс можно скопировать у любого другого непися или написать новый, уникальный класс.&lt;br /&gt;
&amp;lt;community&amp;gt;dark_stalker&amp;lt;/community&amp;gt;&lt;br /&gt;
&amp;lt;money min=&amp;quot;500000&amp;quot; max=&amp;quot;500000&amp;quot; infinitive=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/money&amp;gt;&lt;br /&gt;
;в поле денег, надо поставить бессконечные деньги - infinitive=&amp;quot;1&amp;quot;&lt;br /&gt;
;иначе вы сможете продать неписю товаров исключительно на указанную сумму.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;rank&amp;gt;1000&amp;lt;/rank&amp;gt;&lt;br /&gt;
&amp;lt;reputation&amp;gt;-553&amp;lt;/reputation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;visual&amp;gt;actors\dark_stalker\dark_stalker_voron&amp;lt;/visual&amp;gt; ;ссылка на файл-модель персонажа без окончания .ogf&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_gauss \n&lt;br /&gt;
ammo_gauss \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;hello_dialog_dark_stalker&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;actor_dialog&amp;gt;dm_help_wounded_medkit_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt;join_dark&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;/specific_character&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Профиль создан, пара стандартных диалогов, взятых у любого другого профиля, дописать не составит труда. Я ничего не менял в своём коде. Лезем в ''npc_profile.xml'', который находится в той же папке. Где-нить внизу делаем запись:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;character id=&amp;quot;esc_dark_stalker_voron&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;class&amp;gt;esc_dark_stalker_01&amp;lt;/class&amp;gt; -- настраивает респавнер на класс персонажа для спавна разных моделей.&lt;br /&gt;
;т.к. мы спавним уникального непися, класс можно скопировать у любого другого непися или написать новый, уникальный класс.&lt;br /&gt;
&amp;lt;specific_character&amp;gt;esc_dark_stalker_voron&amp;lt;/specific_character&amp;gt; -- ссылка на профиль нашего непися.&lt;br /&gt;
&amp;lt;/character&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ввод в симуляцию===&lt;br /&gt;
&lt;br /&gt;
Непись создан. Теперь надо вводить его в симуляцию. Открываем файл ''gamedata\config\creatures\spawn_sections.ltx'' и прописываем в конце:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[esc_dark_stalker_voron]:stalker_trader - дописать суффикс торговца... хотя у меня и без него всё работало =)&lt;br /&gt;
$spawn                =  &amp;quot;respawn\esc_dark_stalker_voron&amp;quot; - опция спавна для Левел Едитора&lt;br /&gt;
character_profile    = esc_dark_stalker_voron - профиль непися, записанный в npc_profile.xml&lt;br /&gt;
spec_rank = regular&lt;br /&gt;
community = dark_stalker - группировка&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Спавн торговца через all.spawn файл==&lt;br /&gt;
&lt;br /&gt;
Дальше, самое нудное - спавн. Спасибо [[Участник:Arhet|Arhet]]'y за пример. Используя прогу '''acdc''' от bardak'a декомпилим all.spawn, создав батник разбора спавна (без active perl толку от проги бардака нуль - просто не запустится) и в понравившемся месте делаем запись с уникальным номером. Я заспавнил на Кордоне:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[8796]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = stalker_trader -- метка, что сталкер является торговцем&lt;br /&gt;
name = dark_stalker_voron -- имя любое, вроде бы; где оно используется не знаю&lt;br /&gt;
position = -215.67399597168,-20.403390884355,-151.03227233887 -- местоположение на игровой карте&lt;br /&gt;
direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942&lt;br /&gt;
&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
character_profile = esc_dark_stalker_voron&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 61 -- геймвертекс, без него спавнер не будет знать, на какой именно карте и в какой её части спавнить объект&lt;br /&gt;
distance = 3.5&lt;br /&gt;
level_vertex_id = 42599 -- левелвертекс, без него спавнер не будет знать, в именно какой части карты спавнить объект&lt;br /&gt;
object_flags = 0xfffffffb&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[logic]&lt;br /&gt;
cfg = scripts\esc_voron.ltx -- конфиг с логикой&lt;br /&gt;
[smart_terrains]&lt;br /&gt;
none = true -- смарт террейн; если создаёте статического торговца - лучше не выставлять смарт террейн&lt;br /&gt;
;если хотите бродягу - пишите по аналогии с другими неписями или создавайте свой смарт террейн, куда и определяйте непися&lt;br /&gt;
&lt;br /&gt;
[spawn]&lt;br /&gt;
wpn_gauss -- спавним в инвентаре всё, что хотим, в продажу оно не пойдёт&lt;br /&gt;
END&lt;br /&gt;
story_id = 9958 - уникальный стори_ид для меток на карте&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = actors\dark_stalker\dark_stalker_voron -- внешний вид, указать путь к .ogf модели, без окончания формата файла!&lt;br /&gt;
&lt;br /&gt;
; cse_alife_creature_abstract properties&lt;br /&gt;
g_team = 0&lt;br /&gt;
g_squad = 0&lt;br /&gt;
g_group = 0&lt;br /&gt;
health = 2&lt;br /&gt;
dynamic_out_restrictions = &lt;br /&gt;
dynamic_in_restrictions = &lt;br /&gt;
&lt;br /&gt;
upd:health = 2&lt;br /&gt;
upd:timestamp = 0&lt;br /&gt;
upd:creature_flags = 0&lt;br /&gt;
upd:position = -215.67399597168,-20.403390884355,-151.03227233887 -- те же координаты, что и в секции position&lt;br /&gt;
upd:o_model = 0&lt;br /&gt;
upd:o_torso = 0,0,0&lt;br /&gt;
upd:g_team = 0&lt;br /&gt;
upd:g_squad = 0&lt;br /&gt;
upd:g_group = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_monster_abstract properties&lt;br /&gt;
&lt;br /&gt;
upd:next_game_vertex_id = 65535&lt;br /&gt;
upd:prev_game_vertex_id = 65535&lt;br /&gt;
upd:distance_from_point = 0&lt;br /&gt;
upd:distance_to_point = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_human_abstract properties&lt;br /&gt;
predicate5 = 2,2,1,2,0&lt;br /&gt;
predicate4 = 2,2,1,2&lt;br /&gt;
&lt;br /&gt;
; cse_ph_skeleton properties&lt;br /&gt;
&lt;br /&gt;
upd:start_dialog = &lt;br /&gt;
&lt;br /&gt;
; se_stalker properties&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Спавн файл еще рано собирать!'''&lt;br /&gt;
&lt;br /&gt;
===Логика торговца===&lt;br /&gt;
&lt;br /&gt;
Далее, создаём файл конфиг торговца, который указали в спавне - ''gamedata\config\scripts\esc_voron.ltx'' и пишем в нём:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
trade = misc\trade_voron.ltx -- файл торговли, создаётся по аналогии с существующими&lt;br /&gt;
trader_flags = 0 - флаг трейдера&lt;br /&gt;
inv_max_weight = 10000 -- вес инвентаря торговца&lt;br /&gt;
on_death = death&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = esc_sin_voron_walk -- привязка вейпоинта, чтобы трейдер стоял на месте или двигался по определённому курсу&lt;br /&gt;
path_look = esc_sin_voron_look -- куда будет смотреть непись&lt;br /&gt;
meet = meet -- параметры реакции непися на встречу с актором&lt;br /&gt;
&lt;br /&gt;
[meet]&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = true -- перезаряжает оружие&lt;br /&gt;
meet_talk_enabled = true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь лезем за скриптом от бардака и снимаем координаты местоположения нашего непися. У кого нету скрипта, копируем в ''gamedata/scripts/ui_main_menu.script'' этот скрипт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function main_menu:OnButton_credits_clicked() &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;
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&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заходим в игру, ищем нужное нам место (ногами), жмём из меню кнопку CREDITS и мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Всё - F12 или на бумажку списываем полученные координаты.&lt;br /&gt;
&lt;br /&gt;
===Создаём вейпоинты и лукпоинты===&lt;br /&gt;
&lt;br /&gt;
И так, мы сняли координаты мест, где хотим видеть торговца и где мы хотим, чтобы он ходил - теперь в разобранном all.spawn ищите файл way_*левел*.ltx и туда пишем данные. Я приведу пример свой, опять таки. В файле ''way_l01_escape.ltx'' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[esc_sin_voron_look] -- имя, которые мы записали в ''gamedata\config\scripts\esc_voron.ltx''&lt;br /&gt;
points = p0,p1&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -205.306793212891,-20.4855155944824,-150.415893554688&lt;br /&gt;
p0:game_vertex_id = 46&lt;br /&gt;
p0:level_vertex_id = 54218&lt;br /&gt;
&lt;br /&gt;
p1:name = wp01&lt;br /&gt;
p1:flags = 0x1&lt;br /&gt;
p1:position = -207.645278930664,-20.2700958251953,-146.980590820313&lt;br /&gt;
p1:game_vertex_id = 61&lt;br /&gt;
p1:level_vertex_id = 45276&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[esc_sin_voron_walk] -- имя, которые мы записали в ''gamedata\config\scripts\esc_voron.ltx''&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -215.67399597168,-20.403390884355,-151.03227233887&lt;br /&gt;
p0:game_vertex_id = 47&lt;br /&gt;
p0:level_vertex_id = 37503&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нужно создать несколько вейпоинтов - смотрите по аналогии с уже существующими.&lt;br /&gt;
&lt;br /&gt;
После всего этого собираем all.spawn батником (что писать в батниках для сбора и разбора спавна - в файле help.txt в папке с программой), закидываем новый файл спавна в ''gamedata/spawn'' и стартуем новую игру.&lt;br /&gt;
&lt;br /&gt;
====Присваеваем торговлю уже имеющемуся неписю====&lt;br /&gt;
Можно и описанным способом, но иногда требуется присвоить торговлю к уже имеющимся неписям. Будем делать торговцем кого-нибудь из уже имеющихся... Кого, кого, кого...&lt;br /&gt;
&lt;br /&gt;
Как обычно Волка (у меня две подопытных &amp;quot;крысы&amp;quot;-Сидорович и Волк, а так как Сид уже им является, выбор очевиден. Ну чтож приступим. Необходимо создать &amp;quot;файл торговли&amp;quot; типа &amp;quot;trade_....ltx&amp;quot;. Можно прописать его самому(как это делать я объяснять не буду, т.к. и до меня все это сделано не один раз, можно скопировать любой другой... я скопировал &amp;quot;trade_freedom.ltx&amp;quot; и переименовал его в &amp;quot;trade_wolf&amp;quot; и удалил все прикондишны с информацией на разрешение торговли.&lt;br /&gt;
&lt;br /&gt;
Теперь нужно сослаться на него. Делается это в файле логики, то бишь в &amp;quot;gulag_escape.ltx&amp;quot; (почему в эскейп, думаю понятно, наш Волк находится на Кордоне. Открываем файл и ищем строки:&lt;br /&gt;
&amp;lt;code&amp;gt;;-------------------------------------------------------------------------------------------------&lt;br /&gt;
;-- ESCAPE LAGER&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
; Волк&lt;br /&gt;
[logic@esc_lager_volk]&lt;br /&gt;
active = walker@esc_lager_volk_walker1&lt;br /&gt;
on_death = death@wolf&lt;br /&gt;
&lt;br /&gt;
[walker@esc_lager_volk_walker1]&lt;br /&gt;
path_walk = wolf_walk&lt;br /&gt;
path_look = wolf_look&lt;br /&gt;
meet = meet@wolf&lt;br /&gt;
on_actor_dist_le = 23| {+tutorial_wounded_start -esc_kill_bandits_quest_kill} remark@esc_lager_volk1 &lt;br /&gt;
on_actor_dist_le_nvis = 5| walker@esc_lager_volk_walker2&lt;br /&gt;
danger = danger_condition@shustryi&lt;br /&gt;
&lt;br /&gt;
[remark@esc_lager_volk1]&lt;br /&gt;
anim = hello_wpn&lt;br /&gt;
snd = esc_wolf_say_thanks&lt;br /&gt;
target = actor&lt;br /&gt;
on_signal = sound_end| walker@esc_lager_volk_walker2&lt;br /&gt;
on_actor_dist_le_nvis = 5| walker@esc_lager_volk_walker2&lt;br /&gt;
danger = danger_condition@shustryi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Теперь сошлемся на наш трад-в секцию &amp;quot;[logic@esc_lager_volk]&amp;quot; добавим строки:&lt;br /&gt;
&amp;lt;code&amp;gt;trade = misc\trade_wolf.ltx&lt;br /&gt;
inv_max_weight = 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
То есть должно получится следующее:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
;-- ESCAPE LAGER&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
; Волк&lt;br /&gt;
[logic@esc_lager_volk]&lt;br /&gt;
active = walker@esc_lager_volk_walker1&lt;br /&gt;
on_death = death@wolf&lt;br /&gt;
trade = misc\trade_wolf.ltx&lt;br /&gt;
inv_max_weight = 10000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Традом мы ссылаемся на наш &amp;quot;торговый файл&amp;quot;, а вот следующей строкой увеличиваем переносимый вес, поскольку он и у неписей ограничен. Осталось только дать нашему &amp;quot;новорождённому&amp;quot; торговцу-Волку побольше денег. Делаем это точно также как описано, но различие в том, что мы редактируем секцию Волка в &amp;quot;character_desc_escape.xml&amp;quot;. Я еще и удалил строку &amp;quot;#include &amp;quot;gameplay\character_criticals_4.xml&amp;quot;&amp;quot; с ограничением по весу, но правда на всякий случай, поскольку не проверял, работает ли с ним.&lt;br /&gt;
&lt;br /&gt;
На этом все, заходим в игру и наслаждаемся собственным творением.&lt;br /&gt;
&lt;br /&gt;
P.S.-Упс, работает, но как-то неправильно, у торговца оказывается нет поддержки перемещения. Поэтому ГСЦ всех торгошей и биндят не сталкером, а монстром Заработало только когда я в бинде сталкера прописал:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
function actor_binder:reinit()&lt;br /&gt;
	object_binder.reinit(self)&lt;br /&gt;
	&lt;br /&gt;
	local npc_id = self.object:id()&lt;br /&gt;
&lt;br /&gt;
	db.storage[npc_id] = { }&lt;br /&gt;
&lt;br /&gt;
	self.st = db.storage[npc_id]&lt;br /&gt;
	self.st.pstor = nil&lt;br /&gt;
&lt;br /&gt;
	self.next_restrictors_update_time = -10000&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, self.info_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.article_info, self.article_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, self.on_item_take, self)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)&lt;br /&gt;
	self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, self.sleep_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.task_state, self.task_callback, self)&lt;br /&gt;
	--self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)&lt;br /&gt;
;вот мои строки&lt;br /&gt;
	if self.object:clsid() ~= clsid.script_trader then&lt;br /&gt;
		self.object:set_patrol_extrapolate_callback(bind_monster.generic_object_binder.extrapolate_callback, self)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	db.storage[self.object:id()] = { }&lt;br /&gt;
&lt;br /&gt;
	self.st = db.storage[self.object:id()]&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.patrol_path_in_point, self.waypoint_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.hit,					self.hit_callback,		self)&lt;br /&gt;
	self.object:set_callback(callback.death,				self.death_callback,	self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Все будет работать на УРА, с одним огрехом - Волк не будет отмечатся как цель при задании поговорить с Волком перед АТП, но думаю это не столь важно. Ну и еще без ствола будет ходить, но если будет атакован, то пушка появится &amp;quot;из широких штанин&amp;quot; Волка и он будет из нее пытаться вас нашпиговать свинцом.&lt;br /&gt;
&lt;br /&gt;
Пост скриптум, дубль два... Теоретически, если строки с калбеками из обычной секции сталкера прописать в мою, то наш традер (в данном случае Волк) будет неким гибридом, сочетающим свойства как и НПС, так и уникальных торговцев, попробуйте, должно работать.&lt;br /&gt;
&lt;br /&gt;
'''ВНИМАНИЕ!!! ЭТА СТАТЬЯ БУДЕТ РАБОТАТЬ ТОЛЬКО С SPR MOD ОТ SPR MOD TEAM!!!'''&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья [[Участник:Орион|Орион]].&amp;lt;br&amp;gt;&lt;br /&gt;
При помощи (косвенной) [[Участник:Arhet|Arhet]].&amp;lt;br&amp;gt;&lt;br /&gt;
Дополнение [[Участник:Костя.н.ы.ч|Костя.н.ы.ч]].&lt;br /&gt;
Доп.инфо CRAZY_STALKER&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>46.63.198.185</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%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B0</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%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B0"/>
				<updated>2011-10-10T13:26:27Z</updated>
		
		<summary type="html">&lt;p&gt;46.63.198.185: /* Создаём вейпоинты и лукпоинты */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Новый торговец==&lt;br /&gt;
&lt;br /&gt;
Болезненная тема для многих начинающих модмейкеров. Для создания нового тороговца требуется постигать навыки работы со спавн-файлом. Для создания торговца придётся запастись кое-какими утилитами:&lt;br /&gt;
&lt;br /&gt;
'''acdc''' от ''bardak'' [http://stalkerin.gameru.net/developer/mods/acdc11oct.rar скачать]&lt;br /&gt;
&lt;br /&gt;
'''ActivePerl 5.8.8''' для работы программы '''acdc''' [http://www.avege.ru/russian/perl/perl01.shtml скачать]&lt;br /&gt;
&lt;br /&gt;
==Практика==&lt;br /&gt;
&lt;br /&gt;
===Создание непися и профиля===&lt;br /&gt;
&lt;br /&gt;
И так. Сперва мы создаём профиль непися. Например, в файле ''character_desc_escape.xml'' по адресу ''gamedata\config\gameplay\''&lt;br /&gt;
Можно создать отдельный файл для наших неписей, это упрощает совмещение модов.&lt;br /&gt;
В файле ''character_desc_escape.xml'', в самом низу, '''перед''' тегом &amp;lt;/xml&amp;gt; пишем профиль нового непися:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;specific_character id=&amp;quot;esc_dark_stalker_voron&amp;quot; no_random = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
;важно при создании торговца, указать параметр no_random = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt;Ворон&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;icon&amp;gt;ui_npc_dark_voron&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;
;т.к. мы спавним уникального непися, класс можно скопировать у любого другого непися или написать новый, уникальный класс.&lt;br /&gt;
&amp;lt;community&amp;gt;dark_stalker&amp;lt;/community&amp;gt;&lt;br /&gt;
&amp;lt;money min=&amp;quot;500000&amp;quot; max=&amp;quot;500000&amp;quot; infinitive=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/money&amp;gt;&lt;br /&gt;
;в поле денег, надо поставить бессконечные деньги - infinitive=&amp;quot;1&amp;quot;&lt;br /&gt;
;иначе вы сможете продать неписю товаров исключительно на указанную сумму.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;rank&amp;gt;1000&amp;lt;/rank&amp;gt;&lt;br /&gt;
&amp;lt;reputation&amp;gt;-553&amp;lt;/reputation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;visual&amp;gt;actors\dark_stalker\dark_stalker_voron&amp;lt;/visual&amp;gt; ;ссылка на файл-модель персонажа без окончания .ogf&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_gauss \n&lt;br /&gt;
ammo_gauss \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;hello_dialog_dark_stalker&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;actor_dialog&amp;gt;dm_help_wounded_medkit_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt;join_dark&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;/specific_character&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Профиль создан, пара стандартных диалогов, взятых у любого другого профиля, дописать не составит труда. Я ничего не менял в своём коде. Лезем в ''npc_profile.xml'', который находится в той же папке. Где-нить внизу делаем запись:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;character id=&amp;quot;esc_dark_stalker_voron&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;class&amp;gt;esc_dark_stalker_01&amp;lt;/class&amp;gt; -- настраивает респавнер на класс персонажа для спавна разных моделей.&lt;br /&gt;
;т.к. мы спавним уникального непися, класс можно скопировать у любого другого непися или написать новый, уникальный класс.&lt;br /&gt;
&amp;lt;specific_character&amp;gt;esc_dark_stalker_voron&amp;lt;/specific_character&amp;gt; -- ссылка на профиль нашего непися.&lt;br /&gt;
&amp;lt;/character&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ввод в симуляцию===&lt;br /&gt;
&lt;br /&gt;
Непись создан. Теперь надо вводить его в симуляцию. Открываем файл ''gamedata\config\creatures\spawn_sections.ltx'' и прописываем в конце:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[esc_dark_stalker_voron]:stalker_trader - дописать суффикс торговца... хотя у меня и без него всё работало =)&lt;br /&gt;
$spawn                =  &amp;quot;respawn\esc_dark_stalker_voron&amp;quot; - опция спавна для Левел Едитора&lt;br /&gt;
character_profile    = esc_dark_stalker_voron - профиль непися, записанный в npc_profile.xml&lt;br /&gt;
spec_rank = regular&lt;br /&gt;
community = dark_stalker - группировка&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Спавн торговца через all.spawn файл==&lt;br /&gt;
&lt;br /&gt;
Дальше, самое нудное - спавн. Спасибо [[Участник:Arhet|Arhet]]'y за пример. Используя прогу '''acdc''' от bardak'a декомпилим all.spawn, создав батник разбора спавна (без active perl толку от проги бардака нуль - просто не запустится) и в понравившемся месте делаем запись с уникальным номером. Я заспавнил на Кордоне:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[8796]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = stalker_trader -- метка, что сталкер является торговцем&lt;br /&gt;
name = dark_stalker_voron -- имя любое, вроде бы; где оно используется не знаю&lt;br /&gt;
position = -215.67399597168,-20.403390884355,-151.03227233887 -- местоположение на игровой карте&lt;br /&gt;
direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942&lt;br /&gt;
&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
character_profile = esc_dark_stalker_voron&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 61 -- геймвертекс, без него спавнер не будет знать, на какой именно карте и в какой её части спавнить объект&lt;br /&gt;
distance = 3.5&lt;br /&gt;
level_vertex_id = 42599 -- левелвертекс, без него спавнер не будет знать, в именно какой части карты спавнить объект&lt;br /&gt;
object_flags = 0xfffffffb&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[logic]&lt;br /&gt;
cfg = scripts\esc_voron.ltx -- конфиг с логикой&lt;br /&gt;
[smart_terrains]&lt;br /&gt;
none = true -- смарт террейн; если создаёте статического торговца - лучше не выставлять смарт террейн&lt;br /&gt;
;если хотите бродягу - пишите по аналогии с другими неписями или создавайте свой смарт террейн, куда и определяйте непися&lt;br /&gt;
&lt;br /&gt;
[spawn]&lt;br /&gt;
wpn_gauss -- спавним в инвентаре всё, что хотим, в продажу оно не пойдёт&lt;br /&gt;
END&lt;br /&gt;
story_id = 9958 - уникальный стори_ид для меток на карте&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = actors\dark_stalker\dark_stalker_voron -- внешний вид, указать путь к .ogf модели, без окончания формата файла!&lt;br /&gt;
&lt;br /&gt;
; cse_alife_creature_abstract properties&lt;br /&gt;
g_team = 0&lt;br /&gt;
g_squad = 0&lt;br /&gt;
g_group = 0&lt;br /&gt;
health = 2&lt;br /&gt;
dynamic_out_restrictions = &lt;br /&gt;
dynamic_in_restrictions = &lt;br /&gt;
&lt;br /&gt;
upd:health = 2&lt;br /&gt;
upd:timestamp = 0&lt;br /&gt;
upd:creature_flags = 0&lt;br /&gt;
upd:position = -215.67399597168,-20.403390884355,-151.03227233887 -- те же координаты, что и в секции position&lt;br /&gt;
upd:o_model = 0&lt;br /&gt;
upd:o_torso = 0,0,0&lt;br /&gt;
upd:g_team = 0&lt;br /&gt;
upd:g_squad = 0&lt;br /&gt;
upd:g_group = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_monster_abstract properties&lt;br /&gt;
&lt;br /&gt;
upd:next_game_vertex_id = 65535&lt;br /&gt;
upd:prev_game_vertex_id = 65535&lt;br /&gt;
upd:distance_from_point = 0&lt;br /&gt;
upd:distance_to_point = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_human_abstract properties&lt;br /&gt;
predicate5 = 2,2,1,2,0&lt;br /&gt;
predicate4 = 2,2,1,2&lt;br /&gt;
&lt;br /&gt;
; cse_ph_skeleton properties&lt;br /&gt;
&lt;br /&gt;
upd:start_dialog = &lt;br /&gt;
&lt;br /&gt;
; se_stalker properties&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Спавн файл еще рано собирать!'''&lt;br /&gt;
&lt;br /&gt;
===Логика торговца===&lt;br /&gt;
&lt;br /&gt;
Далее, создаём файл конфиг торговца, который указали в спавне - ''gamedata\config\scripts\esc_voron.ltx'' и пишем в нём:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
trade = misc\trade_voron.ltx -- файл торговли, создаётся по аналогии с существующими&lt;br /&gt;
trader_flags = 0 - флаг трейдера&lt;br /&gt;
inv_max_weight = 10000 -- вес инвентаря торговца&lt;br /&gt;
on_death = death&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = esc_sin_voron_walk -- привязка вейпоинта, чтобы трейдер стоял на месте или двигался по определённому курсу&lt;br /&gt;
path_look = esc_sin_voron_look -- куда будет смотреть непись&lt;br /&gt;
meet = meet -- параметры реакции непися на встречу с актором&lt;br /&gt;
&lt;br /&gt;
[meet]&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = true -- перезаряжает оружие&lt;br /&gt;
meet_talk_enabled = true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь лезем за скриптом от бардака и снимаем координаты местоположения нашего непися. У кого нету скрипта, копируем в ''gamedata/scripts/ui_main_menu.script'' этот скрипт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function main_menu:OnButton_credits_clicked() &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;
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&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заходим в игру, ищем нужное нам место (ногами), жмём из меню кнопку CREDITS и мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Всё - F12 или на бумажку списываем полученные координаты.&lt;br /&gt;
&lt;br /&gt;
===Создаём вейпоинты и лукпоинты===&lt;br /&gt;
&lt;br /&gt;
И так, мы сняли координаты мест, где хотим видеть торговца и где мы хотим, чтобы он ходил - теперь в разобранном all.spawn ищите файл way_*левел*.ltx и туда пишем данные. Я приведу пример свой, опять таки. В файле ''way_l01_escape.ltx'' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[esc_sin_voron_look] -- имя, которые мы записали в ''gamedata\config\scripts\esc_voron.ltx''&lt;br /&gt;
points = p0,p1&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -205.306793212891,-20.4855155944824,-150.415893554688&lt;br /&gt;
p0:game_vertex_id = 46&lt;br /&gt;
p0:level_vertex_id = 54218&lt;br /&gt;
&lt;br /&gt;
p1:name = wp01&lt;br /&gt;
p1:flags = 0x1&lt;br /&gt;
p1:position = -207.645278930664,-20.2700958251953,-146.980590820313&lt;br /&gt;
p1:game_vertex_id = 61&lt;br /&gt;
p1:level_vertex_id = 45276&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[esc_sin_voron_walk] -- имя, которые мы записали в ''gamedata\config\scripts\esc_voron.ltx''&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -215.67399597168,-20.403390884355,-151.03227233887&lt;br /&gt;
p0:game_vertex_id = 47&lt;br /&gt;
p0:level_vertex_id = 37503&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нужно создать несколько вейпоинтов - смотрите по аналогии с уже существующими.&lt;br /&gt;
&lt;br /&gt;
После всего этого собираем all.spawn батником (что писать в батниках для сбора и разбора спавна - в файле help.txt в папке с программой), закидываем новый файл спавна в ''gamedata/spawn'' и стартуем новую игру.&lt;br /&gt;
&lt;br /&gt;
====Присваеваем торговлю уже имеющемуся неписю====&lt;br /&gt;
Можно и описанным способом, но иногда требуется присвоить торговлю к уже имеющимся неписям. Будем делать торговцем кого-нибудь из уже имеющихся... Кого, кого, кого...&lt;br /&gt;
&lt;br /&gt;
Как обычно Волка (у меня две подопытных &amp;quot;крысы&amp;quot;-Сидорович и Волк, а так как Сид уже им является, выбор очевиден. Ну чтож приступим. Необходимо создать &amp;quot;файл торговли&amp;quot; типа &amp;quot;trade_....ltx&amp;quot;. Можно прописать его самому(как это делать я объяснять не буду, т.к. и до меня все это сделано не один раз, можно скопировать любой другой... я скопировал &amp;quot;trade_freedom.ltx&amp;quot; и переименовал его в &amp;quot;trade_wolf&amp;quot; и удалил все прикондишны с информацией на разрешение торговли.&lt;br /&gt;
&lt;br /&gt;
Теперь нужно сослаться на него. Делается это в файле логики, то бишь в &amp;quot;gulag_escape.ltx&amp;quot; (почему в эскейп, думаю понятно, наш Волк находится на Кордоне. Открываем файл и ищем строки:&lt;br /&gt;
&amp;lt;code&amp;gt;;-------------------------------------------------------------------------------------------------&lt;br /&gt;
;-- ESCAPE LAGER&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
; Волк&lt;br /&gt;
[logic@esc_lager_volk]&lt;br /&gt;
active = walker@esc_lager_volk_walker1&lt;br /&gt;
on_death = death@wolf&lt;br /&gt;
&lt;br /&gt;
[walker@esc_lager_volk_walker1]&lt;br /&gt;
path_walk = wolf_walk&lt;br /&gt;
path_look = wolf_look&lt;br /&gt;
meet = meet@wolf&lt;br /&gt;
on_actor_dist_le = 23| {+tutorial_wounded_start -esc_kill_bandits_quest_kill} remark@esc_lager_volk1 &lt;br /&gt;
on_actor_dist_le_nvis = 5| walker@esc_lager_volk_walker2&lt;br /&gt;
danger = danger_condition@shustryi&lt;br /&gt;
&lt;br /&gt;
[remark@esc_lager_volk1]&lt;br /&gt;
anim = hello_wpn&lt;br /&gt;
snd = esc_wolf_say_thanks&lt;br /&gt;
target = actor&lt;br /&gt;
on_signal = sound_end| walker@esc_lager_volk_walker2&lt;br /&gt;
on_actor_dist_le_nvis = 5| walker@esc_lager_volk_walker2&lt;br /&gt;
danger = danger_condition@shustryi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Теперь сошлемся на наш трад-в секцию &amp;quot;[logic@esc_lager_volk]&amp;quot; добавим строки:&lt;br /&gt;
&amp;lt;code&amp;gt;trade = misc\trade_wolf.ltx&lt;br /&gt;
inv_max_weight = 10000&amp;lt;/code&amp;gt;&lt;br /&gt;
То есть должно получится следующее:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
;-- ESCAPE LAGER&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
; Волк&lt;br /&gt;
[logic@esc_lager_volk]&lt;br /&gt;
active = walker@esc_lager_volk_walker1&lt;br /&gt;
on_death = death@wolf&lt;br /&gt;
trade = misc\trade_wolf.ltx&lt;br /&gt;
inv_max_weight = 10000&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Традом мы ссылаемся на наш &amp;quot;торговый файл&amp;quot;, а вот следующей строкой увеличиваем переносимый вес, поскольку он и у неписей ограничен. Осталось только дать нашему &amp;quot;новорождённому&amp;quot; торговцу-Волку побольше денег. Делаем это точно также как описано, но различие в том, что мы редактируем секцию Волка в &amp;quot;character_desc_escape.xml&amp;quot;. Я еще и удалил строку &amp;quot;#include &amp;quot;gameplay\character_criticals_4.xml&amp;quot;&amp;quot; с ограничением по весу, но правда на всякий случай, поскольку не проверял, работает ли с ним.&lt;br /&gt;
&lt;br /&gt;
На этом все, заходим в игру и наслаждаемся собственным творением.&lt;br /&gt;
&lt;br /&gt;
P.S.-Упс, работает, но как-то неправильно, у торговца оказывается нет поддержки перемещения. Поэтому ГСЦ всех торгошей и биндят не сталкером, а монстром Заработало только когда я в бинде сталкера прописал:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
function actor_binder:reinit()&lt;br /&gt;
	object_binder.reinit(self)&lt;br /&gt;
	&lt;br /&gt;
	local npc_id = self.object:id()&lt;br /&gt;
&lt;br /&gt;
	db.storage[npc_id] = { }&lt;br /&gt;
&lt;br /&gt;
	self.st = db.storage[npc_id]&lt;br /&gt;
	self.st.pstor = nil&lt;br /&gt;
&lt;br /&gt;
	self.next_restrictors_update_time = -10000&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, self.info_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.article_info, self.article_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, self.on_item_take, self)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)&lt;br /&gt;
	self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, self.sleep_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.task_state, self.task_callback, self)&lt;br /&gt;
	--self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)&lt;br /&gt;
;вот мои строки&lt;br /&gt;
	if self.object:clsid() ~= clsid.script_trader then&lt;br /&gt;
		self.object:set_patrol_extrapolate_callback(bind_monster.generic_object_binder.extrapolate_callback, self)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	db.storage[self.object:id()] = { }&lt;br /&gt;
&lt;br /&gt;
	self.st = db.storage[self.object:id()]&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.patrol_path_in_point, self.waypoint_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.hit,					self.hit_callback,		self)&lt;br /&gt;
	self.object:set_callback(callback.death,				self.death_callback,	self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Все будет работать на УРА, с одним огрехом - Волк не будет отмечатся как цель при задании поговорить с Волком перед АТП, но думаю это не столь важно. Ну и еще без ствола будет ходить, но если будет атакован, то пушка появится &amp;quot;из широких штанин&amp;quot; Волка и он будет из нее пытаться вас нашпиговать свинцом.&lt;br /&gt;
&lt;br /&gt;
Пост скриптум, дубль два... Теоретически, если строки с калбеками из обычной секции сталкера прописать в мою, то наш традер (в данном случае Волк) будет неким гибридом, сочетающим свойства как и НПС, так и уникальных торговцев, попробуйте, должно работать.&lt;br /&gt;
&lt;br /&gt;
'''ВНИМАНИЕ!!! ЭТА СТАТЬЯ БУДЕТ РАБОТАТЬ ТОЛЬКО С SPR MOD ОТ SPR MOD TEAM!!!'''&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья [[Участник:Орион|Орион]].&amp;lt;br&amp;gt;&lt;br /&gt;
При помощи (косвенной) [[Участник:Arhet|Arhet]].&amp;lt;br&amp;gt;&lt;br /&gt;
Дополнение [[Участник:Костя.н.ы.ч|Костя.н.ы.ч]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>46.63.198.185</name></author>	</entry>

	</feed>