<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Book Mod</title>
		<link>http://book-mod.3dn.ru/</link>
		<description>Форум</description>
		<lastBuildDate>Sat, 27 Mar 2021 04:28:58 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://book-mod.3dn.ru/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Вопросы по модострою</title>
			<link>https://book-mod.3dn.ru/forum/5-205-1</link>
			<pubDate>Sat, 27 Mar 2021 04:28:58 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: andrejanosov2017&lt;br /&gt;Количество ответов: 1161</description>
			<content:encoded>Так случается, что срочно нужен какой-либо скрипт, гайд или просто помощь знающих людей в вопросе модостроя. И тут к вам на помощь придет эта тема. На любой вопрос мы найдем ответ. &lt;span style=&quot;color:red&quot;&gt;И не будем парить мозг&lt;/span&gt;, как некоторые товарищи из АМК-форума. Небольшая просьба: указывайте игру (ТЧ, ЧН, ЗП) и патч. + установленные моды (если есть). &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt; (&lt;span class=&quot;qName&quot;&gt;&lt;!--qn--&gt;Wo1fRam&lt;!--/qn--&gt;&lt;/span&gt;)&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;Вдогонку к посту Админа. &lt;br /&gt; Не пишите что-то вроде: &quot;Я делаю мод и у меня вылетает&quot;. Мы тут не экстрасенсы. &lt;br /&gt; Опишите что именно вы делали, как делали, предоставьте коды/файлы и лог вылета (если таковой имеется). Пишите грамотно! Используйте заглавные буквы и знаки препинания. &lt;br /&gt; И помните, что правильно заданный вопрос - половина ответа. &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-205-1</guid>
		</item>
		<item>
			<title>Как изменить длину палочки прицела</title>
			<link>https://book-mod.3dn.ru/forum/5-496-1</link>
			<pubDate>Tue, 05 May 2020 21:15:09 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Заходим в папку gamedata&amp;#92;configs&amp;#92;system.ltx и отредактируем эти строки:&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;&amp;#91;hud_cursor]&lt;br /&gt;;все размерv в процентах от длинv экрана&lt;br /&gt;cross_length = 0.015 ;длина &quot;палочки&quot; прицела&lt;br /&gt;min_radius = 0.0 ;минимальнvй радиус прицела (при нулевой дисперсии&amp;#41;&lt;br /&gt;max_radius = 1.0 ;максимальнvй радиус&lt;br /&gt;radius_lerp_speed = 0.08 ;скорость интерполљции положений прицела&lt;br /&gt;cross_color = 0.7,0.7,0.7,0.5 ;цвет прицела&lt;br /&gt;disp_scale = 0.08 ;масштаб прицела (относительно радиан&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Если нужно прицел вовсе отключить, то заходим в папку с сохранениями (у меня в Win10 это C:&amp;#92;Users&amp;#92;WurDalaK&amp;#92;Documents&amp;#92;Stalker-SHOC), находим файл user.ltx и в нем строки&lt;br /&gt;&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;&quot;&gt;&lt;!--uzc--&gt;hud_crosshair on&lt;br /&gt;hud_crosshair_dist on&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;Меняем on на off и получаем отсутствие перекрестия</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-496-1</guid>
		</item>
		<item>
			<title>Ищу файлы / моды / аддоны</title>
			<link>https://book-mod.3dn.ru/forum/5-333-1</link>
			<pubDate>Wed, 17 Sep 2014 14:04:08 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Помощь в поиске&lt;br /&gt;Автор темы: Возрожденный&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 16</description>
			<content:encoded>&lt;span style=&quot;color:green&quot;&gt;&lt;div align=&quot;center&quot;&gt;Со мной часто случалось, что я не мог найти какой-либо мод или нужную модель. Приходилось писать свои крики о помощи в темах для свободного общения. Немного подумав, я решил, что нужно создать отдельную тему для поиска файлов/модов и т.д. Итак, в этой теме можно попросить найти и выложить какой-либо файл, если вдруг по какой-то причине Вы его сами найти не можете. При запросе советую указывать, для какой игры (ТЧ, ЧН, ЗП) нужен мод/файл/модель.&lt;/div&gt;&lt;/span&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>Возрожденный</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-333-1</guid>
		</item>
		<item>
			<title>Создание бронежилета</title>
			<link>https://book-mod.3dn.ru/forum/5-327-1</link>
			<pubDate>Wed, 05 Feb 2014 13:10:56 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Странно, что я раньше не добавил&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>В данном примере мы будем добавлять новый костюм со 100% защитой от всего &lt;img src=&quot;http://s51.ucoz.net/sm/23/biggrin.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;biggrin&quot; /&gt; &lt;br /&gt; Совершенно новый костюм добавлять не будем, возьмём за основу существующий костюм сталкера. &lt;br /&gt; Нам понадобится любой текстовый редактор (Notepad++, Блокнот, WordPad или что там у Вас), &lt;br /&gt; Фотошоп + dds плагин (для работы с текстурами и иконками) и файлы игры:&lt;ul&gt;&lt;li&gt;gamedata&amp;#92;config&amp;#92;misc&amp;#92;outfit.ltx — здесь добавим наш костюм и его хар-ки &lt;br /&gt; &lt;li&gt;gamedata&amp;#92;config&amp;#92;misc&amp;#92;trader_trader.ltx — здесь выдадим его торговцу на продажу &lt;br /&gt; &lt;li&gt;gamedata&amp;#92;config&amp;#92;text&amp;#92;rus&amp;#92;string_table_outfit.xml — здесь впишем название и описание костюма в игре&lt;/ul&gt;Итак, по порядку. Открываем при помощи текстового редактора файл outfit.ltx. &lt;br /&gt; Берём любой костюм, копируем всю его секцию и вставляем, например, в конец файла. Вот теперь и приступим: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;;--------------------------------------------------------------------------------------------- &lt;br /&gt; ;&amp;nbsp;&amp;nbsp;КОСТЮМ ЧАКА НОРРИСА &lt;br /&gt; ;--------------------------------------------------------------------------------------------- &lt;br /&gt; &amp;#91;chuck_norris_outfit]:outfit_base&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; имя секции нашей брони &lt;br /&gt; GroupControlSection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= spawn_group &lt;br /&gt; discovery_dependency = &lt;br /&gt; $spawn&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;outfit&amp;#92;chuck_norris_outfit&quot; &lt;br /&gt; ;$prefetch&amp;nbsp;&amp;nbsp;= 32 &lt;br /&gt; class&amp;nbsp;&amp;nbsp;= E_STLK &lt;br /&gt; cform&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= skeleton &lt;br /&gt; visual&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= equipments&amp;#92;novice_suit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; модель костюма, лежащего на земле (обычно в папке gamedata&amp;#92;meshes&amp;#92;equipments&amp;#41; &lt;br /&gt; actor_visual&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= actors&amp;#92;hero&amp;#92;stalker_novice.ogf ; модель игрока, одетого в костюм (обычно в папке gamedata&amp;#92;meshes&amp;#92;actor&amp;#92;hero&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ef_equipment_type = 3 ; предпочтительность одевания брони НПС (не используется&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; inv_name&amp;nbsp;&amp;nbsp;&amp;nbsp;= chuck_norris_outfit ; ссылка на строку, содержащую название костюма в файле string_table_outfit.xml &lt;br /&gt; inv_name_short&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= chuck_norris_outfit ; ссылка на строку с названием костюма на земле &lt;br /&gt; description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= chuck_norris_outfit_desc ; ссылка на строку&amp;nbsp;&amp;nbsp;описанием костюма &lt;br /&gt; inv_weight&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 2.0 ; вес костюма в кг &lt;br /&gt; inv_grid_x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 12 ; координата X левого верхнего угла иконки инвентаря из файла gamedata&amp;#92;textures&amp;#92;ui&amp;#92;ui_icon_equipment.dds &lt;br /&gt; inv_grid_y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 21 ; координата Y левого верхнего угла иконки инвентаря из файла gamedata&amp;#92;textures&amp;#92;ui&amp;#92;ui_icon_equipment.dds &lt;br /&gt; inv_grid_width&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 2 ; размер иконки по оси X &lt;br /&gt; inv_grid_height&amp;nbsp;&amp;nbsp;&amp;nbsp;= 2 ; размер иконки по оси Y &lt;br /&gt; full_icon_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= npc_icon_novice_outfit ; имя иконки &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; cost&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 100000 ; базовая цена костюма &lt;br /&gt; slot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 6 ; слот, на который цепляем костюм (для брони всегда 6&amp;#41; &lt;br /&gt; full_scale_icon&amp;nbsp;&amp;nbsp;&amp;nbsp;= 6,6 ; иконка игрока в полный рост в инвентаре (обычно из файла gamedata&amp;#92;textures&amp;#92;ui&amp;#92;ui_icons_***.dds&amp;#41; &lt;br /&gt; nightvision_sect&amp;nbsp;&amp;nbsp;= effector_nightvision_good ; тип ПНВ (смотрим секции &amp;#91;effector_nightvision_***] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; в файле gamedata&amp;#92;config&amp;#92;misc&amp;#92;postprocess.ltx&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; если ПНВ не нужно, то убираем/комментируем строчку &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; sprint_allowed = true ; можно ли бегать в костюме (true&amp;#41; или нет (false&amp;#41; &lt;br /&gt; bones_koeff_protection = exo_helmet_damage &lt;br /&gt; additional_inventory_weight&amp;nbsp;&amp;nbsp;= 1000 ; на сколько увеличится максимальный переносимый вес в кг &lt;br /&gt; additional_inventory_weight2 = 1000 ; на сколько увеличится максимальный переносимый вес в кг &lt;br /&gt; immunities_sect&amp;nbsp;&amp;nbsp;&amp;nbsp;= sect_chuck_norris_outfit_immunities ; ссылка на секцию износостойкости костюма (см.ниже&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; показатели защиты игрока нашим костюмом (от 0 (это 0%&amp;#41; до 0.99 (это 100%&amp;#41;&amp;#41; &lt;br /&gt; burn_protection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.99 ; ожог &lt;br /&gt; strike_protection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.99 ; удар &lt;br /&gt; shock_protection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.99 ; электрошок &lt;br /&gt; wound_protection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.99 ; разрыв &lt;br /&gt; radiation_protection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.99 ; радиация &lt;br /&gt; telepatic_protection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.99 ; телепатия &lt;br /&gt; chemical_burn_protection = 0.99 ; химический ожог &lt;br /&gt; explosion_protection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.99 ; взрыв &lt;br /&gt; fire_wound_protection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.99 ; пулестойкость &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sect_chuck_norris_outfit_immunities] ; секция износостойкости самого костюма &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;; от 0 (в огне не горит, в воде не тонет&amp;#41; до 1 (лучше на него даже не дышать&amp;#41; &lt;br /&gt; burn_immunity&amp;nbsp;&amp;nbsp;= 0.0 &lt;br /&gt; strike_immunity&amp;nbsp;&amp;nbsp;= 0.0 &lt;br /&gt; shock_immunity&amp;nbsp;&amp;nbsp;= 0.0 &lt;br /&gt; wound_immunity&amp;nbsp;&amp;nbsp;= 0.0 &lt;br /&gt; radiation_immunity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.0 &lt;br /&gt; telepatic_immunity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.0 &lt;br /&gt; chemical_burn_immunity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.0 &lt;br /&gt; explosion_immunity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.0 &lt;br /&gt; fire_wound_immunity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.0&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Далее откроем string_table_outfit.xml &lt;br /&gt; И в конце, но ДО закрывающего тега &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;/string_table&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; допишем следующее: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;string id=&quot;chuck_norris_outfit&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Одёжка Чака Норриса&lt;/text&gt; &lt;br /&gt; &lt;/string&gt; &lt;br /&gt; &lt;string id=&quot;chuck_norris_outfit_desc&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Бывшие портки Чака Норриса.&amp;#92;nТеперь победить вас может только сам Чак Норрис.&lt;/text&gt; &lt;br /&gt; &lt;/string&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Теперь &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/5-159-1&quot; target=&quot;_blank&quot;&gt;прописываем в торговлю&lt;/a&gt;, по желанию &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/5-114-1&quot; target=&quot;_blank&quot;&gt;ставим свою иконку&lt;/a&gt;, раскидываем по папкам и заходим в игру) Новую начинать не обязательно &lt;img src=&quot;http://s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-327-1</guid>
		</item>
		<item>
			<title>Кровавая игра</title>
			<link>https://book-mod.3dn.ru/forum/5-301-1</link>
			<pubDate>Sun, 01 Dec 2013 15:46:46 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: или как увеличить количество крови (by Возрожденный)&lt;br /&gt;Автор темы: Возрожденный&lt;br /&gt;Автор последнего сообщения: Возрожденный&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Играя в Сталкер Тени Чернобыля я столкнулся с такой проблемой как малокровие... Стреляя в упор из дробовика, мы получаем еле заметное облачко полупрозрачных брызг. Лично мне, тов. Возрождённому это никак не нравиться =/ Думаю и многим из Вас. &lt;br /&gt; -А как же исправить такую беду?! - воскликните Вы, рассевшись кружочком вокруг меня. &lt;br /&gt; -А вот как! - подмигну я вам. - Нам следует зайти в файл &lt;b&gt;system.ltx&lt;/b&gt;, он находиться в папке &lt;b&gt;config&lt;/b&gt;. &lt;br /&gt; -А неужели с помощью него можно тоже что-то улучшить? - удивитесь Вы. &lt;br /&gt; -Конечно! Например размер цели и само собой можно прописать файлы из папки gameplay. Но сейчас не об этом. &lt;br /&gt;&lt;br /&gt; Итак, мы зашли в файл &lt;b&gt;system.ltx&lt;/b&gt;. Я советую вам найти такой раздел как &lt;b&gt;bloody_marks&lt;/b&gt; - в нем как раз и описывается кровь! &lt;br /&gt;&lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;[bloody_marks]&lt;/span&gt; &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;wallmarks&lt;/span&gt;	- это изображение пятен крови. Эти изображения хранятся в папке textures&amp;#92;wm &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;dist&lt;/span&gt; - это максимальное расстояние разлёта крови &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;max_size&lt;/span&gt; - это максимальный разлет крови) &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;min_size&lt;/span&gt; - это соответственно минимальный &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;nominal_hit&lt;/span&gt; - это сила атаки, дающая максимум разлета крови) &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;blood_drops&lt;/span&gt; - это текстуры капель крови &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;start_blood_size&lt;/span&gt;	- это размер раны, при котором та начинает кровоточить &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;stop_blood_size&lt;/span&gt;	- размер раны, когда она начинает затягиваться) &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;blood_drop_time_min&lt;/span&gt; - минимальная продолжительность кровотечения &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;blood_drop_time_max&lt;/span&gt; - максимальная продолжительность &lt;br /&gt; &lt;span style=&quot;color:orange&quot;&gt;blood_drop_size&lt;/span&gt; - размер капли крови &lt;br /&gt;&lt;br /&gt; -Ну и что? - удивитесь Вы. - Что дальше,то? &lt;br /&gt;&lt;br /&gt; -Ну так вот. Чтобы увеличить количество крови в игре, мы должны увеличить: &lt;b&gt;max_size&lt;/b&gt; до &lt;b&gt;0.8&lt;/b&gt;, &lt;b&gt;min_size&lt;/b&gt; до &lt;b&gt;0.2&lt;/b&gt;, а &lt;b&gt;blood_drop_size&lt;/b&gt; до &lt;b&gt;0.3&lt;/b&gt;. А вот &lt;b&gt;nominal_hit&lt;/b&gt; наоборот понизить до &lt;b&gt;0.3&lt;/b&gt;. Итак, теперь проблема с малокровием у нас решена) Да, если вы хотите увеличить разлет крови, то увеличьте это &lt;b&gt;dist&lt;/b&gt; до &lt;b&gt;3&lt;/b&gt;) &lt;br /&gt;&lt;br /&gt; Удачи в Модостроительстве)))</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>Возрожденный</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-301-1</guid>
		</item>
		<item>
			<title>Однотипные квесты</title>
			<link>https://book-mod.3dn.ru/forum/5-298-1</link>
			<pubDate>Tue, 26 Nov 2013 10:31:41 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Тени Ченобыля; автор - Arhet&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Как известно, при разговоре с некоторыми NPC (Сахаров, Бармен, Сидорович, Лукаш, Волк, Шустрый, Бром, Лысый, Охотник и Осведомитель) появляется ветка «есть ли для меня работа?». В целях упрощения создания однотипных квестов, выдаваемых через эту ветку, разработчики создали следующую схему... &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilernxHlKL&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilernxHlKL&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilernxHlKL&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilernxHlKL&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilernxHlKL&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Структура однотипных квестов&apos;);$(&apos;#uSpoilernxHlKL&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilernxHlKL&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilernxHlKL&apos;)).val(&apos;[+] Структура однотипных квестов&apos;);$(&apos;#uSpoilernxHlKL&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Структура однотипных квестов&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; Сами задания находятся в конфиге gamedata&amp;#92;config&amp;#92;misc&amp;#92;task_manager.ltx. &lt;br /&gt; Цели квестов и условия их выполнения фиксируются в скрипте gamedata&amp;#92;scripts&amp;#92;task_manager.script. &lt;br /&gt; Ветки диалогов, отвечающие за эти задания (например, у Сидоровича) выглядит так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;actor_dialog&gt;tm_trader_dialog&lt;/actor_dialog&gt; &lt;br /&gt; &lt;actor_dialog&gt;tm_trader_reward&lt;/actor_dialog&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Где первый actor_dialog – диалог с выдачей задания, а второй - диалог по заданию и получению награды, либо отказа от выполнения оного. Никто нас насильно его выполнять не заставляет. &lt;br /&gt; При получении задания информация об этом прописывается и в PDA, не забываем об этом. Информация добавляется с помощью файла gamedata&amp;#92;config&amp;#92;gameplay&amp;#92;storyline_info_taskmanager.xml. &lt;br /&gt; Описание задания хранится в файле gamedata&amp;#92;config&amp;#92;text&amp;#92;rus&amp;#92;stable_task_manager.xml. &lt;br /&gt; Всего существует шесть видов подобных заданий:&lt;ul&gt;&lt;li&gt;eliminate_lager = уничтожить лагерь &lt;br /&gt; &lt;li&gt;defend_lager = защитить лагерь &lt;br /&gt; &lt;li&gt;kill_stalker = убить сталкера &lt;br /&gt; &lt;li&gt;artefact = найти артефакт &lt;br /&gt; &lt;li&gt;monster_part = найти часть монстра &lt;br /&gt; &lt;li&gt;find_item = найти предмет&lt;/ul&gt;&lt;!--/ust--&gt;&lt;!--usn(=Структура однотипных квестов)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerwXHB4I&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerwXHB4I&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerwXHB4I&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerwXHB4I&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerwXHB4I&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Создаем квест&apos;);$(&apos;#uSpoilerwXHB4I&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerwXHB4I&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerwXHB4I&apos;)).val(&apos;[+] Создаем квест&apos;);$(&apos;#uSpoilerwXHB4I&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Создаем квест&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; Для создания дополнительного квеста у Сидоровича нам понадобятся всего три файла:&lt;ul&gt; &lt;br /&gt; &lt;li&gt;gamedata&amp;#92;config&amp;#92;gameplay&amp;#92;storyline_info_taskmanager.xml &lt;br /&gt; &lt;li&gt;gamedata&amp;#92;config&amp;#92;misc&amp;#92;task_manager.ltx &lt;br /&gt; &lt;li&gt;gamedata&amp;#92;config&amp;#92;text&amp;#92;rus&amp;#92;stable_task_manager.xml&lt;/ul&gt;Открываем task_manager.ltx, в начале видим длинный список заданий, а уж потом сами задания и условия выполнения к ним. Т.е. cначала идет: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;...] &lt;br /&gt; tm_kill_stalker_5 &lt;br /&gt; tm_kill_stalker_6 &lt;br /&gt; tm_kill_stalker_7 &lt;br /&gt; &amp;#91;...]&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; А затем то, что нам нужно: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;...] &lt;br /&gt; &amp;#91;tm_kill_stalker_6] &lt;br /&gt; type = kill_stalker &lt;br /&gt; community = actor &lt;br /&gt; text = tm_kill_stalker_6_text &lt;br /&gt; description = tm_kill_stalker_6_descr &lt;br /&gt; parent = trader &lt;br /&gt; target = sim_stalker_novice &lt;br /&gt; ;reward_money = 1000 &lt;br /&gt; reward_reputation = +3 &lt;br /&gt; reward_rank = 2 &lt;br /&gt; reward_item = af_vyvert, conserva &lt;br /&gt; time = 86400 &lt;br /&gt; prior = 1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;tm_kill_stalker_7] &lt;br /&gt; type = kill_stalker &lt;br /&gt; community = actor &lt;br /&gt; text = tm_kill_stalker_7_text &lt;br /&gt; description = tm_kill_stalker_7_descr &lt;br /&gt; parent = trader &lt;br /&gt; target = esc_wolf &lt;br /&gt; reward_money = 10000 &lt;br /&gt; reward_reputation = +3 &lt;br /&gt; reward_rank = 2 &lt;br /&gt; reward_item = vodka, conserva &lt;br /&gt; time = 86400 &lt;br /&gt; prior = 1 &lt;br /&gt; &amp;#91;...]&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Рассмотрим структуру этих записей, заодно создав новую:&lt;ul&gt;&lt;li&gt;[tm_kill_stalker_7] – наше задание &lt;br /&gt; &lt;li&gt;type = kill_stalker – тип задания, в данном случае – убийство сталкера &lt;br /&gt; &lt;li&gt;community = actor – комьюнити, к которому принадлежит выполняющий задание (странный параметр, в игре используется - везде выставлен равным actor&apos;у) &lt;br /&gt; &lt;li&gt;text = tm_kill_stalker_7_text – описание нашего задания в диалоге &lt;br /&gt; &lt;li&gt;description = tm_kill_stalker_7_descr – описание нашего задания в PDA &lt;br /&gt; &lt;li&gt;parent = trader - заказчик &lt;br /&gt; &lt;li&gt;target = esc_wolf – цель, в данном случае мы собираемся грохнуть Волка &lt;br /&gt; &lt;li&gt;reward_money = 10000 – сколько денег нам дадут за выполнение &lt;br /&gt; &lt;li&gt;reward_reputation = +3 – повышение/понижение репутации после выполнения задания &lt;br /&gt; &lt;li&gt;reward_rank = 2 – количество очков ранга, выдаваемых за выполнение &lt;br /&gt; &lt;li&gt;reward_item = vodka, conserva – предметы, выдаваемые в награду за квест &lt;br /&gt; &lt;li&gt;time = 86400 – время выполнения квеста &lt;br /&gt; &lt;li&gt;prior = 1 – приоритет задания&lt;/ul&gt;Не забываем про PDA. В файлgamedata&amp;#92;config&amp;#92;gameplay&amp;#92;storyline_info_taskmanager.xml добавляем следующие строки: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;article id=&quot;tm_kill_stalker_7_descr&quot; name=&quot;kill_stalker&quot; article_type=&quot;task&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;tm_kill_stalker_7_descr&lt;/text&gt; &lt;br /&gt; &lt;/article&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Текст на русском для задания нужен? Тогда открываем gamedata&amp;#92;config&amp;#92;text&amp;#92;rus&amp;#92;stable_task_manager.xml и туда вгоняем следующие строки: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;string id=&quot;tm_kill_stalker_7&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Убить Волка&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;string id=&quot;tm_kill_stalker_7_text&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Достал меня Волк! Понимаешь, достал! Ворует у меня водку, понимаешь, потом идет и клянчит деньги на&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; тушенку, потому что новички его не слушают и есть ничего не дают, а вот сойти со своего места и пойти охотится на кабанов, он,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; видите ли, не хочет, ибо ЛЕНЬ! Грохни его, Меченый, я в долгу не останусь.&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;string id=&quot;tm_kill_stalker_7_descr&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Сидрыч заказал убийство Волка&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Важно! Эти строки не должны выходить за пределы тегов &lt;string_table&gt; и &lt;/string_table&gt;. &lt;br /&gt; Вот и все, теперь у Сидоровича появился новый квест - &quot;Убить Волка&quot;.&lt;!--/ust--&gt;&lt;!--usn(=Создаем квест)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-298-1</guid>
		</item>
		<item>
			<title>Еще один урок по созданию диалогов</title>
			<link>https://book-mod.3dn.ru/forum/5-296-1</link>
			<pubDate>Fri, 15 Nov 2013 19:22:57 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerKGXmk5&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerKGXmk5&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerKGXmk5&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerKGXmk5&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerKGXmk5&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Теория&apos;);$(&apos;#uSpoilerKGXmk5&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerKGXmk5&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerKGXmk5&apos;)).val(&apos;[+] Теория&apos;);$(&apos;#uSpoilerKGXmk5&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Теория&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;1) Списки веток диалогов содержатся в файлах вида&lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;gamedata/config/gameplay/character_desc_*.xml&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;Это, например: &lt;br /&gt; character_desc_zombied.xml; character_desc_stalker.xml; character_desc_garbage.xml и так далее. &lt;br /&gt;&lt;br /&gt; Файлы character_desc_*.xml можно сравнить со стволом дерева диалогов. В них перечисляется названия прикрепляемых веток диалогов &lt;br /&gt; Например вот список веток диалога с Сидоровичем взятый из файла character_desc_escape.xml&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&lt;start_dialog&gt;escape_trader_start_dialog&lt;/start_dialog&gt; &lt;br /&gt; &lt;actor_dialog&gt;escape_trader_talk_info&lt;/actor_dialog&gt; &lt;br /&gt; &lt;actor_dialog&gt;escape_trader_jobs&lt;/actor_dialog&gt; &lt;br /&gt; &lt;actor_dialog&gt;tm_trader_dialog&lt;/actor_dialog&gt; &lt;br /&gt; &lt;actor_dialog&gt;tm_trader_reward&lt;/actor_dialog&gt; &lt;br /&gt; &lt;actor_dialog&gt;escape_trader_done_blockpost_box&lt;/actor_dialog&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В свою очередь каждая ветка диалога также может ветвится. &lt;br /&gt;&lt;br /&gt; 2) Ветвление диалогов прописывается уже в других файлах. &lt;br /&gt; Например, ветвление диалога с Сидоровичем содержится в файле gamedata/config/gameplay/dialogs_escape.xml Возьмем оттуда, например, ветвление escape_trader_jobs. &lt;br /&gt; Ветвление имеет довольно большие масштабы, поэтому приведу только часть:&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;dialog id=&quot;escape_trader_talk_info&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;precondition&gt;escape_dialog.trader_has_talk_info_wr&lt;/precondition&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;has_info&gt;tutorial_end&lt;/has_info&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase_list&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase id=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;escape_trader_talk_info_1&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;100&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;99&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;9995&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase id=&quot;0&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;escape_trader_talk_info_0&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;1&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase_list&gt; &lt;br /&gt; &lt;/dialog&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Здесь&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;precondition&gt;…&lt;/precondition&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;это проверка выполнения условия. Ветка появится в диалоге, только если условие выполняется. Конкретно&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;precondition&gt;escape_dialog.trader_has_talk_info_wr&lt;/precondition&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;из ветки escape_trader_talk_info - это обращение к функции trader_has_talk_info_wr, находящейся в файле скрипте gamedata/scripts/escape_dialog.script &lt;br /&gt; Функция выглядит так: &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function trader_has_talk_info_wr( trader, actor &amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true &lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; То есть, судя по его структуре,&lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;&lt;precondition&gt;escape_dialog.trader_has_talk_info_wr&lt;/precondition&gt;&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;выполняется всегда, т.к. функция всегда возвращает истину и &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;dialog id=&quot;escape_trader_talk_info&quot;&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; пропускается в списк реплик. &lt;br /&gt;&lt;br /&gt; Но для конкретной ветки может быть несколько precondition и других условий. &lt;br /&gt; Далее,&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;has_info&gt;tutorial_end&lt;/has_info&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;это еще одна проверка, на этот раз на наличие у игрока так называемых infoportions, выдаваемы в процессе ключевых диалогов. В данном случае это проверка на то, закончена ли определенная стадия туториала, или нет. Т.е. ветка допустится в список реплик если стадия туториала закончена. &lt;br /&gt;&lt;br /&gt; Более детально мы это разберем в конце статьи. &lt;br /&gt; А далее идут конкретные фразы, содержащие ссылки на вытекающие фразы, например:&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;phrase id=&quot;0&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;escape_trader_talk_info_0&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;1&lt;/next&gt; &lt;br /&gt; &lt;/phrase&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Это основа ветки escape_trader_talk_info. &lt;br /&gt;&lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt; &lt;span class=&quot;qName&quot;&gt;&lt;!--qn--&gt;Важно&lt;!--/qn--&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;В любой основной ветке любого диалога фраза &lt;phrase id=&quot;0&quot;&gt; будет основой, из которой далее будет все вытекать. Она должна обязательно присутствовать и в вашем диалоге.&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;next&gt;1&lt;/next&gt; - это ссылка на вытекающую фразу &lt;phrase id=&quot;1&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase id=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;escape_trader_talk_info_1&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;100&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;99&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;9995&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В свою очередь&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;next&gt;100&lt;/next&gt;, &lt;next&gt;99&lt;/next&gt;, &lt;next&gt;9995&lt;/next&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;это ссылки на фразы веточки растущие из фразы&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;phrase id=&quot;1&quot;&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;. &lt;br /&gt;&lt;br /&gt; 3) Текст каждой фразы содержится в третьем файле. Для диалога с Сидоровичем тексты лежат в файле gamedata/config/text/rus/stable_dialogs_escape.xml &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;string id=&quot;escape_trader_talk_info_0&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Есть несколько вопросов.&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;string id=&quot;escape_trader_talk_info_1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Спрашивай, только я ведь всего не знаю. Сам понимаешь, сижу тут&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; целыми днями, а жизнь - она вся там, снаружи, в Зоне. Могу рассказать о Зоне вообще, а немного&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; могу о ближайших окрестностях, где сам ходил.&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Эти строки содержат тексты для фраз &lt;phrase id=&quot;0&quot;&gt; и &lt;phrase id=&quot;1&quot;&gt; &lt;br /&gt; Итого диалоги разложены по трем, а то и более файлам. &lt;br /&gt; Да кстати, путь по веткам может быть зацикленным, если того требует диалог. Например так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;phrase id=&quot;0&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;...&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;1&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;2&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt; &lt;phrase id=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;...&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;11&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;12&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt; &lt;phrase id=&quot;11&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;...&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;1&lt;/next&gt;&amp;nbsp;&amp;nbsp;- Это возврат к фразе №1 (зацикливание&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;111&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;!--/ust--&gt;&lt;!--usn(=Теория)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerr7DH89&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerr7DH89&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerr7DH89&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerr7DH89&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerr7DH89&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Практика&apos;);$(&apos;#uSpoilerr7DH89&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerr7DH89&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerr7DH89&apos;)).val(&apos;[+] Практика&apos;);$(&apos;#uSpoilerr7DH89&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Практика&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; Добавим в диалог с Сидоровичем ветку своего собственного изготовления.Например такую: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;Меченый: Сидрыч, а чего это у тебя зеленые человечки, что по столу бегают, такие худые? &lt;br /&gt; Сидорович: Чего?! &lt;br /&gt; Меченый: Ты их совсем, совсем не кормишь? &lt;br /&gt; Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился... Шутник.&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Для этого: &lt;br /&gt; 1) В файле gamedata/config/gameplay/character_desc_escape.xml в конце списка веток для trader припишем свою ветку с произвольным названием. Это будет, например&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;actor_dialog&gt;escape_trader_letat_gusi&lt;/actor_dialog&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Т.е у нас получится так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;specific_character id=&quot;escape_trader&quot; no_random = &quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;start_dialog&gt;escape_trader_start_dialog&lt;/start_dialog&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;actor_dialog&gt;escape_trader_talk_info&lt;/actor_dialog&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;actor_dialog&gt;escape_trader_jobs&lt;/actor_dialog&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;actor_dialog&gt;tm_trader_dialog&lt;/actor_dialog&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;actor_dialog&gt;tm_trader_reward&lt;/actor_dialog&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;actor_dialog&gt;escape_trader_done_blockpost_box&lt;/actor_dialog&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;actor_dialog&gt;escape_trader_letat_gusi&lt;/actor_dialog&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/specific_character&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Записываем изменения, с этим файлом пока всё. &lt;br /&gt;&lt;br /&gt; 2) Теперь берем файл gamedata/config/gameplay/dialogs_escape.xml &lt;br /&gt; Диалогу: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;Меченый: Сидрыч а почему это у тебя зеленые человечки, что по столу бегают, такие худые? &lt;br /&gt; Сидорович: Чего?!! &lt;br /&gt; Меченый: Ты их совсем, совсем не кормишь? &lt;br /&gt; Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился... Шутник.&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Будет соответствовать такая структура: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;phrase id=&quot;0&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;escape_trader_letat_gusi_0&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;1&lt;/next&gt; &lt;br /&gt; &lt;/phrase&gt; &lt;br /&gt; &lt;phrase id=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;escape_trader_letat_gusi_1&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;2&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt; &lt;phrase id=&quot;2&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt; escape_trader_letat_gusi_2&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;3&lt;/next&gt; &lt;br /&gt; &lt;/phrase&gt; &lt;br /&gt; &lt;phrase id=&quot;3&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt; escape_trader_letat_gusi_3&lt;/text&gt; &lt;br /&gt; &lt;/phrase&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Условия наличия ветки в диалоге можно взять из ветки &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;dialog id=&quot;escape_trader_talk_info&quot;&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Т.е берем условия &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;precondition&gt;escape_dialog.trader_has_talk_info_wr&lt;/precondition&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; и &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;has_info&gt;tutorial_end&lt;/has_info&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;Можно было, конечно, прописать в скрипте еще одно условие для ветки, чтобы она появилась только один раз, а потом больше не возникала. Но об этом как-нибудь позже. &lt;br /&gt;&lt;br /&gt; В итоге у нас получилась такая структура: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;dialog id=&quot;escape_trader_letat_gusi&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;precondition&gt;escape_dialog.trader_has_talk_info_wr&lt;/precondition&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;has_info&gt;tutorial_end&lt;/has_info&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase_list&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase id=&quot;0&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;escape_trader_letat_gusi_0&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;1&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase id=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;escape_trader_letat_gusi_1&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;2&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase id=&quot;2&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt; escape_trader_letat_gusi_2&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;3&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase id=&quot;3&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt; escape_trader_letat_gusi_3&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase_list&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/dialog&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Её нужно вставить в любом месте между dialog id&apos;ами других веток в файле dialogs_escape.xml. Главное - не промахнутся и засунуть именно между, а не внутрь одного из dialog id. &lt;br /&gt;&lt;br /&gt; После сохранения внесенных изменений с файлом dialogs_escape.xml все. &lt;br /&gt; 3) Теперь вбиваем сами текстовички в файле gamedata/config/text/rus/stable_dialogs_escape.xml &lt;br /&gt; Т.е нам надо в файле stable_dialogs_escape.xml вставить такую конструкцию: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;string id=&quot;escape_trader_letat_gusi_0&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Сидрыч, а чего это у тебя зеленые человечки, что по столу бегают, такие худые?&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;string id=&quot;escape_trader_letat_gusi_1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Чего?!&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;string id=&quot;escape_trader_letat_gusi_2&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Ты их совсем, совсем не кормишь?&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;string id=&quot;escape_trader_letat_gusi_3&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;В следующий раз, как пойдешь в зону, бери-ка&amp;nbsp;&amp;nbsp;вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился... Шутник.&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/string&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В любом месте между уже существующими string id. После сохранения изменений, у нас все готово. Можно загружать игру и смотреть что получилось. &lt;br /&gt; Дополнительно &lt;br /&gt;&lt;br /&gt; Внимание! После патча 1.002 данный урок перестал работать. Причина - со вторым патчем несовместимо это условие: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;precondition&gt;escape_dialog.trader_has_talk_info_wr&lt;/precondition&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Дело в том, что во втором патче из файла escape_dialog.script была удалена функция: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function trader_has_talk_info_wr( trader, actor &amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Можно либо записать эту функцию обратно в escape_dialog.script, либо использовать другие более-менее подходящие условия, например: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;precondition&gt;escape_dialog.trader_alredy_give_job&lt;/precondition&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Всё. Мы научились писать простые диалоги.&lt;!--/ust--&gt;&lt;!--usn(=Практика)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-296-1</guid>
		</item>
		<item>
			<title>Электрошоковая граната</title>
			<link>https://book-mod.3dn.ru/forum/5-265-1</link>
			<pubDate>Tue, 20 Aug 2013 12:05:04 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Автор: THE_ATLAS&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerkcuWI9&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerkcuWI9&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerkcuWI9&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerkcuWI9&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerkcuWI9&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Обана!&apos;);$(&apos;#uSpoilerkcuWI9&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerkcuWI9&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerkcuWI9&apos;)).val(&apos;[+] Обана!&apos;);$(&apos;#uSpoilerkcuWI9&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Обана!&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Это всё как бы уже давно не новость, но всё же опишу... Пускай начинающие мододелы балуются. &lt;br /&gt; Итак, не для кого не секрет, что в ресурсах сталкера имеется модель дымовой гранаты, которая нерационально используется только в мультиплеере. &lt;br /&gt; Учитывая что для зрения NPC, дым в синглплеере не преграда. Создадим на базе дымовухи что-то более существенное. Например электрошоковую гранату как в F.E.A.R. &lt;br /&gt;&lt;br /&gt; Итак, как её сделать и добавить в игру? &lt;br /&gt; Не будем создавать для неё отдельный конфиг - это не рационально. &lt;br /&gt; Наша граната будет наследовать конфиг гранаты grenade_gd-05, только с небольшими изменениями. &lt;br /&gt; Содержание &lt;br /&gt; 1 Конфиг &lt;br /&gt; 2 Описание &lt;br /&gt; 3 Добавление в игру &lt;br /&gt; 4 Автор &lt;br /&gt;&lt;br /&gt; Конфиг &lt;br /&gt;&lt;br /&gt; Добавим конфиг новой гранаты в файл gamedata&amp;#92;config&amp;#92;weapons&amp;#92;w_f1.ltx &lt;br /&gt; в самом конце файла добавим конфиг нашей гранаты:&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;el_grenade]:grenade_gd-05 ;Электрошоковая граната наследует конфиг гранаты grenade_gd-05&amp;nbsp;&amp;nbsp;&lt;br /&gt; inv_name = el_grenade_name ;Название новой гранаты&amp;nbsp;&amp;nbsp;&lt;br /&gt; inv_name_short = el_grenade_name ;Название новой гранаты&amp;nbsp;&amp;nbsp;&lt;br /&gt; description = el_grenade_desc ;Описание новой гранаты&amp;nbsp;&amp;nbsp;&lt;br /&gt; blast = 3 ;хит от гранаты (300%&amp;#41;&amp;nbsp;&amp;nbsp;&lt;br /&gt; blast_r = 5 ;радиус хита (5 м.&amp;#41;&amp;nbsp;&amp;nbsp;&lt;br /&gt; hit_type_blast = shock ;тип хита&amp;nbsp;&amp;nbsp;&lt;br /&gt; snd_explode = anomaly&amp;#92;electra_blast1 ;звук взрыва&amp;nbsp;&amp;nbsp;&lt;br /&gt; explode_particles = anomaly2&amp;#92;electra2_blast ;или anomaly2&amp;#92;electra2_blast_00 ;партикл взрыва&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;Описание &lt;br /&gt;&lt;br /&gt; Теперь добавим описание гранаты в один из файлов в gamedata&amp;#92;config&amp;#92;text&amp;#92;rus&amp;#92; ну скажем в string_table_enc_weapons.xml &lt;br /&gt; ниже тега &lt;string_table&gt; добавляем:&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;string id=&quot;el_grenade_name&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &lt;text&gt;ЭШГ-1&lt;/text&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &lt;/string&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &lt;string id=&quot;el_grenade_desc&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &lt;text&gt;Электрошоковая граната.&lt;/text&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &lt;/string&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;Вот и все, гранату ЭШГ-1 можно прописывать в игру - добавлять торговцам, спавнить в инвентарь, в тайники и не только :3&lt;!--/ust--&gt;&lt;!--usn(=Обана!)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-265-1</guid>
		</item>
		<item>
			<title>Как редактировать гранаты</title>
			<link>https://book-mod.3dn.ru/forum/5-240-1</link>
			<pubDate>Fri, 02 Aug 2013 08:17:34 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Автор темы: XemorDio&lt;br /&gt;Автор последнего сообщения: XemorDio&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>Конфиги лежат по адресу gamedata&amp;#92;configs&amp;#92;weapons в файлах w_f1.ltx для Ф1 и w_rgd5.ltx для РГД-5; &lt;br /&gt; &lt;b&gt;важные параметры:&lt;/b&gt; &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;destroy_time = 1800 ; Время детонации 1.8 секунды &lt;br /&gt; blast = 3.0 ; Урон наносимый фугасным воздействием &lt;br /&gt; blast_r = 8 ; радиус фугасного воздействия &lt;br /&gt; blast_impulse = 550 ; Сила удара от фугаса &lt;br /&gt; frags = 300 ; Количество осколков &lt;br /&gt; frags_r = 25 ; Радиус разлета осколков &lt;br /&gt; frag_hit = 3.50; Урон от осколка &lt;br /&gt; frag_hit_impulse = 300 ; Сила удара от осколков &lt;br /&gt; fragment_speed = 500 ; Скорость осколков&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>XemorDio</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-240-1</guid>
		</item>
		<item>
			<title>Узнаем координаты ГГ</title>
			<link>https://book-mod.3dn.ru/forum/5-104-1</link>
			<pubDate>Fri, 02 Aug 2013 08:13:14 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: XemorDio&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>Решил создать отдельную тему, т.к. постоянно писать одно и тоже - не комильфо &lt;img src=&quot;http://s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt; &lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerZVUKvD&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerZVUKvD&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZVUKvD&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZVUKvD&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerZVUKvD&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Приступим&apos;);$(&apos;#uSpoilerZVUKvD&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZVUKvD&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerZVUKvD&apos;)).val(&apos;[+] Приступим&apos;);$(&apos;#uSpoilerZVUKvD&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Приступим&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt;&lt;br /&gt; 1) Открываем файл ui_main_menu.script посредством блокнота. Можно (лучше) через &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/programmy/soft/notepad_v4_1_1/33-1-0-199&quot; target=&quot;_blank&quot;&gt;Notepad++&lt;/a&gt;. Вордом не открывать. Видим там такую вещь: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if keyboard_action == ui_events.WINDOW_KEY_PRESSED then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_ESCAPE then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if level.present(&amp;#41; and (db.actor ~= nil&amp;#41; and db.actor:alive(&amp;#41; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console:execute(&quot;main_menu off&quot;&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; --&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_S then &lt;br /&gt; --&amp;nbsp;&amp;nbsp;&amp;nbsp;self:OnButton_load_spawn(&amp;#41; &lt;br /&gt; --&amp;nbsp;&amp;nbsp;else &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_F1 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:OnButton_koord_viev(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_Q then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:OnMessageQuitWin(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; добавляем после else вот такую конструкцию &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_F1 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:OnButton_koord_viev(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; должно получится так: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if keyboard_action == ui_events.WINDOW_KEY_PRESSED then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_ESCAPE then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if level.present(&amp;#41; and (db.actor ~= nil&amp;#41; and db.actor:alive(&amp;#41; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console:execute(&quot;main_menu off&quot;&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; --&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_S then &lt;br /&gt; --&amp;nbsp;&amp;nbsp;&amp;nbsp;self:OnButton_load_spawn(&amp;#41; &lt;br /&gt; --&amp;nbsp;&amp;nbsp;else &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_F1 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:OnButton_koord_viev(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_Q then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:OnMessageQuitWin(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 2) В конец файла добавляем эту непонятную схему &lt;img src=&quot;http://s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function main_menu:OnButton_koord_viev(&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; local text &lt;br /&gt; local vid &lt;br /&gt; local gvid &lt;br /&gt; local a = vector(&amp;#41; &lt;br /&gt; local text &lt;br /&gt; a = db.actor:position(&amp;#41; &lt;br /&gt; vid = db.actor:level_vertex_id(&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; gvid = db.actor:game_vertex_id(&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; text = &quot;Позиция:&amp;#92;&amp;#92;nX= &quot;..a.x..&quot;&amp;#92;&amp;#92;nY= &quot;..a.y..&quot;&amp;#92;&amp;#92;nZ= &quot;..a.z..&quot;&amp;#92;&amp;#92;nlevel_vertex= &quot;..vid..&quot;&amp;#92;&amp;#92;ngame_vertex_id= &quot;..gvid &lt;br /&gt; news_manager.send_tip(db.actor, text, nil, nil, 7000&amp;#41; &lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 3) сохраняем файл &lt;br /&gt; 4) убеждаемся, что игра видит измененные файлы путем того, что запускаем игру, загружаем сохранение/начинаем НГ, выходим в меню и нажимаем кнопку F1. Если при возврате в игру вы видите сообщение с координатами - все сделано правильно &lt;img src=&quot;http://s51.ucoz.net/sm/23/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt; &lt;!--/ust--&gt;&lt;!--usn(=Приступим)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-104-1</guid>
		</item>
		<item>
			<title>Настройка логики. Часть 3</title>
			<link>https://book-mod.3dn.ru/forum/5-232-1</link>
			<pubDate>Fri, 12 Jul 2013 07:36:00 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Автор: GSC Game World&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoileroS7oih&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoileroS7oih&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileroS7oih&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileroS7oih&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoileroS7oih&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Обана! Ливер вылез!!&apos;);$(&apos;#uSpoileroS7oih&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoileroS7oih&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoileroS7oih&apos;)).val(&apos;[+] Обана! Ливер вылез!!&apos;);$(&apos;#uSpoileroS7oih&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Обана! Ливер вылез!!&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Настройка логики (часть 3) &lt;br /&gt; 3.8.1. Синтаксис скрипта Logic &lt;br /&gt; Пример: для того, чтобы персонаж ходил по пути walk1, а при приближении игрока на дистанцию 5 метров, переключался на путь walk2 (но только при условии, что он видит игрока), нужно написать следующее: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = walker1&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;walker1] path_walk = walk1 path_look = look1 on_actor_dist_le = 5 | walker2&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;walker2] path_walk = walk2 path_look = look2 &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Выше рассмотрено безусловное переключение секций. Перед именем секции в фигурных скобках {} можно задавать дополнительные условия, а после имени секции - так называемые &quot;эффекты&quot;, которые заключить в знаки процента: %%. Эффекты будут применены только в случае активации секции. Можно не задавать имя секции, а задать только условия и/или эффекты. Тогда активной останется старая секция, но условия и эффекты будут все равно обработаны. Если все условия в фигурных скобках не выполняются, секция активирована не будет. &lt;br /&gt; Пример: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;on_actor_dist_le = 5 | {условие} walker2 %эффекты% &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Условия могут быть следующими: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;+infoportion - требуется присутствие infoportion у actor &lt;br /&gt; -infoportion - требуется отсутствие infoportion у actor &lt;br /&gt; =func - требуется, чтобы func вернула true &lt;br /&gt; !func - требуется, чтобы func вернулся false &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Эффекты могут быть следующими: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;+infoportion - в случае включения секции у actor будет установлен infoportion - &lt;br /&gt; infoportion - в случае включения секции у actor будет убран infoportion &lt;br /&gt; =func - в случае включения секции стартует функция func &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Несколько условия или эффектов разделяются проблемами: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;on_actor_dist_le = 5 | {+info1 -info2 +info3} walker2 %+info4 =func% &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Можно задавать сразу несколько секций, разделенных запятыми. Порядок обхода при этом - слева направо. После срабатывания первого из условий, обход прекращается. В примере ниже, если установлен info1, будет включена схема walker2, иначе, если установлен info2, будет включена схема walker3, иначе будет включен walker4: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;on_actor_dist_le = 5 | {+info1} walker2, {+info2} walker3, walker4 &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; В описанном выше поле active секции logic, можно также задавать условия, например: &lt;br /&gt; [logic] active = {=actor_friend} walker@friendly, walker@enemy В логических условиях теперь принимается ключевое слово never, которое означает, что условие ложно. Например: combat_ignore_cond = {=actor_enemy =actor_has_suit} always, {=actor_enemy} never %...эффекты...% &lt;br /&gt; Вышеприведенная конструкция включает игнорирование боя, если у NPC враг - игрок в костюме, но отключит его, если врагом является игрок, но без костюма, при этом сработают эффекты (%%) секции never. Таким образом, выбор секции never равносилен отсутствию секции (несрабатыванию условия), но эффекты в знаках процента при этом срабатывают. &lt;br /&gt; Пример работы с секцией nil. Секция nil выводит из-под скриптовых схем персонажа, монстра или объект и отпускает его под управление движка. Это надо если какое-либо условие выполнившись 1 раз больше не нуждается в проверке, при этом экономятся ресурсы машины, которые на каждом апдейте проверяют это условие. &lt;br /&gt; [logic] active = sr_idle &lt;br /&gt; [sr_idle] on_actor_inside = nil %+esc_actor_inside% То есть, при входе актера в рестриктор выдается инфопоршн и рестриктор уходит в секцию nil, больше не проверяя наличие игрока. NB: Обратно из секции nil под скрипты объект вернуть уже невозможно! Учитывайте это, используя ее. &lt;br /&gt; 3.8.2. Вот пример достаточно сложной логики: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = walker combat_ignore = combat_ignore on_hit = hit on_death = death&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;hit] on_info = %+alert%&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;death] on_info = %+alert +trup3%&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;walker] path_walk = walk_svoboda3 path_look = look_svoboda3 combat_ignore_cond = {-alert} on_timer = 25000 | remark&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;remark] anim = idle snd = stalker_talk_kampfire no_move = true no_rotate = true on_hit = hit on_death = death combat_ignore_cond = {-alert}&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;combat_ignore] &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Рассмотрим ее пошагово. Вначале сталкер работает по схеме walker-a. При этом он игнорирует бой, пока не будет поставлен инфопоршн alert. Он ждет 25 секунд, после чего переходит в схему remark. В ремарке он проигрывает идловую анимацию, говорит на указанные темы, не поворачивается и не двигается и точно также игнорирует бой. Если по нему попадут (on_hit) или убьют (on_death), будет поставлен инфопоршн alert и он перестанет игнорировать бой (понятно, что если он будет трупом, то это ему не поможет, но их в сценке трое, и тогда сорвутся в бой все остальные). Если его убьют, то также будет поставлен инфопоршн trup3 который сообщит о том, что этот сталкер убит. &lt;br /&gt; А вот логика его противника: &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = walker combat_ignore = combat_ignore&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;walker] path_walk = soldier_walk1 path_look = soldier_look1 combat_ignore_cond = always team = assault_group on_signal = assault | camper&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;camper] path_walk = soldier_walk1_2 path_look = soldier_look1_2 radius = 5 on_info = {+trup1 +trup2 +trup3} walker2&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;walker2] path_walk = soldier_walk1_3 path_look = soldier_look1_3 &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; [combat_ignore] &lt;br /&gt; Он идет в схеме walker, игнорируя бой (причем игнорируя в любой ситуации). Идет в составе группы assault_group. Когда он приходит в конечную точку маршрута (там он синхронизируется с остальными из группы, это приписано в путях) и получает сигнал assault, то переходит в схему camper. В этой схеме у него не прописан combat_ignore, поэтому он начинает стрелять по противнику. После того, как все трое противников будут убиты, каждый из них, умирая ставит инфопоршн trup1, trup2 или trup3 и когда все трое будут убиты, то он переключится на схему walker2 (подойдет к костру). &lt;br /&gt;&lt;br /&gt; 3.9. Схемы логики space_restrictor &lt;br /&gt; Общее замечание: Чтобы исключить ситуацию, когда актёр проскакивает через рестриктор и тот не успевает сработать, старайтесь ставить рестриктор так, чтоб минимальная ширина была больше 2 метров. &lt;br /&gt;&lt;br /&gt; 3.9.1. Схема [sr_idle] &lt;br /&gt; Предназначение данной схемы – включить другую схему при срабатывании одного из стандартных условий логической схемы. Сама по себе схема ничего не делает. Пример настроек рестриктора: &lt;br /&gt; [logic] active = sr_idle &lt;br /&gt; [sr_idle] on_actor_inside = nil %+esc_actor_inside% &lt;br /&gt; Обратите внимание, что после срабатывания проверки активная схема переключается в nil, чтобы не продолжать бесполезную проверку на каждом апдейте. Можно не задавать nil. Часто эта схема работает вместе со спавнером, рестриктор выдает инфопоршн, при входе в зону, а спавнер по нему уже кого-то спавнит. &lt;br /&gt; файл &amp;#92;gamedata&amp;#92;scripts&amp;#92;sr_idle.script &lt;br /&gt;&lt;br /&gt; 3.9.2. Секция [sr_no_weapon] &lt;br /&gt; Данная схема убирает оружие у игрока при входе в зону. Пример настроек рестриктора: &lt;br /&gt; [logic] active = sr_no_weapon &lt;br /&gt; [sr_no_weapon] &lt;br /&gt; файл &amp;#92;gamedata&amp;#92;scripts&amp;#92;sr_no_weapon.script &lt;br /&gt;&lt;br /&gt; 3.9.3. Секция [sr_sound] &lt;br /&gt; snd = Перечень имён звуков разделенных запятыми. &lt;br /&gt; type = Типы звуков через запятые. Для удобства введены типы наборов звуков. Т.е., например, чтобы не перечислять каждый раз весь набор звуков скрипа деревянного пола, можно указать тип floor_wooden. &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;delay = Задержка перед проигрыванием звука в секундах реального времени, по умолчанию 0. &lt;br /&gt; idle = Длина периода игнорирования входа в зону после начала последнего проигранного звука. Чтоб, например, завывание было не чаще, чем раз в несколько минут. В секундах игрового времени. По умолчанию 0. &lt;br /&gt; rnd = Вероятность (в процентах) того, что звук отыграется. По умолчанию 100. &lt;br /&gt; position = Задает имя пути, в вершинах которого может отыграться звук. Есть зарезервированное значение random. Оно означает случайное место в радиусе 15…50 метров от игрока. Если этот параметр не задан, то подразумевается позиция игрока. &lt;br /&gt; slide_velocity = Скорость (м/с) передвижения звука по точкам патрульного пути. По умолчанию - 3 &lt;br /&gt; slide_sound_once = true&amp;#92;false &lt;br /&gt; true - проиграть звук один раз, даже если он не дошел до последней точки пути. false – если звук закончился, а до последней точки пути не дошел, запустить его ещё раз. По умолчанию false. &lt;br /&gt; play_at_actor = true/false Заставляет звук играться от позиции актера постоянно. Если он будет равен true и будет задан путь перемещения звука (или рандом), то мы тупо вылетим.&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Предназначение данной схемы: отыграть звук при входе актёра в рестриктор. &lt;br /&gt; Поддерживается sound_end. &lt;br /&gt; Обязательно нужно задать либо snd, либо type. Можно их задать вместе. На базе этих параметров составляется список звуков. При входе актёра в рестриктор отыгрывается случайный звук из этого списка. &lt;br /&gt; Место, из которого может отыграться звук, задаётся одним из трёх: - случайное; - случайная вершина заданного пути; - позиция игрока. &lt;br /&gt; Пример настроек рестриктора: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = sr_sound&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_sound] type = floor_wooden snd = ambient&amp;#92;wind1, ambient&amp;#92;sparks1 rnd = 50 position = random idle = 120 delay = 3 &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Есть возможность сделать «скользящий звук». Необходим патрульный путь. Звук начинает отыгрываться с начала пути и перемещается от одной точки пути к другой (по мере их установки на патрульном пути) со скоростью slide_velocity. &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = sr_sound&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_sound] type = random position = way slide_velocity = 8 slide_sound_once = true &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Файл &amp;#92;gamedata&amp;#92;scripts&amp;#92;sr_sound.script &lt;br /&gt;&lt;br /&gt; 3.9.4. Секция [sr_tip] &lt;br /&gt; Предназначение данной схемы – давать игроку сообщение (подсказку) при входе в рестриктор &lt;br /&gt; name = Название новости. type = по умолчанию «news» Тип новостей: «news» – отсылается как глобальная новость, «tips» - отсылается то имени sender-a &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;sender = если тип = «tips», то от sender задаёт условный строковый идентификатор иконки персонажа, от которого якобы пришло сообщение. По умолчанию это иконка торговца. &lt;br /&gt; cond = Необходимые логические условия, при которых подсказка сработает. По дефолту, сработает при входе в зону. &lt;br /&gt; single = true/false (по умолчанию false). Если параметр в true, то типс будет выдан только один раз, &lt;br /&gt; Пример настроек рестриктора: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = sr_tip&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_tip] name = tips_esc_trader_about_pda type = tips cond = {+infoportion1 –infoportion2 } &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; showtime = msec – время в миллисекундах, в течение которого сообщение будет находится на экране. – ПОКА НЕ РАБОТАЕТ НОРМАЛЬНО! &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Если необходимо проиграть только 1 раз, а это случается часто, то можно добавить следующую строку: on_actor_inside = nil &lt;br /&gt; файл &amp;#92;gamedata&amp;#92;scripts&amp;#92;sr_tip.script &lt;br /&gt;&lt;br /&gt; 3.9.5. Sr_light &lt;br /&gt; Зона, в которой фонарики у неписей будут включены независимо от времени суток. &lt;br /&gt; Работает следующим образом: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &amp;#91;logic] &lt;br /&gt;&amp;nbsp;&amp;nbsp;active = sr_light &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;#91;sr_light] &lt;br /&gt;&amp;nbsp;&amp;nbsp;light_on = true/false (свет включен/выключен&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Также работает вместе с кондлистом: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &amp;#91;logic] &lt;br /&gt;&amp;nbsp;&amp;nbsp;active = sr_light &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;#91;sr_light] &lt;br /&gt;&amp;nbsp;&amp;nbsp;light_on = true/false (свет включен/выключен&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;on_info = {+info1} section %+info2% &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 3.9.6. Sr_territory &lt;br /&gt; Занимается эта схема тем, что отлавливает всякие события, происходящие внутри рестриктора. Пока что она отлавливает только хиты и смерть сталкеров. Пример использования примерно следующий: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = sr_territory@outside&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_territory@outside] on_actor_inside = sr_territory@inside&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_territory@inside] on_actor_outside = sr_territory@outside territory_hit = {-bar_dolg_territory_1_hit} %+bar_dolg_territory_1_hit%, {-bar_dolg_territory_2_hit} %+bar_dolg_territory_2_hit%, {-bar_dolg_territory_3_hit} %+bar_dolg_territory_3_hit% territory_death = {-bar_dolg_territory_kill} %+bar_dolg_territory_kill% &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; То есть здесь видно, что когда игрок находится внутри рестриктора, то считается количество нанесенных хитов, а также учитывается был ли кто-то убит или нет. Поскольку схема работает только с игроком – то хиты и смерть засчитываются только от игрока. &lt;br /&gt;&lt;br /&gt; 3.9.7. Sr_mapspot &lt;br /&gt; При входе в рестриктор он сам себя подсвечивает на карте. &lt;br /&gt; Параметры: &lt;br /&gt; hint - id подсказки в string table (обязательный параметр) &lt;br /&gt; location - название типа подсветки (не обязательный параметр, по умолчанию &quot;crlc_small&quot;) &lt;br /&gt; Пример: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = sr_mapspot&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_mapspot] hint = “gar_swamp” location = crcl_big &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 3.9.8. Sr_particle &lt;br /&gt; Данная система отыгрывает партиклы как статичные так и движущиеся в указанном месте и в указанное время. Работет она следующим образом: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;Для партикловой системы с путем камеры: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#91;sr_particle] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name = explosions&amp;#92;campfire_03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-имя партикловой системы &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;path = particle_test.anm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-имя пути камеры &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(обязательно !!!&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;looped = true/false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-флаг зацикленности партиклов&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; (обязательно с расширением ANM !!!) Здесь партиклы будут молча перемещаться по пути. &lt;br /&gt; &lt;br /&gt; Для партикловой системы с обычным патрульным путем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#91;sr_particle] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name = explosions&amp;#92;campfire_03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-имя партикловой системы &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;path = part_points&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-имя патрульного пути &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode = 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(обязательно !!!&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;looped = true/false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-флаг зацикленности партиклов&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; В вейпоинтах можно задавать флаг s=имя_звуковой_темы и d=число время задержки перед проигрыванием (задается в миллисекундах, если не задано, то 0). Далее, s - имя звуковой темы в sound_themes.ph_snd_themes из которой будет случайно выбран звук для проигрывания во время проигрывания партикла. Звук не зацикливается и играет только один раз... результат - партиклы отыгрываются во всех вейпоинтах одновременно (или с задержкой см. выше). &lt;br /&gt; При looped=true по окончании проигрывания партиклов, они будут запускаться сначала, но уже без задержек. Сигнал particle_end выдаваться не будет. При looped=false сигнал будет выдан, когда все источники партиклов отыграют. Поддерживается кондлист. Если рестриктор переходит в другую секцию, то автоматически перестают отыгрываться партиклы и замолкают звуки при них. Этот рестриктор является объектом, отслеживающим партиклы и нет никакой необходимости чтобы игрок в него заходил. &lt;br /&gt;&lt;br /&gt; 3.9.9. Sr_sound_act &lt;br /&gt; Итого, схема, которая играет саунд в голове актера. Всякие там переговоры по PDA и прочие фейки. &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;[sr_sound_act] &lt;br /&gt; snd = ambient&amp;#92;random&amp;#92;new_drone1 --имя звукового файла &lt;br /&gt; delay = 2000 --задержка перед проигрыванием &lt;br /&gt; delay_max = 4000 -- между проигрыванием звука будет взят случайный промежуток между delay и delay_max. &lt;br /&gt; on_signal = sound_end | nil --по сигналу можно перейти в другую секцию. &lt;br /&gt; theme = &lt;имя темы из ph_sound_themes&gt; &lt;br /&gt; stereo = true/false (по умолчанию false). При установке этого параметра к файлу, который задан параметром snd или в звуковой теме будут добавляться (автоматически) суффиксы _r и _l для загрузки левого и правого каналов и, соответственно, вся эта фигня будет играться. &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Если указывается тема, то звук будет играть зациклено, случайным образом выбирая один из звуков прописанных в теме, если указывается звук, то он отыгрывается один раз. Схема поддерживает кондлист. &lt;br /&gt;&lt;br /&gt; 3.9.10 Sr_timer &lt;br /&gt; Пример использования: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = sr_timer@1&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_timer@1] type = dec start_value = 10000 on_value = 0 | sr_timer@2&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_timer@2] type = inc on_value = 15000 | nil %+info1% &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Описания полей: type - тип счетчика, инкриментирующий(inc) или декриментирующий(dec). Если поле не задано - счетчик будет инкриментирующий start_value - начальное значение счетчика в РЕАЛЬНЫХ милисекундах. Для декриментирующих счетчиков задавать обязательно. Для инкриментирующих, если не задано, то считается с 0. &lt;br /&gt; Переходы из секции sr_timer могут быть как по обычным условиям (on_timer, on_info) так и по специфическому условию on_value. В общем случае on_value Можно использовать для производства каких либо действий в зависимости от состояния счетчика. Например: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;on_value = 5000| %+info1% | 1000| %+info2% &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 3.9.11. Sr_psy_antenna &lt;br /&gt; Зоны с такой секцией позволяют управлять эффектами от пси-воздействия (на Янтаре и Радаре). Сейчас можно управлять интенсивностью излучения и интенсивностью получения повреждений. &lt;br /&gt; Способ применения: Расставить зоны, в каждой зоне написать, сколько процентов к интенсивности излучения и повреждения она добавляет/отнимает. Зоны могут быть вложены друг в друга, пересекать друг друга. &lt;br /&gt; eff_intensity = - увеличение/уменьшение в % от базового значения интенсивности излучения. hit_ intensity = - увеличение/уменьшение в % от базового значения наносимого повреждения. &lt;br /&gt; Пример зоны, которая добавляет 70% излучения: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = sr_psy_antenna&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_psy_antenna] eff_intensity = 70 hit_ intensity = 70&amp;nbsp;&amp;nbsp;&lt;br /&gt; Пример зоны, которая убирает 30% излучения:&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;logic] active = sr_psy_antenna&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_psy_antenna] intensity = -30 &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 3.9.12. Sr_teleport &lt;br /&gt; Собственно, телепорт. Настраиваются следующим образом: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = sr_teleport&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;sr_teleport] timeout = 0&amp;nbsp;&amp;nbsp;&lt;br /&gt; point1 = point1 look1 = look1 prob1 = 10&amp;nbsp;&amp;nbsp;&lt;br /&gt; point2 = point2 look2 = look2 prob2 = 20&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; где: &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;timeout - задержка в срабатывании телепорта в миллисекундах. &lt;br /&gt; point - одноточечный патрульный путь куда переместить &lt;br /&gt; look - одноточечный патрульный путь куда повернуть.&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Далее идут настройки точек назначения с удельными весами. То есть в перечисленном выше примере вероятность телепортнуться во вторую точку в два раза выше, чем в первую. Максимальное количество точек назначения - 10. Телепорты необходимо ставить совместно с особой аномальной зоной, которую сейчас делает Проф. Зона добавит визуализацию и создаст эффект втягивания. &lt;br /&gt;&lt;br /&gt; 3.9.13. Sr_sleep и настройка снов. &lt;br /&gt; Появилась возможность задавать зоны сна. &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;[sr_sleep] &lt;br /&gt; cond = &lt;condlist&gt; &lt;br /&gt; type = nightmare/normal/happy/all - Задает тип сна разрешенный в данной зоне (по умолчанию all). Влияет (группирует) только на несценарные сны. &lt;br /&gt; dream_prob = &lt;число от 0 до 100&gt; - вероятность просмотра несценарных сновидений в данной зоне (по умолчанию 80). В противном случае будет только черный экран. &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Необязательное поле cond задает условие(я), при котором в этой зоне можно спать. Сейчас производится индикация зон, где разрешен сон. В левом нижнем углу отображается маленькая иконка легких при входе в такую зону. Вероятно, позже будет изменена на другую. Сновидения теперь делятся на сценарные и обычные. Сценарные сновидения отыгрываются один раз при выполнении необходимых условий. Обычные сновидения проигрываются, если нет сценарных или ни одно условие выполнения сценарных не сработало. Можно задавать вероятность отыгрывания обычных сновидений в целом, а также задавать вероятность срабатывания каждого конкретного сновидения в отдельности. Обычным сновидениям можно задавать тип и потом ограничивать по нему сны воспроизводимые в sr_sleep. &lt;br /&gt; В файле misc&amp;#92;dream.ltx задаются настройки снов. &lt;br /&gt; Секция videos. Полями задаются пути к видеофайлам со снами. &lt;br /&gt; Секция dreams. Поля: regular_probability = &lt;число от 0 до 100&gt; - вероятность проигрывания обычных сновидений в целом regular - список секций с настройками для обычных сновидений scene - список секций с настройками для сценарных сновидений &lt;br /&gt; Настройки обычных сновидений: dream - имя поля из секции videos probability = &lt;число больше 0&gt; - чем больше, тем больше вероятность проигрывания сна. type = nightmare/normal/happy - тип сна. &lt;br /&gt; Настройки сценарных сновидений: dream - имя поля из секции videos cond = &lt;condlist&gt; - условия срабатывания to_regular = &lt;вероятность,тип&gt; - необязательное поле. Дает возможность переводить сценарный сон после первого отыгрыша в разряд обычных. &lt;вероятность, тип&gt; аналогичны probability и type из настроек обычных сновидений соответственно. &lt;br /&gt;&lt;br /&gt; 3.9.14. Sr_cutscene &lt;br /&gt; Эта схема предназначена для проведения анимации камеры c некоторым эффектом (pp_effector). Последовательность действий, осуществляемых схемой, состоит из мгновенного перемещения игрока в начало пути point и ориентации его взгляда на начало пути look, потери управления игроком и начала анимации камеры cam_effector по завершении которой игрок вновь получает управление. &lt;br /&gt; [sr_cutscene] &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;point = &lt;имя пути&gt; - путь в первую точку которого переносится игрок look = &lt;имя пути&gt; - путь в первую точку которого смотрит игрок &lt;br /&gt; pp_effector = &lt;имя файла с эффектом&gt; - файл, расположенный в папке &lt;br /&gt; gamedata&amp;#92;anims&amp;#92; и содержащий эффект (имя файла пишется без расширения) cam_effector = &lt;имя файла с анимацией камеры&gt; - файл, расположенный в папке gamedata&amp;#92;anims&amp;#92;camera_effects&amp;#92; и содержащий анимацию камеры (имя файла пишется без расширения) &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;&lt;!--/ust--&gt;&lt;!--usn(=Обана! Ливер вылез!!)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-232-1</guid>
		</item>
		<item>
			<title>Настройка логики. Часть 2</title>
			<link>https://book-mod.3dn.ru/forum/5-231-1</link>
			<pubDate>Fri, 12 Jul 2013 07:14:15 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Автор: GSC Game World&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerZ95dzJ&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerZ95dzJ&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZ95dzJ&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZ95dzJ&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerZ95dzJ&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Ну и че у нас тут!?&apos;);$(&apos;#uSpoilerZ95dzJ&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerZ95dzJ&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerZ95dzJ&apos;)).val(&apos;[+] Ну и че у нас тут!?&apos;);$(&apos;#uSpoilerZ95dzJ&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Ну и че у нас тут!?&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Настройка логики (часть 2) &lt;br /&gt; 3.3.7. Секция dont_spawn_character_supplies &lt;br /&gt; Если прописать эту секцию в кастом дату персонажу, то у него внутри не заспавниться стандартный набор барахла, прописанный в профиле. &lt;br /&gt; [dont_spawn_character_supplies] &lt;br /&gt;&lt;br /&gt; 3.3.8. Секция no_smart &lt;br /&gt; Если прописана эта секция, то npc не берется под смарттеррейн даже если он походит по всем параметрам. [no_smart] &lt;br /&gt;&lt;br /&gt; 3.3.9. Секция treshhold &lt;br /&gt; Есть возможность изменять у сталкеров параметры, по которым они атакуют монстров. Этих параметра два: &lt;br /&gt; max_ignore_monster_distance (в данный момент дефолт 15 метров). Сталкер будет всегда атаковать монстров, которые находятся внутри данного радиуса. &lt;br /&gt; ignore_monstre_threshold (в данный момент дефолт 0). Параметр от 0 до 1. Если функция оценки монстра ниже, чем этот параметр, и монстр находится за пределами вышеуказанного радиуса - он будет атакован. В данный момент все настроено так, что сталкеры вообще не атакуют монстров находящихся дальше чем 15 метров от них. &lt;br /&gt; В секции логики либо в текущей схеме указываете: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;threshold = threshold@tratata&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;threshold@tratata] max_ignore_distance = &lt;number&gt; ignore_monster = &lt;number&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Второй параметр следует менять ОЧЕНЬ осторожно. &lt;br /&gt;&lt;br /&gt; 3.3.10. Использование danger &lt;br /&gt; Настройка может задаваться только в какой-то схеме, например: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;walker] danger = danger_condition&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;danger_condition] ignore_distance = 50 (расстояние указывается в метрах&amp;#41; ignore_ distance_grenade = ignore_ distance_corpse = ignore_ distance_hit = ignore_ distance_sound = &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Можно также указывать время ожидания для денжера в зависимости от типа: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;danger_inertion_time_grenade = danger_inertion_time_corpse = danger_inertion_time_hit = danger_inertion_time_sound = &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Дефолтовые настройки: &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;danger_inertion_time_grenade = 20000 danger_inertion_time_corpse = 10000 danger_inertion_time_hit = 60000 danger_inertion_time_sound = 15000 &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; NB!!Также эти настройки теперь распространяются и на схему кемпера. То есть в настройках кемпера перестало работать поле danger_radius. Теперь данные берутся из секции денжера согласно общих правил. &lt;br /&gt; Алгоритм работы такой: Сперва проверяется, что расстояние до опасности не отсекается по ignore_danger. Если опасность ближе, то тогда анализируется ее тип, и проверяется по соотвествующему данному типу расстоянию. Если опасность ближе - тогда разрешается реакция на нее. &lt;br /&gt; В данный момент установлены следующие дефолты: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt; ignore_distance = 50 &lt;br /&gt; ignore_distance_grenade = 15 &lt;br /&gt; ignore_distance_corpse = 10 &lt;br /&gt; ignore_distance_hit = 50 &lt;br /&gt; ignore_distance_sound = 50&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; NB: если надо, чтобы в разных случаях сталкер игнорировал разные типы данжеров, создается несколько секций данжера danger_condition@1, danger_condition@2 и так далее. &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;danger_expiration_time = Через сколько времени денжер перестанет быть акутальным. Дефолт 5000 мс. &lt;br /&gt; danger_inertion_time = Через сколько времени персонаж забудет про денжер, на который он отреагировал. Дефолт 10000 мс. &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt;&lt;br /&gt; 3.3.11. Байки из склепа (Истории у костра) &lt;br /&gt; Из нового: теперь лагеря автоматически рассказывать истории не будут. Для этого вы должны того или иного сталкера &quot;научить&quot; истории. Делается это так: в кастом дате пишется секция: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;game_info] &lt;br /&gt; stories = &quot;story_01, legend_01&quot; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В кавычках список историй и легенд через запятую. Пока что существуют следующие истории и легенды: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;story_01 - Граница зоны и граната за 1 действие. &lt;br /&gt; story_02 - Про трамплин и про камешки. &lt;br /&gt; story_03 - Про то как группа Вильнова вернулась. &lt;br /&gt; story_04 - Про то как Костя Федорин наткнулся на артефакт и пропал на радаре. &lt;br /&gt; story_05 - Про то как духманам с контролером стражаться. &lt;br /&gt; story_06 - Про дверцу, водку и избушку. &lt;br /&gt; legend_01 - Про эксперимент в Зоне, который производят инопланетяне. &lt;br /&gt; legend_02 - Об особо засекреченных лабораториях в зоне. &lt;br /&gt; legend_03 - Легенда о проводнике. &lt;br /&gt; legend_04 - Легенда о темном сталкере. &lt;br /&gt; legend_05 - Легенда о том что глубоко в Зоне спать нельзя.&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; О, том какие истории и легенды в каком лагере на каком уровня можно и нельзя юзать, узнавать о Профа. &lt;br /&gt;&lt;br /&gt; 3.3.12. dont_spawn_loot &lt;br /&gt; Всякого рода сюжетные персонажи которые должны быть пустыми после смерти (например раненные или пленные) оказываются не пустыми. Чтобы это исправить необходимо в кастом дате персонажа прописать секцию [dont_spawn_loot] &lt;br /&gt; 3.4. Оверрайды &lt;br /&gt; Настройки, которые меняют поведение общих схем, в зависимости от активной в данный момент обычной схемы (все они необязательны): &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;meet_enabled = true (запускает схему встречи). &lt;br /&gt; meet_talk_enabled = true (в действующую схему поведения добавляет возможность диалога). &lt;br /&gt; meet_dialog = &lt;название диалога&gt;, который будет запущен при юзе. &lt;br /&gt; meet_state = &lt;название состояния&gt; он определяет, в каком состоянии будет находиться персонаж, если открылось диалоговое окно общения и торговли. &lt;br /&gt; wounded_enabled = true (включает NPC возможность использовать схему раненого). &lt;br /&gt; combat_ignore_cond = см. выше. &lt;br /&gt; combat_ignore_keep_when_attacked = true (игрок продолжает игнорировать бой, даже если в него стреляют – только в случае стрельбы со стороны игрока!) &lt;br /&gt; combat_type = {условие} scheme - тип боя, которым будет пользоваться NPC из данной схемы. &lt;br /&gt; on_combat = см. выше. &lt;br /&gt; companion_enabled = true (cвободноходящие сталкеры могут наниматься как компаньоны (в будущем они будут брать за это деньги)). &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; 3.5. Схемы для монстров &lt;br /&gt; 3.5.1. Схема mob_walker. &lt;br /&gt; Работает аналогично схеме обычного walker. Но есть некоторые отличия &lt;br /&gt; Флаги пути движения s=звуковая_схема (idle, eat, attack, attack_hit, take_damage, die, threaten, steal, panic, growling) с - идти дальше в присяде r - дальше бежать sig=signal_name - установить заданный сигнал для xr_logic Флаги пути обзора: t=время_мсек - время в миллисекундах, которое нужно ждать, смотря в точку a=anim_set - анимация (stand_idle, sit_idle, lie_idle, eat, sleep, rest, attack, look_around, turn) В customdata персонажа задайте (* отмечены обязательные поля): [walker] path_walk = путь перемещения path_look = путь обзора &lt;br /&gt; •	no_reset = true/false - не сбрасывать action предыдущей схемы (если нужно сохранить, например, звук). По умолчанию false. &lt;br /&gt; •	actor_friendly = true/false - монстр никогда первым не нападает на игрока, но если игрок хоть раз атакует монстра - этот режим навсегда отключится. По умолчанию false. &lt;br /&gt; •	npc_friendly = true/false - монстр никогда первым не нападет на другого монстра (даже враждебного). &lt;br /&gt; •	friendly = true/false - монстр не нападает ни на игрока, ни на монстров. В случае агрессии с их стороны, не запоминает их как врагов и остается дружественным ко всем. По умолчанию false. &lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;mob_walker.script &lt;br /&gt; У кровосососов можно управлять невидимостью: [mob_walker] &lt;br /&gt; ... &lt;br /&gt; state = vis &lt;br /&gt; или &lt;br /&gt; state = invis &lt;br /&gt; Задает значение по умолчанию. &lt;br /&gt; Также в флагах walk пути mob_walker-а можно использовать флажок b &lt;br /&gt; (behaviour) с теми же параметрами: &lt;br /&gt; wp00|b=vis &lt;br /&gt; wp00|b=invis &lt;br /&gt; &lt;br /&gt; 3.5.2. Схема mob_eluder &lt;br /&gt; Монстр перемещается по точкам патрульного пути (не учитывая связи между точками), держась на расстоянии от игрока, при этом придерживаясь своего пути, выходя из под схемы при слишком близком приближении к игроку, и возвращаясь обратно, когда расстояние увеличиться. &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;path = ... - работает как обычно path_walk. Набор точек патрульного пути. &lt;br /&gt; Time_capture = ... (время в секундах) время, которое монстр находится под этой схемой. Default – 10. &lt;br /&gt; Time_release = ... (время в секундах) время, которое монстр находится под универсальной схемой. Default – 10. &lt;br /&gt; Min_dist = ... (расстояние в метрах, если расстояние до врага меньше этого, то он переходит под универсальную схему). Default – 5. &lt;br /&gt; Max_dist = ... (расстояние в метрах, если расстояние до врага больше этого, то он переходит под eluder). Default - 10. &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Замечание – работает нестабильно. Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;mob_eluder.script &lt;br /&gt; 3.5.3. Схема mob_remark &lt;br /&gt; Ремарковая схема, только не для сталкеров, а для монстров. &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;state = специфическое состояние данного конкретного монстра (для кровососов - невидимость) &lt;br /&gt; dialog_cond = {+info, =func, -info, !func} условия для открытия окна диалога &lt;br /&gt; anim = анимации монстра, перечисляются через запятую. &lt;br /&gt; anim.head = анимации головы монстра, через запятую перечисляются &lt;br /&gt; tip = какой значок подсветится, при наведении на него курсора &lt;br /&gt; snd = какой звук издает &lt;br /&gt; time = время проигрывания анимаций, используется только для отладки. &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;Файл &amp;#92;gamedata&amp;#92;scripts&amp;#92;mob_remark.script На этой схеме сделан торговец. &lt;br /&gt;&lt;br /&gt; 3.5.4. Схема mob_combat, mob_death &lt;br /&gt; Работают точно также как и у сталкеров соответствующие схемы. Файлы: &amp;#92;gamedata&amp;#92;scripts&amp;#92;mob_combat.script, &amp;#92;gamedata&amp;#92;scripts&amp;#92;mob_death.script &lt;br /&gt;&lt;br /&gt; 3.5.6 Схема mob_jump (монстр-пружинка) &lt;br /&gt; Схема mob_jump. Теперь mob_jump служит для задания прыжков монстров без каких либо проверок и ограничений (расстояние, углы и т.д.). Указывается позиция с помощью патрульного пути, смещение относительно этой позиции и физический фактор прыжка. &lt;br /&gt; Пример: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = mob_jump&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;mob_jump] path_jump = path ph_jump_factor =2.8 offset = 0,10,0 on_signal = jumped | nil &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; path_jump – путь, с помощью которого мы задаем 1 целевую точку прыжка (с нулевым индексом). Реальная точка учитывает позицию path_jump[0] + смещение, заданное с помощью offset. offset – смещение по осям x,y,z соответственно, с помощью которого задается реальная точка в пространстве (может не находится на аи-ноде). ph_jump_factor - влияет на время прыжка. Визуально с помощью него задается кривизна траектории полёта. Чем он больше, тем прыжок более острый, быстрый (меньше дуга). С помощью данной схемы можно делать: перепрыгивание со здания на здание, выпрыгивание из окна, перепрыгивание высоких ограждений и др. Дефолтное значение = 1,8 &lt;br /&gt; Примечание: Фактически mob_jump - это не состояние, а разовое действие. При переходе в него монстр разворачивается в сторону прыжка и прыгает, поднимая сигнал jumped. Т.е. &quot;on_signal = jumped | имя_схемы_или_nil&quot; – является обязательным параметром в схеме, чтобы знать куда переходить дальше. При выборе позиции используется первая точка патрульного пути (0-вой индекс) &lt;br /&gt;&lt;br /&gt; 3.5.7. Mob_camp &lt;br /&gt; Механика: &lt;br /&gt; 1. Сидит на позиции, смотрит в точку &lt;br /&gt; 2. Можно задать несколько позиций и время смены позиции. &lt;br /&gt; 3. Перемещается между позициями бегом &lt;br /&gt; 4. При виде врага переходит под универсальную схему (комбат/паника и т.д) &lt;br /&gt; 5. Задаются минимальная и максимальная дистанции от врага до текущей camp-позиции &lt;br /&gt; 6. Если враг уходит далеко - монстр возвращается на позицию &lt;br /&gt; Использование: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = mob_camp&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;mob_camp] path_look = way_look path_home = way_home time_change_point = 30000 home_min_radius = 20 home_max_radius = 50 skip_transfer_enemy&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;если прописать в кастом дату, то монстр не будет принимать врага от друших монстров, если его увидит (для этого нужно всех монстров в разные group разнести) &lt;br /&gt; Описание параметров: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;path_home - путь, состоящий из точек, в которых будет находиться монстр &lt;br /&gt; path_look - путь, состоящий из точек, в которые будет смотреть монстр &lt;br /&gt; time_change_point - время изменения текущей camp-точки (по-умолчанию10000), мс &lt;br /&gt; home_min_radius - минимальный радиус от врага до camp-точки (по-умолчанию 30), м &lt;br /&gt; home_max_radius - максимальный радиус от врага до camp-точки (по-умолчанию 40), м &lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; Особенности: &lt;br /&gt; Минимальный и максимальный радиус необходимы для игнорирования врага, если он убежал далеко и для возврата на текущую позицию. Учитывается дистанция от врага до текущей позиции. Если дистанция меньше home_min_radius - атакуем врага, пока враг не исчезнет или дистанция не будет больше home_max_radius. &lt;br /&gt; Две дистанции необходимы для того, чтобы избежать ситуации, когда игрок стоит на границе радиуса действия и входит/выходит в зону и монстр бегает то в свою camp-позицию, то на врага. &lt;br /&gt; Выбор текущей позиции производится случайным образом &lt;br /&gt; Индексы точек пути для path_home и path_look должны совпадать (т.е. монстр сидит во второй точке path_home и смотрит во вторую точку path_look) &lt;br /&gt; Единственным необходимым параметром является path_look Если не установлен path_home, в качестве кемперской точки учитывается позиция и нода объекта на спауне. &lt;br /&gt; Для того чтобы монстр смотрел в разные точки на кемпер-позиции, path_look может состоять из нескольких точек. &lt;br /&gt; Обязательные требования: home_min_radius &lt; home_max_radius Количество точек путей path_look и path_home должно быть равным P.S. Mob_Camp можно использовать как альтернативу к монстрам под рестрикторами &lt;br /&gt; 3.5.8. Mob_home &lt;br /&gt; Схема является ещё одним решением по замене рестрикторов. Рекомендую все следующие гулаги монстров делать на mob_home, а старые гулаги постепенно переводить на mob_home. У кого рестрикторы работают хорошо и красиво, их можно не трогать. &lt;br /&gt; Пример: &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;mob_home] path_home = path1 home_min_radius = 10 home_max_radius = 30 aggressive_home&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;в назначенную точку path_home монстры бегут а не идут. &lt;br /&gt; Описание: Монстры держатся вокруг точек пути path_home. В атаке бросаются на врага, если враг внутри home_min радиуса, иначе прячутся в укрытия. Отсюда следует, что home_min -радиус желательно делать таким, чтобы внитри было достаточно каверов. В айдле тоже обычно расходятся по каверам. Home_max радиус сделан по принципу большого рестриктера в схеме «гнездо». &lt;br /&gt; Добавлена возможность задания минимального и максимального радиусов для схемы mob_home в флагах первой точки пути (path_home). Для этого введены флаги minr и maxr. В случае, если радиусы заданы и в секции и во флагах, то значение радиуса берется из секции. Если не задано ни там, ни там, то берутся дефолтные значения 20 и 40 соответственно. &lt;br /&gt;&lt;br /&gt; 3.5.9. Mob_fake_death &lt;br /&gt; Появилась схема mob_fake_death для зомби. Необходимо для сценок, когда игрок идёт, а вокруг него начинают подниматься зомби... Использование: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = mob_fake_death&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;mob_fake_death] on_actor_dist_le = 5 | nil &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; При входе в схему зомби падает, при выходе из схемы встает. &lt;br /&gt;&lt;br /&gt; 3.6. Оверрайды для монстров: &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;actor_friendly = если true, то монстр не атакует актера, до первой атаки на него &lt;br /&gt; npc_friendly = если true, то монстр не атакует сталкеров и монстров, до первой атаки на него &lt;br /&gt; friendly = если true, то монстр не атакует никого до первой атаки на него &lt;br /&gt; braindead = если true, то монстр игнорирует любые атаки&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt;. &lt;br /&gt; Секции для монстров [mob_death], [mob_hit] &lt;br /&gt;&lt;br /&gt; 3.7. Секция spawner &lt;br /&gt; Эта секция, которая присутствует как у NPC, так и у монстров, спавнит их по определенному условию (выводит в онлайн). Для того, чтобы они появились в данной точке, им надо поставить в настройках в Level editor флажок no_move_in_offline и отключен can_switch_offline. Спавнер прописывается в кастом дату объекта перед секцией logic Работает spawner следующим образом: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;spawner] cond = {+info -info =func&amp;nbsp;&amp;nbsp;!func} &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Примечание. Если условия спавна не будет выполняться, то объект не заспавниться, а если он заспавнился и условие перестает выполняться, то объект будет спавнером уведен в оффалйн. Пример: [spawner] cond = {=is_day} (объект заспавниться днем и уйдет в оффлайн ночью) &lt;br /&gt; После того, как объект заспавнился, его берет под управление скрипт Logic &lt;br /&gt;&lt;br /&gt; 3.7.1. Спавн монстров дневных и ночных. &lt;br /&gt; [spawner] cond = {=is_day} – спавнить монстра только днем (если надо ночью, то пишем {!is_day}) check_distance = true – проверка на наличие персонажа рядом. min_distance = 100 – если игрок ближе указанной дистанции, то монстр не заспавниться (по дефолту 150 метров, но на самом деле это много). &lt;br /&gt; 3.8. Скрипт logic &lt;br /&gt; NB: если хотите заспавнить у npc что-то из вещей из custom data, то описание того, как это делается находится в Общей части в настройке профилей персонажей (только тег supplies писать не надо!) &lt;br /&gt; Скрипт logic управляет переключением схем. В customdata любого персонажа (кроме свободных) должна присутствовать секция [logic]. &lt;br /&gt; Функции, на которые ссылается секция [logic] должны находится в файлах &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_effects.script или &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_conditions.script. &lt;br /&gt; В секции должно присутствовать одно из полей: active = активная схема, запускающаяся первой. cfg = имя_ltx_файла_с_настройками &lt;br /&gt; Если задано поле cfg, то в качестве настроек персонажа будет использовано содержимое указанного файла. Пример. Настройки простого walker-а: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] active = walker&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;walker] path_walk = walk1 path_look = look1 &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Переключение схем выполняется с помощью дополнительных условий схемы logic, которые прописываются в секции текущей активной схемы. Существуют следующие условия переключения: Список доступных схем перечислен в главе схемы. Примечание: если logic переключает между несколькими одноименными схемами (например несколькими walker), то их можно нумеровать (walker1, walker2) или через @ давать более информативные названия walker@day, walker@alarm и т.д. &lt;br /&gt; on_actor_dist_le = number | scheme - дистанция до игрока &lt;= number on_actor_dist_le_nvis = number | scheme - дистанция до игрока &lt;= number без проверки на видимость on_actor_dist_ge = number | scheme - если дистанция до игрока &gt; number on_actor_dist_ge_nvis = number | scheme - если дистанция до игрока &gt; number без проверки на видимость on_signal = signal | scheme - срабатывает по приходу сигнала signal от текущей активной схемы on_info = scheme - срабатывает всегда on_timer = msec | scheme - срабатывает через msec мс после включения схемы on_game_timer = sec| scheme – срабатывает через sec секунд игрового времени, после включения схемы on_actor_in_zone = restrictor_name | scheme – если актер в зоне, (указывается имя рестриктора) on_actor_not_in_zone = restrictor_name | scheme – если актер не в зоне, (указывается имя рестриктора) on_npc_in_zone = npc_story_id | restrictor_name | scheme – если NPC в зоне, указывается story_id NPC, и имя рестриктора on_npc_not_in_zone = npc_story_id | restrictor_name | scheme - если NPC не в зоне, указывается story_id NPC, и имя рестриктора on_actor_inside = scheme - зона проверяет, находится ли игрок внутри нее on_actor_outside = scheme - зона проверяет, находится ли игрок за ее пределами &lt;br /&gt; NB: с любыми из вышеперечисленных параметров можно работать следующим образом: on_info = {….} %...% on_info2 = {….} %...% on_info3 = {…} %...% и так далее до посинения &lt;br /&gt;&lt;br /&gt; а также условия для переключения на описанные выше секции. combat_ignore_cond = on_hit = on_death = on_combat = on_use = &lt;!--/ust--&gt;&lt;!--usn(=Ну и че у нас тут!?)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-231-1</guid>
		</item>
		<item>
			<title>Настройка логики. Часть 1</title>
			<link>https://book-mod.3dn.ru/forum/5-230-1</link>
			<pubDate>Sun, 07 Jul 2013 14:44:55 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Автор: GSC Game World&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerV_6aHD&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerV_6aHD&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerV_6aHD&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerV_6aHD&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerV_6aHD&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Настройка логики часть 1&apos;);$(&apos;#uSpoilerV_6aHD&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerV_6aHD&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerV_6aHD&apos;)).val(&apos;[+] Настройка логики часть 1&apos;);$(&apos;#uSpoilerV_6aHD&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Настройка логики часть 1&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; 3. Настройки логики &lt;br /&gt; 3.1. Система флагов (path_walk, path_look) &lt;br /&gt; В точках путей можно задавать флаги, изменяющие поведение персонажа. Флаги задаются прямо в имени waypoint-а, например, для точки с именем &quot;wp00&quot;: wp00|flag1|flag2. &lt;br /&gt; •	Флаги точек пути path_walk: &lt;br /&gt; a=state &lt;br /&gt; Выбирает состояние тела при перемещении (Только из раздела – Ходячие состояния). Список состояний можно взять в gamedata&amp;#92;scripts&amp;#92;state_lib.script. &lt;br /&gt; p=percent &lt;br /&gt; Вероятность остановиться в точке в процентах (0 – 100). По умолчанию 100, т.е. сталкер никогда не проходит мимо точек остановки. &lt;br /&gt; sig=name &lt;br /&gt; Установить сигнал с именем name сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля on_signal логической схемы. Если нужно установить сигнал после поворота – используйте соответствующий флажок пути path_look. &lt;br /&gt; •	Флаги точек пути path_look: &lt;br /&gt; a=state &lt;br /&gt; Выбирает состояние тела при стоянии (или сидении) на месте. (Из разделов Стоячие и Сидячие состояния) Список состояний можно взять в gamedata&amp;#92;scripts&amp;#92;state_lib.script &lt;br /&gt; t=msec &lt;br /&gt; Время в миллисекундах, которое персонаж должен смотреть в заданную точку. ‘*’ – бесконечное время. Допустимы значения в диапазоне [1000, 30000], по умолчанию – 5000. Для конечных (терминальных) вершин пути path_walk, у которых не более 1-й соответствующей точки path_look, значение t всегда считается бесконечным и его явно задавать не нужно. &lt;br /&gt; sig=name &lt;br /&gt; После поворота в точку path_look, установить сигнал с именем name. &lt;br /&gt; syn &lt;br /&gt; Наличие флажка задержит установку сигнала до тех пор, пока в точку с флажком syn не прибудут все персонажи с данным team-ом (team задается в виде текстовой строки в customdata). До тех пор, пока остальные персонажи не прибудут, ожидающей персонаж будет отыгрывать свою idle анимацию. &lt;br /&gt; sigtm=signal &lt;br /&gt; Устанавливает сигнал при вызове time_callback-а state manager-ом. Соответственно, если t=0, то сигнал будет установлен после отыгрывания init анимации. Это используется, например, с анимацией press, которая состоит из двух частей: 1 - нажимаем на кнопку, 2 - опускаем руку. &lt;br /&gt; В пути path_look можно сделать: wp00 | a=press | t=0 | sigtm=pressed &lt;br /&gt; А затем переключить схему: on_signal = pressed | другая_схема &lt;br /&gt;&lt;br /&gt; 3.1.1. Более подробное описание путей (walker) &lt;br /&gt; Настройка: &lt;br /&gt; На карту для каждого walker&apos;а нужно поставить: &lt;br /&gt; •	Путь path_walk, по которому walker ходит. &lt;br /&gt; •	Путь path_look, состоящий из точек, в которые walker смотрит. &lt;br /&gt; Walker&apos;ов может быть от одного или больше. Они могут действовать независимо, или взаимодействовать друг с другом. &lt;br /&gt; [walker] &lt;br /&gt; •	team = ... - имя команды, произвольная текстовая строка. Все walker&apos;ы в одной команде должны иметь один и тот же team. Желательно в team задавать имя уровня и имя места, где стоят walker&apos;ы, например: escape_bridge, escape_factory, это уменьшит шанс ошибиться и дать разным командам общее имя. &lt;br /&gt; •	path_walk = ... - имя пути, описанного в п. 1 &lt;br /&gt; •	path_look = ... - (не обязательно) имя пути, описанного в п. 2. Если персонаж должен только ходить по маршруту, path_look можно не задавать. Если персонаж должен стоять на месте, то ему задается одна точка пути path_walk и как минимум одна точка пути path_look. &lt;br /&gt; Правила расстановки флажков в путях рассмотрим на нескольких примерах. &lt;br /&gt;&lt;br /&gt; •	Пример 1: &lt;br /&gt; Персонаж патрулирует территорию вокруг двух домиков. Маршрут строится следующим образом: &lt;br /&gt; Как сделать, чтобы персонаж между определенными точками бежал или крался? Для этого в пути path_walk существуют флажки. У каждого вейпоинта есть имя: wp00, wp01 и т.д. Флажки задаются в имени. Их нужно отделять от самого имени с помощью символа ‘|’. Пишется a = anim, где anim – название анимации из пункта 2.4.4. настоящей документации. Если мы напишем a = threat, то персонаж пойдет в состоянии danger, если a = raid - то побежит с оружием наизготовку, и т.д. &lt;br /&gt; В точках пути path_walk используются анимации только из раздела «Ходячие состояния»! &lt;br /&gt;&lt;br /&gt; •	Пример 2: &lt;br /&gt; Разговор персонажа. &lt;br /&gt; Чтобы персонаж говорил, перемещаясь по маршруту, нужно определить в каждой точке список тем, на которые он может говорить. Для этого существует поле: s = имя_звуковой_схемы (по умолчанию звук отключен). Несколько тем можно перечислять через запятую. &lt;br /&gt;&lt;br /&gt; •	Пример 3: &lt;br /&gt; В примере 3 используется только поле s, чтобы задать тему разговора, и флажок sc, чтобы показать, что звук проигрывается не разово, а периодически. Остальные параметры (sp, sf, st) задавать не рекомендуется, значения по умолчанию приемлемы для большинства скриптов. Параметр sa также использовать не рекомендуется. Если нужно стартовать звук одновременно с анимацией, лучше воспользоваться полями пути path_look, о котором будет написано ниже в этом документе. Если персонаж не только ходит по маршруту, но должен также останавливаться и играть анимации, нужно задать ему путь path_look. &lt;br /&gt;&lt;br /&gt; •	Пример 4: &lt;br /&gt; Усовершенствуем пример 1, чтобы персонаж, проходя мимо проема между домами, останавливался и заглядывал в него. Что добавилось в этом примере? Путь path_look с двумя точками. Связь между точками этого пути рекомендуется сразу же удалить в редакторе, поскольку она все равно не используется. &lt;br /&gt; Далее, в точках путей path_walk и path_look, которые обведены на рисунке пунктирной линией, в редакторе ставим общие флажки. Например, в верхней паре точек ставим флажок 0, а в нижней паре точек – флажок 1. Теперь персонаж будет останавливаться в точках path_walk, помеченных флажком, и смотреть в точку path_look, помеченную тем же самым флажком. &lt;br /&gt; Если точка path_walk не помечена флажком, персонаж проходит ее не останавливаясь. Одной точке path_walk может соответствовать несколько точек path_look. Тогда персонаж выберем случайно одну из подходящих точек. &lt;br /&gt; По аналогии с path_walk, в точках пути path_look можно использовать различные флажки, меняющие поведение: &lt;br /&gt; •	p = 100 – вероятность, с которой персонаж посмотрит именно в эту точку. Значения p всех подходящих точек суммируются, т.е. если у одной точки p = 100, а у другой 300, то персонаж посмотрит в первую с вероятностью 25%! (т.е. 100 из 400). Во избежание путаницы, рекомендуется задавать p так, чтобы их сумма составляла 100. По умолчанию у всех точек p = 100. &lt;br /&gt; •	t = ... время, на которое персонаж задержится в этой точке (по умолчанию 5000 мсек) &lt;br /&gt;&lt;br /&gt; •	Пример 5: &lt;br /&gt; В этом примере, проходя через точку wp00, персонаж с вероятностью 30% посмотрит в точку wp00 в течение 5 секунд, но с вероятностью 70% посмотрит в точку wp01 в течении 10 секунд. &lt;br /&gt; По умолчанию при остановках персонаж играет анимацию idle, если он не в состоянии crouch, либо анимацию hide, если он в состоянии crouch. Если требуется другая анимация, можно ее указать с помощью флажка: &lt;br /&gt; •	a = имя_анимации (по умолчанию idle). Пишется a = anim, где anim – название анимации из пункта 2.4.4. настоящей документации. Если мы напишем a = hide, то персонаж сядет в состоянии danger, если a = guard, то встанет с оружием наизготовку и т.д. &lt;br /&gt; В точках пути path_look используются анимации только из раздела «Ходячие состояния»! &lt;br /&gt;&lt;br /&gt; 3.2. Схемы поведения сталкеров &lt;br /&gt; Есть определенный набор схем, которые описывают поведение персонажа. Они прописываются у него в custom_data или, в случае гулага, в соответствующих файлах, описывающих работы данного гулага. Ниже приведен перечень этих схем. &lt;br /&gt; В файле &amp;#92;gamedata&amp;#92;scripts&amp;#92;modules.script указаны все загружаемые схемы. &lt;br /&gt;&lt;br /&gt; 3.2.1. Схема walker &lt;br /&gt; Это базовая схема, в которой персонаж перемещается по патрульному пути (path_walk) и останавливается в определенных точках и выполняет соответствующие действия. &lt;br /&gt; [walker] &lt;br /&gt; •	path_walk = имя пути - основной путь, по которому ходит NPC &lt;br /&gt; •	path_look = имя пути - путь, куда смотрит NPC &lt;br /&gt; •	team - команда для синхронизации &lt;br /&gt; В точках path_walk, которым соответствуют точки пути path_look (стоят одинаковые флажки) персонаж останавливается и смотрит в определенную точку, при этом отыгрывая (или не отыгрывая) определенную анимацию. &lt;br /&gt; •	def_state_moving1 - состояние, в котором сталкер движется к первой точке пути, если она близко (patrol по умолчанию) &lt;br /&gt; •	def_state_moving2 - состояние, в котором сталкер движется к первой точке пути, если она не слишком далеко (rush по умолчанию) &lt;br /&gt; •	def_state_moving3 - состояние, в котором сталкер движется к первой точке пути, если она далеко (sprint по умолчанию) &lt;br /&gt; •	def_state_standing - дефолтное состояние в котором он стоит и смотрит на точку, если в этой точке не задана другое состояние. &lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_walker.script &lt;br /&gt;&lt;br /&gt; 3.2.2. Схема remark &lt;br /&gt; Схема используется для синхронизации&amp;#92;связки других схем. &lt;br /&gt; [remark] &lt;br /&gt; •	snd_anim_synс = true/false - Указывает на то необходимо ли синхронизировать звук с анимацией либо нет &lt;br /&gt; •	snd - звук ремарка, по умолчанию nil &lt;br /&gt; •	anim - анимация ремарка, по умолчанию wait &lt;br /&gt; •	target - куда смотрит сталкер. Есть следующие варианты &lt;br /&gt; o	story_id – числовое значение &lt;br /&gt; o	actor – без комментариев &lt;br /&gt; o	nil – позиция вычисленная АИ автоматически &lt;br /&gt; o	&lt;имя работы&gt;,&lt;имя гулага&gt; смотреть на сталкера который находится на определенной работе под гулагом (второй параметр необязателен. В этом случае берется гулаг сталкера, для которого задана данная секция ремарка). &lt;br /&gt; Пример: &lt;br /&gt; target = logic@cit_killers_base_guard, cit_killers &lt;path_name&gt;, &lt;point_number&gt; - можно указывать смотреть в вершину патрульного пути (&lt;имя пути&gt;, &lt;имя точки&gt;). &lt;br /&gt; Внимание, теперь если значение не задано, то оно равно nil а не actor, как было раньше. То есть если вы хотите чтобы персонаж в ремарке смотрел на актера - необходимо явно прописывать это. Если задано значение nil, то персонаж развернется в позицию, которую посчитает AI. &lt;br /&gt; Стандартные сигналы для remark: &lt;br /&gt; •	sound_end – по окончании проигрывания звуковой схемы &lt;br /&gt; •	anim_end – по окончании проигрывания анимации &lt;br /&gt; •	action_end – по окончании проигрывания и того и другого, если они синхронизированы &lt;br /&gt; Пример синхронизации анимации и звука в схеме remark: &lt;br /&gt; [remark] &lt;br /&gt; •	anim - анимация &lt;br /&gt; •	snd - звук &lt;br /&gt; •	snd_anim_sync = true - синхронизация &lt;br /&gt; •	on_signal = action_end | следующая схема &lt;br /&gt;&lt;br /&gt; 3.2.3. Схема sleeper &lt;br /&gt; Схема сидящего и спящего NPC. Необходимо поставить патрульный путь, минимум из одного поинта. Спящий будет садиться спать в нулевой точке пути, и разворачиваться при этом в сторону первой точки. &lt;br /&gt; [sleeper] &lt;br /&gt; •	path_main = ... - имя пути &lt;br /&gt; •	wakeable = true – может ли проснуться быстро (если true, то спит на корточках и во сне бормочет) &lt;br /&gt;&lt;br /&gt; Если путь состоит из двух точек, то связь нужно делать от первой точки к нулевой (либо двунаправленную). &lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_sleeper.script &lt;br /&gt;&lt;br /&gt; 3.2.4. Схема kamp &lt;br /&gt; Схема сталкера, сидящего в определенном радиусе вокруг указанной точки (у костра), и располагающегося лицом к этой точке. &lt;br /&gt; [kamp] &lt;br /&gt; •	center_point = kamp_center – имя точки вокруг которой NPC будет устраиваться. &lt;br /&gt; •	radius = 2 - насколько далеко сталкер будет сидеть от центра лагеря, 2 - по умолчанию. &lt;br /&gt; •	def_state_moving = run - дефолтное состояние, в котором сталкер будет идети к точке кампа. &lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_kamp.script &lt;br /&gt; Если точка кампа находится в костре, то в оффлайне сталкера прийдут на нее, а когда они перейдут в онлайн, то окажуться внутри костра, где и получат хит. Чтобы этого не случалось в секции кемпа указывать path_walk из одной точке, название которой равно: &lt;br /&gt; &lt;path_kamp_name&gt;_task &lt;br /&gt; •	path_walk = &lt;path_kamp_name&gt;_task &lt;br /&gt; Если точка кемпа расположена в чистом поле то, path_walk прописывать не надо. &lt;br /&gt;&lt;br /&gt; 3.2.5. Схема camper &lt;br /&gt; Свойства кемперов: &lt;br /&gt; •	Кемпер стоит на точке и смотрит в направлении, куда Вы его поставили в редакторе или передигается по патрульным путям &lt;br /&gt; •	Кемперы переключаются на универсальный комбат, только если видят врага ближе чем в 30 метрах. Если он выжил, он возращается в состояние кемпера. &lt;br /&gt; •	В любых других случаях действуют по собственной скриптовой схеме. Если видим врага - стреляем. Если слышим danger - то смотрим в направление в danger. Если видим гранату - убегаем от гранаты. Если видели врага, а враг исчез, то смотрим в точку, где видели последний раз врага. &lt;br /&gt; •	Кемперы не сражаются в движении. Если они видят врага - они останавливаются, стреляют, а потом продолжают движение. &lt;br /&gt; [camper] &lt;br /&gt; •	path_walk = patrol_path &lt;br /&gt; •	path_look = patrol_path &lt;br /&gt; •	radius = ... – расстояние в метрах, если расстояние между кэмпером и противником меньше указанного, кэмпер уходит в универсальный комбат. По умолчанию этот радиус равен 20 метрам. &lt;br /&gt; •	no_retreat = true - персонаж при виде врага не будет ломиться на ближайшую точку path_walk, а сразу перейдет в режим убивания. Нужно это в том случае, если вы хотите сделать сценку, когда одни ребята наезжают на других. Ставите кемперов с вышеуказанным флажком. Они идут по своим патрульным путям и выносят врагов. &lt;br /&gt; •	def_state_moving = ... - (состояние из стейт менеджера), в котором мы движемся на ближайшую точку пути при враге. &lt;br /&gt; •	def_state_moving_fire = ... - (состояние из стейт менеджера (sneak_fire)), в котором мы отстреливаемся от врага, во время движения на ближайшую точку пути. &lt;br /&gt; •	def_state_campering = ... - (состояние из стейт менеджера (hide)), в котором мы ожидаем врага, находясь на пути. &lt;br /&gt; •	def_state_campering_fire = ... (состояние из стейт менеджера (hide_fire)), в котором мы отстреливаемся от врага, находясь на пути. &lt;br /&gt; •	attack_sound = имя_звуковой_темы - возможность переопределять снайперам/кемперам звук атаки. По дефолту он равен звуковой теме &quot;fight_attack&quot;. Можно изменить на любое другое (для сценических потребностей) либо вообще отключить, прописав в секции кемпера пустой атрибут. &lt;br /&gt; •	shoot = ... - Задаем тип стрельбы. Возможные значения: &lt;br /&gt; o	always - значение по умолчанию, стреляет всегда, когда можно &lt;br /&gt; o	none - не стреляет вообще. &lt;br /&gt; o	terminal - стреляет только когда находится на последней точки патрульного пути. Это сделано для облегчения построение атакующих сцен. &lt;br /&gt; У кемпера есть один большой минус – когда ему наносится хит и он не знает откуда хит наносится (не видит противника, не слышит выстрела), то он тупо продолжает стоять на старом месте и ждать следующей пули. Ввиду этого не стоит расставлять кемперов в случае, когда сталкеры должны защищаться и держать позицию в том случае, если есть несколько направлений, откуда игрок или стелкеры смогут атаковать поставленного кемпера. Используйте walkerов в таких случаях, а кемперов стоить ставить для атак по путям и как снайперов. &lt;br /&gt;&lt;br /&gt; 3.2.5.1. Схема sniper &lt;br /&gt; Разновидность кемпера. Отличаются тем, что стреляют только одиночными выстрелами и не смотрят по точкам патрульного пути, а сканируют пространство между ними. Скорость сканирования от точки к точке фиксирована и равна 20сек. Внимание! Ставить снайперу только 2 точки look. &lt;br /&gt; В кастом дате кемпера прописать: &lt;br /&gt; sniper = true &lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_camper.script &lt;br /&gt;&lt;br /&gt; 3.2.6. Схема follower &lt;br /&gt; В custom_data прописан как follower. NPC идет за NPC лидером. Если до лидера расстояние менее 5 метров, то он идет, если от 5 до 20 – бежит в режиме run, если свыше 20 – догоняет в режиме sprint. Пути не задаются. &lt;br /&gt; [follower] &lt;br /&gt; •	leader = ... - story_id лидера из game.ltx (число!). &lt;br /&gt; •	formation_line = true - постарается идти сбоку от лидера, в противном случае будет идти сзади. &lt;br /&gt; •	distance = ... - расстояние в метрах, на котором будет идти от лидера attendant. По умолчанию – 1,5 метра, если идет цепью, то 5 метров. &lt;br /&gt; •	state_if_leader_in_meet - это есть строка с именем состояния из state_manager, которое будет назначено follower&apos;ам, если командир пребывает в состоянии meet. &lt;br /&gt; •	anim_walk = state - состояние, в котором фолловер идет за лидером. &lt;br /&gt; •	anim_run = state - состояние, в котором фолловер бежит за лидером. &lt;br /&gt; •	anim_sprint = state - состояние, в котором фолловер спринтует за лидером. &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_ attendant.script &lt;br /&gt; Если все это происходит под гулагом, то вместо story_id лидера, мы прописываем его секцию логики в файле скрипта. Пример: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;t = { section = &quot;logic@bar_arena_follower_2&quot;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idle = 0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prior = 7, state = {0}, squad = squad, group = groups&amp;#91;0], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;in_rest = &quot;&quot;, out_rest = &quot;&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dependent = &quot;logic@bar_arena_leader&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;predicate = function(obj&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return obj:character_community(&amp;#41; == &quot;dolg&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt; }&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; 3.2.7. Схема zoneguard &lt;br /&gt; NPC есть две зоны (может быть одна). Он ходит по путям, но когда игрок заходит в зону, отрывает от дел, подбегает к игроку, наставляет на игрока оружие (может кричать, может говорить), если игрок заходит во вторую зону – атакует игрока &lt;br /&gt; [zoneguard] &lt;br /&gt; •	path_walk = ... - путь перемещения &lt;br /&gt; •	path_look = ... - путь обзора &lt;br /&gt; •	team = ... - имя команды синхронизированных zoneguard-ов (из всей команды только 1 будет реагировать на игрока) &lt;br /&gt; •	zone_guard = ... - имя зоны, в пределах которой игрок будет атакован &lt;br /&gt; •	zone_warn = ... - имя зоны, в пределах которой начинать разговор с игроком &lt;br /&gt; •	walker_team = ... - team для схемы перемещения его в состоянии walker (если не задан, используется значение из поля team) &lt;br /&gt; •	no_move = ... - если true, персонаж окликнет игрока с места и не будет подбегать к нему &lt;br /&gt; •	snd_greet = ... - имя звуковой схемы, из которой будет проигран звук при обнаружении персонажа &lt;br /&gt; •	ignore_friends = ... - true - будет игнорировать дружественных ему персонажей. &lt;br /&gt; •	ignore_cond = {+info -info =func !func} - условия, при которых NPC игнорирует игрока &lt;br /&gt; •	no_danger = ... - если true, то не отыгрывает угрожающую анимацию, нейтралам. &lt;br /&gt; •	anim = ... - какую отыгрывает анимацию, если игрок ему не враждебен. &lt;br /&gt; •	snd_anim_sync = ... - если true, то npc будет синхронизировать звук с анимацией &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_zoneguard.script &lt;br /&gt;&lt;br /&gt; 3.2.8. Схема wounded (раненый) &lt;br /&gt; [logic] &lt;br /&gt; wounded = wounded &lt;br /&gt;&lt;br /&gt; [walker] &lt;br /&gt; wounded = wounded &lt;br /&gt;&lt;br /&gt; [wounded] &lt;br /&gt; hp_state 		= HP|condstate@condsound|HP|condstate@condsound &lt;br /&gt; hp_state_see	= HP|condstate@condsound|HP|condstate@condsound &lt;br /&gt; psy_state 		= PSY|condstate@condsound|PSY|condstate@condsound &lt;br /&gt; hp_victim		= HP|condvictim|HP|condvictim &lt;br /&gt; hp_cover		= HP|condbool|HP|condbool &lt;br /&gt; hp_fight		= HP|condbool|HP|condbool &lt;br /&gt; syndata		= state@sound|state@sound &lt;br /&gt; help_dialog	= story_id &lt;br /&gt; help_start_dialog = story_id &lt;br /&gt; Где: &lt;br /&gt; •	condstate – кондлист, возвращающий состояние персонажа, либо true. Если он возвращает true – нпс обидится на игрока &lt;br /&gt; •	condsound – кондлист, возвращающий саунд тему. &lt;br /&gt; •	HP – пороговые значение здоровья персонажа &lt;br /&gt; •	PSY – пороговые значения пси здоровья персонажа &lt;br /&gt; •	condvictim – кондлист, возвращающий направление куда смотреть. Возможные значения: nil, actor, number. В случае числа – будет смотреть на персонажа с указанными стори айди. &lt;br /&gt; •	condbool – кондлист, возвращаюзий true либо false. &lt;br /&gt; Значения полей: &lt;br /&gt; •	hp_state – поведение персонажа когда он не видит игрока &lt;br /&gt; •	hp_state_see – поведение персонажа, когда он видит игрока &lt;br /&gt; •	psy_state – поведение персонажа при псиатаках &lt;br /&gt; •	hp_victim – куда смотреть, в зависимости от ХП &lt;br /&gt; •	hp_cover – идти в укрытие или нет, в зависимости от ХП &lt;br /&gt; •	hp_fight – разрешено воевать или нет, в зависимости от ХП &lt;br /&gt; •	syndata – синхропары для красоты. &lt;br /&gt; •	help_dialog – story_id диалога вместо дефолтного actor_help_wounded. Если вам по сюжету необходимо заменить диалог другим, то вы в этом поле прописываете id другого диалога. &lt;br /&gt; Также мы вставляем стартовый диалог раненого. Если мы его прописываем, то все актёрские диалоги для раненых должны иметь такой precondition: dialogs.allow_wounded_dialog. &lt;br /&gt; Пример. В качестве примера взята дефолтная настройка. &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;hp_state = 30|help_me@help|10|wounded_heavy@help_heavy &lt;br /&gt; hp_state_see = 30|wounded@help_see|10|wounded_heavy@help_heavy &lt;br /&gt; psy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20| &lt;br /&gt; {=best_pistol}psy_shoot,psy_pain@{=best_pistol}wounded_psy_shoot,wounded_psy &lt;br /&gt; hp_victim = 30|actor|10|nil &lt;br /&gt; hp_cover = 30|true|10|false &lt;br /&gt; hp_fight = 30|true|10|false &lt;br /&gt; syndata = wounded@help&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Где: &lt;br /&gt; •	best_pistol – проверка на то, что лучшее оружие НПС является пистолетом. &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_wounded.script &lt;br /&gt;&lt;br /&gt; 3.2.9. Схема rest &lt;br /&gt; Чувак гуляет, хавает, спит. Пока нормально не работает. &lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_rest.script &lt;br /&gt;&lt;br /&gt; 3.2.10. Схема heli_hunter &lt;br /&gt; Может стрелять, либо не стрелять по вертолету в зависимости от условий. Делается это так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;camper@bar_freedom_attack_sniper_1] &lt;br /&gt; path_walk = camper_1_walk &lt;br /&gt; path_look = camper_1_look &lt;br /&gt; on_info = {+bar_freedom_attack_ecolog} camper1@bar_freedom_attack_sniper_1 %=bar_freedom_angry_actor% &lt;br /&gt; meet_talk_enabled = true &lt;br /&gt; meet_dialog = bar_svoboda_dialog &lt;br /&gt; heli_hunter = {-bar_ecolog_crush_heli_down} true, false&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Если раньше оверрайд хелихантера понимал только значения true либо false, то сейчас он понимает кондлист, который если возвращает true - то стрельба по вертолету в данной схеме разрешена. &lt;br /&gt;&lt;br /&gt; 3.2.11. Patrol &lt;br /&gt; Итак, есть предварительная система патруля. Представляет собой вариацию kamp только в состоянии ходьбы. Для ее работы прописываем в кустовой дате следующее: &lt;br /&gt; [patrol] &lt;br /&gt;&lt;br /&gt; path_walk = path_walk &lt;br /&gt; path_look = path_look &lt;br /&gt; formation = back &lt;br /&gt; commander = true &lt;br /&gt; move_type = ... &lt;br /&gt; •	formation - описывет способ построения и не является обязательным. Возможны следующие варианты: &lt;br /&gt; o	back - мужики идут чуть позади командира в два ряда (по умолчанию) &lt;br /&gt; o	line - шеренга &lt;br /&gt; o	around - вокруг командира &lt;br /&gt; •	commander = true - типа назначат командиром, желательно, чтобы такой красивый он был один. &lt;br /&gt; •	move_type = ... - задает изначальный режим перемещения, по умолчанию patrol. Вообще, значение этого поля есть название ходячей анимации из state_mgr_lib. &lt;br /&gt; При остановке командора в meet мужики останавливаются. &lt;br /&gt; Если командор помирает, то автоматически будет выбран другой. Командиром становится тот, кто первый попал под схему. Способы построения задаются в вейпоинтах следующим образом: &lt;br /&gt; ret=0...2 &lt;br /&gt; •	0 - линия &lt;br /&gt; •	1 – вокруг старшего &lt;br /&gt; •	2 – по бокам &lt;br /&gt; При движении командор работает как обычный walker и сопровождающие его кадры повторяют его действия. То есть, если в параметрах вейпоинта прописано a = assault, то командор помчится с орудием убийства на перевес, а остальные его откопируют. &lt;br /&gt; Что еще не сделано или глючит: &lt;br /&gt; •	нет возможности автоматически перестроить команду (нужно от Шурика то, что записано в todo листе) &lt;br /&gt; •	все идут молча (когда будет манагер баек, то сделаем) &lt;br /&gt; •	командор пока не отдает команд (нет озвучки) &lt;br /&gt; •	не рекомендуется включать спринт (глючит) &lt;br /&gt; 3.3. Секции. &lt;br /&gt; 3.3.1. Секция combat &lt;br /&gt; Показывает, что происходит, когда NPC срывается в бой. &lt;br /&gt; on_combat = combat &lt;br /&gt; [combat] &lt;br /&gt; •	on_info = %+info -info =func% - эффекты, которые вызываются на каждом раунде боя. &lt;br /&gt; Для задания различных типов скриптовых боёв для различных ситуаций используется параметр combat_type. &lt;br /&gt; В следующем примере сталкер сражается: &lt;br /&gt; •	по-кемперски, если враг = актёр и он дальше Х метров &lt;br /&gt; •	по-монолитовски, если любой враг дальше Y метров &lt;br /&gt; •	иначе - движковый бой &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = walker &lt;br /&gt; on_combat = combat &lt;br /&gt;&lt;br /&gt; &amp;#91;walker] &lt;br /&gt; path_walk = ... &lt;br /&gt;&lt;br /&gt; &amp;#91;combat] &lt;br /&gt; combat_type = {=fighting_actor =fighting_ge_X_meters} camper, {=fighting_ge_Y_meters} monolith&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Пример такой функции: нам надо чтобы на расстоянии свыше 20 метров NPC переходил бы в кемперский комбат. &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function fighting_dist_ge_20(actor, npc&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return db.storage&amp;#91;npc:id(&amp;#41;].enemy:position(&amp;#41;:distance_to ( npc:position(&amp;#41; &amp;#41; &gt;= 400&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Примечание – мы пишем квадрат нужного нам расстояния, для экономии системных ресурсов. &lt;br /&gt; Ещё один пример. Сталкер ходит под симуляцией, но у него бой не движковый, а всегда зомбированый: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = nil &lt;br /&gt; on_combat = combat &lt;br /&gt;&lt;br /&gt; &amp;#91;combat] &lt;br /&gt; combat_type = zombied&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Если в разных секциях для персонажа требуются разные типы боя или разные условия, то можно воспользоваться оверрайдом combat_type. Помните: оверрайд всегда будет перекрывать настройку в секции combat. Т.е., если у вас логика на 5 секций и в четырёх нужен кемперский комбат, а в пятой монолитовский, то можно задать так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;logic] &lt;br /&gt; active = walker1 &lt;br /&gt; on_combat = combat &lt;br /&gt;&lt;br /&gt; &amp;#91;walker1] &lt;br /&gt; ... &lt;br /&gt; &amp;#91;walker2] &lt;br /&gt; ... &lt;br /&gt; &amp;#91;walker3] &lt;br /&gt; ... &lt;br /&gt; &amp;#91;walker4] &lt;br /&gt; ... &lt;br /&gt; &amp;#91;walker5] &lt;br /&gt; ... &lt;br /&gt; combat_type = monolith &lt;br /&gt;&lt;br /&gt; &amp;#91;combat] &lt;br /&gt; combat_type = camper&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; •	scheme - задает тип боя (monolith, camper, zombied), иначе - универсальный бой) &lt;br /&gt; •	disable_combat_handler – функция отключающая секцию combat. &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_combat.script &lt;br /&gt;&lt;br /&gt; 3.3.2 Секция death &lt;br /&gt; Схема показывает, что происходит при смерти NPC. &lt;br /&gt; on_death = death &lt;br /&gt; [death] &lt;br /&gt; on_info = %+info -info =func% &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_death.script &lt;br /&gt;&lt;br /&gt; 3.3.3. Cекция hit &lt;br /&gt; Схема показывает, что происходит при нанесении повреждения NPC. &lt;br /&gt; Причем on_hit не срабатывает на звук выстрела, только на попадание по сталкеру! Это сделано, потому что выстрел в воздух в общем случае не должен восприниматься как агрессия (игрок отстреливает, скажем, собак, а на него срывается охрана). &lt;br /&gt; on_hit = hit &lt;br /&gt; [hit] &lt;br /&gt; on_info = %+info -info =func% &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_hit.script &lt;br /&gt;&lt;br /&gt; 3.3.4. Секция actor_dialogs &lt;br /&gt; Показывает, какие диалоги будут доступны или недоступны игроку при разговоре с этим NPC. Пишется практически в любой схеме. &lt;br /&gt; actor_dialogs = actor_dialogs &lt;br /&gt; [actor_dialogs] &lt;br /&gt; •	id = ... - доступные диалоги через запятую. &lt;br /&gt; •	disable = ... - запрещенные диалоги, тоже через запятую. &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_meet.script &lt;br /&gt;&lt;br /&gt; 3.3.5. Секция use &lt;br /&gt; Схема показывает, что произойдет, если игрок юзнет NPC. &lt;br /&gt; on_use = use &lt;br /&gt; [use] &lt;br /&gt; on_info = %+info -info =func% &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_use.script &lt;br /&gt;&lt;br /&gt; 3.3.6. Секция combat_ignore &lt;br /&gt; Если NPC в этой схеме то он не переходит в боевой режим. В любой другой схеме: &lt;br /&gt; [walker] &lt;br /&gt; •	combat_ignore_cond = {+info –info =func !func} – условия для игнорирования боя (если написать always, то в данной схеме игрок будет игнорировать бой всегда, пока не перейдет в схему, где бой не игнорируется). &lt;br /&gt; В схеме нет дополнительных полей. &lt;br /&gt; [walker] &lt;br /&gt; combat_ignore = combat_ignore &lt;br /&gt;&lt;br /&gt; [combat_ignore] &lt;br /&gt; Функции, используемые для работы с кондлистом комбат игнора: &lt;br /&gt; •	fighting_dist_ge_20 - текущий враг на расстоянии больше или равном 20 м. &lt;br /&gt; •	fighting_dist_ge (х) – (х - расстояние в метрах)универсальная функция для combat_ignore, проверка расстояния для игрока. &lt;br /&gt; •	fighting_actor - текущий враг - актёр? &lt;br /&gt; •	check_fighting - проверка (по story_id) того, что нашим врагом есть хотя бы кото-то один из списка. &lt;br /&gt;&lt;br /&gt; Файл: &amp;#92;gamedata&amp;#92;scripts&amp;#92;xr_combat_ignore.script&lt;!--/ust--&gt;&lt;!--usn(=Настройка логики часть 1)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt;</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-230-1</guid>
		</item>
		<item>
			<title>Спавн НПС через скрипт</title>
			<link>https://book-mod.3dn.ru/forum/5-8-1</link>
			<pubDate>Sat, 06 Jul 2013 16:18:08 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Учимся спавнить НПС посредством скрипта&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerEFCur_&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerEFCur_&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerEFCur_&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerEFCur_&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerEFCur_&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Собственно сам урок&apos;);$(&apos;#uSpoilerEFCur_&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerEFCur_&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerEFCur_&apos;)).val(&apos;[+] Собственно сам урок&apos;);$(&apos;#uSpoilerEFCur_&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Собственно сам урок&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt; &lt;br /&gt; Итак, начнем. Во-первых нужно создать самого НПС. Для этого: &lt;br /&gt; 1) Создаем профиль в файле character_desc_escape.xml (для Кордона) &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;specific_character id=&quot;wurdalak&quot; team_default = &quot;1&quot;&gt; //id - уникальный идентификатор. без цифр и пробелов. Не может повторяться &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;name&gt;WurDalaK&lt;/name&gt; //имя НПС &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;icon&gt;ui_npc_u_green_stalker_2&lt;/icon&gt; //название иконки НПС в диалогах/торговле &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;bio&gt;esc_wolf_bio&lt;/bio&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;class&gt;stalker&lt;/class&gt; //класс. можно написать любой &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;community&gt;stalker&lt;/community&gt; //группировка &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;terrain_sect&gt;stalker_terrain&lt;/terrain_sect&gt; //места где может ходить (правится в all.spawn&amp;#41; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;rank&gt;50&lt;/rank&gt; //ранг НПС &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;reputation&gt;60&lt;/reputation&gt; //репутация &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;money min=&quot;1000&quot; max=&quot;5000&quot; infinitive=&quot;0&quot;/&gt; //кол-во денег. если infinitive=&quot;1&quot; то бесконечные, но в пределах выставленной суммы &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;snd_config&gt;characters_voice&amp;#92;human_02&amp;#92;newbie&amp;#92;&lt;/snd_config&gt; //голос НПС &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;crouch_type&gt;-1&lt;/crouch_type&gt; //вид приседания (не править!&amp;#41; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;visual&gt;actors&amp;#92;novice&amp;#92;green_stalker_1&lt;/visual&gt; //модель НПС &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;supplies&gt; &amp;#91;spawn] &amp;#92;n //то что спавнится в инвентаре у НПС &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wpn_desert_eagle &amp;#92;n &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ammo_11.43x23_hydro = 1 &amp;#92;n&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wpn_knife &amp;#92;n &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &quot;gameplay&amp;#92;character_items.xml&quot; &amp;#92;n &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#include &quot;gameplay&amp;#92;character_food.xml&quot; &lt;br /&gt;&lt;br /&gt; &lt;/supplies&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;actor_dialog&gt;название_диалога_если_есть&lt;/actor_dialog&gt; //диалоги &lt;br /&gt;&lt;br /&gt; &lt;/specific_character&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 2. Прописываем НПС в спавн, дабы скрипт знал откуда брать НПС. Для этого в файле spawn_sections.ltx (gamedata&amp;#92;config&amp;#92;creatures) пишем такую вещь: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;agr_stalker_regular]:stalker //в скобках пишем то, что запишем далее. будет в скрипте спавна &lt;br /&gt; $spawn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;respawn&amp;#92;agr2_respawn_factory&quot; //можно пропустить. заполнять если нпс спавнится в группе смарт терраина &lt;br /&gt; character_profile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= agr_stalker_general //id нпс-а &lt;br /&gt; spec_rank = regular //ранг &lt;br /&gt; community = stalker //группировка &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; 3) В папке gamedata&amp;#92;scripts создаем пустой txt файл и переименовываем в.. например, test_npc.script. Внимание! .script - расширение! не надо test_npc.script.txt &lt;br /&gt; Открываем файл блокнотом и пишем в него: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function spawn_npc( &lt;br /&gt; local npc = alife(&amp;#41;:create(&quot;то, что в скобках&quot;,vector(&amp;#41;:set(координаты&amp;#41;,левел_вертекс,гейм вертекс&amp;#41; &lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; Как узнать координаты смотрим &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/5-104-1&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; 4) Вызываем функцию. Самый распространенный способ - через диалог. &lt;br /&gt; а) Открываем файлы: dialogs_escape.xml (gamedata&amp;#92;config&amp;#92;gameplay) и stable_dialogs_escape.xml (gamedata&amp;#92;config&amp;#92;gameplay). Это для Кордона. &lt;br /&gt; В первом - &quot;скелеты&quot; диалогов - ветки ответов, вызовы функций, проверки и т.д. Во втором - тексты. Ищем нужный нам диалог и вставляем вот это: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;action&gt;test_npc.spawn_npc&lt;/action&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; То что ДО точки - название файла-скрипта, ПОСЛЕ - название функции. Пример фразы с вставленным вызовом: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;phrase id=&quot;11&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;esc_provodnik_start_11&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;action&gt;test_npc.spawn_npc&lt;/action&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;next&gt;12&lt;/next&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/phrase&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Ну а как создать свой диалог, смотрим &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/forum/5-98-1&quot; target=&quot;_blank&quot;&gt;сюда&lt;/a&gt;. &lt;br /&gt; &lt;!--/ust--&gt;&lt;!--usn(=Собственно сам урок)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; Также прикрепил урок в формате txt. Кому надо - качаем)</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-8-1</guid>
		</item>
		<item>
			<title>Создание спального мешка для Теней Чернобыля</title>
			<link>https://book-mod.3dn.ru/forum/5-228-1</link>
			<pubDate>Mon, 24 Jun 2013 17:26:00 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://book-mod.3dn.ru/forum/5&quot;&gt;Конфиги, скрипты и прочие мелочи&lt;/a&gt;&lt;br /&gt;Описание темы: Статья создана: Weanchester, TuMaN; создал скрипт сна: Ab@dD&lt;br /&gt;Автор темы: WurDalaK&lt;br /&gt;Автор последнего сообщения: WurDalaK&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;!--uSpoiler--&gt;&lt;div class=&quot;uSpoilerClosed&quot; id=&quot;uSpoilerA4oWqp&quot;&gt;&lt;div class=&quot;uSpoilerButBl&quot;&gt;&lt;input type=&quot;button&quot; class=&quot;uSpoilerButton&quot; onclick=&quot;if($(&apos;#uSpoilerA4oWqp&apos;)[0]){if ($(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerA4oWqp&apos;))[0].style.display==&apos;none&apos;){$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerA4oWqp&apos;))[0].style.display=&apos;&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerA4oWqp&apos;)).val(&apos;[&amp;#92;&amp;#8211;] Пам парарам парарам парапарарам&apos;);$(&apos;#uSpoilerA4oWqp&apos;).attr(&apos;class&apos;,&apos;uSpoilerOpened&apos;);}else {$(&apos;.uSpoilerText&apos;,$(&apos;#uSpoilerA4oWqp&apos;))[0].style.display=&apos;none&apos;;$(&apos;.uSpoilerButton&apos;,$(&apos;#uSpoilerA4oWqp&apos;)).val(&apos;[+] Пам парарам парарам парапарарам&apos;);$(&apos;#uSpoilerA4oWqp&apos;).attr(&apos;class&apos;,&apos;uSpoilerClosed&apos;);}}&quot; value=&quot;[+] Пам парарам парарам парапарарам&quot;/&gt;&lt;/div&gt;&lt;div class=&quot;uSpoilerText&quot; style=&quot;display:none;&quot;&gt;&lt;!--ust--&gt;Для создания спального мешка, нам понадобятся эти файлы: &lt;br /&gt; В папке scripts &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;bind_stalker.script &lt;br /&gt; пустой файл main_sleep.script&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; В папке config/ui &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;ui_movies.xml &lt;br /&gt; пустой ui_sleep.xml&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; В папке config/misc &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;dream.ltx &lt;br /&gt; items.ltx&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt; В папке config/texs/rus &lt;br /&gt; &lt;!--uzquote--&gt;&lt;div class=&quot;bbQuoteBlock&quot;&gt;&lt;div class=&quot;bbQuoteName&quot; style=&quot;padding-left:5px;font-size:7pt&quot;&gt;&lt;b&gt;Цитата&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;quoteMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzq--&gt;string_table_enc_equipment.xml&lt;!--/uzq--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzquote--&gt; &lt;br /&gt;&lt;br /&gt; Создание предмета &quot;спальный мешок&quot; &lt;br /&gt; Заходим в gamedata&amp;#92;config&amp;#92;misc, ищем файл items.ltx и в конце пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&amp;#91;sleep_bag]:identity_immunities &lt;br /&gt; GroupControlSection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= spawn_group &lt;br /&gt; discovery_dependency = &lt;br /&gt; $spawn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= &quot;food and drugs&amp;#92;sleep_bag&quot; &lt;br /&gt; $prefetch&amp;nbsp;&amp;nbsp;&amp;nbsp;= 32 &lt;br /&gt; class&amp;nbsp;&amp;nbsp;&amp;nbsp;= II_ANTIR ;класс &lt;br /&gt; cform&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= skeleton &lt;br /&gt; visual&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= physics&amp;#92;decor&amp;#92;bag_01.ogf ;модель мешка с песком &lt;br /&gt; description&amp;nbsp;&amp;nbsp;= enc_equipment_sleep_bag ;описание &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; inv_name&amp;nbsp;&amp;nbsp;&amp;nbsp;= sleep_bag ;наименование &lt;br /&gt; inv_name_short&amp;nbsp;&amp;nbsp;= sleep_bag ;наименование &lt;br /&gt; inv_weight&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0.2 ;вес &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; inv_grid_width&amp;nbsp;&amp;nbsp;= 2 ;ширина иконки &lt;br /&gt; inv_grid_height&amp;nbsp;&amp;nbsp;= 2 ;высота иконки &lt;br /&gt; inv_grid_x&amp;nbsp;&amp;nbsp;&amp;nbsp;= 12 ;ширина по x &lt;br /&gt; inv_grid_y&amp;nbsp;&amp;nbsp;&amp;nbsp;= 0 ; высота по y &lt;br /&gt; cost&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= 3000 ;стоимость &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ; food item &lt;br /&gt; animation_slot&amp;nbsp;&amp;nbsp;= 4 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; ;hud item &lt;br /&gt; hud = wpn_vodka_hud&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;Работа с созданием спального мешка завершена. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Название и описание&lt;/b&gt; &lt;br /&gt; Заходим в gamedata&amp;#92;config&amp;#92;text&amp;#92;rus, находим файл string_table_enc_equipment.xml, открываем его и в самом низу, перед &lt;/string_table&gt; пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;string id=&quot;sleep_bag&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Спальный мешок&lt;/text&gt; &lt;br /&gt; &lt;/string&gt; &lt;br /&gt; &lt;string id=&quot;enc_equipment_sleep_bag&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Отличный спальный мешок. Ткань не рвется, устойчивая к воде. Отличная вещь переночевать в Зоне.&lt;/text&gt; &lt;br /&gt; &lt;/string&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Итак с предметом закончили Приступим к главному. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Работа со скриптами&lt;/b&gt; &lt;br /&gt; Заходим в gamedata&amp;#92;scripts, находим файл bind_stalker.script, открываем его, находим функцию function actor_binder:net_destroy() и в колбеках пишем &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;self.object:set_callback(callback.use_object, nil&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Должно получиться так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function actor_binder:net_destroy(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(actor_stats.remove_from_ranking~=nil&amp;#41;then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;actor_stats.remove_from_ranking(self.object:id(&amp;#41;&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt; --&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;game_stats.shutdown (&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.del_actor(self.object&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sr_light.clean_up (&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.inventory_info, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.article_info, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.on_item_take, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.on_item_drop, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--self.object:set_callback(callback.actor_sleep, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.task_state, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.level_border_enter, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.level_border_exit, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.take_item_from_box, nil&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.use_object, nil&amp;#41; -- вот наш колбек &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if sr_psy_antenna.psy_antenna then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sr_psy_antenna.psy_antenna:destroy(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sr_psy_antenna.psy_antenna = false &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xr_sound.stop_all_sound_object(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;object_binder.net_destroy(self&amp;#41; &lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; В этом же файле находим функцию function actor_binder:reinit() и так же в колбеках пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;self.object:set_callback(callback.use_object, self.use_obj, self&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Должно получиться так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function actor_binder:reinit(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;object_binder.reinit(self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;local npc_id = self.object:id(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.storage&amp;#91;npc_id] = { } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.st = db.storage&amp;#91;npc_id] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.st.pstor = nil &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.next_restrictors_update_time = -10000 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.inventory_info, self.info_callback, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.article_info, self.article_callback, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.on_item_take, self.on_item_take, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.on_item_drop, self.on_item_drop, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self&amp;#41; -- for game stats &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--self.object:set_callback(callback.actor_sleep, self.sleep_callback, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.task_state, self.task_callback, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.level_border_enter, self.level_border_enter, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.level_border_exit, self.level_border_exit, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.object:set_callback(callback.use_object, self.use_obj, self&amp;#41; -- вот наш колбек &lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Так же в этом файле находим функцию function actor_binder:on_item_drop (obj) и после неё пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function actor_binder:use_obj(obj&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.sleep(obj&amp;#41; &lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Должно получиться так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;---------------------------------------- &lt;br /&gt; function actor_binder:on_item_drop (obj&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;level_tasks.proceed(self.object&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--game_stats.update_drop_item (obj, self.object&amp;#41; &lt;br /&gt; end &lt;br /&gt; ---------------------------------------- &lt;br /&gt; function actor_binder:use_obj(obj&amp;#41; -- функция на использование предмета &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.sleep(obj&amp;#41; -- наш будущий скрипт и функция в нем. &lt;br /&gt; end &lt;br /&gt; ----------------------------------------&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Теперь в gamedata&amp;#92;scripts создаем файл c названием main_sleep.script, открываем его и пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function sleep(obj&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if obj ~= nil then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if obj:section(&amp;#41; == &quot;sleep_bag&quot; then -- при использоваании спального мешка будет открываться выборочное меню &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local hud = sleep_ui(get_hud(&amp;#41;&amp;#41; -- указываем на class &quot;sleep_ui&quot; (CUIScriptWnd&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;level.start_stop_menu(hud, true&amp;#41; -- открываем меню &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; class &quot;sleep_ui&quot; (CUIScriptWnd&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_ui:__init(owner&amp;#41; super(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.owner = owner &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:InitControls(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:InitCallBacks(&amp;#41; &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_ui:__finalize(&amp;#41; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_ui:InitControls(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:Init(50,50,550,450&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;local xml = CScriptXmlInit(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xml:ParseFile(&quot;ui_sleep.xml&quot;&amp;#41; -- настройки будут воспроизводиться в этом xml файле &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xml:InitStatic(&quot;back_video&quot;, self&amp;#41; -- видео сзади &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xml:InitStatic(&quot;background&quot;, self&amp;#41; -- рамка сзади &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:Register(xml:Init3tButton(&quot;caption&quot;, self&amp;#41;,&quot;caption&quot;&amp;#41; -- заголовок &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:Register(xml:Init3tButton(&quot;btn_1&quot;, self&amp;#41;,&quot;btn_1&quot;&amp;#41; -- кнопка на сон одного часа &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:Register(xml:Init3tButton(&quot;btn_2&quot;, self&amp;#41;,&quot;btn_2&quot;&amp;#41; -- кнопка на сон трех часов &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:Register(xml:Init3tButton(&quot;btn_3&quot;, self&amp;#41;,&quot;btn_3&quot;&amp;#41; -- кнопка на сон девяти часов &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if db.actor.health &lt; 0.9 then -- если здоровье упало, то &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:Register(xml:Init3tButton(&quot;btn_4&quot;, self&amp;#41;,&quot;btn_4&quot;&amp;#41; -- кнопка на выздоровления &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:Register(xml:Init3tButton(&quot;btn_quit&quot;, self&amp;#41;,&quot;btn_quit&quot;&amp;#41; -- кнопка выхода &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_ui:InitCallBacks(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:AddCallback(&quot;btn_1&quot;, ui_events.BUTTON_CLICKED, self.sleep_ui1, self&amp;#41; -- кнопка один идет на функцию sleep_ui1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:AddCallback(&quot;btn_2&quot;, ui_events.BUTTON_CLICKED, self.sleep_ui2, self&amp;#41; -- кнопка два идет на функцию sleep_ui2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:AddCallback(&quot;btn_3&quot;, ui_events.BUTTON_CLICKED, self.sleep_ui3, self&amp;#41; -- кнопка три идет на функцию sleep_ui3 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if db.actor.health &lt; 0.9 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:AddCallback(&quot;btn_4&quot;, ui_events.BUTTON_CLICKED, self.sleep_ui4, self&amp;#41; -- кнопка идет на sleep_ui4 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:AddCallback(&quot;btn_quit&quot;, ui_events.BUTTON_CLICKED, self.on_quit, self&amp;#41; -- кнопка идет на выход &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_ui:OnKeyboard(dik, keyboard_action&amp;#41; -- функция на отмену сна при нажатии клавиши Esc &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CUIScriptWnd.OnKeyboard(self,dik,keyboard_action&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if keyboard_action == ui_events.WINDOW_KEY_PRESSED then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_ESCAPE then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:on_quit(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_NUMPAD1 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:sleep_ui1(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_NUMPAD2 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:sleep_ui2(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_NUMPAD3 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:sleep_ui3(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dik == DIK_keys.DIK_NUMPAD4 then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:sleep_ui4(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_ui:sleep_ui1(&amp;#41; -- вот функция от кнопки один &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.sleep_one_hour(&amp;#41; -- спим один час &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:on_quit(&amp;#41; -- выход &lt;br /&gt; end &lt;br /&gt; function sleep_ui:sleep_ui2(&amp;#41; -- вот функция от кнопки два &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.sleep_three_hours(&amp;#41; -- спим три часа &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:on_quit(&amp;#41; &lt;br /&gt; end &lt;br /&gt; function sleep_ui:sleep_ui3(&amp;#41; -- вот функция от кнопки три &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.sleep_nine_hours(&amp;#41; -- спим девять часов &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:on_quit(&amp;#41; &lt;br /&gt; end &lt;br /&gt; function sleep_ui:sleep_ui4(&amp;#41; -- функция от кнопкм четыри &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.sleep_health(scale&amp;#41; -- спим до выздоровления &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:on_quit(&amp;#41; &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_ui:check_game(&amp;#41; -- проверка запущена ли игра &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;local check = false &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if level.present(&amp;#41; and (db.actor ~= nil&amp;#41; and db.actor:alive(&amp;#41; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;check = true &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return check &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_ui:on_quit(&amp;#41; -- вот кнопка выхода &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:GetHolder(&amp;#41;:start_stop_menu(self, true&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alife(&amp;#41;:create(&quot;sleep_bag&quot;, db.actor:position(&amp;#41;, db.actor:level_vertex_id(&amp;#41;, db.actor:game_vertex_id(&amp;#41;, db.actor:id(&amp;#41;&amp;#41; -- спаун мешка обратно &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; -- ----------------------------- &lt;br /&gt; --&amp;nbsp;&amp;nbsp;DreamMod v0.1 by Ab@dDon --- &lt;br /&gt; --&amp;nbsp;&amp;nbsp;Edited by Weanchester&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--- &lt;br /&gt; -- ----------------------------- &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_one_hour(&amp;#41; -- сон один час &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.main(1&amp;#41; &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_three_hours(&amp;#41; -- сон три часа &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.main(3&amp;#41; &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_nine_hours(&amp;#41; -- сон девять часов &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.main(9&amp;#41; &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function sleep_health(scale&amp;#41; -- сон до выздоровления &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;local sleep_time = (1 - db.actor.health&amp;#41;*5.00 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.main(sleep_time&amp;#41; &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function main(scale&amp;#41; -- основная функция &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;basic_time_factor = level.get_time_factor (&amp;#41; -- вычисление стандартной скорости течения времени &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.actor:stop_talk(&amp;#41; -- если игрок с кем-нибудь говорит, диалог закрывается. Здесь в ней нет смысла, но вдруг кому пригодится &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.actor:hide_weapon(&amp;#41; -- ГГ прячет оружие в рюкзак &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;level.disable_input(&amp;#41; -- отключение управления&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.starter (scale&amp;#41; -- запуск скрипта, перематывающего время&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function starter(scale&amp;#41; -- скрипт перемотки на нужное время &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;local factor = scale * 2650 -- вычисление времени &quot;пробуждения&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;game.start_tutorial(&quot;time_scaling&quot;&amp;#41; -- вызов функции перемотки &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;level.set_time_factor(factor&amp;#41; -- собственно сама перемотка&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function dreamer(&amp;#41; -- отвечает за сны &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;level.set_time_factor(basic_time_factor&amp;#41; --остановка перемотки. basic_time_factor - стандартная скорость течения времени &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;local dream = dream.sleep_video_name_callback (&amp;#41; -- позволяет &quot;показать&quot; сон &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if dream ~= &quot;&quot; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;game.start_tutorial(dream&amp;#41; -- показ одного из трёх снов &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;game.start_tutorial(&quot;without_dream&quot;&amp;#41;&amp;nbsp;&amp;nbsp;-- &quot;без сна&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function stopper(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;level.add_cam_effector(&quot;camera_effects&amp;#92;&amp;#92;dream.anm&quot;, 1, false, &quot;&quot;&amp;#41; -- эффект подъема &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.actor:restore_weapon(&amp;#41; -- ГГ достаёт оружие &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;level.enable_input(&amp;#41; -- включается управление &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;level.add_pp_effector(&quot;yantar_underground_psi.ppe&quot;, 222, false, &quot;&quot;&amp;#41; -- эффект подъема &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if db.actor.health &lt;= 0.60 then -- если хп упало меньше 60, то запускается функция съедания еды &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main_sleep.eat_food(&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt; end &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; function eat_food(&amp;#41; -- функция съедания еды &lt;br /&gt; if db.actor:eat(db.actor:object(&quot;conserva&quot;&amp;#41;&amp;#41; ~= nil or &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.actor:eat(db.actor:object(&quot;bread&quot;&amp;#41;&amp;#41; ~= nil or &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.actor:eat(db.actor:object(&quot;kolbasa&quot;&amp;#41;&amp;#41; ~= nil then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end &lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; С самым главным работа завершена. Переходим к предпоследнему пункту. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Работа с XML-описателем&lt;/b&gt; &lt;br /&gt; Заходим в gamedata&amp;#92;config&amp;#92;ui, создаем файл с названием ui_sleep.xml, открываем его и пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;windows-1251&quot; ?&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &lt;main&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;back_video x=&quot;10&quot; y=&quot;10&quot; width=&quot;380&quot; height=&quot;320&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture&gt;ui&amp;#92;credits_back_512_v10&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/back_video&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;background x=&quot;0&quot; y=&quot;0&quot; width=&quot;400&quot; height=&quot;340&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture x=&quot;0&quot; y=&quot;0&quot; width=&quot;350&quot; height=&quot;460&quot;&gt;ui&amp;#92;ui_dg_inventory&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/background&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;caption x=&quot;175&quot; y=&quot;30&quot; width=&quot;50&quot; height=&quot;35&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Сон&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/caption&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;btn_1 x=&quot;72&quot; y=&quot;80&quot; width=&quot;256&quot; height=&quot;35&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_e&gt;ui&amp;#92;ui_btn_mm_e&lt;/texture_e&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_t&gt;ui&amp;#92;ui_btn_mm_t&lt;/texture_t&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_h&gt;ui&amp;#92;ui_btn_mm_h&lt;/texture_h&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Спать 1 час&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/btn_1&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;btn_2 x=&quot;72&quot; y=&quot;130&quot; width=&quot;256&quot; height=&quot;35&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_e&gt;ui&amp;#92;ui_btn_mm_e&lt;/texture_e&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_t&gt;ui&amp;#92;ui_btn_mm_t&lt;/texture_t&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_h&gt;ui&amp;#92;ui_btn_mm_h&lt;/texture_h&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Спать 3 часа&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/btn_2&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;btn_3 x=&quot;72&quot; y=&quot;180&quot; width=&quot;256&quot; height=&quot;35&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_e&gt;ui&amp;#92;ui_btn_mm_e&lt;/texture_e&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_t&gt;ui&amp;#92;ui_btn_mm_t&lt;/texture_t&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_h&gt;ui&amp;#92;ui_btn_mm_h&lt;/texture_h&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Спать 9 часов&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/btn_3&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;btn_4 x=&quot;72&quot; y=&quot;230&quot; width=&quot;256&quot; height=&quot;35&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_e&gt;ui&amp;#92;ui_btn_mm_e&lt;/texture_e&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_t&gt;ui&amp;#92;ui_btn_mm_t&lt;/texture_t&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_h&gt;ui&amp;#92;ui_btn_mm_h&lt;/texture_h&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Спать до восстановления здоровья&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/btn_4&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;btn_quit x=&quot;270&quot; y=&quot;300&quot; width=&quot;117&quot; height=&quot;29&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_e&gt;ui_button_ordinary_e&lt;/texture_e&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_t&gt;ui_button_ordinary_t&lt;/texture_t&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture_h&gt;ui_button_ordinary_h&lt;/texture_h&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;text&gt;Выход&lt;/text&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/btn_quit&gt; &lt;br /&gt; &lt;/main&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Итак, кнопки описали. Последний пункт. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Сны&lt;/b&gt; &lt;br /&gt; Заходим в gamedata&amp;#92;config&amp;#92;ui, ищем файл ui_movies, открываем и в самом конце пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;&lt;Movie-003_Rats_OutPut-010&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;play_each_item&gt;1&lt;/play_each_item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;global_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;auto_static x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;window_name&gt;back&lt;/window_name&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture&gt;intro&amp;#92;intro_back&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/auto_static&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/global_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;item type=&quot;video&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;sound&gt;characters_voice&amp;#92;scenario&amp;#92;video&amp;#92;dream_rats&lt;/sound&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;pause_state&gt;on&lt;/pause_state&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;function_on_stop&gt;main_sleep.stopper&lt;/function_on_stop&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;video_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture x=&quot;0&quot; y=&quot;1&quot; width=&quot;512&quot; height=&quot;245&quot;&gt;sleep&amp;#92;movie-003_rats_output-010&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/video_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/Movie-003_Rats_OutPut-010&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;esc_sky_01&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;play_each_item&gt;1&lt;/play_each_item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;global_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;auto_static x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;window_name&gt;back&lt;/window_name&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture&gt;intro&amp;#92;intro_back&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/auto_static&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/global_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;item type=&quot;video&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;sound&gt;characters_voice&amp;#92;human_01&amp;#92;dolg&amp;#92;states&amp;#92;sleep&amp;#92;sleep_1.ogg&lt;/sound&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;pause_state&gt;on&lt;/pause_state&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;function_on_stop&gt;main_sleep.stopper&lt;/function_on_stop&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;video_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture x=&quot;0&quot; y=&quot;1&quot; width=&quot;512&quot; height=&quot;245&quot;&gt;sleep&amp;#92;esc_sky_01&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/video_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/esc_sky_01&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;aes_sky_red&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;play_each_item&gt;1&lt;/play_each_item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;global_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;auto_static x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;window_name&gt;back&lt;/window_name&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture&gt;intro&amp;#92;intro_back&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/auto_static&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/global_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;item type=&quot;video&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;sound&gt;ambient&amp;#92;air_2.ogg&lt;/sound&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;pause_state&gt;on&lt;/pause_state&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;function_on_stop&gt;main_sleep.stopper&lt;/function_on_stop&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;video_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture x=&quot;0&quot; y=&quot;1&quot; width=&quot;512&quot; height=&quot;245&quot;&gt;sleep&amp;#92;aes_sky_red&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/video_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/aes_sky_red&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;without_dream&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;play_each_item&gt;1&lt;/play_each_item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;global_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;auto_static x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;window_name&gt;back&lt;/window_name&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture&gt;intro&amp;#92;intro_back&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/auto_static&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/global_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;item type=&quot;video&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;sound&gt;characters_voice&amp;#92;human_01&amp;#92;dolg&amp;#92;states&amp;#92;sleep&amp;#92;sleep_1.ogg&lt;/sound&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;pause_state&gt;on&lt;/pause_state&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;function_on_stop&gt;main_sleep.stopper&lt;/function_on_stop&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;video_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture x=&quot;0&quot; y=&quot;1&quot; width=&quot;1024&quot; height=&quot;768&quot;&gt;intro&amp;#92;intro_back&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/video_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/without_dream&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;time_scaling&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;play_each_item&gt;1&lt;/play_each_item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;global_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;auto_static x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;window_name&gt;back&lt;/window_name&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture&gt;intro&amp;#92;intro_back&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/auto_static&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/global_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;item type=&quot;video&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;sound&gt;characters_voice&amp;#92;human_01&amp;#92;monolith&amp;#92;states&amp;#92;sleep&amp;#92;sleep_6.ogg&lt;/sound&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;pause_state&gt;off&lt;/pause_state&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;can_be_stopped&gt;off&lt;/can_be_stopped&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;function_on_stop&gt;main_sleep.dreamer&lt;/function_on_stop&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;video_wnd x=&quot;0&quot; y=&quot;0&quot; width=&quot;1024&quot; height=&quot;768&quot; stretch=&quot;1&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;texture x=&quot;0&quot; y=&quot;1&quot; width=&quot;1024&quot; height=&quot;768&quot;&gt;intro&amp;#92;intro_back&lt;/texture&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/video_wnd&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/item&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/time_scaling&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Теперь зайдем в gamedata&amp;#92;config&amp;#92;misc, найдем файл dream.ltx, откроем его. В начале будет такая конструкция: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;;-------------------------------------------------------------------------------- &lt;br /&gt; ;--- Regular dreams ------------------------------------------------------------- &lt;br /&gt; ;-------------------------------------------------------------------------------- &lt;br /&gt; &amp;#91;regular_dream1] &lt;br /&gt; dream&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= sleep&amp;#92;aes_sky_red &lt;br /&gt; probability = 10 &lt;br /&gt; type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= nightmare &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;regular_dream2] &lt;br /&gt; dream&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= sleep&amp;#92;esc_sky_01 &lt;br /&gt; probability = 5 &lt;br /&gt; type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= normal &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;regular_dream3] &lt;br /&gt; dream&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= sleep&amp;#92;Movie-003_Rats_OutPut-010 &lt;br /&gt; probability = 8 &lt;br /&gt; type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= happy&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Удаляем sleep&amp;#92;, чтобы получилось так: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;;-------------------------------------------------------------------------------- &lt;br /&gt; ;--- Regular dreams ------------------------------------------------------------- &lt;br /&gt; ;-------------------------------------------------------------------------------- &lt;br /&gt; &amp;#91;regular_dream1] &lt;br /&gt; dream&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= aes_sky_red &lt;br /&gt; probability = 10 &lt;br /&gt; type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= nightmare &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;regular_dream2] &lt;br /&gt; dream&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= esc_sky_01 &lt;br /&gt; probability = 5 &lt;br /&gt; type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= normal &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;#91;regular_dream3] &lt;br /&gt; dream&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= Movie-003_Rats_OutPut-010 &lt;br /&gt; probability = 8 &lt;br /&gt; type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;= happy&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Сделали мы это, чтоб игра не вылетала во время сна. &lt;br /&gt; Со снами закончили. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Заключение&lt;/b&gt; &lt;br /&gt; Осталось добавить мешок в игру. &lt;br /&gt; Для этого заходим в gamedata&amp;#92;scripts, ищем файл escape_dialog.script, открываем его, ищем функцию&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function give_weapon_to_actor (trader, actor&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;и после &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;dialogs.relocate_item_section(trader, &quot;wpn_knife&quot;, &quot;in&quot;&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;пишем: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;dialogs.relocate_item_section(trader, &quot;sleep_bag&quot;, &quot;in&quot;&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Должно получиться: &lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Код&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;function give_weapon_to_actor (trader, actor&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dialogs.relocate_item_section(trader, &quot;wpn_pm&quot;, &quot;in&quot;&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dialogs.relocate_item_section(trader, &quot;ammo_9x18_fmj&quot;, &quot;in&quot;&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dialogs.relocate_item_section(trader, &quot;ammo_9x18_fmj&quot;, &quot;in&quot;&amp;#41; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dialogs.relocate_item_section(trader, &quot;wpn_knife&quot;, &quot;in&quot;&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dialogs.relocate_item_section(trader, &quot;sleep_bag&quot;, &quot;in&quot;&amp;#41; &lt;br /&gt; end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt; Спальный мешок заспавнится в инвентаре после согласия отбить Шустрого у бандитов.&lt;!--/ust--&gt;&lt;!--usn(=Пам парарам парарам парапарарам)--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uSpoiler--&gt; &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Примечания&lt;/b&gt; &lt;br /&gt; Иконка у нас не спального мешка, а костюма бандита. Модель - мешок с песком. &lt;a class=&quot;link&quot; href=&quot;http://book-mod.3dn.ru/load/mody/mody_na_tch/spalnyj_meshok_spalnik/8-1-0-241&quot; target=&quot;_blank&quot;&gt;Здесь&lt;/a&gt; можно скачать полностью готовый мод с нормальными иконкой и моделью.</content:encoded>
			<category>Конфиги, скрипты и прочие мелочи</category>
			<dc:creator>WurDalaK</dc:creator>
			<guid>https://book-mod.3dn.ru/forum/5-228-1</guid>
		</item>
	</channel>
</rss>