<?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=194.150.233.232&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=194.150.233.232&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/194.150.233.232"/>
		<updated>2026-06-12T04:16:30Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC_%D0%A1%D0%B8%D0%B4%D0%BE%D1%80%D0%BE%D0%B2%D0%B8%D1%87%D0%B0_%D0%B2_%D0%97%D0%9F</id>
		<title>Восстанавливаем Сидоровича в ЗП</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC_%D0%A1%D0%B8%D0%B4%D0%BE%D1%80%D0%BE%D0%B2%D0%B8%D1%87%D0%B0_%D0%B2_%D0%97%D0%9F"/>
				<updated>2016-02-01T21:08:47Z</updated>
		
		<summary type="html">&lt;p&gt;194.150.233.232: Новая страница: «Итак, допустим, вы делаете мод на ЗП, и вам нужно восстановить Сидоровича со всеми его ани…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, допустим, вы делаете мод на ЗП, и вам нужно восстановить Сидоровича со всеми его анимациями и фразами. В этой статье я расскажу и опишу этот процесс.&lt;br /&gt;
1. Для начала откроем папку creatures и создадим там файл с расширение ltx Назовем его, скажем, m_sidor Теперь в этот файл пишем следующее&lt;br /&gt;
;-----------------------------------------------------------------------------------&lt;br /&gt;
; Trader&lt;br /&gt;
;-----------------------------------------------------------------------------------&lt;br /&gt;
[m_trader]&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
$spawn						= &amp;quot;monsters\trader&amp;quot;		; option for Level Editor&lt;br /&gt;
$prefetch 					= 5&lt;br /&gt;
cform						= skeleton&lt;br /&gt;
class						= AI_TRADE_S&lt;br /&gt;
;class						= AI_TRD_S &lt;br /&gt;
visual						= actors\stalker_trader\stalker_trader_1.ogf&lt;br /&gt;
rank						= 1&lt;br /&gt;
script_binding		 			= bind_trader.bind&lt;br /&gt;
; format : section{,section},count,min_factor,max_factor, ...&lt;br /&gt;
;supplies					= m_bread,50,0.5,1.5, CANNED,30,0.5,1.5, MEDI_KIT,7,0,0.7, DETECTOR_SIMPLE,3,0,0.6, WPN_BINOC,1,0,0.70, WPN_FORT,WPN_PM,3,0.3,0.8, WPN_LR300,WPN_AK47,2,0.3,0.65, WPN_SVD,1,0,0.53, WPN_RPG7,1,0,0.53, grenade_f1,15,0,1.0, ammo_5.45x39_ap,ammo_5.45x39_fmj,50,0,1.0, ammo_5.56x45_ap,ammo_5.56х45_ss190,50,0,1.0, ammo_9x19_fmj,50,0,1.0, ammo_7.62х54_fmj,10,0,1.0, ammo_og-7b,10,0,1.0&lt;br /&gt;
supplies					= grenade_f1,15,0,1.0, ammo_5.45x39_ap,ammo_5.45x39_fmj,50,0,1.0, ammo_5.56x45_ap,ammo_5.56х45_ss190,50,0,1.0, ammo_9x19_fmj,50,0,1.0, ammo_7.62x54_ap,10,0,1.0, ammo_og-7b,10,0,1.0&lt;br /&gt;
max_item_mass				= 10000.0&lt;br /&gt;
&lt;br /&gt;
;---EVALUATION FUNCTIONS----------------------------------------------&lt;br /&gt;
ef_creature_type			= 1							; option for evaluation functions&lt;br /&gt;
ef_weapon_type				= 1&lt;br /&gt;
&lt;br /&gt;
scheduled		     = on						; option for ALife Simulator&lt;br /&gt;
Human		     	 = off						; option for ALife Simulator&lt;br /&gt;
Health			     = 40						; option for ALife Simulator&lt;br /&gt;
MinSpeed		     = 1.0						; option for ALife Simulator&lt;br /&gt;
MaxSpeed		     = 1.5						; option for ALife Simulator&lt;br /&gt;
going_speed          = 1.0                      ; option for ALife Simulator&lt;br /&gt;
&lt;br /&gt;
ph_box0_center 		 = 0.0,  0.9,  0.0&lt;br /&gt;
ph_box0_size 		 = 0.35, 0.9,  0.35&lt;br /&gt;
ph_box1_center 		 = 0.0,  0.6,  0.0&lt;br /&gt;
ph_box1_size 		 = 0.40, 0.6,  0.40&lt;br /&gt;
ph_crash_speed_min   = 8;16&lt;br /&gt;
ph_crash_speed_max   = 16;30&lt;br /&gt;
ph_mass 		     = 170.&lt;br /&gt;
cost			     = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Health				 = 100.0&lt;br /&gt;
money				 = 1000000&lt;br /&gt;
&lt;br /&gt;
immunities_sect				= trader_immunities&lt;br /&gt;
condition_sect				= trader_condition&lt;br /&gt;
&lt;br /&gt;
; attach params&lt;br /&gt;
attachable_items		=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;species of monster&lt;br /&gt;
species				= human&lt;br /&gt;
&lt;br /&gt;
[trader_foot_bones]&lt;br /&gt;
front_left	= bip01_l_foot&lt;br /&gt;
front_right	= bip01_r_foot&lt;br /&gt;
&lt;br /&gt;
[trader_step_manager]&lt;br /&gt;
; order: left, right&lt;br /&gt;
;--------------------------------------------------------------------------&lt;br /&gt;
;	animation				Cycles	| time1 | power1 | time2 | power2 |&lt;br /&gt;
;--------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[barman_movement_speeds]&lt;br /&gt;
;barman can't crouch or run&lt;br /&gt;
	; danger&lt;br /&gt;
	;; crouch&lt;br /&gt;
	;;; walk&lt;br /&gt;
	danger_crouch_walk_forward	= 0.8&lt;br /&gt;
	danger_crouch_walk_backward	= 0.575&lt;br /&gt;
	danger_crouch_walk_left		= 0.8&lt;br /&gt;
	danger_crouch_walk_right	= 0.8&lt;br /&gt;
	;;; run&lt;br /&gt;
	danger_crouch_run_forward	= 2.0&lt;br /&gt;
	danger_crouch_run_backward	= 1.1&lt;br /&gt;
	danger_crouch_run_left		= 2.0&lt;br /&gt;
	danger_crouch_run_right		= 2.0&lt;br /&gt;
	;; stand&lt;br /&gt;
	;;; walk&lt;br /&gt;
	danger_stand_walk_forward	= 1.2&lt;br /&gt;
	danger_stand_walk_backward	= 1.2&lt;br /&gt;
	danger_stand_walk_left		= 1.2&lt;br /&gt;
	danger_stand_walk_right		= 1.2&lt;br /&gt;
	;;; run&lt;br /&gt;
	danger_stand_run_forward	= 5.0&lt;br /&gt;
	danger_stand_run_backward	= 1.5&lt;br /&gt;
	danger_stand_run_left		= 5.0&lt;br /&gt;
	danger_stand_run_right		= 5.0&lt;br /&gt;
	; free&lt;br /&gt;
	;; stand&lt;br /&gt;
	;;; forward&lt;br /&gt;
	free_stand_walk_forward		= 0.85&lt;br /&gt;
	free_stand_run_forward		= 2.5&lt;br /&gt;
	; panic&lt;br /&gt;
	;; stand&lt;br /&gt;
	;;; run&lt;br /&gt;
	;;;; forward&lt;br /&gt;
	panic_stand_run_forward		= 6.5&lt;br /&gt;
&lt;br /&gt;
Это мы создали спавн секцию торговца. Еще нужно в stalkers.ltx, который находится в той же папке, добавить инклуд&lt;br /&gt;
#include &amp;quot;m_sidor.ltx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. В спавн секции указан биндер bind_trader Нужно его создать. В папке создаем файл с расширением script и называем его bind_trader В него пишем следующее&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
-- Sidor etc binding&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function bind(obj)&lt;br /&gt;
	local new_binder = trader_object_binder(obj)&lt;br /&gt;
	obj:bind_object(new_binder)&lt;br /&gt;
end&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
class &amp;quot;trader_object_binder&amp;quot; (object_binder)&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:__init(obj) super(obj)&lt;br /&gt;
	self.loaded = false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:reload(section)&lt;br /&gt;
	object_binder.reload(self, section)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:reinit()&lt;br /&gt;
	object_binder.reinit(self)&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;
end&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:update(delta)&lt;br /&gt;
	object_binder.update(self, delta)&lt;br /&gt;
&lt;br /&gt;
	-- Апдейт торговли&lt;br /&gt;
	if self.object:clsid() == clsid.script_trader then&lt;br /&gt;
		trade_manager.update(self.object)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local st = db.storage[self.object:id()]&lt;br /&gt;
	if st ~= nil and st.active_scheme ~= nil then&lt;br /&gt;
		xr_logic.try_switch_to_another_section(self.object, st[st.active_scheme], db.actor)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if self.st.active_section ~= nil then&lt;br /&gt;
		xr_logic.issue_event(self.object, self.st[self.st.active_scheme], &amp;quot;update&amp;quot;, delta)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:net_spawn(sobject)&lt;br /&gt;
	if not object_binder.net_spawn(self, sobject) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local on_offline_condlist = db.storage[self.object:id()] and db.storage[self.object:id()].overrides and db.storage[self.object:id()].overrides.on_offline_condlist&lt;br /&gt;
	if on_offline_condlist ~= nil then&lt;br /&gt;
		xr_logic.pick_section_from_condlist(db.actor, self.object, on_offline_condlist)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not self.object:alive() then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if alife():object(self.object:id()) == nil then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	db.add_obj(self.object)&lt;br /&gt;
	if self.object:clsid() == clsid.script_trader then&lt;br /&gt;
		self.object:set_trader_global_anim(&amp;quot;idle_spinka&amp;quot;)&lt;br /&gt;
		smart_terrain.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_trader, self.loaded)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:net_destroy()&lt;br /&gt;
	xr_sound.stop_sounds_by_id(self.object:id())&lt;br /&gt;
&lt;br /&gt;
	local st = db.storage[self.object:id()]&lt;br /&gt;
	if st and st.active_scheme then&lt;br /&gt;
		xr_logic.issue_event(self.object, st[st.active_scheme], &amp;quot;net_destroy&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if db.offline_objects[self.object:id()] then&lt;br /&gt;
		db.offline_objects[self.object:id()].level_vertex_id = self.object:level_vertex_id()&lt;br /&gt;
		db.offline_objects[self.object:id()].active_section = db.storage[self.object:id()].active_section&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	db.del_obj(self.object)&lt;br /&gt;
	db.storage[self.object:id()] = nil&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:net_save_relevant()&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:save(packet)&lt;br /&gt;
	set_save_marker(packet, &amp;quot;save&amp;quot;, false, &amp;quot;trader_object_binder&amp;quot;)&lt;br /&gt;
	object_binder.save(self, packet)&lt;br /&gt;
	xr_logic.save_obj(self.object, packet)&lt;br /&gt;
	if self.object:clsid() == clsid.script_trader then&lt;br /&gt;
		trade_manager.save(self.object, packet)&lt;br /&gt;
	end&lt;br /&gt;
	set_save_marker(packet, &amp;quot;save&amp;quot;, true, &amp;quot;trader_object_binder&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function trader_object_binder:load(reader)&lt;br /&gt;
	self.loaded = true&lt;br /&gt;
	set_save_marker(reader, &amp;quot;load&amp;quot;, false, &amp;quot;trader_object_binder&amp;quot;)&lt;br /&gt;
	object_binder.load(self, reader)&lt;br /&gt;
	xr_logic.load_obj(self.object, reader)&lt;br /&gt;
	if self.object:clsid() == clsid.script_trader then&lt;br /&gt;
		trade_manager.load(self.object, reader)&lt;br /&gt;
	end&lt;br /&gt;
	set_save_marker(reader, &amp;quot;load&amp;quot;, true, &amp;quot;trader_object_binder&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
3. В той же папке scripts создадим файл mob_trader.script и в него пишем&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- mob_trader&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
global_animations = {&lt;br /&gt;
           desk_idle                                = {&amp;quot;idle&amp;quot;,&amp;quot;idle_1&amp;quot;,&amp;quot;palci&amp;quot;,&amp;quot;zatylok&amp;quot;},&lt;br /&gt;
    desk_talk                                = {&amp;quot;idle&amp;quot;},&lt;br /&gt;
        desk_to_chair_hack                = {&amp;quot;idle_spinka&amp;quot;},&lt;br /&gt;
        desk_to_listen                        = {&amp;quot;idle_chitaet&amp;quot;},&lt;br /&gt;
        desk_to_diagonal                = {&amp;quot;perehod_0&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        chair_hack_idle                        = {&amp;quot;idle_2&amp;quot;,&amp;quot;idle_2_def_0&amp;quot;},&lt;br /&gt;
        chair_hack_talk                        = {&amp;quot;idle_2_talk_0&amp;quot;,&amp;quot;idle_2_talk_1&amp;quot;,&amp;quot;idle_2_talk_2&amp;quot;,&amp;quot;idle_2_talk_3&amp;quot;},&lt;br /&gt;
        chair_hack_to_diagonal        = {&amp;quot;idle_2_to_idle_0&amp;quot;},&lt;br /&gt;
        chair_hack_to_desk                = {&amp;quot;spinka_idle&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        compute_idle                                = {&amp;quot;idle_1_spec_think_0&amp;quot;,&amp;quot;idle_1_spec_think_1&amp;quot;},&lt;br /&gt;
        compute_idle_to_diagonal        = {&amp;quot;idle_1_to_idle_0&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        diagonal_idle                        = {&amp;quot;idle_0_def_0&amp;quot;,&amp;quot;idle_0_spec_click_0&amp;quot;,&amp;quot;idle_0_spec_scratch_0&amp;quot;},&lt;br /&gt;
        diagonal_idle_short                = {&amp;quot;idle_0_def_0&amp;quot;},&lt;br /&gt;
        diagonal_talk                        = {&amp;quot;idle_0_talk_0&amp;quot;,&amp;quot;idle_0_talk_1&amp;quot;,&amp;quot;idle_0_talk_2&amp;quot;,&amp;quot;idle_0_talk_3&amp;quot;},&lt;br /&gt;
        diagonal_to_chair_hack        = {&amp;quot;idle_0_to_idle_2&amp;quot;},&lt;br /&gt;
        diagonal_to_compute                = {&amp;quot;idle_0_to_idle_1&amp;quot;},&lt;br /&gt;
        diagonal_to_desk                = {&amp;quot;perehod_1&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        first_phrase                        = {&amp;quot;vstuplenie&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        listen_idle                                = {&amp;quot;chitaet&amp;quot;},&lt;br /&gt;
        listen_to_desk                        = {&amp;quot;chitaet_idle&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        hello                                = {&amp;quot;hello&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        forester_sit                 = {&amp;quot;sit&amp;quot;},&lt;br /&gt;
        forester_beard                = {&amp;quot;beard_in&amp;quot;,&amp;quot;beard&amp;quot;,&amp;quot;beard_out&amp;quot;},&lt;br /&gt;
        forester_reaction        = {&amp;quot;reaction_in&amp;quot;,&amp;quot;reaction&amp;quot;,&amp;quot;reaction_out&amp;quot;},&lt;br /&gt;
        forester_see                = {&amp;quot;see_in&amp;quot;,&amp;quot;see&amp;quot;,&amp;quot;see_out&amp;quot;},&lt;br /&gt;
        forester_talk_1                = {&amp;quot;sit_talk_1_in&amp;quot;,&amp;quot;sit_talk_1&amp;quot;,&amp;quot;sit_talk_1_out&amp;quot;},&lt;br /&gt;
        forester_talk_2                = {&amp;quot;sit_talk_2_in&amp;quot;,&amp;quot;sit_talk_2&amp;quot;,&amp;quot;sit_talk_2_out&amp;quot;},&lt;br /&gt;
        forester_talk_3                = {&amp;quot;sit_talk_3_in&amp;quot;,&amp;quot;sit_talk_3&amp;quot;,&amp;quot;sit_talk_3_out&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
head_animations = {&lt;br /&gt;
		forester_talk_1    		= {&amp;quot;sit_talk_1_in&amp;quot;,&amp;quot;sit_talk_1&amp;quot;,&amp;quot;sit_talk_1_out&amp;quot;},&lt;br /&gt;
		forester_talk_2    = {&amp;quot;sit_talk_2_in&amp;quot;,&amp;quot;sit_talk_2&amp;quot;,&amp;quot;sit_talk_2_out&amp;quot;},&lt;br /&gt;
		forester_talk_3    = {&amp;quot;sit_talk_3_in&amp;quot;,&amp;quot;sit_talk_3&amp;quot;,&amp;quot;sit_talk_3_out&amp;quot;},&lt;br /&gt;
		forester_reaction        = {&amp;quot;reaction_in&amp;quot;,&amp;quot;reaction&amp;quot;,&amp;quot;reaction_out&amp;quot;},&lt;br /&gt;
        normal             = {&amp;quot;talk_0&amp;quot;,&amp;quot;talk_1&amp;quot;,&amp;quot;talk_4&amp;quot;},&lt;br /&gt;
        angry              = {&amp;quot;talk_3&amp;quot;,&amp;quot;talk_2&amp;quot;,&amp;quot;talk_1&amp;quot;},&lt;br /&gt;
        good               = {&amp;quot;talk_glad_0&amp;quot;},&lt;br /&gt;
        first_phrase       = {&amp;quot;vstuplenie_head&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
function on_start_tutorial_item_1()&lt;br /&gt;
        if db.trader == nil then return end&lt;br /&gt;
&lt;br /&gt;
        db.trader:external_sound_start(&amp;quot;characters_voice\\scenario\\trader\\trader_tutorial_pda_12&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function on_stop_tutorial_item()&lt;br /&gt;
        if db.trader == nil then return end&lt;br /&gt;
        db.trader:external_sound_stop()&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;mob_trader&amp;quot;&lt;br /&gt;
&lt;br /&gt;
function mob_trader:__init(obj, storage)&lt;br /&gt;
        self.object = obj&lt;br /&gt;
        self.st                = storage&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mob_trader:reset_scheme()&lt;br /&gt;
        trader_obj = self.object&lt;br /&gt;
&lt;br /&gt;
        self.st.signals = {}&lt;br /&gt;
&lt;br /&gt;
        self.object:set_callback(callback.trader_global_anim_request, self.on_global_anim_request, self )&lt;br /&gt;
        self.object:set_callback(callback.trader_head_anim_request, self.on_head_anim_request, self )&lt;br /&gt;
        self.object:set_callback(callback.trader_sound_end, self.on_sound_end, self )&lt;br /&gt;
        self.object:set_callback(callback.use_object, self.use_callback, self)&lt;br /&gt;
&lt;br /&gt;
        -- start global animation&lt;br /&gt;
        self.object:set_trader_global_anim(self:select_global_animation())&lt;br /&gt;
&lt;br /&gt;
        -- start sound and head animation&lt;br /&gt;
        if (self.st.sound_phrase) then&lt;br /&gt;
                local snd = mob_sound.pick_sound_from_set(self.object, self.st.sound_phrase, {})&lt;br /&gt;
                self.object:set_trader_sound(snd, self:select_head_animation());&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if self.st.anim_head == nil then&lt;br /&gt;
                self.st.anim_head = &amp;quot;normal&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        db.trader = self.object&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mob_trader:use_callback()&lt;br /&gt;
--    dialog_manager.restore_npc_disabled_phrases(self.object:id())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mob_trader:update(delta)&lt;br /&gt;
        if xr_logic.try_switch_to_another_section(self.object, self.st, db.actor) then&lt;br /&gt;
                return&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function mob_trader:select_global_animation()&lt;br /&gt;
        local anim_set = global_animations[self.st.anim_global]&lt;br /&gt;
    local r = math.random(1, #anim_set)&lt;br /&gt;
        return anim_set[r]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mob_trader:select_head_animation()&lt;br /&gt;
        -- random select&lt;br /&gt;
        local anim_set = head_animations[self.st.anim_head]&lt;br /&gt;
    local r = math.random(1, #anim_set)&lt;br /&gt;
        return anim_set[r]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function mob_trader:on_global_anim_request()&lt;br /&gt;
        self.st.signals[&amp;quot;animation_end&amp;quot;] = true&lt;br /&gt;
&lt;br /&gt;
        if (not self.st.play_once) then&lt;br /&gt;
                self.object:set_trader_global_anim(self:select_global_animation())&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mob_trader:on_head_anim_request()&lt;br /&gt;
        if self.st.anim_head == nil then return end&lt;br /&gt;
&lt;br /&gt;
        self.object:set_trader_head_anim(self:select_head_animation());&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mob_trader:on_sound_end()&lt;br /&gt;
        self.st.signals[&amp;quot;sound_phrase_end&amp;quot;] = true&lt;br /&gt;
end&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function mob_trader:deactivate()&lt;br /&gt;
        self.object:set_callback(callback.trader_global_anim_request, nil )&lt;br /&gt;
        self.object:set_callback(callback.trader_head_anim_request, nil )&lt;br /&gt;
        self.object:set_callback(callback.trader_sound_end, nil )&lt;br /&gt;
        self.object:set_callback(callback.use_object, nil )&lt;br /&gt;
        self.st.signals = {}&lt;br /&gt;
        db.trader                = nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function add_to_binder(npc, ini, scheme, section, storage)&lt;br /&gt;
        printf(&amp;quot;DEBUG: add_to_binder: npc:name()='%s', scheme='%s', section='%s'&amp;quot;, npc:name(), scheme, section)&lt;br /&gt;
&lt;br /&gt;
        local new_action = mob_trader(npc, storage)&lt;br /&gt;
&lt;br /&gt;
        -- Зарегистрировать все actions, в которых должен быть вызван метод reset_scheme при изменении настроек схемы:&lt;br /&gt;
        xr_logic.subscribe_action_for_events(npc, storage, new_action)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function set_scheme(npc, ini, scheme, section, gulag_name)&lt;br /&gt;
        local st        = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)&lt;br /&gt;
        st.logic        = xr_logic.cfg_get_switch_conditions(ini, section, npc)&lt;br /&gt;
&lt;br /&gt;
        st.anim_global    = utils.cfg_get_string(ini, section, &amp;quot;anim_global&amp;quot;, npc, true,  &amp;quot;&amp;quot;)&lt;br /&gt;
        st.can_talk                  = utils.cfg_get_bool(ini,   section, &amp;quot;can_talk&amp;quot;,    npc, false, true)&lt;br /&gt;
        st.tip_text                  = utils.cfg_get_string(ini, section, &amp;quot;tip_text&amp;quot;,    npc, false, &amp;quot;&amp;quot;, &amp;quot;character_use&amp;quot;)&lt;br /&gt;
        if st.tip_text == nil then&lt;br /&gt;
                st.tip_text = &amp;quot;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        npc:set_tip_text(st.tip_text)&lt;br /&gt;
&lt;br /&gt;
        if (ini:line_exist( section, &amp;quot;sound_phrase&amp;quot;)) then&lt;br /&gt;
                st.anim_head        = utils.cfg_get_string(ini, section, &amp;quot;anim_head&amp;quot;, npc, false, &amp;quot;&amp;quot;)&lt;br /&gt;
                st.sound_phrase        = utils.cfg_get_string(ini, section, &amp;quot;sound_phrase&amp;quot;, npc, false, &amp;quot;&amp;quot;)&lt;br /&gt;
        else&lt;br /&gt;
                st.anim_head        = nil&lt;br /&gt;
                st.sound_phrase        = nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        --' check if play once animation&lt;br /&gt;
        st.play_once = false&lt;br /&gt;
        if (ini:line_exist( section, &amp;quot;on_signal&amp;quot;)) then&lt;br /&gt;
                local str = utils.cfg_get_string(ini, section, &amp;quot;on_signal&amp;quot;, npc, false, &amp;quot;&amp;quot;)&lt;br /&gt;
                local par = utils.parse_params(str)&lt;br /&gt;
                if par[1] == &amp;quot;animation_end&amp;quot; then&lt;br /&gt;
                        st.play_once = true&lt;br /&gt;
                end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        if st.can_talk == true then&lt;br /&gt;
                npc:enable_talk()&lt;br /&gt;
        else&lt;br /&gt;
                npc:disable_talk()&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
4. Создаем профиль торговцу (подробно на этом останавливаться не буду) В character_desc_ пишем&lt;br /&gt;
&amp;lt;specific_character id=&amp;quot;esc_sidor_trader&amp;quot; team_default=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;Сидорович&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;icon&amp;gt;ui_inGame2_Sidor&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;map_icon x=&amp;quot;1&amp;quot; y=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/map_icon&amp;gt;&lt;br /&gt;
		&amp;lt;bio&amp;gt;Опытный сталкер. Детальная информация отсутствует.&amp;lt;/bio&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;class&amp;gt;esc_sidor_trader&amp;lt;/class&amp;gt;&lt;br /&gt;
		&amp;lt;community&amp;gt;stalker&amp;lt;/community&amp;gt;&lt;br /&gt;
		&amp;lt;terrain_sect&amp;gt;stalker_terrain&amp;lt;/terrain_sect&amp;gt;&lt;br /&gt;
		&amp;lt;snd_config&amp;gt;characters_voice\human_02\stalker\&amp;lt;/snd_config&amp;gt;&lt;br /&gt;
		&amp;lt;rank&amp;gt;65&amp;lt;/rank&amp;gt;&lt;br /&gt;
		&amp;lt;reputation&amp;gt;0&amp;lt;/reputation&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;&lt;br /&gt;
    &amp;lt;visual&amp;gt;actors\stalker_trader\stalker_trader_1&amp;lt;/visual&amp;gt;&lt;br /&gt;
		&amp;lt;supplies&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      	[spawn] \n&lt;br /&gt;
	&lt;br /&gt;
    &amp;lt;/supplies&amp;gt;&lt;br /&gt;
#include &amp;quot;gameplay\character_criticals_4.xml&amp;quot;&lt;br /&gt;
                &amp;lt;start_dialog&amp;gt;esc_sidor_start_dialog&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;actor_break_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
	&amp;lt;/specific_character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В npc_profile &lt;br /&gt;
&lt;br /&gt;
    &amp;lt;character id=&amp;quot;esc_sidor_trader&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;class&amp;gt;esc_sidor_trader&amp;lt;/class&amp;gt;&lt;br /&gt;
    &amp;lt;specific_character&amp;gt;esc_sidor_trader&amp;lt;/specific_character&amp;gt;&lt;br /&gt;
    &amp;lt;/character&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Еще нужно прописать Сидору стартовый диалог&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;dialog id=&amp;quot;esc_sidor_start_dialog&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;phrase_list&amp;gt;&lt;br /&gt;
            &amp;lt;phrase id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;text&amp;gt;esc_sidor_start_dialog_text&amp;lt;/text&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;
5. Далее нужно заспавнить Сидора. Это можно сделать через Perl, редактирую all.spawn, либо через СДК, что намного удобнне. Если вы решили делать через Perl, то вставляем в alife_ это (координаты спавна Сидоровича на Кордоне ЧН; вертексы меняйте на свои)&lt;br /&gt;
[482]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = m_trader&lt;br /&gt;
name = esc_m_trader&lt;br /&gt;
position = -244.299667358398,-24.803882598877,-133.839172363281&lt;br /&gt;
direction = -0.000105999999505002,1.46652603149414,0.000314000004436821&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 168&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 132406&lt;br /&gt;
object_flags = 0xffffff3f&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[logic]&lt;br /&gt;
cfg = scripts\escape\esc_sidor_trader.ltx&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = actors\stalker_trader\stalker_trader_1&lt;br /&gt;
&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
money = 1000000&lt;br /&gt;
trader_flags = 0&lt;br /&gt;
character_profile = esc_sidor_trader&lt;br /&gt;
cse_alife_trader_abstract__unk1_u8 = 1&lt;br /&gt;
&lt;br /&gt;
Еще надо сделать рестриктор esc_space_restrictor_wait_trader, вот координаты&lt;br /&gt;
[481]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = space_restrictor&lt;br /&gt;
name = esc_space_restrictor_wait_trader&lt;br /&gt;
position = -246.889709472656,-24.8104095458984,-134.595703125&lt;br /&gt;
direction = 1.59999999596039e-005,0,-0.00445500016212463&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 168&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 132406&lt;br /&gt;
object_flags = 0xffffff3e&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[story_object]&lt;br /&gt;
story_id = esc_space_restrictor_wait_trader&lt;br /&gt;
&lt;br /&gt;
[logic]&lt;br /&gt;
cfg = scripts\escape\esc_space_restrictor_wait_trader.ltx&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_shape properties&lt;br /&gt;
shapes = shape0&lt;br /&gt;
shape0:type = box&lt;br /&gt;
shape0:axis_x = 2.68119788169861,0,0&lt;br /&gt;
shape0:axis_y = 0,7.55560111999512,0&lt;br /&gt;
shape0:axis_z = 0,0,4.42359781265259&lt;br /&gt;
shape0:offset = 0,0,0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_space_restrictor properties&lt;br /&gt;
restrictor_type = 3&lt;br /&gt;
&lt;br /&gt;
Нужно прописать логику рестриктора. В папке scripts\escape создаем файл esc_space_restrictor_wait_trader.ltx и в него пишем&lt;br /&gt;
&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_actor_inside = sr_idle@minus %+esc_actor_come_first%&lt;br /&gt;
&lt;br /&gt;
[sr_idle@minus]&lt;br /&gt;
on_info = {+esc_trader_hello_first_played} sr_idle@last&lt;br /&gt;
&lt;br /&gt;
[sr_idle@last]&lt;br /&gt;
on_actor_in_zone = esc_space_restrictor_wait_trader | {-esc_player_sleeps} sr_idle@timer&lt;br /&gt;
&lt;br /&gt;
[sr_idle@timer]&lt;br /&gt;
on_game_timer = 150 | sr_idle@check&lt;br /&gt;
on_actor_not_in_zone = esc_space_restrictor_wait_trader | sr_idle@last&lt;br /&gt;
on_info = {+esc_skip_angry} sr_idle@last %-esc_skip_angry -esc_player_sleeps%&lt;br /&gt;
&lt;br /&gt;
[sr_idle@check]&lt;br /&gt;
on_actor_in_zone = esc_space_restrictor_wait_trader | sr_idle@last %+esc_player_sleeps%&lt;br /&gt;
&lt;br /&gt;
Не забываем про логику Сидора, которую указали. Создаем там же файл esc_sidor_trader.ltx и в него вставляем&lt;br /&gt;
&lt;br /&gt;
[logic]&lt;br /&gt;
active =  mob_trader@new_idle1&lt;br /&gt;
trade = misc\trade\trade_sidor.ltx&lt;br /&gt;
level_spot = trader&lt;br /&gt;
&lt;br /&gt;
;--------------------------&lt;br /&gt;
;---First Meet-------------&lt;br /&gt;
;--------------------------&lt;br /&gt;
[mob_trader@hello_first]&lt;br /&gt;
anim_global = hello&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_greet_first&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle2 &lt;br /&gt;
&lt;br /&gt;
;------------------------------&lt;br /&gt;
;---------Wait player----------&lt;br /&gt;
;------------------------------&lt;br /&gt;
&lt;br /&gt;
[mob_trader@angry_1]&lt;br /&gt;
anim_global = desk_idle&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_wait&lt;br /&gt;
on_signal = sound_phrase_end | {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1 &lt;br /&gt;
&lt;br /&gt;
[mob_trader@angry_2]&lt;br /&gt;
anim_global = diagonal_idle&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_wait&lt;br /&gt;
on_signal = sound_phrase_end | {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2&lt;br /&gt;
&lt;br /&gt;
[mob_trader@angry_3]&lt;br /&gt;
anim_global = chair_hack_idle&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_wait&lt;br /&gt;
on_signal = sound_phrase_end | {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3&lt;br /&gt;
&lt;br /&gt;
[mob_trader@angry_4]&lt;br /&gt;
anim_global = compute_idle&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_wait&lt;br /&gt;
on_signal = sound_phrase_end | {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4&lt;br /&gt;
;----------------------------------&lt;br /&gt;
;------------- Idle ---------------&lt;br /&gt;
;----------------------------------&lt;br /&gt;
&lt;br /&gt;
;Основной idle (1) - за столом&lt;br /&gt;
[mob_trader@new_idle1]&lt;br /&gt;
anim_global = desk_idle&lt;br /&gt;
on_signal = animation_end | {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1&lt;br /&gt;
on_info = {=talking} mob_trader@new_idle1_to_idle3 %+esc_skip_angry%&lt;br /&gt;
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_1 %-esc_player_sleeps%&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Idle (2) - по диагонали&lt;br /&gt;
[mob_trader@new_idle2]&lt;br /&gt;
anim_global = diagonal_idle&lt;br /&gt;
on_signal = animation_end | {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2&lt;br /&gt;
on_info = {=talking} mob_trader@new_idle2_to_idle3 %+esc_skip_angry%&lt;br /&gt;
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_2 %-esc_player_sleeps%&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Idle (3) - откинувшись на спинку&lt;br /&gt;
[mob_trader@new_idle3]&lt;br /&gt;
anim_global = chair_hack_idle&lt;br /&gt;
on_signal = animation_end | {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3&lt;br /&gt;
on_info = {=talking} mob_trader@new_talking %+esc_skip_angry%&lt;br /&gt;
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_3 %-esc_player_sleeps%&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Idle (4) - за компьютером&lt;br /&gt;
[mob_trader@new_idle4]&lt;br /&gt;
anim_global = compute_idle&lt;br /&gt;
on_signal = animation_end | {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4&lt;br /&gt;
on_info = {=talking} mob_trader@new_idle4_to_idle2 %+esc_skip_angry%&lt;br /&gt;
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_4 %-esc_player_sleeps%&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Idle (5) - читает&lt;br /&gt;
[mob_trader@new_idle5]&lt;br /&gt;
anim_global = listen_idle&lt;br /&gt;
on_signal = animation_end | {~45} mob_trader@new_idle5_to_idle1, mob_trader@new_idle5_to_idle5&lt;br /&gt;
on_info = {=talking} mob_trader@new_idle5_to_idle1 %+esc_skip_angry%&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;----------------------------------&lt;br /&gt;
;--------   Автопереходы   --------&lt;br /&gt;
;----------------------------------&lt;br /&gt;
&lt;br /&gt;
; Стол - стол (промежуточная)&lt;br /&gt;
[mob_trader@new_idle1_to_idle1]&lt;br /&gt;
anim_global = desk_idle&lt;br /&gt;
on_signal = animation_end| mob_trader@new_idle1&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Диагональ - диагональ (промежуточная)&lt;br /&gt;
[mob_trader@new_idle2_to_idle2]&lt;br /&gt;
anim_global = diagonal_idle&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle2&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Спинка - спинка (промежуточная)&lt;br /&gt;
[mob_trader@new_idle3_to_idle3]&lt;br /&gt;
anim_global = chair_hack_idle&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle3&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Компьютер - компьютер (промежуточная)&lt;br /&gt;
[mob_trader@new_idle4_to_idle4]&lt;br /&gt;
anim_global = compute_idle&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle4&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Читает - читает (промежуточная)&lt;br /&gt;
[mob_trader@new_idle5_to_idle5]&lt;br /&gt;
anim_global = listen_idle&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle5&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
;----------------------------------&lt;br /&gt;
;----- Переходы  между idle-ми ----&lt;br /&gt;
;----------------------------------&lt;br /&gt;
&lt;br /&gt;
; Диагональ - компьютер&lt;br /&gt;
[mob_trader@new_idle2_to_idle4]&lt;br /&gt;
anim_global = diagonal_to_compute&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle4&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Компьютер - диагональ&lt;br /&gt;
[mob_trader@new_idle4_to_idle2]&lt;br /&gt;
anim_global = compute_idle_to_diagonal&lt;br /&gt;
on_signal = animation_end| mob_trader@new_idle2&lt;br /&gt;
;on_info = {+esc_player_sleeps} mob_trader@angry %-esc_player_sleeps%&lt;br /&gt;
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_2 %-esc_player_sleeps%&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Диагональ - спинка&lt;br /&gt;
[mob_trader@new_idle2_to_idle3]&lt;br /&gt;
anim_global = diagonal_to_chair_hack&lt;br /&gt;
on_signal = animation_end| {=talking} mob_trader@new_talking %+esc_skip_angry%, mob_trader@new_idle3&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Спинка - диагональ&lt;br /&gt;
[mob_trader@new_idle3_to_idle2]&lt;br /&gt;
anim_global = chair_hack_to_diagonal&lt;br /&gt;
on_signal = animation_end| mob_trader@new_idle2&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Стол - спинка&lt;br /&gt;
[mob_trader@new_idle1_to_idle3]&lt;br /&gt;
anim_global = desk_to_chair_hack&lt;br /&gt;
on_signal = animation_end|{=talking} mob_trader@new_talking %+esc_skip_angry%, mob_trader@new_idle3&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Спинка - стол&lt;br /&gt;
[mob_trader@new_idle3_to_idle1]&lt;br /&gt;
anim_global = chair_hack_to_desk&lt;br /&gt;
on_signal = animation_end| mob_trader@new_idle1&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Стол - диагональ&lt;br /&gt;
[mob_trader@new_idle1_to_idle2]&lt;br /&gt;
anim_global = desk_to_diagonal&lt;br /&gt;
on_signal = animation_end| mob_trader@new_idle2&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Диагональ - стол&lt;br /&gt;
[mob_trader@new_idle2_to_idle1]&lt;br /&gt;
anim_global = diagonal_to_desk&lt;br /&gt;
on_signal = animation_end| mob_trader@new_idle1&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Стол - читает&lt;br /&gt;
[mob_trader@new_idle1_to_idle5]&lt;br /&gt;
anim_global = desk_to_listen&lt;br /&gt;
on_signal = animation_end| mob_trader@new_idle5&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
; Читает - стол&lt;br /&gt;
[mob_trader@new_idle5_to_idle1]&lt;br /&gt;
anim_global = listen_to_desk&lt;br /&gt;
on_signal = animation_end| mob_trader@new_idle1&lt;br /&gt;
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
;--------------------------------------&lt;br /&gt;
;------------- Разговор ---------------&lt;br /&gt;
;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
[mob_trader@new_talking]&lt;br /&gt;
anim_global = chair_hack_talk&lt;br /&gt;
anim_head = normal&lt;br /&gt;
on_info = {!talking} mob_trader@new_idle3 %+esc_skip_angry%&lt;br /&gt;
&lt;br /&gt;
;--------------------------------------&lt;br /&gt;
;------------ Торговля ----------------&lt;br /&gt;
;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
[mob_trade@new]&lt;br /&gt;
anim_global = chair_hack_idle&lt;br /&gt;
on_info = {=trading =trade_exchanged} mob_trader@new_trade_exchanged&lt;br /&gt;
on_info2 = {!trading =trade_exchanged} mob_trader@new_trade_good&lt;br /&gt;
on_info3 = {!trading !trade_exchanged} mob_trader@new_trade_bad&lt;br /&gt;
&lt;br /&gt;
[mob_trader@new_trade_bad]&lt;br /&gt;
anim_global = diagonal_talk&lt;br /&gt;
anim_global = chair_hack_idle&lt;br /&gt;
anim_head = angry&lt;br /&gt;
;sound_phrase = trader_bad_trade&lt;br /&gt;
on_signal = sound_phrase_end | mob_trader@new_idle2&lt;br /&gt;
on_actor_dist_ge_nvis = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
[mob_trader@new_trade_exchanged]&lt;br /&gt;
anim_global = diagonal_talk&lt;br /&gt;
anim_global = chair_hack_idle&lt;br /&gt;
anim_head = normal&lt;br /&gt;
;sound_phrase = trader_exchanged&lt;br /&gt;
on_signal = sound_phrase_end | mob_trader@new_idle2&lt;br /&gt;
on_actor_dist_ge_nvis = 11 | mob_trader@new_wait&lt;br /&gt;
&lt;br /&gt;
[mob_trader@new_trade_good]&lt;br /&gt;
anim_global = diagonal_talk&lt;br /&gt;
anim_global = chair_hack_idle&lt;br /&gt;
anim_head = good&lt;br /&gt;
;sound_phrase = trader_good_trade&lt;br /&gt;
on_signal = sound_phrase_end | mob_trader@new_idle2&lt;br /&gt;
on_actor_dist_ge_nvis = 11 | mob_trader@new_wait&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;
[mob_trader@new_hello]&lt;br /&gt;
anim_global = hello&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_hello_what_have_you_got&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle2&lt;br /&gt;
&lt;br /&gt;
[mob_trader@hello_search]&lt;br /&gt;
anim_global = hello&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_wait_habar_greet&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle2&lt;br /&gt;
&lt;br /&gt;
[mob_trader@hello_return]&lt;br /&gt;
anim_global = hello&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_greet_habar&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle2&lt;br /&gt;
&lt;br /&gt;
[mob_trader@new_bye]&lt;br /&gt;
on_actor_dist_ge_nvis = 11| mob_trader@new_wait&lt;br /&gt;
anim_global = hello&lt;br /&gt;
anim_head = normal&lt;br /&gt;
;sound_phrase = trader_bye&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle2&lt;br /&gt;
&lt;br /&gt;
[mob_trader@bye_search]&lt;br /&gt;
on_actor_dist_ge_nvis = 11 | mob_trader@new_idle2&lt;br /&gt;
anim_global = hello&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_wait_habar_bye&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle1&lt;br /&gt;
&lt;br /&gt;
[mob_trader@bye_garbage]&lt;br /&gt;
on_actor_dist_ge_nvis = 11 | mob_trader@new_wait&lt;br /&gt;
anim_global = hello&lt;br /&gt;
anim_head = normal&lt;br /&gt;
sound_phrase = trader_bye_garbage&lt;br /&gt;
on_signal = animation_end | mob_trader@new_idle2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[mob_trader@new_wait]&lt;br /&gt;
anim_global = diagonal_idle_short&lt;br /&gt;
on_actor_dist_le_nvis = 3 | {-esc_trader_hello_played +esc_actor_inside_traders_dung +esc_bring_habar_complete +esc_trader_hello_first_played} mob_trader@new_hello %+esc_trader_hello_played%, {-esc_trader_hello_played -esc_actor_inside_traders_dung -esc_take_habar_complete +esc_trader_hello_first_played} mob_trader@new_hello %+esc_trader_hello_played%, {-esc_trader_hello_first_played +esc_actor_come_first} mob_trader@hello_first %+esc_trader_hello_first_played +esc_trader_hello_played%, {-esc_trader_hello_search_played +esc_actor_inside_traders_dung +esc_trader_hello_first_played -esc_take_habar_complete} mob_trader@hello_search %+esc_trader_hello_search_played%, {-esc_trader_hello_return_played +esc_take_habar_complete} mob_trader@hello_return %+esc_trader_hello_return_played%&lt;br /&gt;
on_actor_dist_ge_nvis = 7 | {-esc_trader_bye_played +esc_trader_hello_played +esc_actor_inside_traders_dung +esc_bring_habar_complete +esc_trader_hello_first_played} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung -esc_take_habar_complete +esc_trader_hello_first_played} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played +esc_trader_hello_first_played +esc_actor_inside_traders_dung -esc_bring_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%&lt;br /&gt;
on_actor_dist_ge_nvis2 = 11 | %-esc_trader_hello_played -esc_trader_bye_played -esc_trader_hello_search_played -esc_trader_bye_search_played%&lt;br /&gt;
&lt;br /&gt;
Не забудьте создать файл торговли Сидора trade_sidor, который указали в логике, иначе вылет. Вот и все. Сидор должен занять свое место и все должно работать. &lt;br /&gt;
P.S. Все скрипты и логику Сидора можно взять и в ЧН.&lt;br /&gt;
Удачи в моддинге.&lt;br /&gt;
Автор: !SkIF!&lt;/div&gt;</summary>
		<author><name>194.150.233.232</name></author>	</entry>

	</feed>