<?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=Weanchester</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=Weanchester"/>
		<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/Weanchester"/>
		<updated>2026-04-29T13:22:52Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-29T07:56:16Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для создания спального мешка, нам понадобятся эти файлы: &lt;br /&gt;
&lt;br /&gt;
'''В папке scripts'''&lt;br /&gt;
*'''bind_stalker.script'''&lt;br /&gt;
&lt;br /&gt;
*пустой файл  '''main_sleep.script''' &lt;br /&gt;
&lt;br /&gt;
'''В папке config/ui'''&lt;br /&gt;
*'''ui_movies.xml'''&lt;br /&gt;
&lt;br /&gt;
*пустой '''ui_sleep.xml'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/misc'''&lt;br /&gt;
*'''dream.ltx''' &lt;br /&gt;
&lt;br /&gt;
*'''items.ltx'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/texs/rus'''&lt;br /&gt;
*'''string_table_enc_equipment.xml'''&lt;br /&gt;
&lt;br /&gt;
== Создание предмета &amp;quot;спальный мешок&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\misc''', ищем файл '''items.ltx''' и в конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка с песком&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоимость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работа с созданием спального мешка завершена.&lt;br /&gt;
&lt;br /&gt;
== Название и описание ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''', находим файл '''string_table_enc_equipment.xml''', открываем его и в самом низу, перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак с предметом закончили Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
== Работа со скриптами ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\scripts''', находим файл '''bind_stalker.script''', открываем его, находим функцию '''''function actor_binder:net_destroy()''''' и в колбеках пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле находим функцию '''''function actor_binder:reinit()''''' и так же в колбеках пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, self.use_obj, self)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function 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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в этом файле находим функцию '''''function actor_binder:on_item_drop (obj)''''' и после неё пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- наш будущий скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c названием '''main_sleep.script''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function sleep(obj)&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводиться в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() -- сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale) -- основная функция&lt;br /&gt;
	basic_time_factor = level.get_time_factor () -- вычисление стандартной скорости течения времени&lt;br /&gt;
	db.actor:stop_talk() -- если игрок с кем-нибудь говорит, диалог закрывается. Здесь в ней нет смысла, но вдруг кому пригодится&lt;br /&gt;
	db.actor:hide_weapon() -- ГГ прячет оружие в рюкзак&lt;br /&gt;
	level.disable_input() -- отключение управления  &lt;br /&gt;
	sleep.starter (scale) -- запуск скрипта, перематывающего время &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale) -- скрипт перемотки на нужное время&lt;br /&gt;
	local factor = scale * 2650 -- вычисление времени &amp;quot;пробуждения&amp;quot;&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;) -- вызов функции перемотки&lt;br /&gt;
	level.set_time_factor(factor) -- собственно сама перемотка &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer() -- отвечает за сны&lt;br /&gt;
	level.set_time_factor(basic_time_factor) --остановка перемотки. basic_time_factor - стандартная скорость течения времени&lt;br /&gt;
	local dream = dream.sleep_video_name_callback () -- позволяет &amp;quot;показать&amp;quot; сон&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	game.start_tutorial(dream) -- показ одного из трёх снов&lt;br /&gt;
	else&lt;br /&gt;
	game.start_tutorial(&amp;quot;without_dream&amp;quot;)  -- &amp;quot;без сна&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- ГГ достаёт оружие&lt;br /&gt;
	level.enable_input() -- включается управление&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускается функция съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
== Работа с XML-описателем ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', создаем файл с названием '''ui_sleep.xml''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
== Сны ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', ищем файл '''ui_movies''', открываем и в самом конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''', найдем файл '''dream.ltx''', откроем его. В начале будет такая конструкция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Удаляем sleep\, чтобы получилось так:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделали мы это, чтоб игра не вылетала во время сна.&lt;br /&gt;
&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''', ищем файл '''escape_dialog.script''', открываем его, ищем функцию '''''function give_weapon_to_actor (trader, actor)'''''&lt;br /&gt;
и после '''''dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)''''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Спальный мешок заспаунится в инвентаре после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
* Иконка у нас не спального мешка, а костюма бандита. Модель - мешок с песком.&lt;br /&gt;
&lt;br /&gt;
Вот, собственно, и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана: [[Участник:Weanchester|Weanchester]], [[Участник:TuMaN|TuMaN]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
Отредактировал статью анонимный граммар-наци.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/SoC._Редактирование_торговцев Редактирование ассортимента торговцев]&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/Изменение_текстур Создание уникального значка для предмета]&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://dump.ru/file/5300856 Модель, текстура и значок спальника]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-29T07:50:35Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для создания спального мешка, нам понадобятся эти файлы: &lt;br /&gt;
&lt;br /&gt;
'''В папке scripts'''&lt;br /&gt;
*'''bind_stalker.script'''&lt;br /&gt;
&lt;br /&gt;
*пустой файл  '''main_sleep.script''' &lt;br /&gt;
&lt;br /&gt;
'''В папке config/ui'''&lt;br /&gt;
*'''ui_movies.xml'''&lt;br /&gt;
&lt;br /&gt;
*пустой '''ui_sleep.xml'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/misc'''&lt;br /&gt;
*'''dream.ltx''' &lt;br /&gt;
&lt;br /&gt;
*'''items.ltx'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/texs/rus'''&lt;br /&gt;
*'''string_table_enc_equipment.xml'''&lt;br /&gt;
&lt;br /&gt;
===Создание предмета &amp;quot;спальный мешок&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\misc''', ищем файл '''items.ltx''' и в конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка с песком&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоимость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работа с созданием спального мешка завершена.&lt;br /&gt;
&lt;br /&gt;
== Название и описание ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''', находим файл '''string_table_enc_equipment.xml''', открываем его и в самом низу, перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак с предметом закончили Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
== Работа со скриптами ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\scripts''', находим файл '''bind_stalker.script''', открываем его, находим функцию '''''function actor_binder:net_destroy()''''' и в колбеках пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле находим функцию '''''function actor_binder:reinit()''''' и так же в колбеках пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, self.use_obj, self)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function 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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в этом файле находим функцию '''''function actor_binder:on_item_drop (obj)''''' и после неё пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- наш будущий скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c названием '''main_sleep.script''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function sleep(obj)&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводиться в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() -- сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale) -- основная функция&lt;br /&gt;
	basic_time_factor = level.get_time_factor () -- вычисление стандартной скорости течения времени&lt;br /&gt;
	db.actor:stop_talk() -- если игрок с кем-нибудь говорит, диалог закрывается. Здесь в ней нет смысла, но вдруг кому пригодится&lt;br /&gt;
	db.actor:hide_weapon() -- ГГ прячет оружие в рюкзак&lt;br /&gt;
	level.disable_input() -- отключение управления  &lt;br /&gt;
	sleep.starter (scale) -- запуск скрипта, перематывающего время &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale) -- скрипт перемотки на нужное время&lt;br /&gt;
	local factor = scale * 2650 -- вычисление времени &amp;quot;пробуждения&amp;quot;&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;) -- вызов функции перемотки&lt;br /&gt;
	level.set_time_factor(factor) -- собственно сама перемотка &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer() -- отвечает за сны&lt;br /&gt;
	level.set_time_factor(basic_time_factor) --остановка перемотки. basic_time_factor - стандартная скорость течения времени&lt;br /&gt;
	local dream = dream.sleep_video_name_callback () -- позволяет &amp;quot;показать&amp;quot; сон&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	game.start_tutorial(dream) -- показ одного из трёх снов&lt;br /&gt;
	else&lt;br /&gt;
	game.start_tutorial(&amp;quot;without_dream&amp;quot;)  -- &amp;quot;без сна&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- ГГ достаёт оружие&lt;br /&gt;
	level.enable_input() -- включается управление&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускается функция съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
== Работа с XML-описателем ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', создаем файл с названием '''ui_sleep.xml''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
== Сны ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', ищем файл '''ui_movies''', открываем и в самом конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''', найдем файл '''dream.ltx''', откроем его. В начале будет такая конструкция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Удаляем sleep\, чтобы получилось так:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделали мы это, чтоб игра не вылетала во время сна.&lt;br /&gt;
&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''', ищем файл '''escape_dialog.script''', открываем его, ищем функцию '''''function give_weapon_to_actor (trader, actor)'''''&lt;br /&gt;
и после '''''dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)''''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Спальный мешок заспаунится в инвентаре после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
* Иконка у нас не спального мешка, а костюма бандита. Модель - мешок с песком.&lt;br /&gt;
&lt;br /&gt;
Вот, собственно, и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана: [[Участник:Weanchester|Weanchester]], [[Участник:TuMaN|TuMaN]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
Отредактировал статью анонимный граммар-наци.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/SoC._Редактирование_торговцев Редактирование ассортимента торговцев]&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/Изменение_текстур Создание уникального значка для предмета]&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://dump.ru/file/5300856 Модель, текстура и значок спальника]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-29T07:47:36Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: Корректировка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для создания спального мешка, нам понадобятся эти файлы: &lt;br /&gt;
&lt;br /&gt;
'''В папке scripts'''&lt;br /&gt;
*'''bind_stalker.script'''&lt;br /&gt;
&lt;br /&gt;
*пустой файл  '''main_sleep.script''' &lt;br /&gt;
&lt;br /&gt;
'''В папке config/ui'''&lt;br /&gt;
*'''ui_movies.xml'''&lt;br /&gt;
&lt;br /&gt;
*пустой '''ui_sleep.xml'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/misc'''&lt;br /&gt;
*'''dream.ltx''' &lt;br /&gt;
&lt;br /&gt;
*'''items.ltx'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/texs/rus'''&lt;br /&gt;
*'''string_table_enc_equipment.xml'''&lt;br /&gt;
&lt;br /&gt;
== Создание предмета &amp;quot;спальный мешок&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\misc''', ищем файл '''items.ltx''' и в конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка с песком&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоимость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работа с созданием спального мешка завершена.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''', находим файл '''string_table_enc_equipment.xml''', открываем его и в самом низу, перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак с предметом закончили Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
== Работа со скриптами ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\scripts''', находим файл '''bind_stalker.script''', открываем его, находим функцию '''''function actor_binder:net_destroy()''''' и в колбеках пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле находим функцию '''''function actor_binder:reinit()''''' и так же в колбеках пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, self.use_obj, self)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function 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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в этом файле находим функцию '''''function actor_binder:on_item_drop (obj)''''' и после неё пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- наш будущий скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c названием '''main_sleep.script''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function sleep(obj)&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводиться в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() -- сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale) -- основная функция&lt;br /&gt;
	basic_time_factor = level.get_time_factor () -- вычисление стандартной скорости течения времени&lt;br /&gt;
	db.actor:stop_talk() -- если игрок с кем-нибудь говорит, диалог закрывается. Здесь в ней нет смысла, но вдруг кому пригодится&lt;br /&gt;
	db.actor:hide_weapon() -- ГГ прячет оружие в рюкзак&lt;br /&gt;
	level.disable_input() -- отключение управления  &lt;br /&gt;
	sleep.starter (scale) -- запуск скрипта, перематывающего время &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale) -- скрипт перемотки на нужное время&lt;br /&gt;
	local factor = scale * 2650 -- вычисление времени &amp;quot;пробуждения&amp;quot;&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;) -- вызов функции перемотки&lt;br /&gt;
	level.set_time_factor(factor) -- собственно сама перемотка &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer() -- отвечает за сны&lt;br /&gt;
	level.set_time_factor(basic_time_factor) --остановка перемотки. basic_time_factor - стандартная скорость течения времени&lt;br /&gt;
	local dream = dream.sleep_video_name_callback () -- позволяет &amp;quot;показать&amp;quot; сон&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	game.start_tutorial(dream) -- показ одного из трёх снов&lt;br /&gt;
	else&lt;br /&gt;
	game.start_tutorial(&amp;quot;without_dream&amp;quot;)  -- &amp;quot;без сна&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- ГГ достаёт оружие&lt;br /&gt;
	level.enable_input() -- включается управление&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускается функция съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML-описателем===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', создаем файл с названием '''ui_sleep.xml''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
== Сны ==&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', ищем файл '''ui_movies''', открываем и в самом конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''', найдем файл '''dream.ltx''', откроем его. В начале будет такая конструкция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Удаляем sleep\, чтобы получилось так:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделали мы это, чтоб игра не вылетала во время сна.&lt;br /&gt;
&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''', ищем файл '''escape_dialog.script''', открываем его, ищем функцию '''''function give_weapon_to_actor (trader, actor)'''''&lt;br /&gt;
и после '''''dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)''''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Спальный мешок заспаунится в инвентаре после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
* Иконка у нас не спального мешка, а костюма бандита. Модель - мешок с песком.&lt;br /&gt;
&lt;br /&gt;
Вот, собственно, и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана: [[Участник:Weanchester|Weanchester]], [[Участник:TuMaN|TuMaN]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
Отредактировал статью анонимный граммар-наци.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/SoC._Редактирование_торговцев Редактирование ассортимента торговцев]&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/Изменение_текстур Создание уникального значка для предмета]&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://dump.ru/file/5300856 Модель, текстура и значок спальника]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>Обсуждение:SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-27T16:23:24Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: Удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-27T16:21:18Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Авторы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для создания спального мешка, нам понадобятся эти файлы: &lt;br /&gt;
&lt;br /&gt;
'''В папке scripts'''&lt;br /&gt;
*'''bind_stalker.script'''&lt;br /&gt;
&lt;br /&gt;
*пустой файл  '''main_sleep.script''' &lt;br /&gt;
&lt;br /&gt;
'''В папке config/ui'''&lt;br /&gt;
*'''ui_movies.xml'''&lt;br /&gt;
&lt;br /&gt;
*пустой '''ui_sleep.xml'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/misc'''&lt;br /&gt;
*'''dream.ltx''' &lt;br /&gt;
&lt;br /&gt;
*'''items.ltx'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/texs/rus'''&lt;br /&gt;
*'''stringtable_enc_equipment.xml'''&lt;br /&gt;
&lt;br /&gt;
===Создание предмета &amp;quot;спальный мешок&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\misc''', ищем файл '''items.ltx''' и в конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка с песком&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоимость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работа с созданием спального мешка завершена.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''', находим файл '''string_table_enc_equipment.xml''', открываем его и в самом низу, перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''', найдем файл '''dream.ltx''', откроем его. В начале будет такая конструкция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
Удаляем sleep\, чтобы получилось так:&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделали мы это, чтоб игра не вылетала во время сна. Но о снах позже.&lt;br /&gt;
Итак, половина работы завершена. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\scripts''', находим файл '''bind_stalker.script''', открываем его, находим функцию '''''function actor_binder:net_destroy()''''' и в колбеках пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле находим функцию '''''function actor_binder:reinit()''''' и так же в колбеках пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, self.use_obj, self)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function 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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в этом файле находим функцию '''''function actor_binder:on_item_drop (obj)''''' и после неё пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- наш будущий скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c названием '''main_sleep.script''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function sleep(obj)&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводиться в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() -- сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale) -- основная функция&lt;br /&gt;
	basic_time_factor = level.get_time_factor () -- вычисление стандартной скорости течения времени&lt;br /&gt;
	db.actor:stop_talk() -- если игрок с кем-нибудь говорит, диалог закрывается. Здесь в ней нет смысла, но вдруг кому пригодится&lt;br /&gt;
	db.actor:hide_weapon() -- ГГ прячет оружие в рюкзак&lt;br /&gt;
	level.disable_input() -- отключение управления  &lt;br /&gt;
	sleep.starter (scale) -- запуск скрипта, перематывающего время &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale) -- скрипт перемотки на нужное время&lt;br /&gt;
	local factor = scale * 2650 -- вычисление времени &amp;quot;пробуждения&amp;quot;&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;) -- вызов функции перемотки&lt;br /&gt;
	level.set_time_factor(factor) -- собственно сама перемотка &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer() -- отвечает за сны&lt;br /&gt;
	level.set_time_factor(basic_time_factor) --остановка перемотки. basic_time_factor - стандартная скорость течения времени&lt;br /&gt;
	local dream = dream.sleep_video_name_callback () -- позволяет &amp;quot;показать&amp;quot; сон&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	game.start_tutorial(dream) -- показ одного из трёх снов&lt;br /&gt;
	else&lt;br /&gt;
	game.start_tutorial(&amp;quot;without_dream&amp;quot;)  -- &amp;quot;без сна&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- ГГ достаёт оружие&lt;br /&gt;
	level.enable_input() -- включается управление&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускается функция съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML-описателем===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', создаем файл с названием '''ui_sleep.xml''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', ищем файл '''ui_movies''', открываем и в самом конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''', ищем файл '''escape_dialog.script''', открываем его, ищем функцию '''''function give_weapon_to_actor (trader, actor)'''''&lt;br /&gt;
и после '''''dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)''''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Спальный мешок заспаунится в инвентаре после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
===Примечания===&lt;br /&gt;
&lt;br /&gt;
* Иконка у нас не спального мешка, а костюма бандита. Модель - мешок с песком.&lt;br /&gt;
&lt;br /&gt;
Вот, собственно, и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана: [[Участник:Weanchester|Weanchester]], [[Участник:TuMaN|TuMaN]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
Отредактировал статью анонимный граммар-наци.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/SoC._Редактирование_торговцев Редактирование ассортимента торговцев]&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/Изменение_текстур Создание уникального значка для предмета]&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://dump.ru/file/5300856 Модель, текстура и значок спальника]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-27T16:19:36Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: Слегка отредактировал&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для создания спального мешка, нам понадобятся эти файлы: &lt;br /&gt;
&lt;br /&gt;
'''В папке scripts'''&lt;br /&gt;
*'''bind_stalker.script'''&lt;br /&gt;
&lt;br /&gt;
*пустой файл  '''main_sleep.script''' &lt;br /&gt;
&lt;br /&gt;
'''В папке config/ui'''&lt;br /&gt;
*'''ui_movies.xml'''&lt;br /&gt;
&lt;br /&gt;
*пустой '''ui_sleep.xml'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/misc'''&lt;br /&gt;
*'''dream.ltx''' &lt;br /&gt;
&lt;br /&gt;
*'''items.ltx'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/texs/rus'''&lt;br /&gt;
*'''stringtable_enc_equipment.xml'''&lt;br /&gt;
&lt;br /&gt;
===Создание предмета &amp;quot;спальный мешок&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\misc''', ищем файл '''items.ltx''' и в конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка с песком&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоимость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работа с созданием спального мешка завершена.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''', находим файл '''string_table_enc_equipment.xml''', открываем его и в самом низу, перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''', найдем файл '''dream.ltx''', откроем его. В начале будет такая конструкция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
Удаляем sleep\, чтобы получилось так:&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделали мы это, чтоб игра не вылетала во время сна. Но о снах позже.&lt;br /&gt;
Итак, половина работы завершена. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\scripts''', находим файл '''bind_stalker.script''', открываем его, находим функцию '''''function actor_binder:net_destroy()''''' и в колбеках пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле находим функцию '''''function actor_binder:reinit()''''' и так же в колбеках пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, self.use_obj, self)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function 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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в этом файле находим функцию '''''function actor_binder:on_item_drop (obj)''''' и после неё пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- наш будущий скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c названием '''main_sleep.script''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function sleep(obj)&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводиться в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() -- сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale) -- основная функция&lt;br /&gt;
	basic_time_factor = level.get_time_factor () -- вычисление стандартной скорости течения времени&lt;br /&gt;
	db.actor:stop_talk() -- если игрок с кем-нибудь говорит, диалог закрывается. Здесь в ней нет смысла, но вдруг кому пригодится&lt;br /&gt;
	db.actor:hide_weapon() -- ГГ прячет оружие в рюкзак&lt;br /&gt;
	level.disable_input() -- отключение управления  &lt;br /&gt;
	sleep.starter (scale) -- запуск скрипта, перематывающего время &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale) -- скрипт перемотки на нужное время&lt;br /&gt;
	local factor = scale * 2650 -- вычисление времени &amp;quot;пробуждения&amp;quot;&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;) -- вызов функции перемотки&lt;br /&gt;
	level.set_time_factor(factor) -- собственно сама перемотка &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer() -- отвечает за сны&lt;br /&gt;
	level.set_time_factor(basic_time_factor) --остановка перемотки. basic_time_factor - стандартная скорость течения времени&lt;br /&gt;
	local dream = dream.sleep_video_name_callback () -- позволяет &amp;quot;показать&amp;quot; сон&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	game.start_tutorial(dream) -- показ одного из трёх снов&lt;br /&gt;
	else&lt;br /&gt;
	game.start_tutorial(&amp;quot;without_dream&amp;quot;)  -- &amp;quot;без сна&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- ГГ достаёт оружие&lt;br /&gt;
	level.enable_input() -- включается управление&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускается функция съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML-описателем===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', создаем файл с названием '''ui_sleep.xml''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', ищем файл '''ui_movies''', открываем и в самом конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''', ищем файл '''escape_dialog.script''', открываем его, ищем функцию '''''function give_weapon_to_actor (trader, actor)'''''&lt;br /&gt;
и после '''''dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)''''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Спальный мешок заспаунится в инвентаре после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
===Примечания===&lt;br /&gt;
&lt;br /&gt;
* Иконка у нас не спального мешка, а костюма бандита. Модель - мешок с песком.&lt;br /&gt;
&lt;br /&gt;
Вот, собственно, и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:&lt;br /&gt;
&lt;br /&gt;
[[Участник:Weanchester|Weanchester]] &lt;br /&gt;
&lt;br /&gt;
[[Участник:TuMaN|TuMaN]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
Отредактировал статью анонимный граммар-наци.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/SoC._Редактирование_торговцев Редактирование ассортимента торговцев]&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/Изменение_текстур Создание уникального значка для предмета]&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://dump.ru/file/5300856 Модель, текстура и значок спальника]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-27T08:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Авторы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для создания спального мешка, нам понадобятся эти файлы: &lt;br /&gt;
&lt;br /&gt;
'''В папке scripts'''&lt;br /&gt;
*'''bind_stalker.script'''&lt;br /&gt;
&lt;br /&gt;
*пустой файл  '''main_sleep.script''' &lt;br /&gt;
&lt;br /&gt;
'''В папке config/ui'''&lt;br /&gt;
*'''ui_movies.xml'''&lt;br /&gt;
&lt;br /&gt;
*пустой '''ui_sleep.xml'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/misc'''&lt;br /&gt;
*'''dream.ltx''' &lt;br /&gt;
&lt;br /&gt;
*'''items.ltx'''&lt;br /&gt;
&lt;br /&gt;
'''В папке config/texs/rus'''&lt;br /&gt;
*'''stringtable_enc_equipment.xml'''&lt;br /&gt;
&lt;br /&gt;
===Создание предмета &amp;quot;спальный мешок&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\misc''', ищем файл '''items.ltx''' и в конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка с песком&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоимость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работа с созданием спального мешка завершена.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''', находим файл '''string_table_enc_equipment.xml''', открываем его и в самом низу, перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''', найдем файл '''dream.ltx''', откроем его. В начале будет такая конструкция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
Удаляем '''sleep\''', чтобы получилось так:&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделали мы это, чтоб игра не вылетала во время сна. Но о снах позже.&lt;br /&gt;
Итак, половина работы завершена. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\scripts''', находим файл '''bind_stalker.script''', открываем его, находим функцию '''''function actor_binder:net_destroy()''''' и в колбеках пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле находим функцию '''''function actor_binder:reinit()''''' и так же в колбеках пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, self.use_obj, self)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function 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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в этом файле находим функцию '''''function actor_binder:on_item_drop (obj)''''' и после неё пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- наш будущий скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c названием '''main_sleep.script''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function sleep(obj)&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводиться в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() -- сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale) -- основная функция&lt;br /&gt;
	basic_time_factor = level.get_time_factor () -- вычисление стандартной скорости течения времени&lt;br /&gt;
	db.actor:stop_talk() -- если игрок с кем-нибудь говорит, диалог закрывается. Здесь в ней нет смысла, но вдруг кому пригодится&lt;br /&gt;
	db.actor:hide_weapon() -- ГГ прячет оружие в рюкзак&lt;br /&gt;
	level.disable_input() -- отключение управления  &lt;br /&gt;
	sleep.starter (scale) -- запуск скрипта, перематывающего время &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale) -- скрипт перемотки на нужное время&lt;br /&gt;
	local factor = scale * 2650 -- вычисление времени &amp;quot;пробуждения&amp;quot;&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;) -- вызов функции перемотки&lt;br /&gt;
	level.set_time_factor(factor) -- собственно сама перемотка &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer() -- отвечает за сны&lt;br /&gt;
	level.set_time_factor(basic_time_factor) --остановка перемотки. basic_time_factor - стандартная скорость течения времени&lt;br /&gt;
	local dream = dream.sleep_video_name_callback () -- позволяет &amp;quot;показать&amp;quot; сон&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then&lt;br /&gt;
	game.start_tutorial(dream) -- показ одного из трёх снов&lt;br /&gt;
	else&lt;br /&gt;
	game.start_tutorial(&amp;quot;without_dream&amp;quot;)  -- &amp;quot;без сна&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- ГГ достаёт оружие&lt;br /&gt;
	level.enable_input() -- включается управление&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускается функция съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML-описателем===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', создаем файл с названием '''ui_sleep.xml''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', ищем файл '''ui_movies''', открываем и в самом конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''', ищем файл '''escape_dialog.script''', открываем его, ищем функцию '''''function give_weapon_to_actor (trader, actor)'''''&lt;br /&gt;
и после '''''dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)''''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;sleep_bag&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Спальный мешок заспаунится в инвентаре после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
Если хотите расширить ассортимент торговцев спальным мешком, смотрите [[SoC._Редактирование_торговцев|эту]] статью.&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;
Статья создана: [[Участник:Weanchester]], [[Участник:TuMaN]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
Отредактировал статью анонимный граммар-наци.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/SoC._Редактирование_торговцев Редактирование ассортимента торговцев]&lt;br /&gt;
&lt;br /&gt;
[http://stalkerin.gameru.net/wiki/index.php/Изменение_текстур Создание уникального значка для предмета]&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://dump.ru/file/5300856 Модель, текстура и значок спальника]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>Обсуждение:SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-26T08:10:54Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Эй, посоны, шозанах? Две однотипные статьи: [[SoC. Спальный мешок]] и [[SoC. Создание спального мешка]]. Чем они различаются?&lt;br /&gt;
В одной ты можешь выбрать время сна от 1-го до 9-ти часов, в друой спишь без выбора 8 часов. А результат: делай хоть по какой при использовании получишь вылет.&lt;br /&gt;
Expression    : fatal error&lt;br /&gt;
Function      : CScriptEngine::lua_error&lt;br /&gt;
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp&lt;br /&gt;
Line          : 73&lt;br /&gt;
Description   : &amp;lt;no expression&amp;gt;&lt;br /&gt;
Arguments     : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:192: attempt to index global 'main_sleep' (a nil value)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weanchester: &amp;quot;Я исправил ошибку, но в этой ошибке постарались анонимные участники, я ее не допускал&amp;quot;!&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-26T08:06:59Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание предмета &amp;quot;спальный мешок&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\misc''', ищем файл '''items.ltx''' и в конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка с песком&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работа с созданием спального мешка завершена.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''', находим файл '''string_table_enc_equipment.xml''', открываем его и в самом низу, перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''', найдем файл '''dream.ltx''', откроем его. В начале будет такая конструкция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
Удаляем '''sleep\''', чтобы получилось так:&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделали мы это, чтоб игра не вылетала во время сна. Но о снах позже.&lt;br /&gt;
Итак, половина работы завершена. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\scripts''', находим файл '''bind_stalker.script''', открываем его, находим функцию '''''function actor_binder:net_destroy()''''' и в колбеках пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле находим функцию '''''function actor_binder:reinit()''''' и так же в колбеках пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, self.use_obj, self)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function 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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в этом файле находим функцию '''''function actor_binder:on_item_drop (obj)''''' и после неё пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- наш будущий скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c названием '''main_sleep.script''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function sleep(obj)&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводиться в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() -- сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML-описателем===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', создаем файл с названием '''ui_sleep.xml''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', ищем файл '''ui_movies''', открываем и в самом конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''', ищем файл '''escape_dialog.script''', открываем его, ищем функцию '''''function give_weapon_to_actor (trader, actor)'''''&lt;br /&gt;
и после '''''dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)''''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Спальный мешок заспаунится около Волка после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
Если хотите расширить ассортимент торговцев спальным мешком, смотрите [[SoC._Редактирование_торговцев|эту]] статью.&lt;br /&gt;
&lt;br /&gt;
===Примечания===&lt;br /&gt;
&lt;br /&gt;
* Иконка у нас не спального мешка, а костюма бандита. Модель - мешок картошки.&lt;br /&gt;
* Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот, собственно, и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана: [[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
Отредактировал статью анонимный граммар-наци.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B5%D0%B9</id>
		<title>Прототип динамических новостей</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B5%D0%B9"/>
				<updated>2011-07-10T07:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Создание прототипа динамических новостей &lt;br /&gt;
&lt;br /&gt;
В общем для этого нужно создать скрипт с названием типа ваше_название.script и нужно иметь чистый файл bind_stalker.script. Сделаем свой скрипт и запишем сюда нечто типо этого - &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
-- Прототип динамичеких новостей &lt;br /&gt;
local ant_spam ={ &lt;br /&gt;
&amp;quot;Кто носит фирму аммуниции найк, тот найдет артефактов клондайк!&amp;quot;, &lt;br /&gt;
&amp;quot;Кто носит фирму адидас тот кровососу выдернет глаз!&amp;quot;, &lt;br /&gt;
&amp;quot;Igromania - The Best, Igromania - Forever&amp;quot;, &lt;br /&gt;
&amp;quot;Смех Зоны - Самые смешные мультфильмы по сталкеру&amp;quot;, &lt;br /&gt;
&amp;quot;AP Productions - Лучший инфо-портал!&amp;quot;, &lt;br /&gt;
&amp;quot;Мод Antdiablon freeplay 2.0 - самый крутой&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
time_news = 0 -- переменная промежутка времени&lt;br /&gt;
&lt;br /&gt;
function time_update_spam() -- функция промежутка времени&lt;br /&gt;
 local time = time_global() -- переменная времени&lt;br /&gt;
  if time_news &amp;lt; time then&lt;br /&gt;
    time_news = time + 30000 -- время через которое будет вызываться сообщение&lt;br /&gt;
    ваше_название.update_spam()&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function update_spam()&lt;br /&gt;
  news_manager.send_tip(db.actor, (ant_spam[math.random(6)]), nil, nil, 30000) &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь зайдем в файл bind_stalker.script и после строки &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
xr_sound.update_actor()&lt;br /&gt;
&amp;lt;/lua&amp;gt; пишем &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
ваше_название.time_update_spam()&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
 Теперь в игре будет через несколько секунд приходить новости. Чем больше время в строке ''' time_news = time + 30000''', тем дольше будет промежуток.&lt;br /&gt;
Еще можно добавлять свои новости - после строки &amp;quot;Мод Antdiablon freeplay 2.0 - самый крутой&amp;quot; ставьте запятую и пишите свой текст на новой строке, в кавычках но в конце после кавычки ставьте запятую. а если это последний текст, то не ставьте.&lt;br /&gt;
&lt;br /&gt;
--[[Участник:AntdiabloN|AntdiabloN]] 05:36, 10 июля 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Промежуток времени -- [[Участник:Weanchester|Weanchester]] 10:34, 10 июля 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B5%D0%B9</id>
		<title>Прототип динамических новостей</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B5%D0%B9"/>
				<updated>2011-07-10T07:35:48Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: Создал промежуток времени&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Создание прототипа динамических новостей &lt;br /&gt;
&lt;br /&gt;
В общем для этого нужно создать скрипт с названием типа ваше_название.script и нужно иметь чистый файл bind_stalker.script. Сделаем свой скрипт и запишем сюда нечто типо этого - &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
-- Прототип динамичеких новостей &lt;br /&gt;
local ant_spam ={ &lt;br /&gt;
&amp;quot;Кто носит фирму аммуниции найк, тот найдет артефактов клондайк!&amp;quot;, &lt;br /&gt;
&amp;quot;Кто носит фирму адидас тот кровососу выдернет глаз!&amp;quot;, &lt;br /&gt;
&amp;quot;Igromania - The Best, Igromania - Forever&amp;quot;, &lt;br /&gt;
&amp;quot;Смех Зоны - Самые смешные мультфильмы по сталкеру&amp;quot;, &lt;br /&gt;
&amp;quot;AP Productions - Лучший инфо-портал!&amp;quot;, &lt;br /&gt;
&amp;quot;Мод Antdiablon freeplay 2.0 - самый крутой&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
time_news = 0 -- переменная промежутка времени&lt;br /&gt;
&lt;br /&gt;
function time_update_spam() -- функция промежутка времени&lt;br /&gt;
 local time = time_global() -- переменная времени&lt;br /&gt;
  if time_news &amp;lt; time then&lt;br /&gt;
    time_news = time + 30000 -- время через которое будет вызываться сообщение&lt;br /&gt;
    ваше_название.update_spam()&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function update_spam()&lt;br /&gt;
  news_manager.send_tip(db.actor, (ant_spam[math.random(6)]), nil, nil, 30000) &lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь зайдем в файл bind_stalker.script и после строки &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
xr_sound.update_actor()&lt;br /&gt;
&amp;lt;/lua&amp;gt; пишем &lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
ваше_название.time_update_spam()&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
 Теперь в игре будет через несколько секунд приходить новости. Чем больше время в строке ''' time_news = time + 30000''', тем дольше будет промежуток.&lt;br /&gt;
Еще можно добавлять свои новости - после строки &amp;quot;Мод Antdiablon freeplay 2.0 - самый крутой&amp;quot; ставьте запятую и пишите свой текст на новой строке, в кавычках но в конце после кавычки ставьте запятую. а если это последний текст то не ставьте.&lt;br /&gt;
&lt;br /&gt;
--[[Участник:AntdiabloN|AntdiabloN]] 05:36, 10 июля 2011 (UTC)&lt;br /&gt;
Промежуток времени -- [[Участник:Weanchester|Weanchester]] 10:34, 10 июля 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-07T08:07:30Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Название и описание */  -- Грамматика&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание предмета &amp;quot;спальный мешок&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\misc''', ищем файл '''items.ltx''' и в конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка с песком&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работа с созданием спального мешка завершена.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''', находим файл '''string_table_enc_equipment.xml''', открываем его и в самом низу, перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''', найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
Удаляем '''sleep\''', чтобы получилось так:&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сделали мы это, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершена. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию '''''function actor_binder:net_destroy()''''' и в колбеках пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же файле находим функцию '''''function actor_binder:reinit()''''' и так же в колбеках пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
self.object:set_callback(callback.use_object, self.use_obj, self)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function 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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так же в этом файле находим функцию '''''function actor_binder:on_item_drop (obj)''''' и после неё пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получиться так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названием '''main_sleep.script''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function sleep(obj)&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводиться в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML-описателем===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', создаем файл с названием '''ui_sleep.xml''', открываем его и пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
&lt;br /&gt;
Заходим в '''gamedata\config\ui''', ищем файл '''ui_movies''', открываем и в самом конце пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&lt;br /&gt;
&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&lt;br /&gt;
&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''', ищем файл '''escape_dialog.script''', открываем его, ищем функцию '''''function give_weapon_to_actor (trader, actor)'''''&lt;br /&gt;
и после '''''dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)''''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Спальный мешок заспаунится около Волка, после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
Если хотите расширить ассортимент торговцев спальным мешком, смотрите [[SoC._Редактирование_торговцев|эту]] статью.&lt;br /&gt;
&lt;br /&gt;
===Примечания===&lt;br /&gt;
&lt;br /&gt;
* Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
* Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот, собственно, и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана: [[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
Отредактировал статью анонимный граммар-наци.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T11:21:49Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Заключение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''escape_dialog.script''' открываем его, ищем функцию: function give_weapon_to_actor (trader, actor)&lt;br /&gt;
и после: dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)  пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок заспаунится около Волка, после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
Если хотите расширеть ассортимент торговцев спальным мешком смотрите [http://stalkerin.gameru.net/wiki/index.php/SoC._Редактирование_торговцев эту] статью&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T11:19:08Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Заключение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''escape_dialog.script''' открываем его, ищем функцию: function give_weapon_to_actor (trader, actor)&lt;br /&gt;
и после: dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)  пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок заспаунится около Волка, после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
Если хотите расширеть ассортимент торговцев спальным мещком смотрите[http://stalkerin.gameru.net/wiki/index.php/SoC._Редактирование_торговцев эту] статью&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T11:01:56Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Работа со скриптами */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон одного часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон трех часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон девяти часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим девять часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон девять часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''escape_dialog.script''' открываем его, ищем функцию: function give_weapon_to_actor (trader, actor)&lt;br /&gt;
и после: dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)  пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок заспаунится около Волка, после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:58:51Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Заключение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''escape_dialog.script''' открываем его, ищем функцию: function give_weapon_to_actor (trader, actor)&lt;br /&gt;
и после: dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;)  пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function give_weapon_to_actor (trader, actor)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_pm&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
	dialogs.relocate_item_section(trader, &amp;quot;ammo_9x18_fmj&amp;quot;, &amp;quot;in&amp;quot;)&lt;br /&gt;
    dialogs.relocate_item_section(trader, &amp;quot;wpn_knife&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, vector():set(-199.06, -19.80, -138.06), 53607, 57)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок заспаунится около Волка, после согласия отбить Шустрого у бандитов.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:30:44Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Примечание */ стилевые правки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Примечание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете идти тестировать!&lt;br /&gt;
&lt;br /&gt;
Еслт хотите свою иконку, смотритеhttp://www.stalkerin.gameru.net/wiki/index.php/Изменение%20текстур|эту статью&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:27:35Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Примечание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете идти тестировать!&lt;br /&gt;
&lt;br /&gt;
Еслт хотите свою иконку, смотрите[http://www.stalkerin.gameru.net/wiki/index.php/Изменение%20текстур|эту] статью&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:26:31Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Примечание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете идти тестировать!&lt;br /&gt;
&lt;br /&gt;
Еслт хотите свою иконку, смотрите[[http://www.stalkerin.gameru.net/wiki/index.php/Изменение%20текстур| эту]] статью&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:22:39Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Примечание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Уберите все комментарии, иначе будет вылет!&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете идти тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:06:00Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Авторы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете идти тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[[Участник:Weanchester]]&lt;br /&gt;
&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:04:45Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: /* Примечание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - мешок картошки.&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете идти тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[Участник:Weanchester|Weanchester`ом]]&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T10:02:20Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    main_sleep.sleep(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - шешок картошки.&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете идти тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[Участник:Weanchester|Weanchester`ом]]&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA</id>
		<title>SoC. Спальный мешок</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BF%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%88%D0%BE%D0%BA"/>
				<updated>2011-07-06T09:59:54Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: Новая страница: «Итак, сегодня мы создадим спальный мешок.  ===Создание самого мешка=== Заходим в '''gamedata\config\misc...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, сегодня мы создадим спальный мешок.&lt;br /&gt;
&lt;br /&gt;
===Создание самого мешка===&lt;br /&gt;
Заходим в '''gamedata\config\misc''' ищем файл '''items.ltx''' заходим в него и в конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;[sleep_bag]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\sleep_bag&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = physics\decor\bag_01.ogf ;модель мешка из под картошки&lt;br /&gt;
description		= enc_equipment_sleep_bag ;описание&lt;br /&gt;
&lt;br /&gt;
inv_name			= sleep_bag ;наименование&lt;br /&gt;
inv_name_short		= sleep_bag ;наименование&lt;br /&gt;
inv_weight			= 0.2 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 2 ;высота иконки&lt;br /&gt;
inv_grid_x			= 12 ;ширина по x&lt;br /&gt;
inv_grid_y			= 0 ; высота по y&lt;br /&gt;
cost				= 3000 ;стоймость&lt;br /&gt;
&lt;br /&gt;
; eatable item&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0.0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
; food item&lt;br /&gt;
animation_slot		= 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
Работа с созданием спального мешка '''завершена'''.&lt;br /&gt;
&lt;br /&gt;
===Название и описание===&lt;br /&gt;
Заходим в '''gamedata\config\text\rus''' находим файл '''string_table_enc_equipment.xml''' открываем его и в самом низу перед '''&amp;lt;/string_table&amp;gt;''' пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Спальный мешок&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string id=&amp;quot;enc_equipment_sleep_bag&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь зайдем в '''gamedata\config\misc''' найдем файл '''dream.ltx''' откроем его, в начале будет такая конструкция:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = sleep\aes_sky_red&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = sleep\esc_sky_01&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = sleep\Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt; &lt;br /&gt;
Тут нужно удалить '''sleep\''', чтобы получилось так:&lt;br /&gt;
&amp;lt;pre&amp;gt;;--------------------------------------------------------------------------------&lt;br /&gt;
;--- Regular dreams -------------------------------------------------------------&lt;br /&gt;
;--------------------------------------------------------------------------------&lt;br /&gt;
[regular_dream1]&lt;br /&gt;
dream       = aes_sky_red&lt;br /&gt;
probability = 5&lt;br /&gt;
type        = nightmare&lt;br /&gt;
&lt;br /&gt;
[regular_dream2]&lt;br /&gt;
dream       = esc_sky_01&lt;br /&gt;
probability = 10&lt;br /&gt;
type        = normal&lt;br /&gt;
&lt;br /&gt;
[regular_dream3]&lt;br /&gt;
dream       = Movie-003_Rats_OutPut-010&lt;br /&gt;
probability = 8&lt;br /&gt;
type        = happy&amp;lt;/pre&amp;gt;&lt;br /&gt;
Мы это удалили, чтоб игра не вылетала во время сна. Но о снах - позже.&lt;br /&gt;
Итак, половина работы завершенно. Приступим к '''главному'''.&lt;br /&gt;
&lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
Заходим в '''gamedata\scripts''' находим файл '''bind_stalker.script''', открываем его, находим функцию: function actor_binder:net_destroy()&lt;br /&gt;
и в колбеках пишем: self.object:set_callback(callback.use_object, nil) . Должно получится так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:net_destroy()&lt;br /&gt;
	if(actor_stats.remove_from_ranking~=nil)then&lt;br /&gt;
		actor_stats.remove_from_ranking(self.object:id())&lt;br /&gt;
	end&lt;br /&gt;
--	game_stats.shutdown ()&lt;br /&gt;
	db.del_actor(self.object)&lt;br /&gt;
&lt;br /&gt;
    sr_light.clean_up ()&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.article_info, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, nil)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, nil)&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, nil)&lt;br /&gt;
	self.object:set_callback(callback.task_state, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, nil)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, nil)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, nil)&lt;br /&gt;
	self.object:set_callback(callback.use_object, nil) -- вот наш колбек&lt;br /&gt;
&lt;br /&gt;
	if sr_psy_antenna.psy_antenna then&lt;br /&gt;
		sr_psy_antenna.psy_antenna:destroy()&lt;br /&gt;
		sr_psy_antenna.psy_antenna = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	xr_sound.stop_all_sound_object()&lt;br /&gt;
&lt;br /&gt;
	object_binder.net_destroy(self)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В этом же файле находим функцию: function actor_binder:reinit() и так же в колбеках пишем: self.object:set_callback(callback.use_object, self.use_obj, self) . Чтоб получилось так: &lt;br /&gt;
&amp;lt;lua&amp;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;
	self.object:set_callback(callback.use_object, self.use_obj, self) -- вот наш колбек&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Так же в этом файле находим функцию: function actor_binder:on_item_drop (obj) и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:use_obj(obj)&lt;br /&gt;
    cfs.use_object_sect(obj)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Должно получится так: &lt;br /&gt;
&amp;lt;lua&amp;gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
function actor_binder:use_obj(obj) -- функция на использование предмета&lt;br /&gt;
    main_sleep.sleep(obj) -- это будущий наш скрипт и функция в нем.&lt;br /&gt;
end&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в '''gamedata\scripts''' создаем файл c с названем '''main_sleep.script''' открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;function sleep(obj) -- функция&lt;br /&gt;
   if obj ~= nil then&lt;br /&gt;
      if obj:section() == &amp;quot;sleep_bag&amp;quot; then -- при использоваании спального мешка будет открываться выборочное меню&lt;br /&gt;
       local hud = sleep_ui(get_hud()) -- указываем на class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd)&lt;br /&gt;
         level.start_stop_menu(hud, true) -- открываем меню&lt;br /&gt;
	end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class &amp;quot;sleep_ui&amp;quot; (CUIScriptWnd) -- вот этот класс&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__init(owner) super()&lt;br /&gt;
	self.owner = owner&lt;br /&gt;
	self:InitControls()&lt;br /&gt;
	self:InitCallBacks()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:__finalize() end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitControls()&lt;br /&gt;
	self:Init(50,50,550,450)&lt;br /&gt;
&lt;br /&gt;
	local xml = CScriptXmlInit()&lt;br /&gt;
	xml:ParseFile(&amp;quot;ui_sleep.xml&amp;quot;) -- настройки будут воспроизводится в этом xml файле&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;back_video&amp;quot;, self) -- видео сзади&lt;br /&gt;
&lt;br /&gt;
	xml:InitStatic(&amp;quot;background&amp;quot;, self) -- рамка сзади&lt;br /&gt;
&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;caption&amp;quot;, self),&amp;quot;caption&amp;quot;) -- заголовок&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_1&amp;quot;, self),&amp;quot;btn_1&amp;quot;) -- кнопка на сон 1 часа&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_2&amp;quot;, self),&amp;quot;btn_2&amp;quot;) -- кнопка на сон 3 часов&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_3&amp;quot;, self),&amp;quot;btn_3&amp;quot;) -- кнопка на сон 9 часов&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then -- если здоровье упало, то&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_4&amp;quot;, self),&amp;quot;btn_4&amp;quot;) -- кнопка на выздоровления&lt;br /&gt;
    end&lt;br /&gt;
	self:Register(xml:Init3tButton(&amp;quot;btn_quit&amp;quot;, self),&amp;quot;btn_quit&amp;quot;) -- кнопка выхода&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:InitCallBacks()&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_1&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self) -- кнопка один идет на функцию sleep_ui1&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_2&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self) -- кнопка два идет на функцию sleep_ui2&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_3&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self) -- кнопка три идет на функцию sleep_ui3&lt;br /&gt;
	if db.actor.health &amp;lt; 0.9 then&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_4&amp;quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self) -- кнопка идет на sleep_ui4&lt;br /&gt;
    end&lt;br /&gt;
	self:AddCallback(&amp;quot;btn_quit&amp;quot;, ui_events.BUTTON_CLICKED, self.on_quit, self) -- кнопка идет на выход&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:OnKeyboard(dik, keyboard_action) -- функция на отмену сна при нажатии клавиши Esc&lt;br /&gt;
	CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)&lt;br /&gt;
	if keyboard_action == ui_events.WINDOW_KEY_PRESSED then&lt;br /&gt;
		if dik == DIK_keys.DIK_ESCAPE then&lt;br /&gt;
			self:on_quit()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD1 then&lt;br /&gt;
			self:sleep_ui1()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD2 then&lt;br /&gt;
			self:sleep_ui2()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD3 then&lt;br /&gt;
			self:sleep_ui3()&lt;br /&gt;
		end&lt;br /&gt;
		if dik == DIK_keys.DIK_NUMPAD4 then&lt;br /&gt;
			self:sleep_ui4()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:sleep_ui1() -- вот функция от кнопки один&lt;br /&gt;
		main_sleep.sleep_one_hour() -- спим один час&lt;br /&gt;
		self:on_quit() -- выход&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui2() -- вот функция от кнопки два&lt;br /&gt;
		main_sleep.sleep_three_hours() -- спим три часа&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui3() -- вот функция от кнопки три&lt;br /&gt;
		main_sleep.sleep_nine_hours() -- спим 9 часов&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
function sleep_ui:sleep_ui4() -- функция от кнопкм четыри&lt;br /&gt;
		main_sleep.sleep_health(scale) -- спим до выздоровления&lt;br /&gt;
		self:on_quit()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:check_game() -- проверка запущена ли игра&lt;br /&gt;
	local check = false&lt;br /&gt;
	if level.present() and (db.actor ~= nil) and db.actor:alive() then&lt;br /&gt;
		check = true&lt;br /&gt;
	end&lt;br /&gt;
	return check&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_ui:on_quit() -- вот кнопка выхода&lt;br /&gt;
    self:GetHolder():start_stop_menu(self, true)&lt;br /&gt;
    alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спаун мешка обратно&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
--  DreamMod v0.1 by Ab@dDon ---&lt;br /&gt;
--  Edited by Weanchester    ---&lt;br /&gt;
-- -----------------------------&lt;br /&gt;
&lt;br /&gt;
function sleep_one_hour() -- сон один час&lt;br /&gt;
	main_sleep.main(1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_three_hours() -- сон три часа&lt;br /&gt;
	main_sleep.main(3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_nine_hours() сон 9 часов&lt;br /&gt;
	main_sleep.main(9)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function sleep_health(scale) -- сон до выздоровления&lt;br /&gt;
	local sleep_time = (1 - db.actor.health)*5.00&lt;br /&gt;
	main_sleep.main(sleep_time)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function main(scale)&lt;br /&gt;
	basic_time_factor = level.get_time_factor()&lt;br /&gt;
	db.actor:stop_talk()&lt;br /&gt;
	db.actor:hide_weapon()&lt;br /&gt;
	level.disable_input()	&lt;br /&gt;
	main_sleep.starter(scale)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function starter(scale)&lt;br /&gt;
	local factor = scale * 2650&lt;br /&gt;
	game.start_tutorial(&amp;quot;time_scaling&amp;quot;)&lt;br /&gt;
	level.set_time_factor(factor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function dreamer()&lt;br /&gt;
	level.set_time_factor(basic_time_factor)&lt;br /&gt;
	local dream = dream.sleep_video_name_callback()&lt;br /&gt;
	if dream ~= &amp;quot;&amp;quot; then &lt;br /&gt;
        game.start_tutorial(dream)&lt;br /&gt;
   else &lt;br /&gt;
        game.start_tutorial(&amp;quot;without_dream&amp;quot;) &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stopper()&lt;br /&gt;
	level.add_cam_effector(&amp;quot;camera_effects\\dream.anm&amp;quot;, 1, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
	db.actor:restore_weapon() -- перезарядка оружия&lt;br /&gt;
	level.enable_input()&lt;br /&gt;
	level.add_pp_effector(&amp;quot;yantar_underground_psi.ppe&amp;quot;, 222, false, &amp;quot;&amp;quot;) -- эффект подъема&lt;br /&gt;
    if db.actor.health &amp;lt;= 0.60 then -- если хп упало меньше 60, то запускаем функцию съедания еды&lt;br /&gt;
    main_sleep.eat_food()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function eat_food() -- функция съедания еды&lt;br /&gt;
if db.actor:eat(db.actor:object(&amp;quot;conserva&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;bread&amp;quot;)) ~= nil or&lt;br /&gt;
   db.actor:eat(db.actor:object(&amp;quot;kolbasa&amp;quot;)) ~= nil then&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
С самым '''главным''' работа завершена. Переходим к предпоследнему пункту.&lt;br /&gt;
&lt;br /&gt;
===Работа с XML - описателем===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' создаем файл с названием '''ui_sleep.xml''' открываем его и пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;main&amp;gt;&lt;br /&gt;
	&amp;lt;back_video x=&amp;quot;10&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;320&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture&amp;gt;ui\credits_back_512_v10&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/back_video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;background x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;400&amp;quot; height=&amp;quot;340&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;350&amp;quot; height=&amp;quot;460&amp;quot;&amp;gt;ui\ui_dg_inventory&amp;lt;/texture&amp;gt;&lt;br /&gt;
	&amp;lt;/background&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;caption x=&amp;quot;175&amp;quot; y=&amp;quot;30&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Сон&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/caption&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_1 x=&amp;quot;72&amp;quot; y=&amp;quot;80&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 1 час&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_2 x=&amp;quot;72&amp;quot; y=&amp;quot;130&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 3 часа&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;btn_3 x=&amp;quot;72&amp;quot; y=&amp;quot;180&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать 9 часов&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;btn_4 x=&amp;quot;72&amp;quot; y=&amp;quot;230&amp;quot; width=&amp;quot;256&amp;quot; height=&amp;quot;35&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui\ui_btn_mm_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui\ui_btn_mm_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui\ui_btn_mm_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Спать до восстановления здоровья&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/btn_4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;btn_quit x=&amp;quot;270&amp;quot; y=&amp;quot;300&amp;quot; width=&amp;quot;117&amp;quot; height=&amp;quot;29&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;texture_e&amp;gt;ui_button_ordinary_e&amp;lt;/texture_e&amp;gt;&lt;br /&gt;
	&amp;lt;texture_t&amp;gt;ui_button_ordinary_t&amp;lt;/texture_t&amp;gt;&lt;br /&gt;
	&amp;lt;texture_h&amp;gt;ui_button_ordinary_h&amp;lt;/texture_h&amp;gt;&lt;br /&gt;
	    &amp;lt;text&amp;gt;Выход&amp;lt;/text&amp;gt;&lt;br /&gt;
        &amp;lt;/btn_quit&amp;gt;&lt;br /&gt;
&amp;lt;/main&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Итак кнопки описали. Последний пункт.&lt;br /&gt;
&lt;br /&gt;
===Сны===&lt;br /&gt;
Заходим в '''gamedata\config\ui''' ищем файл '''ui_movies''' открываем и в самом конце пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\scenario\video\dream_rats&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\movie-003_rats_output-010&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/Movie-003_Rats_OutPut-010&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;esc_sky_01&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\esc_sky_01&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/esc_sky_01&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;aes_sky_red&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;ambient\air_2.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;245&amp;quot;&amp;gt;sleep\aes_sky_red&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/aes_sky_red&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;without_dream&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\dolg\states\sleep\sleep_1.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;on&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.stopper&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/without_dream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;time_scaling&amp;gt;&lt;br /&gt;
		&amp;lt;play_each_item&amp;gt;1&amp;lt;/play_each_item&amp;gt;&lt;br /&gt;
		&amp;lt;global_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;auto_static x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;window_name&amp;gt;back&amp;lt;/window_name&amp;gt;&lt;br /&gt;
				&amp;lt;texture&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/auto_static&amp;gt;&lt;br /&gt;
		&amp;lt;/global_wnd&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;item type=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;sound&amp;gt;characters_voice\human_01\monolith\states\sleep\sleep_6.ogg&amp;lt;/sound&amp;gt;&lt;br /&gt;
			&amp;lt;pause_state&amp;gt;off&amp;lt;/pause_state&amp;gt;&lt;br /&gt;
			&amp;lt;can_be_stopped&amp;gt;off&amp;lt;/can_be_stopped&amp;gt;&lt;br /&gt;
			&amp;lt;function_on_stop&amp;gt;main_sleep.dreamer&amp;lt;/function_on_stop&amp;gt;&lt;br /&gt;
			&amp;lt;video_wnd x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot; stretch=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;texture x=&amp;quot;0&amp;quot; y=&amp;quot;1&amp;quot; width=&amp;quot;1024&amp;quot; height=&amp;quot;768&amp;quot;&amp;gt;intro\intro_back&amp;lt;/texture&amp;gt;&lt;br /&gt;
			&amp;lt;/video_wnd&amp;gt;&lt;br /&gt;
		&amp;lt;/item&amp;gt;&lt;br /&gt;
	&amp;lt;/time_scaling&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Со снами закончили.&lt;br /&gt;
&lt;br /&gt;
===Заключение===&lt;br /&gt;
Осталось добавить мешок в игру.&lt;br /&gt;
&lt;br /&gt;
Для этого заходим в '''gamedata\scripts''' ищем файл '''db.script''' открываем его, ищем функцию: function add_actor( obj )&lt;br /&gt;
и после: add_obj( obj ) пишем:&lt;br /&gt;
&amp;lt;pre&amp;gt;alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должно получится:&lt;br /&gt;
&amp;lt;lua&amp;gt;function add_actor( obj )&lt;br /&gt;
	actor = obj&lt;br /&gt;
	actor_proxy:net_spawn( obj )&lt;br /&gt;
	add_obj( obj )&lt;br /&gt;
        alife():create(&amp;quot;sleep_bag&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Спальный мешок появится в начале игры.&lt;br /&gt;
&lt;br /&gt;
===Примечание===&lt;br /&gt;
Иконка у нас не спального мешка, а костюм бандита. Модель - шешок картошки.&lt;br /&gt;
&lt;br /&gt;
Вот собственно и все! Можете идти тестировать!&lt;br /&gt;
&lt;br /&gt;
===Авторы===&lt;br /&gt;
Статья создана:[Участник:Weanchester|Weanchester`ом]]&lt;br /&gt;
Создал скрипт сна: Ab@dDon&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>SoC. Сообщение о смерти сталкеров</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2011-07-02T13:53:25Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: Исправил ошибку. Извиняюсь за невнемательность!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, первым делом в директории '''gamedata\scripts''' создайте файл с названием '''имя_вашего_файла.script'''&lt;br /&gt;
&lt;br /&gt;
1.Открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;] = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;] = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;] = &amp;quot;НИИ Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;] = &amp;quot;Подземелье НИИ Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;] = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;] = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;] = &amp;quot;Дикая территория&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;] = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;] = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08u_brainlab&amp;quot;] = &amp;quot;Лаборатория X-16&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10u_bunker&amp;quot;] = &amp;quot;Лаборатория X-10&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;] = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;] = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;] = &amp;quot;ЧАЭС&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;] = &amp;quot;ЧАЭС&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;] = &amp;quot;Саркофаг&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_control_monolith&amp;quot;] = &amp;quot;Управление Монолитом&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
			  &lt;br /&gt;
local community = {&lt;br /&gt;
	[&amp;quot;stalker&amp;quot;] = &amp;quot;Сталкер&amp;quot;,&lt;br /&gt;
	[&amp;quot;monolith&amp;quot;] = &amp;quot;Монолит&amp;quot;,&lt;br /&gt;
	[&amp;quot;military&amp;quot;] = &amp;quot;Военные&amp;quot;,&lt;br /&gt;
	[&amp;quot;bandit&amp;quot;] = &amp;quot;Бандит&amp;quot;,&lt;br /&gt;
	[&amp;quot;killer&amp;quot;] = &amp;quot;Наемник&amp;quot;,&lt;br /&gt;
	[&amp;quot;ecolog&amp;quot;] = &amp;quot;Эколог&amp;quot;,&lt;br /&gt;
	[&amp;quot;dolg&amp;quot;] = &amp;quot;Долг&amp;quot;,&lt;br /&gt;
	[&amp;quot;freedom&amp;quot;] = &amp;quot;Свобода&amp;quot;,&lt;br /&gt;
	[&amp;quot;zombied&amp;quot;] = &amp;quot;Зомбированный&amp;quot;,&lt;br /&gt;
	[&amp;quot;trader&amp;quot;] = &amp;quot;Торговец&amp;quot;&lt;br /&gt;
	        }&lt;br /&gt;
&lt;br /&gt;
function kill_npc(victim, who)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news = &amp;quot;\\n%c[255,160,160,160]Группировка: %c[default]&amp;quot;..community[victim:character_community()]..&amp;quot;\\n%c[255,160,160,160]Имя: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()]..&amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000)&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;] = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;] = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;] = &amp;quot;НИИ Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;] = &amp;quot;Подземелье НИИ Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;] = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;] = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;] = &amp;quot;Дикая территория&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;] = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;] = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08u_brainlab&amp;quot;] = &amp;quot;Лаборатория X-16&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10u_bunker&amp;quot;] = &amp;quot;Лаборатория X-10&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;] = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;] = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;] = &amp;quot;ЧАЭС&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;] = &amp;quot;ЧАЭС&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;] = &amp;quot;Саркофаг&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_control_monolith&amp;quot;] = &amp;quot;Управление Монолитом&amp;quot;&lt;br /&gt;
            } -- названия локаций&lt;br /&gt;
			  &lt;br /&gt;
local community = {&lt;br /&gt;
	[&amp;quot;stalker&amp;quot;] = &amp;quot;Сталкер&amp;quot;,&lt;br /&gt;
	[&amp;quot;monolith&amp;quot;] = &amp;quot;Монолит&amp;quot;,&lt;br /&gt;
	[&amp;quot;military&amp;quot;] = &amp;quot;Военные&amp;quot;,&lt;br /&gt;
	[&amp;quot;bandit&amp;quot;] = &amp;quot;Бандит&amp;quot;,&lt;br /&gt;
	[&amp;quot;killer&amp;quot;] = &amp;quot;Наемник&amp;quot;,&lt;br /&gt;
	[&amp;quot;ecolog&amp;quot;] = &amp;quot;Эколог&amp;quot;,&lt;br /&gt;
	[&amp;quot;dolg&amp;quot;] = &amp;quot;Долг&amp;quot;,&lt;br /&gt;
	[&amp;quot;freedom&amp;quot;] = &amp;quot;Свобода&amp;quot;,&lt;br /&gt;
	[&amp;quot;zombied&amp;quot;] = &amp;quot;Зомбированный&amp;quot;,&lt;br /&gt;
	[&amp;quot;trader&amp;quot;] = &amp;quot;Торговец&amp;quot;&lt;br /&gt;
	        } -- названия группировок&lt;br /&gt;
&lt;br /&gt;
function kill_npc(victim, who)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news = &amp;quot;\\n%c[255,160,160,160]Группировка: %c[default]&amp;quot;..community[victim:character_community()]..&amp;quot;\\n%c[255,160,160,160]Имя: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()]..&amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000) -- определяется какая группировка у убитого, его имя, локация&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее открываем '''xr_motivator.script''', &lt;br /&gt;
который находится в '''gamedata\scripts''', ищем функцию:&lt;br /&gt;
&lt;br /&gt;
function motivator_binder:death_callback(victim, who) &lt;br /&gt;
&lt;br /&gt;
и после пишем:&lt;br /&gt;
имя_вашего_файла.kill_npc(victim, who) в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function motivator_binder:death_callback(victim, who)&lt;br /&gt;
       имя_вашего_файла.kill_npc(victim, who)&lt;br /&gt;
	if who:id() == db.actor:id() then&lt;br /&gt;
		xr_statistic.addKillCount(self.object)&lt;br /&gt;
	end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Вот собственно и все!&lt;br /&gt;
Прим. от AntdiabloN&lt;br /&gt;
Можно сделать так чтобы при выводе инфы возможно было услышать звук принятого сообщения.&lt;br /&gt;
В конце файла с сообщениями о смерти пишем - &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;-- Звук сообщения&lt;br /&gt;
function news_sound()&lt;br /&gt;
local snd_obj&lt;br /&gt;
snd_obj = xr_sound.get_safe_sound_object([[device\pda\pda_tip]]) -- путь до звукового файла&lt;br /&gt;
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 1, vector(), 1.0)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и в функции news_of_npc_kill перед первым end пишем - имя_вашего_файла.news_sound()&lt;br /&gt;
&lt;br /&gt;
Пример как может быть выглядет функция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function kill_npc(victim, who)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news = &amp;quot;\\n%c[255,160,160,160]Группировка: %c[default]&amp;quot;..community[victim:character_community()]..&amp;quot;\\n%c[255,160,160,160]Имя: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()]..&amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000)&lt;br /&gt;
имя_вашего_файла.news_sound()&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
&lt;br /&gt;
Дополнил:&lt;br /&gt;
[[Участник:AntdiabloN]]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>Обсуждение:SoC. Сообщение о смерти сталкеров</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2011-06-27T14:35:25Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Я себе добавил не просто Сталкер, а указание к какой группировке относится данный погибший. Если кто подскажет как писать на этой странице столбиком, потому что у меня всё превращается в строчки и ничего не понятно, я добавлю пример кода. Потому что &amp;quot;Мёртвый сталкер&amp;quot; всё время пишет это не правильно, ведь военные например не сталкеры, экологи тоже.&lt;br /&gt;
&lt;br /&gt;
Weanchester: &amp;quot;Извини друг, я уже написал&amp;quot;&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>SoC. Сообщение о смерти сталкеров</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2011-06-27T14:31:35Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: Улучшен скрипт&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, первым делом в директории '''gamedata\scripts''' создайте файл с названием '''имя_вашего_файла.script'''&lt;br /&gt;
&lt;br /&gt;
1.Открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;] = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;] = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;] = &amp;quot;НИИ Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;] = &amp;quot;Подземелье НИИ Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;] = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;] = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;] = &amp;quot;Дикая территория&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;] = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;] = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08u_brainlab&amp;quot;] = &amp;quot;Лаборатория X-16&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10u_bunker&amp;quot;] = &amp;quot;Лаборатория X-10&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;] = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;] = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;] = &amp;quot;ЧАЭС&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;] = &amp;quot;ЧАЭС&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;] = &amp;quot;Саркофаг&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_control_monolith&amp;quot;] = &amp;quot;Управление Монолитом&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
			  &lt;br /&gt;
local community = {&lt;br /&gt;
	[&amp;quot;stalker&amp;quot;] = &amp;quot;Сталкер&amp;quot;,&lt;br /&gt;
	[&amp;quot;monolith&amp;quot;] = &amp;quot;Монолит&amp;quot;,&lt;br /&gt;
	[&amp;quot;military&amp;quot;] = &amp;quot;Военные&amp;quot;,&lt;br /&gt;
	[&amp;quot;bandit&amp;quot;] = &amp;quot;Бандит&amp;quot;,&lt;br /&gt;
	[&amp;quot;killer&amp;quot;] = &amp;quot;Наемник&amp;quot;,&lt;br /&gt;
	[&amp;quot;ecolog&amp;quot;] = &amp;quot;Эколог&amp;quot;,&lt;br /&gt;
	[&amp;quot;dolg&amp;quot;] = &amp;quot;Долг&amp;quot;,&lt;br /&gt;
	[&amp;quot;freedom&amp;quot;] = &amp;quot;Свобода&amp;quot;,&lt;br /&gt;
	[&amp;quot;zombied&amp;quot;] = &amp;quot;Зомбированный&amp;quot;,&lt;br /&gt;
	[&amp;quot;trader&amp;quot;] = &amp;quot;Торговец&amp;quot;&lt;br /&gt;
	        }&lt;br /&gt;
&lt;br /&gt;
function kill_npc(victim, who)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news = &amp;quot;\\n%c[255,160,160,160]Группировка: %c[default]&amp;quot;..community[victim:character_community()]..&amp;quot;\\n%c[255,160,160,160]Имя: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()]..&amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000)&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;] = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;] = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;] = &amp;quot;НИИ Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;] = &amp;quot;Подземелье НИИ Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;] = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;] = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;] = &amp;quot;Дикая территория&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;] = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;] = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08u_brainlab&amp;quot;] = &amp;quot;Лаборатория X-16&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10u_bunker&amp;quot;] = &amp;quot;Лаборатория X-10&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;] = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;] = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;] = &amp;quot;ЧАЭС&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;] = &amp;quot;ЧАЭС&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;] = &amp;quot;Саркофаг&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_control_monolith&amp;quot;] = &amp;quot;Управление Монолитом&amp;quot;&lt;br /&gt;
            } -- названия локаций&lt;br /&gt;
			  &lt;br /&gt;
local community = {&lt;br /&gt;
	[&amp;quot;stalker&amp;quot;] = &amp;quot;Сталкер&amp;quot;,&lt;br /&gt;
	[&amp;quot;monolith&amp;quot;] = &amp;quot;Монолит&amp;quot;,&lt;br /&gt;
	[&amp;quot;military&amp;quot;] = &amp;quot;Военные&amp;quot;,&lt;br /&gt;
	[&amp;quot;bandit&amp;quot;] = &amp;quot;Бандит&amp;quot;,&lt;br /&gt;
	[&amp;quot;killer&amp;quot;] = &amp;quot;Наемник&amp;quot;,&lt;br /&gt;
	[&amp;quot;ecolog&amp;quot;] = &amp;quot;Эколог&amp;quot;,&lt;br /&gt;
	[&amp;quot;dolg&amp;quot;] = &amp;quot;Долг&amp;quot;,&lt;br /&gt;
	[&amp;quot;freedom&amp;quot;] = &amp;quot;Свобода&amp;quot;,&lt;br /&gt;
	[&amp;quot;zombied&amp;quot;] = &amp;quot;Зомбированный&amp;quot;,&lt;br /&gt;
	[&amp;quot;trader&amp;quot;] = &amp;quot;Торговец&amp;quot;&lt;br /&gt;
	        } -- названия группировок&lt;br /&gt;
&lt;br /&gt;
function kill_npc(victim, who)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news = &amp;quot;\\n%c[255,160,160,160]Группировка: %c[default]&amp;quot;..community[victim:character_community()]..&amp;quot;\\n%c[255,160,160,160]Имя: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()]..&amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000) -- определяется какая группировка у убитого, его имя, локация&lt;br /&gt;
   end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее открываем '''xr_motivator.script''', &lt;br /&gt;
который находится в '''gamedata\scripts''', ищем функцию:&lt;br /&gt;
&lt;br /&gt;
function motivator_binder:death_callback(victim, who) &lt;br /&gt;
&lt;br /&gt;
и после пишем:&lt;br /&gt;
имя_вашего_файла.news_of_npc_kill(victim) в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function motivator_binder:death_callback(victim, who)&lt;br /&gt;
       имя_вашего_файла.news_of_npc_kill(victim)&lt;br /&gt;
	if who:id() == db.actor:id() then&lt;br /&gt;
		xr_statistic.addKillCount(self.object)&lt;br /&gt;
	end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Вот собственно и все!&lt;br /&gt;
Прим. от AntdiabloN&lt;br /&gt;
Можно сделать так чтобы при выводе инфы возможно было услышать звук принятого сообщения.&lt;br /&gt;
В конце файла с сообщениями о смерти пишем - &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;-- Звук сообщения&lt;br /&gt;
function news_sound()&lt;br /&gt;
local snd_obj&lt;br /&gt;
snd_obj = xr_sound.get_safe_sound_object([[device\pda\pda_tip]]) -- путь до звукового файла&lt;br /&gt;
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 1, vector(), 1.0)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и в функции news_of_npc_kill перед первым end пишем - имя_вашего_файла.news_sound()&lt;br /&gt;
&lt;br /&gt;
Пример как может быть выглядет функция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function kill_npc(victim, who)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news = &amp;quot;\\n%c[255,160,160,160]Группировка: %c[default]&amp;quot;..community[victim:character_community()]..&amp;quot;\\n%c[255,160,160,160]Имя: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()]..&amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000)&lt;br /&gt;
имя_вашего_файла.news_sound()&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
&lt;br /&gt;
Дополнил:&lt;br /&gt;
[[Участник:AntdiabloN]]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>SoC. Сообщение о смерти сталкеров</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2011-06-21T10:30:49Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, первым делом в директории '''gamedata\scripts''' создайте файл с названием '''имя_вашего_файла.script'''&lt;br /&gt;
&lt;br /&gt;
1.Открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;]     = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;]    = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;]   = &amp;quot;Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;]   = &amp;quot;Подземелье Агропрома&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;]    = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;]        = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;]     = &amp;quot;Росток&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;]   = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;]     = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;]      = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;]    = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;]    = &amp;quot;ЧАЭС 1&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;]  = &amp;quot;ЧАЭС 2&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;]  = &amp;quot;Саркофаг&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
&lt;br /&gt;
function news_of_npc_kill(victim)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000)&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;]     = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;]    = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;]   = &amp;quot;Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;]   = &amp;quot;Подземелье Агропрома&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;]    = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;]        = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;]     = &amp;quot;Росток&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;]   = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;]     = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;]      = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;]    = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;]    = &amp;quot;ЧАЭС 1&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;]  = &amp;quot;ЧАЭС 2&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;]  = &amp;quot;Саркофаг&amp;quot;&lt;br /&gt;
              } -- названия локаций&lt;br /&gt;
&lt;br /&gt;
function news_of_npc_kill(victim) -- функция&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000) -- определяется имя убитого NPC (Непися) и названия локаций.&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее открываем '''xr_motivator.script''', &lt;br /&gt;
который находится в '''gamedata\scripts''', ищем функцию:&lt;br /&gt;
&lt;br /&gt;
function motivator_binder:death_callback(victim, who) &lt;br /&gt;
&lt;br /&gt;
и после пишем:&lt;br /&gt;
имя_вашего_файла.news_of_npc_kill(victim) в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function motivator_binder:death_callback(victim, who)&lt;br /&gt;
       имя_вашего_файла.news_of_npc_kill(victim)&lt;br /&gt;
	if who:id() == db.actor:id() then&lt;br /&gt;
		xr_statistic.addKillCount(self.object)&lt;br /&gt;
	end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Вот собственно и все!&lt;br /&gt;
Прим. от AntdiabloN&lt;br /&gt;
Можно сделать так чтобы при выводе инфы возможно было услышать звук принятого сообщения.&lt;br /&gt;
В конце файла с сообщениями о смерти пишем - &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;-- Звук сообщения&lt;br /&gt;
function news_sound()&lt;br /&gt;
local snd_obj&lt;br /&gt;
snd_obj = xr_sound.get_safe_sound_object([[device\pda\pda_tip]]) -- путь до звукового файла&lt;br /&gt;
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 1, vector(), 1.0)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и в функции news_of_npc_kill перед первым end пишем - ваше_название_скрипта.news_sound()&lt;br /&gt;
&lt;br /&gt;
Пример как может быть выглядет функция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function news_of_npc_kill(victim)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_iconstotal&amp;quot;, Frect():set(0,752,83,47), 1000, 6000)&lt;br /&gt;
Ваше_название.news_sound()&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
&lt;br /&gt;
Дополнил:&lt;br /&gt;
[[Участник:AntdiabloN]]&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>SoC. Сообщение о смерти сталкеров</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2011-06-21T10:23:47Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, первым делом в директории '''gamedata\scripts''' создайте файл с названием '''имя_вашего_файла.script'''&lt;br /&gt;
&lt;br /&gt;
1.Открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;]     = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;]    = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;]   = &amp;quot;Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;]   = &amp;quot;Подземелье Агропрома&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;]    = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;]        = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;]     = &amp;quot;Росток&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;]   = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;]     = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;]      = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;]    = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;]    = &amp;quot;ЧАЭС 1&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;]  = &amp;quot;ЧАЭС 2&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;]  = &amp;quot;Саркофаг&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
&lt;br /&gt;
function news_of_npc_kill(victim)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000)&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;]     = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;]    = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;]   = &amp;quot;Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;]   = &amp;quot;Подземелье Агропрома&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;]    = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;]        = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;]     = &amp;quot;Росток&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;]   = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;]     = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;]      = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;]    = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;]    = &amp;quot;ЧАЭС 1&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;]  = &amp;quot;ЧАЭС 2&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;]  = &amp;quot;Саркофаг&amp;quot;&lt;br /&gt;
              } -- названия локаций&lt;br /&gt;
&lt;br /&gt;
function news_of_npc_kill(victim) -- функция&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000) -- определяется имя убитого NPC (Непися) и названия локаций.&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее открываем '''xr_motivator.script''', &lt;br /&gt;
который находится в '''gamedata\scripts''', ищем функцию:&lt;br /&gt;
&lt;br /&gt;
function motivator_binder:death_callback(victim, who) &lt;br /&gt;
&lt;br /&gt;
и после пишем:&lt;br /&gt;
имя_вашего_файла.news_of_npc_kill(victim) в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function motivator_binder:death_callback(victim, who)&lt;br /&gt;
       имя_вашего_файла.news_of_npc_kill(victim)&lt;br /&gt;
	if who:id() == db.actor:id() then&lt;br /&gt;
		xr_statistic.addKillCount(self.object)&lt;br /&gt;
	end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Вот собственно и все!&lt;br /&gt;
Прим. от AntdiabloN&lt;br /&gt;
Можно сделать так чтобы при выводе инфы возможно было услышать звук принятого сообщения.&lt;br /&gt;
В конце файла с сообщениями о смерти пишем - &lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;-- Звук сообщения&lt;br /&gt;
function news_sound()&lt;br /&gt;
local snd_obj&lt;br /&gt;
snd_obj = xr_sound.get_safe_sound_object([[device\pda\pda_tip]]) -- путь до звукового файла&lt;br /&gt;
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 1, vector(), 1.0)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и в функции news_of_npc_kill перед первым end пишем - ваше_название_скрипта.news_sound()&lt;br /&gt;
&lt;br /&gt;
Пример как может быть выглядет функция:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function news_of_npc_kill(victim)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_iconstotal&amp;quot;, Frect():set(0,752,83,47), 1000, 6000)&lt;br /&gt;
Ваше_название.news_sound()&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

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

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

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

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

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

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8</id>
		<title>Обсуждение:SoC. Создаем худ маски</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8"/>
				<updated>2011-05-29T17:10:24Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;а не спижжен ли у xstream &amp;amp; red75 этот скрипт?&lt;br /&gt;
&lt;br /&gt;
Weanchester: &amp;quot;Ответишь?&amp;quot;&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8</id>
		<title>Обсуждение:SoC. Создаем худ маски</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8"/>
				<updated>2011-05-29T12:10:03Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;а не спижжен ли у xstream &amp;amp; red75 этот скрипт?&lt;br /&gt;
&lt;br /&gt;
Weanchester: &amp;quot;У них скрипт написан профессионально.&lt;br /&gt;
Если у тебя есть '''АМК МОД 1.4''', то зайди в '''gamedata\scripts''', найди файл '''amk_mod.script''' открой и найди там функцию масок. Функция называется - &amp;quot;set_hud_tex(static,enabled)&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8</id>
		<title>Обсуждение:SoC. Создаем худ маски</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8"/>
				<updated>2011-05-29T11:26:00Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;а не спижжен ли у xstream &amp;amp; red75 этот скрипт?&lt;br /&gt;
&lt;br /&gt;
Weanchester: &amp;quot;У них скрипт написан профессионально.&lt;br /&gt;
Если у тебя есть '''АМК МОД 1.4''', то зайди в '''gamedata\scripts''', найди файл '''amk_mod.script''' открой и найди там функцию масок.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8</id>
		<title>Обсуждение:SoC. Создаем худ маски</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D0%BC_%D1%85%D1%83%D0%B4_%D0%BC%D0%B0%D1%81%D0%BA%D0%B8"/>
				<updated>2011-05-29T11:24:43Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;а не спижжен ли у xstream &amp;amp; red75 этот скрипт?&lt;br /&gt;
Weanchester: &amp;quot;У них скрипт написан профессионально. Если у тебя есть '''АМК МОД 1.4''', то зайди в '''gamedata\scripts''', найди файл '''amk_mod.script''' открой и найди там функцию масок.&amp;quot;&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

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

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

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

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

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

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

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>SoC. Сообщение о смерти сталкеров</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2011-05-21T17:33:16Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, первым делом в директории '''gamedata\scripts''' создайте файл с названием '''имя_вашего_файла.script'''&lt;br /&gt;
&lt;br /&gt;
1.Открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;]     = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;]    = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;]   = &amp;quot;Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;]   = &amp;quot;Подземелье Агропрома&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;]    = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;]        = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;]     = &amp;quot;Росток&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;]   = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;]     = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;]      = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;]    = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;]    = &amp;quot;ЧАЭС 1&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;]  = &amp;quot;ЧАЭС 2&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;]  = &amp;quot;Саркофаг&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
&lt;br /&gt;
function news_of_npc_kill(victim)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000)&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level_name = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;]     = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;]    = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;]   = &amp;quot;Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;]   = &amp;quot;Подземелье Агропрома&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;]    = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;]        = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;]     = &amp;quot;Росток&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;]   = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;]     = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;]      = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;]    = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;]    = &amp;quot;ЧАЭС 1&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;]  = &amp;quot;ЧАЭС 2&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;]  = &amp;quot;Саркофаг&amp;quot;&lt;br /&gt;
              } -- названия локаций&lt;br /&gt;
&lt;br /&gt;
function news_of_npc_kill(victim) -- функция&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level_name[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000) -- определяется имя убитого NPC (Непися) и названия локаций.&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее открываем '''xr_motivator.script''', &lt;br /&gt;
который находится в '''gamedata\scripts''', ищем функцию:&lt;br /&gt;
&lt;br /&gt;
function motivator_binder:death_callback(victim, who) &lt;br /&gt;
&lt;br /&gt;
и после пишем:&lt;br /&gt;
имя_вашего_файла.news_of_npc_kill(victim) в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function motivator_binder:death_callback(victim, who)&lt;br /&gt;
       имя_вашего_файла.news_of_npc_kill(victim)&lt;br /&gt;
	if who:id() == db.actor:id() then&lt;br /&gt;
		xr_statistic.addKillCount(self.object)&lt;br /&gt;
	end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Вот собственно и все!&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2</id>
		<title>SoC. Сообщение о смерти сталкеров</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8_%D1%81%D1%82%D0%B0%D0%BB%D0%BA%D0%B5%D1%80%D0%BE%D0%B2"/>
				<updated>2011-05-21T17:20:47Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, первым делом в директории '''gamedata\scripts''' создайте файл с названием '''имя_вашего_файла.script'''&lt;br /&gt;
&lt;br /&gt;
1.Открываем его и пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;]     = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;]    = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;]   = &amp;quot;Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;]   = &amp;quot;Подземелье Агропрома&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;]    = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;]        = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;]     = &amp;quot;Росток&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;]   = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;]     = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;]      = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;]    = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;]    = &amp;quot;ЧАЭС 1&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;]  = &amp;quot;ЧАЭС 2&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;]  = &amp;quot;Саркофаг&amp;quot;&lt;br /&gt;
              }&lt;br /&gt;
&lt;br /&gt;
function news_of_npc_kill(victim)&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000)&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь поясню:&lt;br /&gt;
&amp;lt;lua&amp;gt;local level = {&lt;br /&gt;
  [&amp;quot;l01_escape&amp;quot;]     = &amp;quot;Кордон&amp;quot;,&lt;br /&gt;
  [&amp;quot;l02_garbage&amp;quot;]    = &amp;quot;Свалка&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03_agroprom&amp;quot;]   = &amp;quot;Агропром&amp;quot;,&lt;br /&gt;
  [&amp;quot;l03u_agr_undergroun&amp;quot;]   = &amp;quot;Подземелье Агропрома&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04_darkvalley&amp;quot;] = &amp;quot;Тёмная долина&amp;quot;,&lt;br /&gt;
  [&amp;quot;l04u_labx18&amp;quot;]    = &amp;quot;Лаборатория X-18&amp;quot;,&lt;br /&gt;
  [&amp;quot;l05_bar&amp;quot;]        = &amp;quot;Бар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l06_rostok&amp;quot;]     = &amp;quot;Росток&amp;quot;,&lt;br /&gt;
  [&amp;quot;l07_military&amp;quot;]   = &amp;quot;Арм.склады&amp;quot;,&lt;br /&gt;
  [&amp;quot;l08_yantar&amp;quot;]     = &amp;quot;Янтарь&amp;quot;,&lt;br /&gt;
  [&amp;quot;l10_radar&amp;quot;]      = &amp;quot;Радар&amp;quot;,&lt;br /&gt;
  [&amp;quot;l11_pripyat&amp;quot;]    = &amp;quot;Припять&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia&amp;quot;]    = &amp;quot;ЧАЭС 1&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12_stancia_2&amp;quot;]  = &amp;quot;ЧАЭС 2&amp;quot;,&lt;br /&gt;
  [&amp;quot;l12u_sarcofag&amp;quot;]  = &amp;quot;Саркофаг&amp;quot;&lt;br /&gt;
              } -- названия локаций&lt;br /&gt;
&lt;br /&gt;
function news_of_npc_kill(victim) -- функция&lt;br /&gt;
  if victim and IsStalker(victim) then&lt;br /&gt;
local dead_news =&amp;quot;\\n%c[255,160,160,160]Погиб сталкер: %c[default]&amp;quot;..victim:character_name()..&amp;quot;\\n%c[255,160,160,160]Локация: %c[default]&amp;quot;..level[level.name()] or &amp;quot;&amp;quot;&lt;br /&gt;
db.actor:give_game_news(dead_news, &amp;quot;ui\\ui_icons_npc&amp;quot;, Frect():set(2,130,124,124), 1, 4000) -- определяется имя убитого NPC (Непися) и названия локаций.&lt;br /&gt;
     end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее открываем '''xr_motivator.script''', &lt;br /&gt;
который находится в '''gamedata\scripts''', ищем функцию:&lt;br /&gt;
&lt;br /&gt;
function motivator_binder:death_callback(victim, who) &lt;br /&gt;
&lt;br /&gt;
и после пишем:&lt;br /&gt;
имя_вашего_файла.news_of_npc_kill(victim) в итоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function motivator_binder:death_callback(victim, who)&lt;br /&gt;
       имя_вашего_файла.news_of_npc_kill(victim)&lt;br /&gt;
	if who:id() == db.actor:id() then&lt;br /&gt;
		xr_statistic.addKillCount(self.object)&lt;br /&gt;
	end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Вот собственно и все!&lt;br /&gt;
===Автор: Weanchester===&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2</id>
		<title>SoC. Создание ремонт комплектов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2"/>
				<updated>2011-05-20T17:19:26Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Создание ремонт комплекта===&lt;br /&gt;
Я опишу пример создания ремонт комплекта для костюмов, а для оружия в конце статьи сделаю пару заметок. Дело в том, что различия в создании ремонт комплектов почти нет.&lt;br /&gt;
 &lt;br /&gt;
1. Для начала нам нужно создать сам ремонт комплект, то есть предмет, а уже потом вешать на него функцию при использование. Для этого в config\misc\items.ltx в конец добавляем конфиг нашего предмета:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;[repair_kit_outfit]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency    =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\repair kit outfit&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс не трогаем!&lt;br /&gt;
cform                   = skeleton&lt;br /&gt;
visual                  = equipments\item_merger.ogf ;модель&lt;br /&gt;
description		= enc_equipment_repair_kit_outfit ;ссылка на описание в config\text\rus\....xml&lt;br /&gt;
&lt;br /&gt;
inv_name		= repair_kit_outfit_name ;ссылка на название в config\text\rus\....xml&lt;br /&gt;
inv_name_short		= repair_kit_outfit_name ;тоже самое, что и inv_name&lt;br /&gt;
inv_weight		= 6.0 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 1 ;высота иконки&lt;br /&gt;
inv_grid_x		= 8 ;координата x иконки&lt;br /&gt;
inv_grid_y		= 18 ;координата y иконки&lt;br /&gt;
cost			= 10000 ;цена&lt;br /&gt;
;всё ниже написанное не трогаем, оно нам и не нужно&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
animation_slot = 4&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. Теперь добавим название и описание. Для этого в файле config\text\rus\string_table_enc_equipment.xml в конец между &amp;lt;/string&amp;gt; и &amp;lt;/string_table&amp;gt; добавляем строки по аналогии с уже написсанными: &lt;br /&gt;
       &amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;repair_kit_outfit_name&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Ремонт комплект ДПК&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string id=&amp;quot;enc_equipment_repair_kit_outfit&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Новинка от Вани Болта - ремонт комплект ДПК для быстрой и эффективной починки костюмов. При его создании были учтены все недочёты и, следовательно, удалены. Благодаря улучшенным инструментам и деталям, а также облегченному весу весьма ценен. С его помощью можно увеличить состояние костюма до 100%, если он повреждён не больше 30%. Незаменимая вещь во время вылазки.&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Отлично, с предметом закончили. Теперь приступим к самому главному - скриптам. &lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
1.Вешаем функцию починки при использовании нашего ремонт комплекта. &lt;br /&gt;
Для этого в файле '''scripts\bind_stalker.script''' &lt;br /&gt;
находим функцию:&lt;br /&gt;
&lt;br /&gt;
function actor_binder:reinit() и после строки &lt;br /&gt;
&lt;br /&gt;
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем: &lt;br /&gt;
&lt;br /&gt;
self.object:set_callback(callback.use_object, self.repair_outfit_start, self)&lt;br /&gt;
&lt;br /&gt;
Теперь в папке scripts создаёте свой скриптовой фаил ваше_название_скрипта.script. Но! Название должно быть написано на английском языке и вместо пробелов должен стоять знак &amp;quot;_&amp;quot;. Опять открываем bind_stalker.script и в самый конец добавляем эту функцию: &lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:repair_outfit_start(obj, who)&lt;br /&gt;
    if obj then &lt;br /&gt;
        if obj:section() == &amp;quot;repair_kit_outfit&amp;quot; then --здесь указываем предмет, при использование которого будет срабатывать функция ниже&lt;br /&gt;
        ваше_название_скрипта.repair_outfit() --здесь указываем ссылку на функцию. Сначала скрипт, в котором она написана, потом название самой функции&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
2. Добавляем саму функцию ремонта. &lt;br /&gt;
Для этого в файле ваше_название_скрипта.script пишем: &lt;br /&gt;
&amp;lt;lua&amp;gt; -- Ремонт комплект для костюмов&lt;br /&gt;
function repair_outfit()&lt;br /&gt;
local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6)&lt;br /&gt;
    if item_s6 ~= nil and item_s6:condition() &amp;gt;=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%)&lt;br /&gt;
        item_s6:set_condition(1)&lt;br /&gt;
        local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]])&lt;br /&gt;
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
    elseif item_s6 == nil then --когда костюма нет &lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() &amp;lt;0.30 then --когда костюм нельзя чинить (состояние меньше 30%)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() ==1 then --когда костюм в отличном состояние&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Всё! Теперь заходим в игру и наслаждаемся. &lt;br /&gt;
===Небольшая заметка===&lt;br /&gt;
1. Чтобы сделать ремонт комплект для оружия проделываем тоже самое, только переименовываем всё вместо outfit на weapon и в функцие починки ставим слот 1 или 2 (оружейные слота) вместо 6 (слот костюмов).&lt;br /&gt;
Ещё нужно заменить переменную item_s6 например на item_s1 или item_s2.&lt;br /&gt;
&lt;br /&gt;
2. Число 0.30 - минимальное состояние костюма, следовательно его можно менять на любое вам угодное.&lt;br /&gt;
Простите за такое оформление, это моя вторая статья. В будущем, если будет больше свободного времени, постораюсь расписать все моменты подробно. Автор статьи: Бага.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2</id>
		<title>SoC. Создание ремонт комплектов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2"/>
				<updated>2011-05-20T17:18:53Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Создание ремонт комплекта===&lt;br /&gt;
Я опишу пример создания ремонт комплекта для костюмов, а для оружия в конце статьи сделаю пару заметок. Дело в том, что различия в создании ремонт комплектов почти нет.&lt;br /&gt;
 &lt;br /&gt;
1. Для начала нам нужно создать сам ремонт комплект, то есть предмет, а уже потом вешать на него функцию при использование. Для этого в config\misc\items.ltx в конец добавляем конфиг нашего предмета:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;[repair_kit_outfit]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency    =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\repair kit outfit&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс не трогаем!&lt;br /&gt;
cform                   = skeleton&lt;br /&gt;
visual                  = equipments\item_merger.ogf ;модель&lt;br /&gt;
description		= enc_equipment_repair_kit_outfit ;ссылка на описание в config\text\rus\....xml&lt;br /&gt;
&lt;br /&gt;
inv_name		= repair_kit_outfit_name ;ссылка на название в config\text\rus\....xml&lt;br /&gt;
inv_name_short		= repair_kit_outfit_name ;тоже самое, что и inv_name&lt;br /&gt;
inv_weight		= 6.0 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 1 ;высота иконки&lt;br /&gt;
inv_grid_x		= 8 ;координата x иконки&lt;br /&gt;
inv_grid_y		= 18 ;координата y иконки&lt;br /&gt;
cost			= 10000 ;цена&lt;br /&gt;
;всё ниже написанное не трогаем, оно нам и не нужно&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
animation_slot = 4&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. Теперь добавим название и описание. Для этого в файле config\text\rus\string_table_enc_equipment.xml в конец между &amp;lt;/string&amp;gt; и &amp;lt;/string_table&amp;gt; добавляем строки по аналогии с уже написсанными: &lt;br /&gt;
       &amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;repair_kit_outfit_name&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Ремонт комплект ДПК&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string id=&amp;quot;enc_equipment_repair_kit_outfit&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Новинка от Вани Болта - ремонт комплект ДПК для быстрой и эффективной починки костюмов. При его создании были учтены все недочёты и, следовательно, удалены. Благодаря улучшенным инструментам и деталям, а также облегченному весу весьма ценен. С его помощью можно увеличить состояние костюма до 100%, если он повреждён не больше 30%. Незаменимая вещь во время вылазки.&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Отлично, с предметом закончили. Теперь приступим к самому главному - скриптам. &lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
1.Вешаем функцию починки при использовании нашего ремонт комплекта. &lt;br /&gt;
Для этого в файле '''scripts\bind_stalker.script''' &lt;br /&gt;
находим функцию:&lt;br /&gt;
&lt;br /&gt;
function actor_binder:reinit() и после строки &lt;br /&gt;
&lt;br /&gt;
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем: &lt;br /&gt;
&lt;br /&gt;
self.object:set_callback(callback.use_object, self.repair_outfit_start, self)&lt;br /&gt;
Теперь в папке scripts создаёте свой скриптовой фаил ваше_название_скрипта.script. Но! Название должно быть написано на английском языке и вместо пробелов должен стоять знак &amp;quot;_&amp;quot;. Опять открываем bind_stalker.script и в самый конец добавляем эту функцию: &lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:repair_outfit_start(obj, who)&lt;br /&gt;
    if obj then &lt;br /&gt;
        if obj:section() == &amp;quot;repair_kit_outfit&amp;quot; then --здесь указываем предмет, при использование которого будет срабатывать функция ниже&lt;br /&gt;
        ваше_название_скрипта.repair_outfit() --здесь указываем ссылку на функцию. Сначала скрипт, в котором она написана, потом название самой функции&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
2. Добавляем саму функцию ремонта. &lt;br /&gt;
Для этого в файле ваше_название_скрипта.script пишем: &lt;br /&gt;
&amp;lt;lua&amp;gt; -- Ремонт комплект для костюмов&lt;br /&gt;
function repair_outfit()&lt;br /&gt;
local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6)&lt;br /&gt;
    if item_s6 ~= nil and item_s6:condition() &amp;gt;=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%)&lt;br /&gt;
        item_s6:set_condition(1)&lt;br /&gt;
        local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]])&lt;br /&gt;
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
    elseif item_s6 == nil then --когда костюма нет &lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() &amp;lt;0.30 then --когда костюм нельзя чинить (состояние меньше 30%)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() ==1 then --когда костюм в отличном состояние&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Всё! Теперь заходим в игру и наслаждаемся. &lt;br /&gt;
===Небольшая заметка===&lt;br /&gt;
1. Чтобы сделать ремонт комплект для оружия проделываем тоже самое, только переименовываем всё вместо outfit на weapon и в функцие починки ставим слот 1 или 2 (оружейные слота) вместо 6 (слот костюмов).&lt;br /&gt;
Ещё нужно заменить переменную item_s6 например на item_s1 или item_s2.&lt;br /&gt;
&lt;br /&gt;
2. Число 0.30 - минимальное состояние костюма, следовательно его можно менять на любое вам угодное.&lt;br /&gt;
Простите за такое оформление, это моя вторая статья. В будущем, если будет больше свободного времени, постораюсь расписать все моменты подробно. Автор статьи: Бага.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2</id>
		<title>SoC. Создание ремонт комплектов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2"/>
				<updated>2011-05-20T17:17:54Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Создание ремонт комплекта===&lt;br /&gt;
Я опишу пример создания ремонт комплекта для костюмов, а для оружия в конце статьи сделаю пару заметок. Дело в том, что различия в создании ремонт комплектов почти нет. &lt;br /&gt;
1. Для начала нам нужно создать сам ремонт комплект, то есть предмет, а уже потом вешать на него функцию при использование. Для этого в config\misc\items.ltx в конец добавляем конфиг нашего предмета:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;[repair_kit_outfit]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency    =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\repair kit outfit&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс не трогаем!&lt;br /&gt;
cform                   = skeleton&lt;br /&gt;
visual                  = equipments\item_merger.ogf ;модель&lt;br /&gt;
description		= enc_equipment_repair_kit_outfit ;ссылка на описание в config\text\rus\....xml&lt;br /&gt;
&lt;br /&gt;
inv_name		= repair_kit_outfit_name ;ссылка на название в config\text\rus\....xml&lt;br /&gt;
inv_name_short		= repair_kit_outfit_name ;тоже самое, что и inv_name&lt;br /&gt;
inv_weight		= 6.0 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 1 ;высота иконки&lt;br /&gt;
inv_grid_x		= 8 ;координата x иконки&lt;br /&gt;
inv_grid_y		= 18 ;координата y иконки&lt;br /&gt;
cost			= 10000 ;цена&lt;br /&gt;
;всё ниже написанное не трогаем, оно нам и не нужно&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
animation_slot = 4&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. Теперь добавим название и описание. Для этого в файле config\text\rus\string_table_enc_equipment.xml в конец между &amp;lt;/string&amp;gt; и &amp;lt;/string_table&amp;gt; добавляем строки по аналогии с уже написсанными: &lt;br /&gt;
       &amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;repair_kit_outfit_name&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Ремонт комплект ДПК&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string id=&amp;quot;enc_equipment_repair_kit_outfit&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Новинка от Вани Болта - ремонт комплект ДПК для быстрой и эффективной починки костюмов. При его создании были учтены все недочёты и, следовательно, удалены. Благодаря улучшенным инструментам и деталям, а также облегченному весу весьма ценен. С его помощью можно увеличить состояние костюма до 100%, если он повреждён не больше 30%. Незаменимая вещь во время вылазки.&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Отлично, с предметом закончили. Теперь приступим к самому главному - скриптам. &lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
1. &amp;lt;pre&amp;gt;Вешаем функцию починки при использовании нашего ремонт комплекта. &lt;br /&gt;
Для этого в файле '''scripts\bind_stalker.script''' &lt;br /&gt;
находим функцию :&lt;br /&gt;
function actor_binder:reinit() &lt;br /&gt;
и после строки &lt;br /&gt;
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем: &lt;br /&gt;
self.object:set_callback(callback.use_object, self.repair_outfit_start, self)&lt;br /&gt;
Теперь в папке scripts создаёте свой скриптовой фаил ваше_название_скрипта.script. Но! Название должно быть написано на английском языке и вместо пробелов должен стоять знак &amp;quot;_&amp;quot;. Опять открываем bind_stalker.script и в самый конец добавляем эту функцию&amp;lt;/pre&amp;gt;: &lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:repair_outfit_start(obj, who)&lt;br /&gt;
    if obj then &lt;br /&gt;
        if obj:section() == &amp;quot;repair_kit_outfit&amp;quot; then --здесь указываем предмет, при использование которого будет срабатывать функция ниже&lt;br /&gt;
        ваше_название_скрипта.repair_outfit() --здесь указываем ссылку на функцию. Сначала скрипт, в котором она написана, потом название самой функции&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
2. Добавляем саму функцию ремонта. &lt;br /&gt;
Для этого в файле ваше_название_скрипта.script пишем: &lt;br /&gt;
&amp;lt;lua&amp;gt; -- Ремонт комплект для костюмов&lt;br /&gt;
function repair_outfit()&lt;br /&gt;
local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6)&lt;br /&gt;
    if item_s6 ~= nil and item_s6:condition() &amp;gt;=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%)&lt;br /&gt;
        item_s6:set_condition(1)&lt;br /&gt;
        local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]])&lt;br /&gt;
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
    elseif item_s6 == nil then --когда костюма нет &lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() &amp;lt;0.30 then --когда костюм нельзя чинить (состояние меньше 30%)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() ==1 then --когда костюм в отличном состояние&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Всё! Теперь заходим в игру и наслаждаемся. &lt;br /&gt;
===Небольшая заметка===&lt;br /&gt;
1. Чтобы сделать ремонт комплект для оружия проделываем тоже самое, только переименовываем всё вместо outfit на weapon и в функцие починки ставим слот 1 или 2 (оружейные слота) вместо 6 (слот костюмов).&lt;br /&gt;
Ещё нужно заменить переменную item_s6 например на item_s1 или item_s2.&lt;br /&gt;
&lt;br /&gt;
2. Число 0.30 - минимальное состояние костюма, следовательно его можно менять на любое вам угодное.&lt;br /&gt;
Простите за такое оформление, это моя вторая статья. В будущем, если будет больше свободного времени, постораюсь расписать все моменты подробно. Автор статьи: Бага.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2</id>
		<title>SoC. Создание ремонт комплектов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2"/>
				<updated>2011-05-20T17:16:58Z</updated>
		
		<summary type="html">&lt;p&gt;Weanchester: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Создание ремонт комплекта===&lt;br /&gt;
Я опишу пример создания ремонт комплекта для костюмов, а для оружия в конце статьи сделаю пару заметок. Дело в том, что различия в создании ремонт комплектов почти нет. &lt;br /&gt;
1. Для начала нам нужно создать сам ремонт комплект, то есть предмет, а уже потом вешать на него функцию при использование. Для этого в config\misc\items.ltx в конец добавляем конфиг нашего предмета:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;[repair_kit_outfit]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency    =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\repair kit outfit&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс не трогаем!&lt;br /&gt;
cform                   = skeleton&lt;br /&gt;
visual                  = equipments\item_merger.ogf ;модель&lt;br /&gt;
description		= enc_equipment_repair_kit_outfit ;ссылка на описание в config\text\rus\....xml&lt;br /&gt;
&lt;br /&gt;
inv_name		= repair_kit_outfit_name ;ссылка на название в config\text\rus\....xml&lt;br /&gt;
inv_name_short		= repair_kit_outfit_name ;тоже самое, что и inv_name&lt;br /&gt;
inv_weight		= 6.0 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 1 ;высота иконки&lt;br /&gt;
inv_grid_x		= 8 ;координата x иконки&lt;br /&gt;
inv_grid_y		= 18 ;координата y иконки&lt;br /&gt;
cost			= 10000 ;цена&lt;br /&gt;
;всё ниже написанное не трогаем, оно нам и не нужно&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
animation_slot = 4&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. Теперь добавим название и описание. Для этого в файле config\text\rus\string_table_enc_equipment.xml в конец между &amp;lt;/string&amp;gt; и &amp;lt;/string_table&amp;gt; добавляем строки по аналогии с уже написсанными: &lt;br /&gt;
       &amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;repair_kit_outfit_name&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Ремонт комплект ДПК&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string id=&amp;quot;enc_equipment_repair_kit_outfit&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Новинка от Вани Болта - ремонт комплект ДПК для быстрой и эффективной починки костюмов. При его создании были учтены все недочёты и, следовательно, удалены. Благодаря улучшенным инструментам и деталям, а также облегченному весу весьма ценен. С его помощью можно увеличить состояние костюма до 100%, если он повреждён не больше 30%. Незаменимая вещь во время вылазки.&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Отлично, с предметом закончили. Теперь приступим к самому главному - скриптам. &lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
1. Вешаем функцию починки при использовании нашего ремонт комплекта. &lt;br /&gt;
Для этого в файле '''scripts\bind_stalker.script''' &lt;br /&gt;
находим функцию :&lt;br /&gt;
function actor_binder:reinit() &lt;br /&gt;
и после строки &lt;br /&gt;
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем: &lt;br /&gt;
self.object:set_callback(callback.use_object, self.repair_outfit_start, self)&lt;br /&gt;
Теперь в папке scripts создаёте свой скриптовой фаил ваше_название_скрипта.script. Но! Название должно быть написано на английском языке и вместо пробелов должен стоять знак &amp;quot;_&amp;quot;. Опять открываем bind_stalker.script и в самый конец добавляем эту функцию: &lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:repair_outfit_start(obj, who)&lt;br /&gt;
    if obj then &lt;br /&gt;
        if obj:section() == &amp;quot;repair_kit_outfit&amp;quot; then --здесь указываем предмет, при использование которого будет срабатывать функция ниже&lt;br /&gt;
        ваше_название_скрипта.repair_outfit() --здесь указываем ссылку на функцию. Сначала скрипт, в котором она написана, потом название самой функции&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
2. Добавляем саму функцию ремонта. &lt;br /&gt;
Для этого в файле ваше_название_скрипта.script пишем: &lt;br /&gt;
&amp;lt;lua&amp;gt; -- Ремонт комплект для костюмов&lt;br /&gt;
function repair_outfit()&lt;br /&gt;
local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6)&lt;br /&gt;
    if item_s6 ~= nil and item_s6:condition() &amp;gt;=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%)&lt;br /&gt;
        item_s6:set_condition(1)&lt;br /&gt;
        local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]])&lt;br /&gt;
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
    elseif item_s6 == nil then --когда костюма нет &lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() &amp;lt;0.30 then --когда костюм нельзя чинить (состояние меньше 30%)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() ==1 then --когда костюм в отличном состояние&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Всё! Теперь заходим в игру и наслаждаемся. &lt;br /&gt;
===Небольшая заметка===&lt;br /&gt;
1. Чтобы сделать ремонт комплект для оружия проделываем тоже самое, только переименовываем всё вместо outfit на weapon и в функцие починки ставим слот 1 или 2 (оружейные слота) вместо 6 (слот костюмов).&lt;br /&gt;
Ещё нужно заменить переменную item_s6 например на item_s1 или item_s2.&lt;br /&gt;
&lt;br /&gt;
2. Число 0.30 - минимальное состояние костюма, следовательно его можно менять на любое вам угодное.&lt;br /&gt;
Простите за такое оформление, это моя вторая статья. В будущем, если будет больше свободного времени, постораюсь расписать все моменты подробно. Автор статьи: Бага.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>Weanchester</name></author>	</entry>

	</feed>