<?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>Моды Тени Чернобыля, Чистое Небо, Зов Припяти</title>
		<link>http://stalker-gaming.ru/</link>
		<description>Форум</description>
		<lastBuildDate>Tue, 10 Dec 2024 13:34:30 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://stalker-gaming.ru/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Делаем так, что ГГ появляется в другом месте</title>
			<link>https://stalker-gaming.ru/forum/8-665-1</link>
			<pubDate>Tue, 10 Dec 2024 13:34:30 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/8&quot;&gt;Скрипты, конфиги, логика, движок&lt;/a&gt;&lt;br /&gt;Автор темы: Hardtmuth&lt;br /&gt;Автор последнего сообщения: blackwooddayz&lt;br /&gt;Количество ответов: 3</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;hr /&gt;&lt;b&gt;&lt;span style=&quot;color:#f9cb9c&quot;&gt;Делаем так, что ГГ появляется в другом месте&lt;/span&gt;&lt;/b&gt;&lt;hr /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Чтобы изменить место расположение игрока в начале игры вам надо:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Распаковать all.spawn открыть &lt;b&gt;alife_zaton.ltx&lt;/b&gt; и найти такие строки:&lt;/u&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;982]&lt;br /&gt;; cse_abstract properties&lt;br /&gt;section_name = actor&lt;br /&gt;name = zaton_actor&lt;br /&gt;position = -323.42816162109,19.47247505188,627.33062744141 координаты спавна, изменяем на свои&lt;br /&gt;direction = -0.0120869996026158,2.81339907646179,-0.0158249996602535&lt;br /&gt;s_flags = 0x29&lt;br /&gt;; cse_alife_object properties&lt;br /&gt;game_vertex_id = 212 изменяем на свои&lt;br /&gt;distance = 38.5&lt;br /&gt;level_vertex_id = 303639 изменяем на свои&lt;br /&gt;object_flags = 0xffffffbf&lt;br /&gt;; cse_visual properties&lt;br /&gt;visual_name = actors&amp;#92;stalker_neutral&amp;#92;stalker_neutral_1&lt;br /&gt;; cse_alife_creature_abstract properties&lt;br /&gt;g_team = 0&lt;br /&gt;g_squad = 0&lt;br /&gt;g_group = 0&lt;br /&gt;health = 1&lt;br /&gt;dynamic_out_restrictions =&lt;br /&gt;dynamic_in_restrictions =&lt;br /&gt;upd:health = 1&lt;br /&gt;upd:timestamp = 0xc2ba3333&lt;br /&gt;upd:creature_flags = 0x99&lt;br /&gt;upd:position = -323.42816162109,19.47247505188,627.33062744141 координаты спавна, изменяем на теже самые X,Y,Z.&lt;br /&gt;upd:o_model = 0&lt;br /&gt;upd:o_torso = 2.81339907646179,-0.0120869996026158,0&lt;br /&gt;upd:g_team = 0&lt;br /&gt;upd:g_squad = 0&lt;br /&gt;upd:g_group = 0&lt;br /&gt;; cse_alife_trader_abstract properties&lt;br /&gt;money = 15000&lt;br /&gt;trader_flags = 0&lt;br /&gt;character_profile = actor&lt;br /&gt;cse_alife_trader_abstract__unk1_u8 = 1&lt;br /&gt;; cse_ph_skeleton properties&lt;br /&gt;; cse_alife_creature_actor properties&lt;br /&gt;upd:actor_state = 0&lt;br /&gt;upd:actor_accel_header = 0&lt;br /&gt;upd:actor_accel_data = 0&lt;br /&gt;upd:actor_velocity_header = 0&lt;br /&gt;upd:actor_velocity_data = 0&lt;br /&gt;upd:actor_radiation = 0&lt;br /&gt;upd:actor_weapon = 215&lt;br /&gt;upd:num_items = 0&lt;br /&gt;; se_actor properties&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Все запоковаваем all.spawn</content:encoded>
			<category>Скрипты, конфиги, логика, движок</category>
			<dc:creator>Hardtmuth</dc:creator>
			<guid>https://stalker-gaming.ru/forum/8-665-1</guid>
		</item>
		<item>
			<title>Самый большой сборник модостроения</title>
			<link>https://stalker-gaming.ru/forum/7-409-1</link>
			<pubDate>Mon, 28 Jan 2019 22:51:35 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/7&quot;&gt;Софт для моддинга&lt;/a&gt;&lt;br /&gt;Автор темы: Джек&lt;br /&gt;Автор последнего сообщения: mole6409&lt;br /&gt;Количество ответов: 2</description>
			<content:encoded>&lt;b&gt;Размер:&lt;/b&gt; 17.96 Мб &lt;br /&gt;&lt;br /&gt; Наверное, самый большой сборник модостроения.Больше пятидесяти уроков по модостроению.Очень приходится начинающим модостроителям. &lt;br /&gt;&lt;br /&gt; &lt;b&gt;В архиве имеется:&lt;/b&gt; &lt;br /&gt; + Авторазбор &lt;br /&gt; + Правка XR 3DA.exe. Изменение рисунка при запуске игры &lt;br /&gt; + Добавление брони &lt;br /&gt; + Делаем прозрачный худ и инвентарь &lt;br /&gt; + Активация артефактов &lt;br /&gt; + Изменение текстур &lt;br /&gt; + Восстанавливаем части монстров в сталкер ЧН &lt;br /&gt; + Добавление статей в PDA &lt;br /&gt; + Вычисляем координаты &lt;br /&gt; + Как изменить длину палочки прицела &lt;br /&gt; + Как изменить параметры конкретного боеприпаса &lt;br /&gt; + Как изменить параметры конкретного оружия &lt;br /&gt; + Как изменить рост главного героя &lt;br /&gt; + Как научить техника делать все апгрейды &lt;br /&gt; + Как отключить вспышку выстрела у винтореза, вала, ПБ &lt;br /&gt; + Как реализовать качание прицела &lt;br /&gt; + Как редактировать гранаты &lt;br /&gt; + Как редактировать костюмы &lt;br /&gt; + Как делать новую хавку &lt;br /&gt; + Как редактировать торговцев, торговлю с обычными сталкерами &lt;br /&gt; + Как сделать вид от третьего лица &lt;br /&gt; + Как сделать главного героя бессмертным &lt;br /&gt; + Как сделать так, чтобы стволы не убирались сами &lt;br /&gt; + Как сделать, чтобы у главного героя были безконечные деньги &lt;br /&gt; + Редактирование торговцев &lt;br /&gt; + Настройка погоды и освещения &lt;br /&gt; + Создание перемещающихся_ аномалий &lt;br /&gt; + Создание Видеофайлов для игры S.T.A.L.K.E.R. &lt;br /&gt; + Создание диалогов &lt;br /&gt; + Создание диалогов (полный обзор) &lt;br /&gt; + Создание нового артефакта &lt;br /&gt; + Создание нового оружия &lt;br /&gt; + Создание новой группировки &lt;br /&gt; + Спавн новых предметов &lt;br /&gt; + Спавн телепортов через скрипт &lt;br /&gt; + Спавн точек перехода между уровнями &lt;br /&gt; + Спавн-через меню &lt;br /&gt; + Структура файлов и папок &lt;br /&gt; + Тёмная ночь &lt;br /&gt; + Спавн через скрипт &lt;br /&gt; + Теория модостроения &lt;br /&gt; + Техника в игре &lt;br /&gt; + Торговля в игре &lt;br /&gt; + Удаление дождя &lt;br /&gt; + Описание Actor.ltx &lt;br /&gt; + Описание Alife.ltx &lt;br /&gt; + Описание Inventory new.xml &lt;br /&gt; + Описание System.ltx &lt;br /&gt; + Описание Trade ******.ltx &lt;br /&gt; + Изменение время и даты начала игры &lt;br /&gt; + Делаем свой первый мод на 5+ &lt;br /&gt; + Добавить предметы в СТАЛКЕРЕ &lt;br /&gt; + Добавление Режима Freeplay в игру (Тень Чернобыля) &lt;br /&gt; + Добавление Арта в Аномалию &lt;br /&gt; + Изменяем худ в ЗП &lt;br /&gt; + Исправляем вылет при разговоре с Ковальским для v1.6.0.0 &lt;br /&gt; + Как добавить новый предмет &lt;br /&gt; + Как отослать сообщение Меченому на ПДА &lt;br /&gt; + Как правильно вставить свои звуки в игру &lt;br /&gt; + Как создать броник в ЗП &lt;br /&gt; + Как увеличить максимальный переносимый вес &lt;br /&gt; + Логика НПС &lt;br /&gt; + Подключение локаций к ЧН и ЗП с помощью программы от AMK Team &lt;br /&gt; + Super config &lt;br /&gt; + Библиотека Вырезаных анимаций &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; + Точный разбор секций all.spawn &lt;br /&gt; + RESPAWN &lt;br /&gt; + Анимации NPC &lt;br /&gt; + Вывод сообщения на экран &lt;br /&gt; + Выдача актеру информации о тайнике &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; + Как создать абсолютно новый костюм с уникальным визуалом &lt;br /&gt; + Разблокировка видео опций &lt;br /&gt; + Сигаретная зависимость &lt;br /&gt; + Снятие денег с трупов &lt;br /&gt; + Создаем работающее радио &lt;br /&gt; + Создание непися и профиля &lt;br /&gt; + Создание полоски здоровья, меняющей цвет &lt;br /&gt; + Эффект критического раненния &lt;br /&gt; + Часы на HUD &lt;br /&gt; + Правим кости неписям &lt;br /&gt; + Создание нового шлема &lt;br /&gt; + 12 уроков по теме &quot;Работа с ACDC&quot; &lt;br /&gt; + 24 урока по СДК &lt;br /&gt;&lt;br /&gt; &lt;b&gt;Ссылка на скачивание:&lt;/b&gt; &lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;http://u.to/zefIAg&quot; title=&quot;http://rusfolder.com/26380747&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Скачать&lt;/a&gt;</content:encoded>
			<category>Софт для моддинга</category>
			<dc:creator>Джек</dc:creator>
			<guid>https://stalker-gaming.ru/forum/7-409-1</guid>
		</item>
		<item>
			<title>Делаем сообщение о смерти сталкеров</title>
			<link>https://stalker-gaming.ru/forum/8-559-1</link>
			<pubDate>Tue, 09 May 2017 15:46:06 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/8&quot;&gt;Скрипты, конфиги, логика, движок&lt;/a&gt;&lt;br /&gt;Автор темы: VladTang2000&lt;br /&gt;Автор последнего сообщения: eeonyguy5&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;hr /&gt;&lt;b&gt;&lt;span style=&quot;color:#0C343D&quot;&gt;Делаем сообщение о смерти сталкеров&lt;/span&gt;&lt;/b&gt;&lt;hr /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Создаём папку &lt;b&gt;gamedata&lt;/b&gt;, там создаём папку &lt;b&gt;script&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;В этой папке создаём файл xr_motivator.script и в нём пишем:&lt;/b&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;автор: vladjoker1 (vladtang200&amp;#41;&lt;br /&gt;&lt;br /&gt;порядок вызова методов биндера:&lt;br /&gt;reload&lt;br /&gt;reinit&lt;br /&gt;load&lt;br /&gt;net_spawn&lt;br /&gt;--------------------------------------------------------------------------------------------------------------------]]&lt;br /&gt;memtsg = {} --&apos; временная таблица&lt;br /&gt;lasthealth = 0&lt;br /&gt;lastime = nil&lt;br /&gt;local bloodsuckers_restr = {}&lt;br /&gt;bloodsucker_zone_enter = {}&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;class &quot;motivator_binder&quot; (object_binder&amp;#41;&lt;br /&gt;&lt;br /&gt;function motivator_binder:__init (obj&amp;#41; super(obj&amp;#41;&lt;br /&gt;self.loaded = false&lt;br /&gt;self.last_update = 0&lt;br /&gt;----memusage.collect_info(self.object, &quot;__init&quot;&amp;#41;&lt;br /&gt;&lt;br /&gt;self.first_update = false&lt;br /&gt;self.treasure_processed = false&lt;br /&gt;self.now_in_combat = false&lt;br /&gt;self.strelok_particles_added = false&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:extrapolate_callback(cur_pt&amp;#41;&lt;br /&gt;if self.st.active_section then&lt;br /&gt;xr_logic.issue_event(self.object, self.st&amp;#91;self.st.active_scheme], &quot;extrapolate_callback&quot;&amp;#41;&lt;br /&gt;self.st.move_mgr:extrapolate_callback(self.object&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if patrol(self.object:patrol(&amp;#41;&amp;#41;:flags(cur_pt&amp;#41;:get(&amp;#41; == 0 then&lt;br /&gt;return true&lt;br /&gt;end&lt;br /&gt;return false&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:reinit(&amp;#41;&lt;br /&gt;object_binder.reinit(self&amp;#41;&lt;br /&gt;--memusage.collect_info(self.object, &quot;reinit_start&quot;&amp;#41;&lt;br /&gt;--printf(&quot;motivator_binder:reinit(&amp;#41;: self.object:name(&amp;#41;=&apos;%s&apos;&quot;, self.object:name(&amp;#41;&amp;#41;&lt;br /&gt;&lt;br /&gt;-- КОЛЛБЕКИ ЗДЕСЬ СТАВИТЬ НЕЛЬЗЯ! Здесь еще неизвестна активная схема.&lt;br /&gt;-- Ставьте коллбеки в методе update в отмеченном комментарием месте.&lt;br /&gt;&lt;br /&gt;local char_ini = self.object:spawn_ini(&amp;#41; or ini_file(&quot;scripts&amp;#92;&amp;#92;dummy.ltx&quot;&amp;#41;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;-- Общие скрипты&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;db.storage&amp;#91;self.object:id(&amp;#41;] = { followers = {} }&lt;br /&gt;self.st = db.storage&amp;#91;self.object:id(&amp;#41;]&lt;br /&gt;&lt;br /&gt;--&apos; Создание менеджера контроля положений тела&lt;br /&gt;--memusage.collect_info(self.object, &quot;before_statemgr&quot;&amp;#41;&lt;br /&gt;self.st.state_mgr = state_mgr.bind_manager(self.object&amp;#41;&lt;br /&gt;&lt;br /&gt;self.st.move_mgr = move_mgr.move_mgr(self.object&amp;#41;&lt;br /&gt;self.st.move_mgr:initialize(&amp;#41;&lt;br /&gt;&lt;br /&gt;--memusage.collect_info(self.object, &quot;after_statemgr&quot;&amp;#41;&lt;br /&gt;--memusage.collect_info(self.object, &quot;reinit_end&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;function motivator_binder:net_spawn(sobject&amp;#41;&lt;br /&gt;printf(&quot;motivator_binder:net_spawn(&amp;#41;: self.object:name(&amp;#41;=&apos;%s&apos;&quot;, self.object:name(&amp;#41;&amp;#41;&lt;br /&gt;local ppos = self.object:position(&amp;#41;&lt;br /&gt;--printf(&quot;position &amp;#91;%s]&amp;#91;%s]&amp;#91;%s]&quot;, ppos.x, ppos.y, ppos.z&amp;#41;&lt;br /&gt;xrs_dyn_music.npc_table&amp;#91;self.object:id(&amp;#41;] = self.object&lt;br /&gt;--memusage.collect_info(self.object, &quot;netspawn_start&quot;&amp;#41;&lt;br /&gt;if not object_binder.net_spawn(self, sobject&amp;#41; then&lt;br /&gt;return false&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;--&apos; Кешируем squad&lt;br /&gt;db.storage&amp;#91;self.object:id(&amp;#41;].squad_obj = sim_board.get_sim_board(&amp;#41;.squads&amp;#91;alife(&amp;#41;:object(self.object:id(&amp;#41;&amp;#41;.squad_id]&lt;br /&gt;&lt;br /&gt;-- if self.object:spawn_ini(&amp;#41;:section_exist(&quot;dont_spawn_online&quot;&amp;#41; then&lt;br /&gt;-- printf(&quot;!!!OFFLINE&quot;&amp;#41;&lt;br /&gt;-- alife(&amp;#41;:object(self.object:id(&amp;#41;&amp;#41;.dont_spawn_online = true&lt;br /&gt;-- end&lt;br /&gt;&lt;br /&gt;db.add_obj(self.object&amp;#41;&lt;br /&gt;&lt;br /&gt;-- Все CALLBACK-и ставить здесь:&lt;br /&gt;self.object:set_patrol_extrapolate_callback(motivator_binder.extrapolate_callback, self&amp;#41;&lt;br /&gt;self.object:set_callback(callback.hit, motivator_binder.hit_callback, self&amp;#41;&lt;br /&gt;self.object:set_callback(callback.death, motivator_binder.death_callback, self&amp;#41;&lt;br /&gt;self.object:set_callback(callback.use_object, motivator_binder.use_callback, self&amp;#41;&lt;br /&gt;--memusage.collect_info(self.object, &quot;after__callback&quot;&amp;#41;&lt;br /&gt;&lt;br /&gt;--self.object:set_callback(callback.sound, motivator_binder.hear_callback, self&amp;#41;&lt;br /&gt;&lt;br /&gt;-- ставим дефолтное расстояние входа в смарткаверы&lt;br /&gt;&lt;br /&gt;self.object:apply_loophole_direction_distance(1.0&amp;#41;&lt;br /&gt;&lt;br /&gt;--&apos; Загрузка историй для лагеря.&lt;br /&gt;if self.loaded == false then&lt;br /&gt;local char_ini = &quot;&quot;&lt;br /&gt;local spawn_ini = self.object:spawn_ini(&amp;#41;&lt;br /&gt;local filename = nil&lt;br /&gt;if spawn_ini then&lt;br /&gt;filename = utils.cfg_get_string(spawn_ini, &quot;logic&quot;, &quot;cfg&quot;, self.object, false, &quot;&quot;&amp;#41;&lt;br /&gt;printf(&quot;filename is &amp;#91;%s]&quot;, tostring(filename&amp;#41;&amp;#41;&lt;br /&gt;end&lt;br /&gt;if filename ~= nil then&lt;br /&gt;char_ini = ini_file(filename&amp;#41;&lt;br /&gt;else&lt;br /&gt;char_ini = self.object:spawn_ini(&amp;#41; or ini_file(&quot;scripts&amp;#92;&amp;#92;dummy.ltx&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;printf(&quot;xr_info loaded!!!&quot;&amp;#41;&lt;br /&gt;xr_info.loadInfo(self.object, char_ini&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if not self.object:alive(&amp;#41; then&lt;br /&gt;return true&lt;br /&gt;end&lt;br /&gt;-- setting npc relation and sympathy from storage&lt;br /&gt;local relation = db.goodwill.relations and db.goodwill.relations&amp;#91;self.object:id(&amp;#41;]&lt;br /&gt;if relation ~= nil and db.actor then&lt;br /&gt;game_relations.set_npcs_relation(self.object, db.actor, relation&amp;#41;&lt;br /&gt;end&lt;br /&gt;local sympathy = db.goodwill.sympathy and db.goodwill.sympathy&amp;#91;self.object:id(&amp;#41;]&lt;br /&gt;if sympathy ~= nil then&lt;br /&gt;game_relations.set_npc_sympathy(self.object, sympathy&amp;#41;&lt;br /&gt;end&lt;br /&gt;game_relations.set_level_faction_community(self.object&amp;#41;&lt;br /&gt;db.add_enemy( self.object &amp;#41;&lt;br /&gt;self.e_index = db.heli_enemy_count - 1&lt;br /&gt;&lt;br /&gt;--&apos; загрузка озвучки&lt;br /&gt;--memusage.collect_info(self.object, &quot;before_soundmgr&quot;&amp;#41;&lt;br /&gt;sound_theme.init_npc_sound(self.object&amp;#41;&lt;br /&gt;--memusage.collect_info(self.object, &quot;after_soundmgr_netspawn_end&quot;&amp;#41;&lt;br /&gt;&lt;br /&gt;--&apos; Для зомбированных чуваков говорим что аномалий не существует&lt;br /&gt;-- if self.object:character_community(&amp;#41; == &quot;zombied&quot; then&lt;br /&gt;local manager = self.object:motivation_action_manager(&amp;#41;&lt;br /&gt;manager:remove_evaluator (stalker_ids.property_anomaly&amp;#41;&lt;br /&gt;manager:add_evaluator (stalker_ids.property_anomaly, property_evaluator_const(false&amp;#41;&amp;#41;&lt;br /&gt;-- end&lt;br /&gt;&lt;br /&gt;xr_smartcover.init_global_evaluators(self.object&amp;#41;&lt;br /&gt;&lt;br /&gt;smart_terrain.setup_gulag_and_logic_on_spawn(self.object, self.st, sobject, modules.stype_stalker, self.loaded&amp;#41;&lt;br /&gt;--&apos; грузим универсальную реакцию на болотную тварь&lt;br /&gt;bloodsucker_reaction.add_bloodsucker_reactions(self.object&amp;#41;&lt;br /&gt;--&apos; грузим универсальную реакцию на актёра вышедшего из левелчейнджера&lt;br /&gt;actor_reaction.add_actor_reactions(self.object&amp;#41;&lt;br /&gt;&lt;br /&gt;--&apos; Универсальный тормоз на выход из комбата&lt;br /&gt;if self.object:character_community(&amp;#41; ~= &quot;zombied&quot; then&lt;br /&gt;post_combat_idle.add_post_combat_idle(self.object&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;self.object:group_throw_time_interval(2000&amp;#41;&lt;br /&gt;&lt;br /&gt;if self.object:profile_name(&amp;#41; == &quot;stc_strelok&quot; then&lt;br /&gt;printf(&quot;strelok_health &amp;#91;true]&quot;&amp;#41;&lt;br /&gt;stc_strelok_health_manager.cs_strelok_health(self.object&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;return true&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:net_destroy(&amp;#41;&lt;br /&gt;--printf(&quot;motivator_binder:net_destroy(&amp;#41;: self.object:name(&amp;#41;=&apos;%s&apos;&quot;, self.object:name(&amp;#41;&amp;#41;&lt;br /&gt;xrs_dyn_music.npc_table&amp;#91;self.object:id(&amp;#41;] = nil&lt;br /&gt;xrs_dyn_music.stop_combat(self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;xr_sound.stop_sounds_by_id(self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;local st = db.storage&amp;#91;self.object:id(&amp;#41;]&lt;br /&gt;if st.active_scheme then&lt;br /&gt;xr_logic.issue_event(self.object, st&amp;#91;st.active_scheme], &quot;net_destroy&quot;, self.object&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;db.del_obj(self.object&amp;#41;&lt;br /&gt;&lt;br /&gt;db.storage&amp;#91;self.object:id(&amp;#41;] = nil&lt;br /&gt;&lt;br /&gt;self:clear_callbacks(&amp;#41;&lt;br /&gt;&lt;br /&gt;if self.e_index ~= nil then&lt;br /&gt;db.delete_enemy( self.e_index &amp;#41;&lt;br /&gt;end&lt;br /&gt;if self.object:profile_name(&amp;#41; == &quot;stc_strelok&quot; then&lt;br /&gt;stc_strelok_health_manager.remove_health_bar(&amp;#41;&lt;br /&gt;end&lt;br /&gt;object_binder.net_destroy(self&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:clear_callbacks(&amp;#41;&lt;br /&gt;self.object:set_patrol_extrapolate_callback(nil&amp;#41;&lt;br /&gt;self.object:set_callback(callback.hit, nil&amp;#41;&lt;br /&gt;self.object:set_callback(callback.death, nil&amp;#41;&lt;br /&gt;-- self.object:set_callback(callback.use_object, nil&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:hit_callback(obj, amount, local_direction, who, bone_index&amp;#41;&lt;br /&gt;callstack(&amp;#41;&lt;br /&gt;-- FIXME: коллбеки неплохо было бы регистрировать в общем storage, а не посхемно...&lt;br /&gt;-- просто всегда ставить их при включении схемы и снимать при отключении.&lt;br /&gt;if obj:profile_name(&amp;#41; == &quot;stc_strelok&quot; then&lt;br /&gt;stc_strelok_health_manager.hit_callback(obj, who, amount&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if self.st.active_section then&lt;br /&gt;xr_logic.issue_event(self.object, self.st&amp;#91;self.st.active_scheme], &quot;hit_callback&quot;, obj, amount, local_direction, who, bone_index&amp;#41;&lt;br /&gt;end&lt;br /&gt;if self.st.combat_ignore then&lt;br /&gt;xr_logic.issue_event(self.object, self.st.combat_ignore, &quot;hit_callback&quot;, obj, amount, local_direction, who, bone_index&amp;#41;&lt;br /&gt;end&lt;br /&gt;if self.st.combat then&lt;br /&gt;xr_logic.issue_event(self.object, self.st.combat, &quot;hit_callback&quot;, obj, amount, local_direction, who, bone_index&amp;#41;&lt;br /&gt;end&lt;br /&gt;if self.st.hit then&lt;br /&gt;xr_logic.issue_event(self.object, self.st.hit, &quot;hit_callback&quot;, obj, amount, local_direction, who, bone_index&amp;#41;&lt;br /&gt;end&lt;br /&gt;if amount &gt; 0 then&lt;br /&gt;printf(&quot;HIT_CALLBACK: %s amount=%s bone=%s&quot;, obj:name(&amp;#41;, amount, tostring(bone_index&amp;#41;&amp;#41;&lt;br /&gt;sr_territory.issue_event(self.object, &quot;hit_callback&quot;, obj, amount, local_direction, who, bone_index&amp;#41;&lt;br /&gt;xr_wounded.hit_callback(self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;sim_combat.hit_callback(self.object:id(&amp;#41;,who:id(&amp;#41;&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:death_callback(victim, who&amp;#41;&lt;br /&gt;--russian-stalker addon&lt;br /&gt;&lt;br /&gt;--Динамические новости&lt;br /&gt;local m_post_message = &quot;&quot;&lt;br /&gt;local messages_none = {&lt;br /&gt;&quot;Ты на пенёк сел должен был косарьб отдать ну а хули тут так мало ты уёбок??&quot;,&lt;br /&gt;&quot;Сахаров, если это выброс, скинь мне касарь&quot;,&lt;br /&gt;&quot;Количество выбросов неумолимо растёт&quot;,&lt;br /&gt;&quot;Может это был суицид&quot;,&lt;br /&gt;&quot;Давно такой хуйни не видел&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;local messages_kill = {&lt;br /&gt;&quot;Ебаная сукааа.!&quot;,&lt;br /&gt;&quot;Ебланом больше - ебланом меньше, хех!&quot;,&lt;br /&gt;&quot;О! Сидрыч, хоть и не я убил его, но с тебя всё-равно причитается!&quot;,&lt;br /&gt;&quot;Бармен, чё делать-то теперь? Ладно, пойду посмотрю на труп, вдруг на флешке инфа эта есть... Если чё, пиши в личку.&quot;,&lt;br /&gt;&quot;Оба-на, ходил-то с такой-то пушкой, а отбиться не смог... Пойду прогуляюсь за его стволом... Если чё, то я ёе первый забил!&quot;,&lt;br /&gt;&quot;Эх, собаке - собачья смерть.&quot;,&lt;br /&gt;&quot;Шакальё совсем озверело, давно пора этих уродов в расход...&quot;,&lt;br /&gt;&quot;Уроды! Мать их! Совсем страх потеряли!... &quot;,&lt;br /&gt;&quot;Ээээээ... Ну чё, братцы?! Кто со мной крыс этих мочить?!... &quot;,&lt;br /&gt;&quot;Да когда ж это кончится?!... &quot;,&lt;br /&gt;&quot;Твою мать! А я-то думал, что всех порешил...&quot;,&lt;br /&gt;&quot;Мля, только вчера с ним виделись... Жаль пацана...&quot;,&lt;br /&gt;&quot;Земля пухом! Хороший сталкер был... Пойду КПК подберу, мож хабар остался...&quot;,&lt;br /&gt;&quot;Что с зоной происходит?... Раньше вот за хабаром ходили, боялись монстров и аномалий, а сейчас и брата сталкера опасаться приходится...&quot;,&lt;br /&gt;&quot;Вояки новое оружие в Зону закинули. Вот бы достать...&quot;,&lt;br /&gt;&quot;Видел военного в страном комбезе. Узнал только Сферу, броник чудной...&quot;,&lt;br /&gt;&quot;Мне тут натрещали, что вояки БТР восстановили. Смотрите по сторонам...&quot;,&lt;br /&gt;&quot;Что-то вертолеты разлетались. К дождю.. Хе-хе..&quot;,&lt;br /&gt;&quot;Говорят, вояки приторговывают снарягой. Кто-нить, сходите, узнайте.&quot;,&lt;br /&gt;&quot;Тут вояки где-то пулемет раскопали. Стреляют по воронам...&quot;,&lt;br /&gt;&quot;Мужики, на кордон заход с болот неудобный, у поста вояк. Стерегитесь, идите ночью.&quot;,&lt;br /&gt;&quot;За барахолкой мутантов полно. Кто хабар несет, осторожно.&quot;,&lt;br /&gt;&quot;Черт, снорка дохлого видел. Его химера прикончила.&quot;,&lt;br /&gt;&quot;Видел стаю кабанов. Откормились, блин, на радиоактивных харчах..&quot;,&lt;br /&gt;&quot;Что-то зомбяки повылазили. Поосторожнее, пули их почти не берут.&quot;,&lt;br /&gt;&quot;Блин, воронье разлеталось. Падаль где-то валяется, наверно. Стерегитесь.&quot;,&lt;br /&gt;&quot;У, какие хряки тут бегают! Кому копытце принести?&quot;,&lt;br /&gt;&quot;Блин, в болотах плоти бегают. Здоровые...&quot;,&lt;br /&gt;&quot;Чьорт побери, контролер в Подземельях лютует, завалил бы кто&quot;,&lt;br /&gt;&quot;Бюрера захерачил, упарился...&quot;,&lt;br /&gt;&quot;У базы бандюков на свалке видел кровососа. А он меня нет.&quot;,&lt;br /&gt;&quot;На Свалке снорки расплодились. Радиация их не берет, что ли.&quot;,&lt;br /&gt;&quot;На Армейских Складах на болоте были замечены снорки, количество мне не уточнили. Не попадитесь.&quot;,&lt;br /&gt;&quot;В Долине кошки бродят. Чудно.&quot;,&lt;br /&gt;&quot;На складах Излома видел. Жуть.&quot;,&lt;br /&gt;&quot;На Агропроме живности расплодилось... Подзаработать на отстреле можно.&quot;,&lt;br /&gt;&quot;Псевдособака набросилась, еле пристрелил!&quot;,&lt;br /&gt;&quot;Чуваки! Тут эта, зомбяки ходют! В долине...&quot;,&lt;br /&gt;&quot;На Янтаре мертвые с акээмами стоятъ... И тишина...&quot;,&lt;br /&gt;&quot;Пля, на снорка две обоймы извел. Прыгучий, гад...&quot;,&lt;br /&gt;&quot;Мужики, кровососа тока картечь в бошку валит. На заметочку так...&quot;,&lt;br /&gt;&quot;Ща такого хряка завалил! Копыта на десять кило!&quot;,&lt;br /&gt;&quot;Уффф! кровососа захерачил...Весь взмок...&quot;,&lt;br /&gt;&quot;Хе-хе, котяру поймал и хвост отхватил. Кому продать?!&quot;,&lt;br /&gt;&quot;Мужики, в Болотах какой-то зеленой жгучей херни полно. Осторожно.&quot;,&lt;br /&gt;&quot;Ну вот и ещё один конкурент в мир иной отошёл... Аминь!...&quot;,&lt;br /&gt;&quot;А говорил - заговорённый!... хех!...&quot;,&lt;br /&gt;&quot;Вот мля, а он мне денег должен!&quot;,&lt;br /&gt;&quot;Что у него было при себе? Иль всё убийца выгреб?&quot;,&lt;br /&gt;&quot;Такого человека погубили!!!&quot;,&lt;br /&gt;&quot;Ну и поделом ему!!!&quot;,&lt;br /&gt;&quot;Я недалеко! Могу помочь!&quot;,&lt;br /&gt;&quot;Друга моего сволочи убили! Парни, вы не видели кто это сделал? Если видели, стукните в личку&quot;,&lt;br /&gt;&quot;Одним &apos;стариком&apos; меньше.&quot;,&lt;br /&gt;&quot;Шрам, небойсь, прибил бедного.&quot;,&lt;br /&gt;&quot;Жопой чую, не к добру это...&quot;,&lt;br /&gt;&quot;Не засоряем канал! Ну помер мужик...не первый и не последний.&quot;,&lt;br /&gt;&quot;Видал я этого. Давно надо было порешить.&quot;,&lt;br /&gt;&quot;-1&quot;,&lt;br /&gt;&quot;Сахаров сказал, что скоро может быть выброс. Но пока Зона не стабильна, он не знает наверняка.&quot;,&lt;br /&gt;&quot;Кто на Янтаре - ОСТОРОЖНО! Видел большую кучу зомби...пошёл-ка я отсюда&quot;,&lt;br /&gt;&quot;Фу-х! Слава Богу, что я с ним не пошёл сегодня на ходку. Вот чуяло моё сердце!&quot;,&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;local messages_monster = {&lt;br /&gt;&quot;Вояки новое оружие в Зону закинули. Вот бы достать...&quot;,&lt;br /&gt;&quot;Видел военного в страном комбезе. Узнал только Сферу, броник чудной...&quot;,&lt;br /&gt;&quot;Мне тут натрещали, что вояки БТР восстановили. Смотрите по сторонам...&quot;,&lt;br /&gt;&quot;Что-то вертолеты разлетались. К дождю.. Хе-хе..&quot;,&lt;br /&gt;&quot;Говорят, вояки приторговывают снарягой. Кто-нить, сходите, узнайте.&quot;,&lt;br /&gt;&quot;Тут вояки где-то пулемет раскопали. Стреляют по воронам...&quot;,&lt;br /&gt;&quot;Мужики, на кордон заход с болот неудобный, у поста вояк. Стерегитесь, идите ночью.&quot;,&lt;br /&gt;&quot;За барахолкой мутантов полно. Кто хабар несет, осторожно.&quot;,&lt;br /&gt;&quot;Черт, снорка дохлого видел. Его химера прикончила.&quot;,&lt;br /&gt;&quot;Видел стаю кабанов. Откормились, блин, на радиоактивных харчах..&quot;,&lt;br /&gt;&quot;Что-то зомбяки повылазили. Поосторожнее, пули их почти не берут.&quot;,&lt;br /&gt;&quot;Блин, воронье разлеталось. Падаль где-то валяется, наверно. Стерегитесь.&quot;,&lt;br /&gt;&quot;У, какие хряки тут бегают! Кому копытце принести?&quot;,&lt;br /&gt;&quot;Блин, в болотах плоти бегают. Здоровые...&quot;,&lt;br /&gt;&quot;Чьорт побьери, контролер в Подземельях лютует, завалил бы кто&quot;,&lt;br /&gt;&quot;Бюрера захерачил, упарился...&quot;,&lt;br /&gt;&quot;У базы бандюков на свалке видел кровососа. А он меня нет.&quot;,&lt;br /&gt;&quot;На Свалке снорки расплодились. Радиация их не берет, что ли.&quot;,&lt;br /&gt;&quot;На Армейских Складах на болоте были замечены снорки, количество мне не уточнили. Не попадитесь.&quot;,&lt;br /&gt;&quot;В Долине кошки бродят. Чудно.&quot;,&lt;br /&gt;&quot;На складах Излома видел. Жуть.&quot;,&lt;br /&gt;&quot;На Агропроме живности расплодилось... Подзаработать на отстреле можно.&quot;,&lt;br /&gt;&quot;Псевдособака набросилась, еле пристрелил!&quot;,&lt;br /&gt;&quot;Чуваки! Тут эта, зомбяки ходют! В долине...&quot;,&lt;br /&gt;&quot;На Янтаре мертвые с акээмами стоятъ... И тишина...&quot;,&lt;br /&gt;&quot;Пля, на снорка две обоймы извел. Прыгучий, гад...&quot;,&lt;br /&gt;&quot;Мужики, кровососа тока картечь в бошку валит. На заметочку так...&quot;,&lt;br /&gt;&quot;Ща такого хряка завалил! Копыта на десять кило!&quot;,&lt;br /&gt;&quot;Уффф! кровососа захерачил...Весь взмок...&quot;,&lt;br /&gt;&quot;Хе-хе, котяру поймал и хвост отхватил. Кому продать?!&quot;,&lt;br /&gt;&quot;Мужики, в Болотах какой-то зеленой жгучей херни полно. Осторожно.&quot;,&lt;br /&gt;&quot;Ну говорил же я ему, что там твари эти шляются! Не послушал, и вот результат...&quot;,&lt;br /&gt;&quot;Неудачник...&quot;,&lt;br /&gt;&quot;Я пупею... Говорил, что безопасно там, безопасно... Хорошо что я отказался в последний момент с ним идти, а то бы, глядишь, рядом с ним полёг...&quot;,&lt;br /&gt;&quot;Нда... Прогулялся за хабаром... Судьба...&quot;,&lt;br /&gt;&quot;Что сказать?... Зона для сталкера не место для прогулки…&quot;,&lt;br /&gt;&quot;Страшная смерть! Надеюсь не мучился брадяга...&quot;,&lt;br /&gt;&quot;Вчера только там зачистку делали, тропку сделать надо было... Мля...&quot;,&lt;br /&gt;&quot;Да говорил я всем уже - не ходить в то место, тварей не мерено!... Почему Че в сеть не скинул?...&quot;,&lt;br /&gt;&quot;Хороший мужик был, рисковый, хабаром делился когда туго было, земля пухом, брат сталкер!&quot;,&lt;br /&gt;&quot;Ещё один в зону попёрся, когда уже разуму наберутся?... Все же знают - не меньше чем по по двое ходить надо!...&quot;,&lt;br /&gt;&quot;Разорвали бродягу!... Ну уж нет, я раньше пулю в голову себе пущу!...&quot;,&lt;br /&gt;&quot;Таак... Где это он напоролся?... Надо срисовать координаты...&quot;,&lt;br /&gt;&quot;Бьют тварей бьют, а их всё больше становится...&quot;,&lt;br /&gt;&quot;Во живность плодится - сталкеру шагнуть негде!&quot;,&lt;br /&gt;&quot;Животное, говорите, убило?&quot;,&lt;br /&gt;&quot;Во молодёжи понаехало, уже монстра убить не могут...&quot;,&lt;br /&gt;&quot;Стучите в личку! Пойдем на монстра.&quot;,&lt;br /&gt;&quot;Я нашел труп! Никому бы не пожелал такой смерти.&quot;,&lt;br /&gt;&quot;Монстр его на куски разорвал.&quot;,&lt;br /&gt;&quot;Так ему и надо!&quot;,&lt;br /&gt;&quot;Эх зона сколько жизней загубила...&quot; ,&lt;br /&gt;&quot;Я тут по этому поводу анекдот вспомнил...&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;local fnames = {&lt;br /&gt;&quot;Руслан&quot;,&lt;br /&gt;&quot;Саша&quot;,&lt;br /&gt;&quot;Сергей&quot;,&lt;br /&gt;&quot;Слава&quot;,&lt;br /&gt;&quot;Толик&quot;,&lt;br /&gt;&quot;Юра&quot;,&lt;br /&gt;&quot;Богдан&quot;,&lt;br /&gt;&quot;Вениамин&quot;,&lt;br /&gt;&quot;Виталий&quot;,&lt;br /&gt;&quot;Вова&quot;,&lt;br /&gt;&quot;Дима&quot;,&lt;br /&gt;&quot;Иван&quot;,&lt;br /&gt;&quot;Костя&quot;,&lt;br /&gt;&quot;Леша&quot;,&lt;br /&gt;&quot;Андрей&quot;,&lt;br /&gt;&quot;Санек&quot;,&lt;br /&gt;&quot;Шурик&quot;,&lt;br /&gt;&quot;Вадя&quot;,&lt;br /&gt;&quot;Васян&quot;,&lt;br /&gt;&quot;Васек&quot;,&lt;br /&gt;&quot;Витюха&quot;,&lt;br /&gt;&quot;Веталь&quot;,&lt;br /&gt;&quot;Вован&quot;,&lt;br /&gt;&quot;Жорка&quot;,&lt;br /&gt;&quot;Гришка&quot;,&lt;br /&gt;&quot;Гришко&quot;,&lt;br /&gt;&quot;Димон&quot;,&lt;br /&gt;&quot;Леха&quot;,&lt;br /&gt;&quot;Димуха&quot;,&lt;br /&gt;&quot;Жека&quot;,&lt;br /&gt;&quot;Фимка&quot;,&lt;br /&gt;&quot;Илюха&quot;,&lt;br /&gt;&quot;Костян&quot;,&lt;br /&gt;&quot;Митька&quot;,&lt;br /&gt;&quot;Михал&quot;,&lt;br /&gt;&quot;Миха&quot;,&lt;br /&gt;&quot;Михась&quot;,&lt;br /&gt;&quot;Колян&quot;,&lt;br /&gt;&quot;Толян&quot;,&lt;br /&gt;&quot;Павлуха&quot;,&lt;br /&gt;&quot;Петруха&quot;,&lt;br /&gt;&quot;Степка&quot;,&lt;br /&gt;&quot;Степуха&quot;,&lt;br /&gt;&quot;Тимоха&quot;,&lt;br /&gt;&quot;Фелька&quot;,&lt;br /&gt;&quot;Юрась&quot;,&lt;br /&gt;&quot;Яшка&quot;,&lt;br /&gt;&quot;Андрюха&quot;,&lt;br /&gt;&quot;Тоха&quot;,&lt;br /&gt;&quot;Аркаша&quot;,&lt;br /&gt;&quot;Тёмка&quot;,&lt;br /&gt;&quot;Борян&quot;,&lt;br /&gt;&quot;Бодя&quot;,&lt;br /&gt;&quot;Андрей&quot;,&lt;br /&gt;&quot;Антон&quot;,&lt;br /&gt;&quot;Олег&quot;,&lt;br /&gt;&quot;Роман&quot;,&lt;br /&gt;&quot;Александр&quot;,&lt;br /&gt;&quot;Сергей&quot;,&lt;br /&gt;&quot;Анатолий&quot;,&lt;br /&gt;&quot;Юрий&quot;,&lt;br /&gt;&quot;Богдан&quot;,&lt;br /&gt;&quot;Вениамин&quot;,&lt;br /&gt;&quot;Виталий&quot;,&lt;br /&gt;&quot;Владимир&quot;,&lt;br /&gt;&quot;Дмитрий&quot;,&lt;br /&gt;&quot;Иван&quot;,&lt;br /&gt;&quot;Константин&quot;,&lt;br /&gt;&quot;Алексей&quot;,&lt;br /&gt;&quot;Саня&quot;,&lt;br /&gt;&quot;Санек&quot;,&lt;br /&gt;&quot;Артур&quot;,&lt;br /&gt;&quot;Яшка&quot;,&lt;br /&gt;&quot;Ярик&quot;,&lt;br /&gt;&quot;Яра&quot;,&lt;br /&gt;&quot;Слава&quot;,&lt;br /&gt;&quot;Боря&quot;,&lt;br /&gt;&quot;Борька&quot;,&lt;br /&gt;&quot;Богдан&quot;,&lt;br /&gt;&quot;Славик&quot;,&lt;br /&gt;&quot;Вадим&quot;,&lt;br /&gt;&quot;Вадя&quot;,&lt;br /&gt;&quot;Вадик&quot;,&lt;br /&gt;&quot;Валик&quot;,&lt;br /&gt;&quot;Валера&quot;,&lt;br /&gt;&quot;Шурик&quot;,&lt;br /&gt;&quot;Вася&quot;,&lt;br /&gt;&quot;Васька&quot;,&lt;br /&gt;&quot;Васько&quot;,&lt;br /&gt;&quot;Веня&quot;,&lt;br /&gt;&quot;Витя&quot;,&lt;br /&gt;&quot;Витька&quot;,&lt;br /&gt;&quot;Виталик&quot;,&lt;br /&gt;&quot;Влад&quot;,&lt;br /&gt;&quot;Вова&quot;,&lt;br /&gt;&quot;Вовка&quot;,&lt;br /&gt;&quot;Леня&quot;,&lt;br /&gt;&quot;Сева&quot;,&lt;br /&gt;&quot;Севка&quot;,&lt;br /&gt;&quot;Гена&quot;,&lt;br /&gt;&quot;Генка&quot;,&lt;br /&gt;&quot;Георг&quot;,&lt;br /&gt;&quot;Гоша&quot;,&lt;br /&gt;&quot;Жора&quot;,&lt;br /&gt;&quot;Герман&quot;,&lt;br /&gt;&quot;Глеб&quot;,&lt;br /&gt;&quot;Гриша&quot;,&lt;br /&gt;&quot;Алекс&quot;,&lt;br /&gt;&quot;Гришка&quot;,&lt;br /&gt;&quot;Гришко&quot;,&lt;br /&gt;&quot;Даня&quot;,&lt;br /&gt;&quot;Данила&quot;,&lt;br /&gt;&quot;Данько&quot;,&lt;br /&gt;&quot;Денис&quot;,&lt;br /&gt;&quot;Дима&quot;,&lt;br /&gt;&quot;Димка&quot;,&lt;br /&gt;&quot;Дмитро&quot;,&lt;br /&gt;&quot;Женя&quot;,&lt;br /&gt;&quot;Лешка&quot;,&lt;br /&gt;&quot;Женька&quot;,&lt;br /&gt;&quot;Егор&quot;,&lt;br /&gt;&quot;Егорка&quot;,&lt;br /&gt;&quot;Фима&quot;,&lt;br /&gt;&quot;Ваня&quot;,&lt;br /&gt;&quot;Ванька&quot;,&lt;br /&gt;&quot;Игорек&quot;,&lt;br /&gt;&quot;Илья&quot;,&lt;br /&gt;&quot;Костя&quot;,&lt;br /&gt;&quot;Костик&quot;,&lt;br /&gt;&quot;Толик&quot;,&lt;br /&gt;&quot;Лева&quot;,&lt;br /&gt;&quot;Леня&quot;,&lt;br /&gt;&quot;Ленька&quot;,&lt;br /&gt;&quot;Макс&quot;,&lt;br /&gt;&quot;Матвей&quot;,&lt;br /&gt;&quot;Митя&quot;,&lt;br /&gt;&quot;Миша&quot;,&lt;br /&gt;&quot;Мишка&quot;,&lt;br /&gt;&quot;Никита&quot;,&lt;br /&gt;&quot;Ник&quot;,&lt;br /&gt;&quot;Антон&quot;,&lt;br /&gt;&quot;Коля&quot;,&lt;br /&gt;&quot;Олег&quot;,&lt;br /&gt;&quot;Паша&quot;,&lt;br /&gt;&quot;Пашка&quot;,&lt;br /&gt;&quot;Петро&quot;,&lt;br /&gt;&quot;Петя&quot;,&lt;br /&gt;&quot;Петька&quot;,&lt;br /&gt;&quot;Рома&quot;,&lt;br /&gt;&quot;Ромка&quot;,&lt;br /&gt;&quot;Ростик&quot;,&lt;br /&gt;&quot;Тошка&quot;,&lt;br /&gt;&quot;Рус&quot;,&lt;br /&gt;&quot;Сава&quot;,&lt;br /&gt;&quot;Семен&quot;,&lt;br /&gt;&quot;Сема&quot;,&lt;br /&gt;&quot;Серега&quot;,&lt;br /&gt;&quot;Сеня&quot;,&lt;br /&gt;&quot;Степан&quot;,&lt;br /&gt;&quot;Степа&quot;,&lt;br /&gt;&quot;Тима&quot;,&lt;br /&gt;&quot;Тимка&quot;,&lt;br /&gt;&quot;Артем&quot;,&lt;br /&gt;&quot;Федор&quot;,&lt;br /&gt;&quot;Федя&quot;,&lt;br /&gt;&quot;Федька&quot;,&lt;br /&gt;&quot;Филя&quot;,&lt;br /&gt;&quot;Филька&quot;,&lt;br /&gt;&quot;Эдик&quot;,&lt;br /&gt;&quot;Юрка&quot;,&lt;br /&gt;&quot;Юрик&quot;,&lt;br /&gt;&quot;Юрко&quot;,&lt;br /&gt;&quot;Яша&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;local snames = {&lt;br /&gt;&quot;Хирург&quot;,&lt;br /&gt;&quot;Шпион&quot;,&lt;br /&gt;&quot;Бизон&quot;,&lt;br /&gt;&quot;Бобер&quot;,&lt;br /&gt;&quot;Бульдог&quot;,&lt;br /&gt;&quot;Бык&quot;,&lt;br /&gt;&quot;Воробей&quot;,&lt;br /&gt;&quot;Дятел&quot;,&lt;br /&gt;&quot;Зверь&quot;,&lt;br /&gt;&quot;Змей&quot;,&lt;br /&gt;&quot;Горбун&quot;,&lt;br /&gt;&quot;Кабан&quot;,&lt;br /&gt;&quot;Карась&quot;,&lt;br /&gt;&quot;Кенарь&quot;,&lt;br /&gt;&quot;Клоп&quot;,&lt;br /&gt;&quot;Легавый&quot;,&lt;br /&gt;&quot;Лось&quot;,&lt;br /&gt;&quot;Пенёк&quot;,&lt;br /&gt;&quot;Поовар&quot;,&lt;br /&gt;&quot;Батон&quot;,&lt;br /&gt;&quot;Битый&quot;,&lt;br /&gt;&quot;Длинный&quot;,&lt;br /&gt;&quot;Беспредел&quot;,&lt;br /&gt;&quot;Болт&quot;,&lt;br /&gt;&quot;Бритва&quot;,&lt;br /&gt;&quot;Бубен&quot;,&lt;br /&gt;&quot;Валет&quot;,&lt;br /&gt;&quot;Винт&quot;,&lt;br /&gt;&quot;Динамит&quot;,&lt;br /&gt;&quot;Козырь&quot;,&lt;br /&gt;&quot;Кастет&quot;,&lt;br /&gt;&quot;Косяк&quot;,&lt;br /&gt;&quot;Дохлый&quot;,&lt;br /&gt;&quot;Крест&quot;,&lt;br /&gt;&quot;Крюк&quot;,&lt;br /&gt;&quot;Лапоть&quot;,&lt;br /&gt;&quot;Лом&quot;,&lt;br /&gt;&quot;Панадол&quot;,&lt;br /&gt;&quot;Перо&quot;,&lt;br /&gt;&quot;Пистон&quot;,&lt;br /&gt;&quot;Пятак&quot;,&lt;br /&gt;&quot;Решка&quot;,&lt;br /&gt;&quot;Смерть&quot;,&lt;br /&gt;&quot;Доходяга&quot;,&lt;br /&gt;&quot;Точило&quot;,&lt;br /&gt;&quot;Туз&quot;,&lt;br /&gt;&quot;Чекан&quot;,&lt;br /&gt;&quot;Чучело&quot;,&lt;br /&gt;&quot;Шило&quot;,&lt;br /&gt;&quot;Шпала&quot;,&lt;br /&gt;&quot;Штырь&quot;,&lt;br /&gt;&quot;Шухер&quot;,&lt;br /&gt;&quot;Кулак&quot;,&lt;br /&gt;&quot;Череп&quot;,&lt;br /&gt;&quot;Дохляк&quot;,&lt;br /&gt;&quot;Бармалей&quot;,&lt;br /&gt;&quot;Батый&quot;,&lt;br /&gt;&quot;Кащей&quot;,&lt;br /&gt;&quot;Рембо&quot;,&lt;br /&gt;&quot;Сусанин&quot;,&lt;br /&gt;&quot;Терминатор&quot;,&lt;br /&gt;&quot;Чапай&quot;,&lt;br /&gt;&quot;Чингиз&quot;,&lt;br /&gt;&quot;Банан&quot;,&lt;br /&gt;&quot;Батон&quot;,&lt;br /&gt;&quot;Дырявый&quot;,&lt;br /&gt;&quot;Батя&quot;,&lt;br /&gt;&quot;Баян&quot;,&lt;br /&gt;&quot;Братан&quot;,&lt;br /&gt;&quot;Гангрена&quot;,&lt;br /&gt;&quot;Глюк&quot;,&lt;br /&gt;&quot;Градус&quot;,&lt;br /&gt;&quot;Дух&quot;,&lt;br /&gt;&quot;Звездец&quot;,&lt;br /&gt;&quot;Изгой&quot;,&lt;br /&gt;&quot;Кастет&quot;,&lt;br /&gt;&quot;Жженый&quot;,&lt;br /&gt;&quot;Козырь&quot;,&lt;br /&gt;&quot;Косяк&quot;,&lt;br /&gt;&quot;Лапоть&quot;,&lt;br /&gt;&quot;Леший&quot;,&lt;br /&gt;&quot;Мавр&quot;,&lt;br /&gt;&quot;Ништяк&quot;,&lt;br /&gt;&quot;Облом&quot;,&lt;br /&gt;&quot;Пельмень&quot;,&lt;br /&gt;&quot;Перец&quot;,&lt;br /&gt;&quot;Рашпиль&quot;,&lt;br /&gt;&quot;Жирдяй&quot;,&lt;br /&gt;&quot;Сухарь&quot;,&lt;br /&gt;&quot;Упырь&quot;,&lt;br /&gt;&quot;Жлоб&quot;,&lt;br /&gt;&quot;Битый&quot;,&lt;br /&gt;&quot;Жмот&quot;,&lt;br /&gt;&quot;Жмур&quot;,&lt;br /&gt;&quot;Изверг&quot;,&lt;br /&gt;&quot;Калека&quot;,&lt;br /&gt;&quot;Колотун&quot;,&lt;br /&gt;&quot;Косой&quot;,&lt;br /&gt;&quot;Кривой&quot;,&lt;br /&gt;&quot;Ловкач&quot;,&lt;br /&gt;&quot;Лысый&quot;,&lt;br /&gt;&quot;Лютый&quot;,&lt;br /&gt;&quot;Блатной&quot;,&lt;br /&gt;&quot;Местный&quot;,&lt;br /&gt;&quot;Мутный&quot;,&lt;br /&gt;&quot;Мятый&quot;,&lt;br /&gt;&quot;Одноглазый&quot;,&lt;br /&gt;&quot;Падла&quot;,&lt;br /&gt;&quot;Паразит&quot;,&lt;br /&gt;&quot;Пижон&quot;,&lt;br /&gt;&quot;Пидор&quot;,&lt;br /&gt;&quot;Покойник&quot;,&lt;br /&gt;&quot;Псих&quot;,&lt;br /&gt;&quot;Болтун&quot;,&lt;br /&gt;&quot;Рваный&quot;,&lt;br /&gt;&quot;Рвач&quot;,&lt;br /&gt;&quot;Слепой&quot;,&lt;br /&gt;&quot;Сопля&quot;,&lt;br /&gt;&quot;Стиляга&quot;,&lt;br /&gt;&quot;Столичный&quot;,&lt;br /&gt;&quot;Трупак&quot;,&lt;br /&gt;&quot;Ухарь&quot;,&lt;br /&gt;&quot;Ушастый&quot;,&lt;br /&gt;&quot;Хохмач&quot;,&lt;br /&gt;&quot;Борзой&quot;,&lt;br /&gt;&quot;Гнилой&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;monster_classes = {&lt;br /&gt;&amp;#91;clsid.bloodsucker_s] = &quot;Кровосос&quot;,&lt;br /&gt;&amp;#91;clsid.boar_s] = &quot;Кабан&quot;,&lt;br /&gt;&amp;#91;clsid.dog_s] = &quot;Собака&quot;,&lt;br /&gt;&amp;#91;clsid.flesh_s] = &quot;Плоть&quot;,&lt;br /&gt;&amp;#91;clsid.pseudodog_s] = &quot;Псевдособака&quot;,&lt;br /&gt;&amp;#91;clsid.burer_s] = &quot;Бюрер&quot;,&lt;br /&gt;&amp;#91;clsid.cat_s] = &quot;Кошка&quot;,&lt;br /&gt;&amp;#91;clsid.chimera_s] = &quot;Химера&quot;,&lt;br /&gt;&amp;#91;clsid.controller_s] = &quot;Контролёр&quot;,&lt;br /&gt;&amp;#91;clsid.fracture_s] = &quot;Излом&quot;,&lt;br /&gt;&amp;#91;clsid.poltergeist_s] = &quot;Полтергейтс&quot;,&lt;br /&gt;&amp;#91;clsid.gigant_s] = &quot;ПсевдоГигант&quot;,&lt;br /&gt;&amp;#91;clsid.zombie_s] = &quot;Зомби&quot;,&lt;br /&gt;&amp;#91;clsid.snork_s] = &quot;Снорк&quot;,&lt;br /&gt;&amp;#91;clsid.tushkano_s] = &quot;Тушканчик&quot;,&lt;br /&gt;&amp;#91;clsid.psy_dog_s] = &quot;Псевдособака&quot;,&lt;br /&gt;&amp;#91;clsid.psy_dog_phantom_s] = &quot;Призрак псевдособаки&quot;,&lt;br /&gt;&amp;#91;clsid.rat] = &quot;Крыса&quot;}&lt;br /&gt;&lt;br /&gt;local m_game_vertex = who:game_vertex_id(&amp;#41;&lt;br /&gt;local lvert = game_graph(&amp;#41;:vertex(m_game_vertex&amp;#41;&lt;br /&gt;local lid = lvert:level_id(&amp;#41;&lt;br /&gt;local mlevel = alife(&amp;#41;:level_name(lid&amp;#41;&lt;br /&gt;local m_s_level = mlevel&lt;br /&gt;&lt;br /&gt;local victim_name = victim:character_name(&amp;#41;&lt;br /&gt;&lt;br /&gt;local killer_name = who:character_name(&amp;#41;&lt;br /&gt;&lt;br /&gt;local victim_comm = victim:character_community(&amp;#41;&lt;br /&gt;&lt;br /&gt;local killer_comm = who:character_community(&amp;#41;&lt;br /&gt;&lt;br /&gt;local post_message_prob = 0.8&lt;br /&gt;&lt;br /&gt;if killer_comm==&quot;monster&quot; then&lt;br /&gt;local m_clsid = get_clsid(who&amp;#41;&lt;br /&gt;killer_name = monster_classes&amp;#91;m_clsid]&lt;br /&gt;if math.random(&amp;#41; &lt; post_message_prob then&lt;br /&gt;m_post_message = messages_monster&amp;#91;math.random(table.getn(messages_monster&amp;#41;&amp;#41;]&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if killer_comm~=&quot;monster&quot; then&lt;br /&gt;if math.random(&amp;#41; &lt; post_message_prob then&lt;br /&gt;m_post_message = messages_kill&amp;#91;math.random(table.getn(messages_kill&amp;#41;&amp;#41;]&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if killer_name==victim_name then&lt;br /&gt;killer_name=&quot;Выброс&quot;&lt;br /&gt;killer_comm=&quot;monster&quot;&lt;br /&gt;if math.random(&amp;#41; &lt; post_message_prob then&lt;br /&gt;m_post_message = messages_none&amp;#91;math.random(table.getn(messages_none&amp;#41;&amp;#41;]&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if killer_comm~=nil then&lt;br /&gt;local m_text_kill_string=victim_name..&quot; &quot;..game.translate_string(victim_comm&amp;#41;..&quot;. &quot;..game.translate_string(m_s_level&amp;#41;&lt;br /&gt;local news_text = &quot;%c&amp;#91;255,255,160,0]&quot;..&quot;Погиб Сталкер:&quot;..&quot;&amp;#92;&amp;#92;n&quot;..&quot;%c&amp;#91;default]&quot;..m_text_kill_string&lt;br /&gt;local news_caption = game.translate_string(&quot;st_tip&quot;&amp;#41;&lt;br /&gt;local texture = &quot;ui_iconsTotal_weapons&quot;&lt;br /&gt;&lt;br /&gt;db.actor:give_game_news(news_caption, news_text, texture, 15*1000, 15*1000&amp;#41;&lt;br /&gt;&lt;br /&gt;if (m_post_message ~= &quot;&quot;&amp;#41; then&lt;br /&gt;local fname = fnames&amp;#91;math.random(table.getn(fnames&amp;#41;&amp;#41;]&lt;br /&gt;local sname = snames&amp;#91;math.random(table.getn(snames&amp;#41;&amp;#41;]&lt;br /&gt;local from = fname..&quot; &quot;..sname&lt;br /&gt;local news_text = &quot;%c&amp;#91;255,160,160,160]&quot;..from..&quot;&amp;#92;&amp;#92;n&quot;..&quot;%c&amp;#91;default]&quot;..m_post_message&lt;br /&gt;db.actor:give_game_news(news_caption, news_text, &quot;ui_iconsNpc_stalker_neytral_balon_6&quot;,25*1000, 15*1000&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;--end&lt;br /&gt;&lt;br /&gt;callstack(&amp;#41;&lt;br /&gt;--&apos; Distemper 03.2008 --&lt;br /&gt;xrs_dyn_music.stop_combat(self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;--&apos; Если игрок был с квестом от механика - фейлить его&lt;br /&gt;local tm = task_manager.get_task_manager(&amp;#41;&lt;br /&gt;local inited_find_upgrade_tasks = tm.inited_find_upgrade_tasks&lt;br /&gt;if inited_find_upgrade_tasks and inited_find_upgrade_tasks&amp;#91;self.object:id(&amp;#41;] then&lt;br /&gt;for k,v in pairs(inited_find_upgrade_tasks&amp;#91;self.object:id(&amp;#41;]&amp;#41; do&lt;br /&gt;printf(&quot;failing task %s status %s&quot;, tostring(v.id&amp;#41;, tostring(v.status&amp;#41; &amp;#41;&lt;br /&gt;if v.status == &quot;selected&quot; then&lt;br /&gt;v.last_check_task = &quot;fail&quot;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;local st = db.storage&amp;#91;self.object:id(&amp;#41;]&lt;br /&gt;local npc = self.object&lt;br /&gt;stalker_generic.remove_level_spot(npc, st&amp;#41;&lt;br /&gt;--&apos; end --&lt;br /&gt;if who:id(&amp;#41; == db.actor:id(&amp;#41; then&lt;br /&gt;xr_statistic.addKillCount(self.object&amp;#41;&lt;br /&gt;xr_statistic.inc_killed_stalkers_counter(&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;--&apos; Загрузка историй для лагеря.&lt;br /&gt;local known_info = utils.cfg_get_string(st.ini,st.section_logic , &quot;known_info&quot;, self.object, false, &quot;&quot;, nil&amp;#41;&lt;br /&gt;printf(&quot;xr_info from death loaded!!!&quot;&amp;#41;&lt;br /&gt;xr_info.loadInfo(self.object, st.ini, known_info&amp;#41;&lt;br /&gt;&lt;br /&gt;if self.st.death then&lt;br /&gt;xr_logic.issue_event(self.object, self.st.death, &quot;death_callback&quot;, victim, who&amp;#41;&lt;br /&gt;end&lt;br /&gt;if self.st.active_section then&lt;br /&gt;xr_logic.issue_event(self.object, self.st&amp;#91;self.st.active_scheme], &quot;death_callback&quot;, victim, who&amp;#41;&lt;br /&gt;end&lt;br /&gt;sr_territory.issue_event(self.object, &quot;death_callback&quot;, victim, who&amp;#41;&lt;br /&gt;&lt;br /&gt;sr_light.check_light(self.object&amp;#41;&lt;br /&gt;&lt;br /&gt;death_manager.drop_manager(self.object&amp;#41;:create_release_item(&amp;#41;&lt;br /&gt;&lt;br /&gt;db.delete_enemy( self.e_index &amp;#41;&lt;br /&gt;&lt;br /&gt;self:clear_callbacks(&amp;#41;&lt;br /&gt;-- Отключаем реакцию на кровососа&lt;br /&gt;bloodsucker_reaction.disable_bloodsucker_reaction(self.object&amp;#41;&lt;br /&gt;--&apos; Наносим небольшой импульс вперед.&lt;br /&gt;if(actor_stats.remove_from_ranking~=nil&amp;#41;then&lt;br /&gt;local community = self.object:character_community(&amp;#41;&lt;br /&gt;if community == &quot;zombied&quot; or&lt;br /&gt;community == &quot;monolith&quot; or&lt;br /&gt;community == &quot;arena_enemy&quot;&lt;br /&gt;then&lt;br /&gt;else&lt;br /&gt;actor_stats.remove_from_ranking(self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;release_body_manager.get_release_body_manager(&amp;#41;:moving_dead_body(self.object&amp;#41; --&apos; Distemper 11.02.2008&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:use_callback(obj, who&amp;#41;&lt;br /&gt;printf(&quot;motivator_binder:use_callback(obj, who&amp;#41;&quot;&amp;#41;&lt;br /&gt;if self.object:alive(&amp;#41; then&lt;br /&gt;inventory_upgrades.need_victim(obj&amp;#41; --&apos; Distemper 03.2008&lt;br /&gt;xr_use.notify_on_use(obj, who&amp;#41;&lt;br /&gt;if self.st.active_section then&lt;br /&gt;xr_logic.issue_event(self.object, self.st&amp;#91;self.st.active_scheme], &quot;use_callback&quot;, obj, who&amp;#41;&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;if self.treasure_processed == false then&lt;br /&gt;printf(&quot;treasure_manager.use(self.object&amp;#41;&quot;&amp;#41;&lt;br /&gt;treasure_manager.use(self.object&amp;#41;&lt;br /&gt;self.treasure_processed = true&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:update(delta&amp;#41;&lt;br /&gt;object_binder.update(self, delta&amp;#41;&lt;br /&gt;if bind_stalker.to_delayed_alife_release_objects&amp;#91;self.object:id(&amp;#41;] == true then&lt;br /&gt;printf(&quot;releasing object &amp;#91;&quot;..self.object:name(&amp;#41;..&quot;]&quot;&amp;#41;&lt;br /&gt;alife(&amp;#41;:release(alife(&amp;#41;:object(self.object:id(&amp;#41;&amp;#41;,true&amp;#41;&lt;br /&gt;return&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;local object_alive = self.object:alive(&amp;#41;&lt;br /&gt;local object = self.object&lt;br /&gt;local actor = db.actor&lt;br /&gt;local st = db.storage&amp;#91;object:id(&amp;#41;]&lt;br /&gt;local st_combat = st.combat&lt;br /&gt;if not self.strelok_particles_added and object:profile_name(&amp;#41; == &quot;stc_strelok&quot; then&lt;br /&gt;object:start_particles(&quot;monsters&amp;#92;&amp;#92;polter_idle&quot;,&quot;bip01_head&quot;&amp;#41;&lt;br /&gt;self.strelok_particles_added = true&lt;br /&gt;end&lt;br /&gt;if st ~= nil and st.active_scheme ~= nil and object_alive then&lt;br /&gt;-- Обрабатываем Override on_combat&lt;br /&gt;local switched = false&lt;br /&gt;local manager = object:motivation_action_manager(&amp;#41;&lt;br /&gt;if manager:initialized(&amp;#41; and manager:current_action_id(&amp;#41; == stalker_ids.action_combat_planner then&lt;br /&gt;local overrides = xr_logic.generic_scheme_overrides(object&amp;#41;&lt;br /&gt;if overrides then&lt;br /&gt;if overrides.on_combat then&lt;br /&gt;xr_logic.pick_section_from_condlist(actor, object, overrides.on_combat.condlist&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if st_combat and st_combat.logic and not xr_logic.try_switch_to_another_section(object, st_combat, actor&amp;#41; then&lt;br /&gt;if overrides.combat_type then&lt;br /&gt;set_combat_type(object, actor, overrides&amp;#41;&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;switched = true&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;set_combat_type(object, actor, st_combat&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if not switched then&lt;br /&gt;xr_logic.try_switch_to_another_section(object, st&amp;#91;st.active_scheme], actor&amp;#41;&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;-- если нет активной секции, то тип боя взять из секции on_combat&lt;br /&gt;xr_combat.set_combat_type(object, actor, st_combat&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if self.first_update == false then&lt;br /&gt;if object_alive == false then&lt;br /&gt;death_manager.drop_manager(object&amp;#41;:create_release_item(&amp;#41;&lt;br /&gt;end&lt;br /&gt;self.first_update = true&lt;br /&gt;end&lt;br /&gt;if time_global(&amp;#41; - self.last_update &gt; 1000 then&lt;br /&gt;sr_light.check_light(object&amp;#41;&lt;br /&gt;self.last_update = time_global(&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;--&apos; проверка, не находится ли сталкер в одном из sr_bloodsucker&lt;br /&gt;for k,v in pairs(bloodsuckers_restr&amp;#41; do&lt;br /&gt;if v:inside(object:position(&amp;#41;&amp;#41; and object:alive(&amp;#41; then&lt;br /&gt;if bloodsucker_zone_enter &amp;#91;k]== nil then&lt;br /&gt;-- printf(&quot;ZONE ENTERED&quot;&amp;#41;&lt;br /&gt;bloodsucker_zone_enter &amp;#91;k]= object&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;if bloodsucker_zone_enter &amp;#91;k]~= nil then&lt;br /&gt;-- printf(&quot;ZONE ENTERED&quot;&amp;#41;&lt;br /&gt;bloodsucker_zone_enter &amp;#91;k]= nil&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;--&apos; Выбираем активный сектор для НПС&lt;br /&gt;self.st.active_sector = sr_danger.select_active_sectors(object&amp;#41;&lt;br /&gt;&lt;br /&gt;--&apos; Апдейт менеджера состояний тела&lt;br /&gt;if self.st.state_mgr then&lt;br /&gt;if object_alive then&lt;br /&gt;self.st.state_mgr:update(&amp;#41;&lt;br /&gt;-- Апдейт торговли&lt;br /&gt;if self.st.state_mgr.combat == false and&lt;br /&gt;self.st.state_mgr.alife == false&lt;br /&gt;then&lt;br /&gt;trade_manager.update(object&amp;#41;&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;self.st.state_mgr = nil&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;--&apos; Апдейт саундменеджера&lt;br /&gt;if object_alive then&lt;br /&gt;xr_sound.update(object:id(&amp;#41;&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;-- Апдейт отряда&lt;br /&gt;local squad = db.storage&amp;#91;self.object:id(&amp;#41;].squad_obj&lt;br /&gt;if squad ~= nil then&lt;br /&gt;if squad.commander_id == self.object:id(&amp;#41; then&lt;br /&gt;squad:update(&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;--&amp;#91;&amp;#91;&lt;br /&gt;object:info_clear(&amp;#41;&lt;br /&gt;if object_alive then&lt;br /&gt;local active_section = db.storage&amp;#91;object:id(&amp;#41;].active_section&lt;br /&gt;if active_section then&lt;br /&gt;object:info_add(&quot;section: &quot; .. active_section&amp;#41;&lt;br /&gt;end&lt;br /&gt;local best_enemy = object:best_enemy(&amp;#41;&lt;br /&gt;if best_enemy then&lt;br /&gt;object:info_add(&quot;enemy: &quot; .. best_enemy:name(&amp;#41;&amp;#41;&lt;br /&gt;end&lt;br /&gt;object:info_add(object:name(&amp;#41;..&quot; &amp;#91;&quot;..object:team(&amp;#41;..&quot;]&amp;#91;&quot;..object:squad(&amp;#41;..&quot;]&amp;#91;&quot;..object:group(&amp;#41;..&quot;]&quot;&amp;#41;&lt;br /&gt;&lt;br /&gt;if alife(&amp;#41;:object(object:id(&amp;#41;&amp;#41; == nil then&lt;br /&gt;return&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;local squad = db.storage&amp;#91;object:id(&amp;#41;].squad_obj&lt;br /&gt;if squad ~= nil then&lt;br /&gt;object:info_add(&quot;squad_id: &quot; .. squad.squad_id&amp;#41;&lt;br /&gt;if squad.sim_combat_id ~= nil then&lt;br /&gt;local smart = sim_board.get_sim_board(&amp;#41;.smarts&amp;#91;squad.sim_combat_id].smrt&lt;br /&gt;local sim_combat = smart.combat_manager&lt;br /&gt;object:info_add(&quot;sim_combat: stage&amp;#91;&quot; .. sim_combat:get_squad_stage(squad&amp;#41;..&quot;]&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if object:is_talk_enabled(&amp;#41; then&lt;br /&gt;object:set_tip_text(&quot;character_use&quot;&amp;#41;&lt;br /&gt;else&lt;br /&gt;object:set_tip_text(&quot;&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;object:set_tip_text_default(&amp;#41;&lt;br /&gt;end&lt;br /&gt;]]&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:reload(section&amp;#41;&lt;br /&gt;--memusage.collect_info(self.object, &quot;reload_start&quot;&amp;#41;&lt;br /&gt;object_binder.reload(self, section&amp;#41;&lt;br /&gt;--printf(&quot;motivator_binder:reload(&amp;#41;: self.object:name(&amp;#41;=&apos;%s&apos;&quot;, self.object:name(&amp;#41;&amp;#41;&lt;br /&gt;--self.object:set_pda_callback(pda_callback&amp;#41;&lt;br /&gt;--memusage.collect_info(self.object, &quot;reload_end&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:net_save_relevant(&amp;#41;&lt;br /&gt;--printf(&quot;motivator_binder:net_save_relevant(&amp;#41;: self.object:name(&amp;#41;=&apos;%s&apos;&quot;, self.object:name(&amp;#41;&amp;#41;&lt;br /&gt;return true&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:save(packet&amp;#41;&lt;br /&gt;set_save_marker(packet, &quot;save&quot;, false, &quot;motivator_binder&quot;&amp;#41;&lt;br /&gt;&lt;br /&gt;object_binder.save(self, packet&amp;#41;&lt;br /&gt;if self.object:profile_name(&amp;#41; == &quot;stc_strelok&quot; then&lt;br /&gt;stc_strelok_health_manager.save(packet&amp;#41;&lt;br /&gt;end&lt;br /&gt;packet:w_bool(self.treasure_processed&amp;#41;&lt;br /&gt;&lt;br /&gt;xr_logic.save_obj(self.object, packet&amp;#41;&lt;br /&gt;trade_manager.save(self.object, packet&amp;#41;&lt;br /&gt;-- treasure_manager.save(packet&amp;#41;&lt;br /&gt;xr_sound.save_npc(packet, self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;dialog_manager.save_npc(packet, self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;&lt;br /&gt;set_save_marker(packet, &quot;save&quot;, true, &quot;motivator_binder&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:load(reader&amp;#41;&lt;br /&gt;self.loaded = true&lt;br /&gt;printf(&quot;obj1: &amp;#91;%s]&quot;, self.object:name(&amp;#41;&amp;#41;&lt;br /&gt;set_save_marker(reader, &quot;load&quot;, false, &quot;motivator_binder&quot;&amp;#41;&lt;br /&gt;printf(&quot;obj2: &amp;#91;%s]&quot;, self.object:name(&amp;#41;&amp;#41;&lt;br /&gt;object_binder.load(self, reader&amp;#41;&lt;br /&gt;printf(&quot;obj3: &amp;#91;%s]&quot;, self.object:name(&amp;#41;&amp;#41;&lt;br /&gt;if self.object:profile_name(&amp;#41; == &quot;stc_strelok&quot; then&lt;br /&gt;stc_strelok_health_manager.load(reader&amp;#41;&lt;br /&gt;end&lt;br /&gt;self.treasure_processed = reader:r_bool(&amp;#41;&lt;br /&gt;&lt;br /&gt;xr_logic.load_obj(self.object, reader&amp;#41;&lt;br /&gt;trade_manager.load(self.object, reader&amp;#41;&lt;br /&gt;-- treasure_manager.load(reader&amp;#41;&lt;br /&gt;xr_sound.load_npc(reader, self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;dialog_manager.load_npc(reader, self.object:id(&amp;#41;&amp;#41;&lt;br /&gt;set_save_marker(reader, &quot;load&quot;, true, &quot;motivator_binder&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function motivator_binder:hear_callback(self, who, sound_type, sound_position, sound_power&amp;#41;&lt;br /&gt;if who:id(&amp;#41; == self:id(&amp;#41; then&lt;br /&gt;return&lt;br /&gt;end&lt;br /&gt;local type = &quot;NIL&quot;&lt;br /&gt;if bit_and(sound_type, snd_type.weapon&amp;#41; == snd_type.weapon then&lt;br /&gt;type = &quot;WPN&quot;&lt;br /&gt;if bit_and(sound_type, snd_type.weapon_shoot&amp;#41; == snd_type.weapon_shoot then&lt;br /&gt;type = &quot;WPN_shoot&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.weapon_empty&amp;#41; == snd_type.weapon_empty then&lt;br /&gt;type = &quot;WPN_empty&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.weapon_bullet_hit&amp;#41; == snd_type.weapon_bullet_hit then&lt;br /&gt;type = &quot;WPN_hit&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.weapon_reload&amp;#41; == snd_type.weapon_reload then&lt;br /&gt;type = &quot;WPN_reload&quot;&lt;br /&gt;end&lt;br /&gt;elseif bit_and(sound_type, snd_type.item&amp;#41; == snd_type.item then&lt;br /&gt;type = &quot;ITM&quot;&lt;br /&gt;if bit_and(sound_type, snd_type.item_pick_up&amp;#41; == snd_type.item_pick_up then&lt;br /&gt;type = &quot;ITM_pckup&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.item_drop&amp;#41; == snd_type.item_drop then&lt;br /&gt;type = &quot;ITM_drop&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.item_hide&amp;#41; == snd_type.item_hide then&lt;br /&gt;type = &quot;ITM_hide&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.item_take&amp;#41; == snd_type.item_take then&lt;br /&gt;type = &quot;ITM_take&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.item_use&amp;#41; == snd_type.item_use then&lt;br /&gt;type = &quot;ITM_use&quot;&lt;br /&gt;end&lt;br /&gt;elseif bit_and(sound_type, snd_type.monster&amp;#41; == snd_type.monster then&lt;br /&gt;type = &quot;MST&quot;&lt;br /&gt;if bit_and(sound_type, snd_type.monster_die&amp;#41; == snd_type.monster_die then&lt;br /&gt;type = &quot;MST_die&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.monster_injure&amp;#41; == snd_type.monster_injure then&lt;br /&gt;type = &quot;MST_damage&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.monster_step&amp;#41; == snd_type.monster_step then&lt;br /&gt;type = &quot;MST_step&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.monster_talk&amp;#41; == snd_type.monster_talk then&lt;br /&gt;type = &quot;MST_talk&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.monster_attack&amp;#41; == snd_type.monster_attack then&lt;br /&gt;type = &quot;MST_attack&quot;&lt;br /&gt;elseif bit_and(sound_type, snd_type.monster_eat&amp;#41; == snd_type.monster_eat then&lt;br /&gt;type = &quot;MST_eat&quot;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;if type ~= &quot;NIL&quot; then&lt;br /&gt;printf(&quot;SND *%s* dist: %d &amp;#91;%f], %s -&gt; %s&quot;, type, self:position(&amp;#41;:distance_to(who:position(&amp;#41;&amp;#41;, sound_power, who:name(&amp;#41;, self:name(&amp;#41;&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function AddToMotivator(npc&amp;#41;&lt;br /&gt;if alife(&amp;#41; then&lt;br /&gt;npc:bind_object(this.motivator_binder(npc&amp;#41;&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;-- Эвалюаторы, которые имеют высший приоритет, и, соответственно, перебивают остальные скрипты собой&lt;br /&gt;function addCommonPrecondition(action&amp;#41;&lt;br /&gt;--action:add_precondition (world_property(xr_evaluators_id.reaction,false&amp;#41;&amp;#41;&lt;br /&gt;action:add_precondition (world_property(xr_evaluators_id.stohe_meet_base + 1,false&amp;#41;&amp;#41;&lt;br /&gt;action:add_precondition (world_property(xr_evaluators_id.sidor_wounded_base + 0, false&amp;#41;&amp;#41;&lt;br /&gt;--&apos;action:add_precondition (world_property(xr_evaluators_id.chugai_heli_hunter_base, false&amp;#41;&amp;#41;&lt;br /&gt;action:add_precondition (world_property(xr_evaluators_id.abuse_base, false&amp;#41;&amp;#41;&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;function register_bloodsucker_restr(obj&amp;#41;&lt;br /&gt;printf(&quot;registering blood restr!!!&quot;&amp;#41;&lt;br /&gt;bloodsuckers_restr&amp;#91;obj:id(&amp;#41;] = obj&lt;br /&gt;end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
			<category>Скрипты, конфиги, логика, движок</category>
			<dc:creator>VladTang2000</dc:creator>
			<guid>https://stalker-gaming.ru/forum/8-559-1</guid>
		</item>
		<item>
			<title>Перенос меток уник НПС из Зов Припяти в Тени Чернобыля</title>
			<link>https://stalker-gaming.ru/forum/8-999-1</link>
			<pubDate>Tue, 28 Feb 2017 14:36:40 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/8&quot;&gt;Скрипты, конфиги, логика, движок&lt;/a&gt;&lt;br /&gt;Описание темы: Тени Чернобыл&lt;br /&gt;Автор темы: Hardtmuth&lt;br /&gt;Автор последнего сообщения: Hardtmuth&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;hr /&gt;&lt;b&gt;&lt;div align=&quot;center&quot;&gt;&lt;span style=&quot;color:#ff7700&quot;&gt;Перенос меток уник НПС из Зов Припяти в Тени Чернобыля&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;Все видимо видели что в Зов Припяти на ключевых НПС, есть своя метка будто тот торговец или медик сейчас, я вас научу как же сделать также само только в Тени Чернобыля приступи.&lt;br /&gt;Для начала нам потребуется &lt;u&gt;xr_logic&lt;/u&gt; и &lt;u&gt;xr_motivator&lt;/u&gt;, создаём &lt;i&gt;ваш_файл.script&lt;/i&gt; в моём случае это &lt;u&gt;bind_generic.script&lt;/u&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;code=lua]----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;-- STALKER MAP SHOW Перенос из Зов припяти в Тени чернобыля By Майор_Симецкий(Богдан&amp;#41;на ap-pro.ru aka Bogdanchik228.spaces.ru&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;-- Вызывается на переключении на новую секцию. Производит вычитывание настроек из текущей секции.&lt;br /&gt;function reset_show_spot(npc, scheme, st, section&amp;#41;&lt;br /&gt;local spot_section&lt;br /&gt;if scheme == nil or scheme == &quot;nil&quot; then&lt;br /&gt;spot_section = utils.cfg_get_string(st.ini, st.section_logic, &quot;show_spot&quot;, npc, false, &quot;&quot;&amp;#41;&lt;br /&gt;else&lt;br /&gt;spot_section = utils.cfg_get_string(st.ini, section, &quot;show_spot&quot;, npc, false, &quot;&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;local map_spot = utils.cfg_get_string(st.ini, st.section_logic, &quot;npc_map_spot&quot;, npc, false, &quot;&quot;&amp;#41;&lt;br /&gt;if map_spot == nil then&lt;br /&gt;map_spot = utils.cfg_get_string(st.ini, section, &quot;npc_map_spot&quot;, npc, false, &quot;&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;if map_spot ~= nil then&lt;br /&gt;map_spot = xr_logic.parse_condlist(npc, section, &quot;npc_map_spot&quot;, map_spot&amp;#41;&lt;br /&gt;map_spot = xr_logic.pick_section_from_condlist(db.actor, npc, map_spot&amp;#41;&lt;br /&gt;end&lt;br /&gt;--&apos; printf(&quot;STALKER SPOT SECTION &amp;#91;%s]&quot;, utils.to_str(spot_section&amp;#41;&amp;#41;&lt;br /&gt;&lt;br /&gt;if spot_section == nil then&lt;br /&gt;spot_section = &quot;true&quot;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;local spot = &quot;false&quot;&lt;br /&gt;-- if character_community(npc&amp;#41; ~= &quot;zombied&quot; then&lt;br /&gt;local spot_condlist = xr_logic.parse_condlist(npc, section, &quot;show_spot&quot;, spot_section&amp;#41;&lt;br /&gt;spot = xr_logic.pick_section_from_condlist(db.actor, npc, spot_condlist&amp;#41;&lt;br /&gt;-- end&lt;br /&gt;&lt;br /&gt;local sim = alife(&amp;#41;&lt;br /&gt;if not sim then&lt;br /&gt;return&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;local obj = sim:object(npc:id(&amp;#41;&amp;#41;&lt;br /&gt;if obj and obj.online then&lt;br /&gt;local npc_id = npc:id(&amp;#41;&lt;br /&gt;if spot == &quot;false&quot; then&lt;br /&gt;-- прячем&lt;br /&gt;obj:visible_for_map(false&amp;#41;&lt;br /&gt;else&lt;br /&gt;-- ставим&lt;br /&gt;obj:visible_for_map(true&amp;#41;&lt;br /&gt;end&lt;br /&gt;if map_spot ~= nil then&lt;br /&gt;local map_location = &quot;&quot;&lt;br /&gt;local hint = &quot;&quot;&lt;br /&gt;if map_spot == &quot;trader&quot; then&lt;br /&gt;map_location = &quot;trader_npc_location&quot;&lt;br /&gt;hint = &quot;st_ui_pda_trader&quot;&lt;br /&gt;elseif map_spot == &quot;mechanic&quot; then&lt;br /&gt;map_location = &quot;mechanic_npc_location&quot;&lt;br /&gt;hint = &quot;st_ui_pda_mechanic&quot;&lt;br /&gt;elseif map_spot == &quot;guider&quot; then&lt;br /&gt;map_location = &quot;guider_npc_location&quot;&lt;br /&gt;hint = &quot;st_ui_pda_guider&quot;&lt;br /&gt;elseif map_spot == &quot;quest_npc&quot; then&lt;br /&gt;map_location = &quot;quest_npc_location&quot;&lt;br /&gt;hint = &quot;st_ui_pda_quest_npc&quot;&lt;br /&gt;elseif map_spot == &quot;medic&quot; then&lt;br /&gt;map_location = &quot;trader_npc_location&quot;&lt;br /&gt;hint = &quot;st_ui_pda_legend_medic&quot;&lt;br /&gt;end&lt;br /&gt;if level.map_has_object_spot(npc_id, map_location&amp;#41; ~= 0 then&lt;br /&gt;level.map_remove_object_spot(npc_id, map_location&amp;#41;&lt;br /&gt;end&lt;br /&gt;if db.actor and npc and npc:general_goodwill(db.actor&amp;#41; &gt; -1000 then&lt;br /&gt;level.map_add_object_spot(npc_id, map_location, hint&amp;#41;&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;if level.map_has_object_spot(npc_id, &quot;trader_npc_location&quot;&amp;#41; ~= 0 then&lt;br /&gt;level.map_remove_object_spot(npc_id, &quot;trader_npc_location&quot;&amp;#41;&lt;br /&gt;elseif level.map_has_object_spot(npc_id, &quot;mechanic_npc_location&quot;&amp;#41; ~= 0 then&lt;br /&gt;level.map_remove_object_spot(npc_id, &quot;mechanic_npc_location&quot;&amp;#41;&lt;br /&gt;elseif level.map_has_object_spot(npc_id, &quot;guider_npc_location&quot;&amp;#41; ~= 0 then&lt;br /&gt;level.map_remove_object_spot(npc_id, &quot;guider_npc_location&quot;&amp;#41;&lt;br /&gt;elseif level.map_has_object_spot(npc_id, &quot;quest_npc_location&quot;&amp;#41; ~= 0 then&lt;br /&gt;level.map_remove_object_spot(npc_id, &quot;quest_npc_location&quot;&amp;#41;&lt;br /&gt;elseif level.map_has_object_spot(npc_id, &quot;trader_npc_location&quot;&amp;#41; ~= 0 then&lt;br /&gt;level.map_remove_object_spot(npc_id, &quot;trader_npc_location&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function remove_level_spot(npc, st&amp;#41;&lt;br /&gt;local map_spot = utils.cfg_get_string(st.ini, st.section_logic, &quot;npc_map_spot&quot;, npc, false, &quot;&quot;&amp;#41;&lt;br /&gt;if map_spot == nil then&lt;br /&gt;map_spot = utils.cfg_get_string(st.ini, st.active_section, &quot;npc_map_spot&quot;, npc, false, &quot;&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;if map_spot ~= nil then&lt;br /&gt;map_spot = xr_logic.parse_condlist(npc, st.active_section, &quot;npc_map_spot&quot;, map_spot&amp;#41;&lt;br /&gt;map_spot = xr_logic.pick_section_from_condlist(db.actor, npc, map_spot&amp;#41;&lt;br /&gt;end&lt;br /&gt;local sim = alife(&amp;#41;&lt;br /&gt;if not sim then&lt;br /&gt;return&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;local obj = sim:object(npc:id(&amp;#41;&amp;#41;&lt;br /&gt;if obj then&lt;br /&gt;local npc_id = npc:id(&amp;#41;&lt;br /&gt;if map_spot ~= &quot;&quot; and map_spot ~= nil then&lt;br /&gt;local map_location = &quot;&quot;&lt;br /&gt;if map_spot == &quot;trader&quot; then&lt;br /&gt;map_location = &quot;ui_pda2_trader_location&quot;&lt;br /&gt;elseif map_spot == &quot;mechanic&quot; then&lt;br /&gt;map_location = &quot;ui_pda2_mechanic_location&quot;&lt;br /&gt;elseif map_spot == &quot;guider&quot; then&lt;br /&gt;map_location = &quot;ui_pda2_scout_location&quot;&lt;br /&gt;elseif map_spot == &quot;quest_npc&quot; then&lt;br /&gt;map_location = &quot;ui_pda2_quest_npc_location&quot;&lt;br /&gt;elseif map_spot == &quot;medic&quot; then&lt;br /&gt;map_location = &quot;ui_pda2_medic_location&quot;&lt;br /&gt;end&lt;br /&gt;if level.map_has_object_spot(npc_id, map_location&amp;#41; ~= 0 then&lt;br /&gt;level.map_remove_object_spot(npc_id, map_location&amp;#41;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Потом лезем в xr_logic.script и ищем там строку xr_death.reset_death(npc, scheme, st, section) после неё вставляем это ваш файл.reset_show_spot(npc, scheme, st, section) в моём случаем это bind_generic.reset_show_spot(npc, scheme, st, section), всё закончили с xr_logic.script лезем теперь в xr_motivator ищем там строку death_manager.drop_manager(self.object):create_release_item() после неё вставляем&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;local st = db.storage&amp;#91;self.object:id(&amp;#41;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local npc = self.object&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bind_generic.remove_level_spot(npc, st&amp;#41; -- в место bind_generic должен быть ваш файл&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;теперь мы закончили с xr_motivator, скриптовую часть мы тоже закончили теперь переходим к текстурам и логики, начнём с текстур скачайте у меня это сразу чтобы не делать новые для тех кто не понимает xml и как делать их вот &lt;a class=&quot;link&quot; href=&quot;https://stalker-gaming.ru/go?https://yadi.sk/d/0ue61g_73Eo8ZK&quot; title=&quot;https://yadi.sk/d/0ue61g_73Eo8ZK&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://yadi.sk/d/0ue61g_73Eo8ZK&lt;/a&gt; , переходим в system.ltx и там регистрируем в&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;texture_desc]&lt;br /&gt;files = ui_mp_icon_rank, ui_icons_map, ui_common, ui_old_textures, ui_ingame, ui_map_description, ui_models_multiplayer, ui_team_logo, ui_team_logo_small, ui_mainmenu, ui_mp_main, ui_statistics, ui_hud, ui_numpad, ui_inventory, ui_inventory2, ui_iconstotal, ui_pda, ui_icons_npc, ui_npc_monster, ui_npc_unique, ui_buy_menu, ui_asus_intro, ui_portrets, ;&quot;ui_new_spots_textures &lt;--- этот файл отвечает за расположения меток в текстурке вставляете в system.ltx если скачали уже и не забудте переместить в соответствующие папки&quot;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;всё с текстурками и скриптами покончено лезим в логику нпс вашего у меня это darkvalley&amp;#92;logic_sultan.ltx, в вашей логики нпс вставляем это npc_map_spot = quest_npc в место quest_npc можно другие их все волишь 5 штук это quest_npc,medic,trader,guider,mechanic, вот так будет логика для нпс в моём случае&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;;This file for logic&lt;br /&gt;&amp;#91;smart_terrains]&lt;br /&gt;none = true&lt;br /&gt;&lt;br /&gt;&amp;#91;logic]active = walker@1&lt;br /&gt;npc_map_spot = quest_npc&lt;br /&gt;;meet = meet@test пока что не трогаю&lt;br /&gt;&lt;br /&gt;&amp;#91;walker@1]&lt;br /&gt;path_walk = val_sultan_walk&lt;br /&gt;path_look = val_sultan_look&lt;br /&gt;&lt;br /&gt;&amp;#91;meet@test]&lt;br /&gt;close_snd_bye = test1&lt;br /&gt;close_snd_hello = test2&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
			<category>Скрипты, конфиги, логика, движок</category>
			<dc:creator>Hardtmuth</dc:creator>
			<guid>https://stalker-gaming.ru/forum/8-999-1</guid>
		</item>
		<item>
			<title>Создание типовых квестов</title>
			<link>https://stalker-gaming.ru/forum/8-997-1</link>
			<pubDate>Mon, 20 Feb 2017 16:20:08 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/8&quot;&gt;Скрипты, конфиги, логика, движок&lt;/a&gt;&lt;br /&gt;Описание темы: Тени Чернобыля&lt;br /&gt;Автор темы: Hardtmuth&lt;br /&gt;Автор последнего сообщения: Hardtmuth&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;hr /&gt;&lt;b&gt;&lt;span style=&quot;color:#9900ff&quot;&gt;Создание типовых квестов в Тени Чернобыля&lt;/span&gt;&lt;/b&gt;&lt;hr /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;На PDA Меченого поступило очередное задание — найти и уничтожить &lt;br /&gt;в глухой чащобе волка-отшельника. Темный-темный лес. Звенящая &lt;br /&gt;тишина. Отсутствие видимых признаков жизни. Внезапно Меченый &lt;br /&gt;видит на опушке домик, заходит внутрь и встречается с хозяином, &lt;br /&gt;который рассказывает главному герою обо всех ужасах, творящихся в &lt;br /&gt;здешних местах.&lt;br /&gt;&lt;br /&gt;Нет, это не сюжет продолжения «Сталкера», а всего лишь одна &lt;br /&gt;дополнительная миссия. &lt;br /&gt;Сегодня мы двинемся дальше — осветим тему написания несложных &lt;br /&gt;типовых квестов для игры.&lt;br /&gt;Быстрый старт&lt;br /&gt;&lt;br /&gt;Поскольку официальный редактор не позволяет править уровни &lt;br /&gt;одиночной игры, а как следствие — редактировать файлы скриптов, &lt;br /&gt;путей следования NPC и другие ресурсы, мы будем писать квесты в... &lt;br /&gt;обычном «Блокноте». У данного подхода есть всего лишь один минус, &lt;br /&gt;который отпугивает большинство модмейкеров, — отсутствие &lt;br /&gt;удобной оболочки, редактора для просмотра содержимого файлов &lt;br /&gt;просто нет. Зато плюсов куда больше: возможность правки любых &lt;br /&gt;параметров, открытые для редактирования исходные коды и многое &lt;br /&gt;другое. Игра стоит свеч.&lt;br /&gt;&lt;br /&gt;С чего же начать? Первым делом попрактикуемся в создании &lt;br /&gt;несложных типовых заданий типа «убить сталкера», «уничтожить &lt;br /&gt;лагерь», «найди ценный артефакт». &lt;br /&gt;Запустите «Блокнот» и подгрузите в него файл task_manager.ltx из &lt;br /&gt;директории &lt;i&gt;gamedata&amp;#92;config&amp;#92;misc&lt;/i&gt; с распакованной игрой (если у вас &lt;br /&gt;есть лишь недавно установленная версия «Сталкера», разархивируйте &lt;br /&gt;базы данных игры при помощи утилиты S.T.A.L.K.E.R. Data Unpacker). &lt;br /&gt;Файл содержит информацию о простейших игровых заданиях. &lt;br /&gt;Структура его следующая. В первой части файла — от оператора&lt;br /&gt;&lt;br /&gt;до кейворда sar_monolith — объявляются специальные метки, &lt;br /&gt;ответственные за подключение новых квестов к игре. Пример одной &lt;br /&gt;из таких конструкций — буквосочетание tm_kill_stalker_5, это название &lt;br /&gt;типовой миссии. Во второй части файла — после ключевого слова &lt;br /&gt;sar_monolith — размещаются тексты заданий: цели, задачи, ссылки на &lt;br /&gt;диалоги. Разберем структуру одного из квестов, начинающегося со &lt;br /&gt;специальной метки [tm_kill_stalker_3] (обратите внимание, что при &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;#91;tm_kill_stalker_3] &lt;br /&gt;type = kill_stalker &lt;br /&gt;community = actor &lt;br /&gt;text = tm_kill_stalker_3_text &lt;br /&gt;description = tm_kill_stalker_3_descr &lt;br /&gt;parent = trader &lt;br /&gt;target = sim_stalker_novice &lt;br /&gt;;reward_money = 1000 &lt;br /&gt;reward_reputation = -5 &lt;br /&gt;reward_rank = 2 &lt;br /&gt;reward_item = af_blood &lt;br /&gt;time = 86400 &lt;br /&gt;prior = 2&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Рассмотрим основные параметры. Самый первый — type — отвечает &lt;br /&gt;за тип задания, в данном случае — уничтожить сталкера (kill_stalker). В &lt;br /&gt;игре предусмотрено несколько видов стандартных заданий: &lt;br /&gt;уничтожение/защита лагеря (параметр eliminate_lager/defend_lager), &lt;br /&gt;убийство сталкера (kill_stalker), поиск артефакта/конечности &lt;br /&gt;монстра/предмета (artifact/monster_part/find_item). &lt;br /&gt;Поскольку специальных редакторов и утилит для изменения &lt;br /&gt;«Сталкера» нет, приходится править скрипты в «Блокноте», а игровые &lt;br /&gt;тексты — в табличном редакторе Excel. Не очень удобно, но &lt;br /&gt;альтернативы просто нет. &lt;br /&gt;Параметр community определяет группировку, к которой принадлежит &lt;br /&gt;главный герой. По умолчанию во всех миссиях в качестве значения &lt;br /&gt;данной характеристики используется ключевое слово actor &lt;br /&gt;(персонаж). &lt;br /&gt;text — название записи в файле stable_task_manager.xml, содержащей &lt;br /&gt;текст задания. Текст отображается в диалогах. &lt;br /&gt;description — запись в файле stable_task_manager.xml. Здесь собран &lt;br /&gt;текст миссии, выводимый на PDA Меченого. &lt;br /&gt;Следующая настройка — атрибут parent — определяет имя заказчика, &lt;br /&gt;в данном случае trader (торговец Сидорович). &lt;br /&gt;target — цель миссии, в текущем квесте — убийство одного из &lt;br /&gt;сталкеров — novice (sim_stalker_novice). &lt;br /&gt;reward_money — награда, которую получит игрок после выполнения &lt;br /&gt;задания. &lt;br /&gt;reward_reputation — число очков репутации, добавляемое игроку &lt;br /&gt;после прохождения квеста. Вы можете понизить Меченому репутацию &lt;br /&gt;за выполнение задания, выставив в качестве значения атрибута &lt;br /&gt;любое целое отрицательное число. &lt;br /&gt;reward_rank — количество ранговых очков за выполнение миссии. &lt;br /&gt;reward_item — бонусные предметы, вручаемые главному герою, за &lt;br /&gt;прохождение квеста. &lt;br /&gt;time — время (в секундах), в течение которого игрок должен пройти &lt;br /&gt;миссию. &lt;br /&gt;prior — приоритет данного задания перед остальными. Цифра 1 &lt;br /&gt;ставится в том случае, если задание крайне важно, и далее по &lt;br /&gt;нисходящей.&lt;br /&gt;Самое время попрактиковаться и модифицировать какой-нибудь &lt;br /&gt;оригинальный игровой квест. Отыщите строку [tm_kill_stalker_5] (для &lt;br /&gt;вызова меню поиска в «Блокноте» воспользуйтесь комбинацией &lt;br /&gt;горячих клавиш Ctrl+F) и модифицируйте параметры данной миссии. &lt;br /&gt;Например, вы можете просто повысить/понизить сложность игры, &lt;br /&gt;увеличив или уменьшив время, отведенное игроку на выполнение &lt;br /&gt;задания (параметр time), снять значок блокировки строки (символ ;), &lt;br /&gt;reward_money (денежное вознаграждение) или, скажем, придать &lt;br /&gt;параметру reward_reputation значение ноль, чтобы Меченый не терял &lt;br /&gt;репутацию в Зоне. &lt;br /&gt;Текстовый беспредел&lt;br /&gt;С правкой исходного кода миссии мы разобрались. Движемся дальше &lt;br /&gt;и приступаем к модификации игровых текстов. Загляните в каталог &lt;br /&gt;&lt;i&gt;gamedata&amp;#92;config&amp;#92;text&amp;#92;rus&lt;/i&gt; установленной игры, отыщите в директории &lt;br /&gt;файл &lt;i&gt;stable_task_manager.xml&lt;/i&gt; и откройте его при помощи табличного &lt;br /&gt;редактора Microsoft Excel.&lt;br /&gt;После запуска программы вы увидите, что вся информация из XML- &lt;br /&gt;файла будет распределена по двум столбцам — A и B, которым &lt;br /&gt;соответствуют названия id (идентификационный номер) и text (текст). &lt;br /&gt;Если спускаться плавно вниз по столбцу id, то нетрудно установить &lt;br /&gt;так называемую закономерность. Строки 3, 6, 9 и далее в &lt;br /&gt;арифметической прогрессии содержат заголовок типовой миссии. &lt;br /&gt;Строки 4, 7, 10, 13, 16 с окончанием _descr — краткое описание (цель &lt;br /&gt;задания), выводимое на PDA главного героя. Ну а строки 5, 8, 11, 14 и &lt;br /&gt;далее, заканчивающаяся на _text, содержат текст, отображаемый во &lt;br /&gt;время диалога с персонажем, у которого вы получили задание. &lt;br /&gt;Таким образом, для изменения текстов того или иного одноуровневого &lt;br /&gt;задания, прописанного в файле &lt;i&gt;task_manager.ltx&lt;/i&gt;, вам нужно проделать &lt;br /&gt;следующие нехитрые манипуляции. Первым делом скопируйте в &lt;br /&gt;«Блокнот» название определенной миссии из &lt;i&gt;task_manager.ltx&lt;/i&gt; (без &lt;br /&gt;квадратных скобок), ее описание для вывода на PDA (параметр &lt;br /&gt;description) и текст диалога (text). Затем поочередно отыщите &lt;br /&gt;выписанные ключевые слова в XML-файле &lt;i&gt;stable_task_manager.xml&lt;/i&gt; и &lt;br /&gt;модифицируйте текст каждой из записей. Закончив правку задания, &lt;br /&gt;сохраните все изменения и протестируйте квест в игре.Тонкости &lt;br /&gt;квестостроения&lt;br /&gt;Чтобы оставить свой собственный авторский след в файле &lt;br /&gt;task_manager.ltx, да и вообще в любом конфигурационном файле &lt;br /&gt;«Сталкера», нужно всего-то лишь поставить в нужном месте (после &lt;br /&gt;кода или с новой строки) символ точки с запятой и после него вживить &lt;br /&gt;комментарий, например: tm_eliminate_camp_4 ; игроманский &lt;br /&gt;комментарий, не удалять.&lt;br /&gt;Далеко не все квесты, написанные разработчиками, вошли в &lt;br /&gt;оригинальную игру. Что, никогда о таком не слышали? Тогда имейте в &lt;br /&gt;виду, что, например, в файле &lt;i&gt;task_manager.ltx&lt;/i&gt; содержится ряд &lt;br /&gt;закомментированных, но вполне рабочих заданий, цель которых &lt;br /&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;#91;barmen_eliminate_camp_3] &lt;br /&gt;;--&amp;#91;barmen_find_item_1] &lt;br /&gt;;--&amp;#91;barmen_find_item_2] &lt;br /&gt;;--&amp;#91;barmen_find_item_3]&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Для преобразования геймплея S.T.A.L.K.E.R. достаточно поправить &lt;br /&gt;всего лишь несколько параметров каждой типовой миссии в файле &lt;br /&gt;&lt;i&gt;task_manager.ltx&lt;/i&gt;. Как вариант, вы можете значительно сократить &lt;br /&gt;время, отведенное на выполнение каждого квеста, занизить очки &lt;br /&gt;репутации за прохождение той или иной миссии, но в то же время в &lt;br /&gt;несколько раз увеличить число бонусов и денежных средств. &lt;br /&gt;Квестострой&lt;br /&gt;Теперь, когда вы изучили основы редактирования однотипных &lt;br /&gt;игровых заданий, можно попробовать силы в написании своего &lt;br /&gt;собственного квеста — создать необходимые записи в менеджере &lt;br /&gt;заданий (файл task_manager.ltx), а также снабдить квест текстовыми &lt;br /&gt;описаниями.&lt;br /&gt;Запустите «Блокнот» и подгрузите в него файл &lt;i&gt;task_manager.ltx&lt;/i&gt; из &lt;br /&gt;директории &lt;i&gt;gamedata&amp;#92;config&amp;#92;misc&lt;/i&gt;. Отыщите ключевое слово &lt;br /&gt;sar_monolith и после него с новой строки добавьте следующую &lt;br /&gt;конструкцию: &lt;br /&gt;; Ваш авторский комментарий &lt;br /&gt;[mission_name]&lt;br /&gt;Здесь [mission_name] — произвольное наименование квеста, &lt;br /&gt;например, tm_kill_stalker_7.&lt;br /&gt;Для изменения игрового баланса нужно отредактировать коды &lt;br /&gt;типовых заданий.&lt;br /&gt;Далее скопируйте какое-нибудь типовое задание, например, &lt;br /&gt;[tm_kill_stalker_2] в буфер обмена и поместите дубликат в самый &lt;br /&gt;конец документа. Измените название клонированной миссии, &lt;br /&gt;заключенное в квадратные скобки, на название квеста, объявленного &lt;br /&gt;вами в списке заданий. Модифицируйте параметры оригинальной &lt;br /&gt;миссии, при необходимости добавьте в код миссии дополнительные &lt;br /&gt;команды. Самое главное — не забудьте поправить значения &lt;br /&gt;параметров text и description, которые соответствуют названиям &lt;br /&gt;текстовых записей в файлах&lt;br /&gt;&lt;i&gt;gamedata&amp;#92;config&amp;#92;gameplay&amp;#92;storyline_info_taskmanager.xml&lt;/i&gt; и &lt;br /&gt;&lt;i&gt;gamedata&amp;#92;config&amp;#92;text&amp;#92;rus&amp;#92;stable_task_manager.xml&lt;/i&gt;. Затем откройте &lt;br /&gt;«Блокнотом» XML-файл &lt;i&gt;storyline_info_taskmanager.xml&lt;/i&gt; из каталога &lt;br /&gt;&lt;i&gt;gamedata&amp;#92;config&amp;#92;gameplay&lt;/i&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;descr] &lt;br /&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;В данном фрагменте кода [descr] — значение параметра description в &lt;br /&gt;теле миссии, (в нашем случае — tm_kill_stalker_7_descr). &lt;br /&gt;Осталось внести изменения в файл stable_task_manager.xml, &lt;br /&gt;содержащий тексты заданий на русском языке. Перейдите в каталог &lt;br /&gt;&lt;i&gt;gamedata&amp;#92;config&amp;#92;text&amp;#92;rus&lt;/i&gt; и при помощи любого табличного редактора — &lt;br /&gt;скажем, Excel — откройте файл &lt;i&gt;stable_task_manager.xml&lt;/i&gt;. Передвиньте &lt;br /&gt;ползунок в правой части программы в нижнюю часть документа. В &lt;br /&gt;ячейке на пересечении 391 строки и первого столбца введите &lt;br /&gt;ключевое слово, соответствующее названию вашего квеста в файле &lt;br /&gt;&lt;i&gt;task_manager.ltx&lt;/i&gt;. После этого в поле напротив (ячейка B-391) &lt;br /&gt;напечатайте название будущего задания.&lt;br /&gt;&lt;br /&gt;В поле A-392 (A — название столбца, 392 — порядковый номер строки) &lt;br /&gt;вбейте название, прописанное в качестве параметра description вашей &lt;br /&gt;миссии, а в области B-392 — текст сообщения, который будет подан на &lt;br /&gt;PDA главного героя. В ячейке A-393 пропишите значение &lt;br /&gt;характеристики text вашей миссии и в поле напротив наберите текст &lt;br /&gt;задания для отображения во время беседы между Меченым и &lt;br /&gt;работодателем. Сохраните изменения и закройте табличный редактор.</content:encoded>
			<category>Скрипты, конфиги, логика, движок</category>
			<dc:creator>Hardtmuth</dc:creator>
			<guid>https://stalker-gaming.ru/forum/8-997-1</guid>
		</item>
		<item>
			<title>Добавляем статьи в ПДА</title>
			<link>https://stalker-gaming.ru/forum/8-980-1</link>
			<pubDate>Wed, 04 Jan 2017 14:52:19 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/8&quot;&gt;Скрипты, конфиги, логика, движок&lt;/a&gt;&lt;br /&gt;Описание темы: Тени Чернобыля&lt;br /&gt;Автор темы: victor_ribchinskij&lt;br /&gt;Автор последнего сообщения: victor_ribchinskij&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;hr /&gt;&lt;b&gt;&lt;span style=&quot;color:#ff7700&quot;&gt;Добавляем статьи в ПДА для Тени Чернобыля&lt;/span&gt;&lt;/b&gt;&lt;hr /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;На примере статьи из Artefact Activation Mod разберем их добавление в PDA.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Добавим в файл &lt;i&gt;config&amp;#92;gameplay&amp;#92;encyclopedia_zone.xml&lt;/i&gt; новую статью:&lt;/u&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;!-------------------------------- Activation - Basic -----------------------------&gt;&lt;br /&gt;&lt;br /&gt;&lt;article id=&quot;zone_anomalies_activation_basic&quot; name=&quot;zone_anomalies_activation-basic&quot; group=&quot;Anomalies&quot;&gt;&lt;br /&gt;&lt;texture x=&quot;500&quot; y=&quot;150&quot; width=&quot;100&quot; height=&quot;100&quot;&gt;&apos;&apos;&apos;ui&amp;#92;ui_icon_photo&apos;&apos;&apos;&lt;/texture&gt;&lt;br /&gt;&lt;text&gt;enc_zone_anomalies_activation_basic&lt;/text&gt;&lt;br /&gt;&lt;/article&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Здесь:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;article id - внутреннее имя статьи, именно на него ссылаются в файлах игры&lt;br /&gt;name - имя статьи, отображаемое в игре, подгружается из строкового массива&lt;br /&gt;texture - картинка и её позиция в статье, в данном случае мы использовали обычный белый шум&lt;br /&gt;text - текст статьи, отображаемый в игре, подгружается из строкового массива&lt;br /&gt;Добавим в, например, config&amp;#92;gameplay&amp;#92;info_l01escape.xml (инфопорции уровня &quot;Кордон&quot;) ссылку на получение статьи - скажем, к трупу у туннеля, при обыске которого выдается информация о аномалиях в туннеле (вы его обнаруживаете, проходя второе спецзадание от Сидоровича).&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Найдем эти строки и дополним их:&lt;/u&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;!-- труп у аномалии --&gt;&lt;br /&gt;&lt;info_portion id=&quot;esc_tutorial_dead_novice&quot;&gt;&lt;br /&gt;&lt;article&gt;tutorial_moving_anomaly&lt;/article&gt;&lt;br /&gt;&apos;&apos;&apos;&lt;article&gt;zone_anomalies_activation_basic&lt;/article&gt;&apos;&apos;&apos;&lt;br /&gt;&lt;/info_portion&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;Главное - никогда не путайте article id, name и text статьи. Я в данном примере это сделать легко. Лучше называйте их непохожими друг на друга названиями.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Так как в статье у нас есть такое поле:&lt;/u&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;text&gt;enc_zone_anomalies_activation_basic&lt;/text&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Да и название тоже не написано прямо, а ссылается на определенную строку, то добавим этот самый text в &lt;i&gt;config&amp;#92;text&amp;#92;rus&amp;#92;string_table_enc_zone.xml&lt;/i&gt;, в нашем случае:&lt;/u&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;enc_zone_anomalies_activation-basic&quot;&gt;&lt;br /&gt;&lt;text&gt;Активация - базис&lt;/text&gt;&lt;br /&gt;&lt;/string&gt;&lt;br /&gt;&lt;string id=&quot;enc_zone_anomalies_activation_basic&quot;&gt;&lt;br /&gt;&lt;text&gt;С артефактами связана, помимо всего прочего, &apos;&apos;(ну, и так далее, там большой текст&amp;#41;&apos;&apos;...&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;u&gt;Чтобы статья добавлялась при получении определенного задания, в ..._task.xml (вместо ... стоит название уровня) нужно прописать конструкцию вида:&lt;/u&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;article&gt;название_задания_descr&lt;/article&gt;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;И добавить статью с соответствующим id.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Статья создана:&lt;/u&gt; PROGRAMISTIC</content:encoded>
			<category>Скрипты, конфиги, логика, движок</category>
			<dc:creator>victor_ribchinskij</dc:creator>
			<guid>https://stalker-gaming.ru/forum/8-980-1</guid>
		</item>
		<item>
			<title>Делаем выброс</title>
			<link>https://stalker-gaming.ru/forum/8-979-1</link>
			<pubDate>Wed, 04 Jan 2017 14:49:57 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/8&quot;&gt;Скрипты, конфиги, логика, движок&lt;/a&gt;&lt;br /&gt;Описание темы: Тени Чернобыля&lt;br /&gt;Автор темы: victor_ribchinskij&lt;br /&gt;Автор последнего сообщения: victor_ribchinskij&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;hr /&gt;&lt;b&gt;&lt;span style=&quot;color:#00ffff&quot;&gt;Делаем выброс в Тени Чернобыля&lt;/span&gt;&lt;/b&gt;&lt;hr /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Добавляем секцию спавна:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Открываем spawn_sections.ltx и пишем:&lt;/u&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;bar_death]&lt;br /&gt;&lt;br /&gt;custom_data = scripts&amp;#92;surge.ltx&lt;br /&gt;&lt;br /&gt;&amp;#91;bar_timer]&lt;br /&gt;custom_data = scripts&amp;#92;timer.ltx&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Логика В gamedata&amp;#92;config&amp;#92;scripts создаем surge.ltx. Туда пихаем:&lt;/u&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_idle&lt;br /&gt;&lt;br /&gt;&amp;#91;sr_idle]&lt;br /&gt;on_info = {+bar_zone} sr_aes_deadzone&lt;br /&gt;&lt;br /&gt;&amp;#91;sr_aes_deadzone]&lt;br /&gt;intensity = 150&lt;br /&gt;intensity_speed = 150&lt;br /&gt;hit_intensity = 80&lt;br /&gt;on_timer = x nil -- в реальных миллисекундах продолжительность выброса&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;В gamedata&amp;#92;config&amp;#92;scripts создаем timer.ltx Туда пишем:&lt;/u&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_timer&lt;br /&gt;&lt;br /&gt;&amp;#91;sr_timer]&lt;br /&gt;type = dec -- тип счетчика ставьте dec, иначе выброса не видать&lt;br /&gt;start_value = 60000 -- дадим 60000 мсек на спрятаться&lt;br /&gt;on_value = 0 | %+bar_zone% -- при нуле запускаем наш выбросИнфопоршни&amp;#91;править]Откройте info_portions.xml и впишите туда:&lt;info_portion id=&quot;bar_zone&quot;&gt;&lt;/info_portion&gt;Спавн&amp;#91;править]Функция спавна вставить в sr_aes_deadzone.script в конце: function add_surge(&amp;#41; if not has_alife_info (&quot;bar_zone&quot;&amp;#41; then alife(&amp;#41;:create(&quot;bar_death&quot;,vector(&amp;#41;:set(x,y,z&amp;#41;,lvertex,gvertex&amp;#41; -- где выброс alife(&amp;#41;:create(&quot;bar_timer&quot;,vector(&amp;#41;:set(x,y,z&amp;#41;,lvertex,gvertex&amp;#41; -- где будет таймер db.actor:give_info_portion(&quot;bar_zone&quot;&amp;#41;end И в bind_stalker в функция actor_binder(update&amp;#41; вставьте sr_aes_deadzone.add_surge(&amp;#41;&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
			<category>Скрипты, конфиги, логика, движок</category>
			<dc:creator>victor_ribchinskij</dc:creator>
			<guid>https://stalker-gaming.ru/forum/8-979-1</guid>
		</item>
		<item>
			<title>Делаем свечение у артефактов</title>
			<link>https://stalker-gaming.ru/forum/8-978-1</link>
			<pubDate>Wed, 04 Jan 2017 14:44:42 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/8&quot;&gt;Скрипты, конфиги, логика, движок&lt;/a&gt;&lt;br /&gt;Описание темы: Тени Чернобыля&lt;br /&gt;Автор темы: victor_ribchinskij&lt;br /&gt;Автор последнего сообщения: victor_ribchinskij&lt;br /&gt;Количество ответов: 0</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;hr /&gt;&lt;b&gt;&lt;span style=&quot;color:#1e84cc&quot;&gt;Делаем свечение у артефактов в Тени Чернобыля&lt;/span&gt;&lt;/b&gt;&lt;hr /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Что бы артефакты ярче светили, надо сделать следующие манипуляции.&lt;br /&gt;&lt;br /&gt;Открываешь &lt;u&gt;artefacts.ltx&lt;/u&gt; из &lt;u&gt;S.T.A.L.K.E.R&amp;#92;gamedata&amp;#92;config&amp;#92;misc&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;&lt;u&gt;Ищешь артефакт и меняешь параметры (если нет, добавляешь):&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;подсветка арта lights_enabled = true(false) (включено(отключено)) trail_light_color = х, х, х (R,G,B.) trail_light_range = х (радиус свечения) &lt;br /&gt;&lt;br /&gt;Теперь я объясню, что это: &lt;br /&gt;1. trail_light_color = х, х, х (R,G,B.) - это цвет. &lt;br /&gt;RGB - это Red Green Blue (Красный, Зелёный, Синий). &lt;br /&gt;&lt;br /&gt;Максимальное значение вроде 1.0. Если trail_light_color = 1.0, 0.0, 0.0, то артефакт будет светиться ярко красным цветом. &lt;br /&gt;&lt;br /&gt;2. trail_light_range = х - радиус свечения. Максимальный радиус вроде 9.9 (9 метров, 99 сантиметров)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Автор:&lt;/u&gt; PROGRAMISTIC</content:encoded>
			<category>Скрипты, конфиги, логика, движок</category>
			<dc:creator>victor_ribchinskij</dc:creator>
			<guid>https://stalker-gaming.ru/forum/8-978-1</guid>
		</item>
		<item>
			<title>Traider</title>
			<link>https://stalker-gaming.ru/forum/7-908-1</link>
			<pubDate>Thu, 29 Dec 2016 19:40:36 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/7&quot;&gt;Софт для моддинга&lt;/a&gt;&lt;br /&gt;Описание темы: Редактор инвенторя торговцев.&lt;br /&gt;Автор темы: saleks431&lt;br /&gt;Автор последнего сообщения: фримен&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>Выкладываю свою программку для работы с инвентарем торговцев.&lt;br /&gt;Добавление, удаление, редактирование количества и цен на товары.&lt;br /&gt;&lt;br /&gt;Установка: Распаковать, запустить, указать папку с игрой.&lt;br /&gt;После внесения изменений програмой загрузится с последнего сейва и все.&lt;br /&gt;Писал для себя, потом решил выложить в массы, мож кому пригодится.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color:#ffff00&quot;&gt;https://yadi.sk/d/RjIYp4WTqfttW&lt;/span&gt;</content:encoded>
			<category>Софт для моддинга</category>
			<dc:creator>saleks431</dc:creator>
			<guid>https://stalker-gaming.ru/forum/7-908-1</guid>
		</item>
		<item>
			<title>Назначение скриптам горячих кнопок. Часть 3</title>
			<link>https://stalker-gaming.ru/forum/8-675-1</link>
			<pubDate>Sat, 09 Jul 2016 12:21:27 GMT</pubDate>
			<description>Форум: &lt;a href=&quot;https://stalker-gaming.ru/forum/8&quot;&gt;Скрипты, конфиги, логика, движок&lt;/a&gt;&lt;br /&gt;Автор темы: Hardtmuth&lt;br /&gt;Автор последнего сообщения: SeeWel&lt;br /&gt;Количество ответов: 1</description>
			<content:encoded>&lt;div align=&quot;center&quot;&gt;&lt;hr /&gt;&lt;b&gt;&lt;span style=&quot;color:#d0e0e3&quot;&gt;Назначение скриптам горячих кнопок. Часть 3&lt;/span&gt;&lt;/b&gt;&lt;hr /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Автор:&lt;/b&gt; Charsi&lt;br /&gt;&lt;b&gt;Навел на идею:&lt;/b&gt; Shadows.&lt;br /&gt;&lt;br /&gt;Зачастую при разработке мода или в игре приходится выполнять различные действия - выдача инфопорций, спавн объектов, включение&amp;#92;отключение скриптового ПНВ, сброс рюкзака, съедание антирада, запуск скриптового меню и т.д. Можно назначать горячие кнопки своим скриптам в любой версии игры, при этом не используя главное меню, кейлоггер или правку движка. Во-первых, это кнопка, нажатие которой отображает на экране название активного квеста (по умолчанию - Tab). Пример можно посмотреть в моде OGSE 0692. В нем на кнопку подвешено съедание антирада и включение пулемета в БТР. Во-вторых, есть алгоритм, использующий другие кнопки. Рассмотрим его подробнее.&lt;br /&gt;Идея довольно проста - использование консольной команды вида &quot;bind_console demo_record 1 knumpad0&quot;. В данном примере при нажатии кнопки 0 на дополнительной клавиатуре будет выполнена команда &quot;demo_record 1&quot;. Таким образом для каждой кнопки можно задать выполнение своей консольной команды. Мы можем взять в качестве команды какую-нибудь неиспользуемую в сингле, например &quot;mm_net_player_name&quot;, а в качестве параметра передавать идентификатор нажатой кнопки. Теперь, если на апдейте ловить значение параметра консольной команды, то будем знать, какая кнопка нажата, и выполнять соответствующую ей функцию.&lt;br /&gt;Работает эта схема на любой версии игры. Не следует использовать уже забинденные клавиши, т.к. действия, ассоциированные с ними, возможно перестанут выполняться. Следует помнить, что при открытом диалоговом окне оно перехватывает обработку клавиш и нажатия не отлавливаются.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Вариант 1:&lt;/b&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;local con = nil -- переменная для объекта консоли&lt;br /&gt;local con_command = &quot;mm_net_player_name&quot; -- консольная команда&lt;br /&gt;local def_value = &quot;_&quot; -- значение по умолчанию - символ подчеркивания&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;function update(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if not con then -- инициализируем схему&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;con = get_console(&amp;#41; -- кешируем консоль&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;con:execute( con_command ..&quot; &quot;.. def_value &amp;#41; -- инициализируем дефотлным значением, т.к. кнопка не нажата&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for k,v in pairs(_G&amp;#91;script_name(&amp;#41;]&amp;#41; do -- перебираем функции в текущем файле&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- v это функция&amp;nbsp;&amp;nbsp;и её имя является кодом клавиши&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if type(v&amp;#41;==&apos;function&apos; and DIK_keys&amp;#91;string.upper(k&amp;#41;] then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local key = &quot;k&quot;..string.gsub(k,&quot;dik_&quot;,&quot;&quot;&amp;#41; -- формируем ключ и&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con:execute(&quot;bind_console &quot;..con_command..&quot; &quot;..k..&quot; &quot;..key&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;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- получаем из консоли значение параметра для нашей команды&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;local str = con:get_string(con_command&amp;#41;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- если оно не является значением по умолчанию&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- и в этом файле есть функция с таким именем, то выполняем её&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if str~=def_value and this &amp;#91;str]then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&amp;#91;str](&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con:execute(con_command..&quot; &quot;..def_value&amp;#41; -- записываем значение по умолчанию&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;function dik_numpad0(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;news_manager.send_tip(db.actor,&quot;нажали кнопку numpad0&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;function dik_numpad1(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;news_manager.send_tip(db.actor,&quot;нажали кнопку numpad1&quot;&amp;#41;&lt;br /&gt;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;function dik_numpad2(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;news_manager.send_tip(db.actor,&quot;нажали кнопку numpad2&quot;&amp;#41;&lt;br /&gt;end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;При нажатии клавиш 0,1 или 2 цифровой клавиатуры будет выведено соответствующее каждой кнопке сообщение. Отслеживать можно не только нажатие, но и отпускание кнопки. Cделать это можно аналогично случаю с кнопкой Tab. На наше счастье на одно действие можно забиндить вторую кнопку командой &quot;bind_sec&quot;. Вариант кода с отлавливанием отпускания выглядит так:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Вариант 2:&lt;/b&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;local con = nil&lt;br /&gt;local con_command = &quot;mm_net_player_name&quot;&lt;br /&gt;local def_value = &quot;_&quot;&lt;br /&gt;local act_key = &quot;&quot; -- последняя нажатая клавиша&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;function update(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if not con then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;con = get_console(&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;con:execute(con_command ..&quot; &quot; .. def_value&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for k,v in pairs(_G&amp;#91;script_name(&amp;#41;]&amp;#41; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if type(v&amp;#41;==&apos;function&apos; and DIK_keys&amp;#91;string.upper(k&amp;#41;] then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local key = &quot;k&quot;..string.gsub(k,&quot;dik_&quot;,&quot;&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con:execute(&quot;bind_console &quot;..con_command..&quot; &quot;..k..&quot; &quot;..key&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;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;local str = con:get_string(con_command&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if str~=def_value and this &amp;#91;str]then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&amp;#91;str](&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con:execute(con_command ..&quot; &quot; .. def_value&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--отлова отпускания&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- биндим на показ статика активного квеста нажатую кнопку&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con:execute(&quot;bind_sec scores k&quot;..string.gsub(str,&quot;dik_&quot;,&quot;&quot;&amp;#41;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- если статик ещё не показан, то показываем его&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- он будет висеть пока не отпущена клавиша&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local cs = get_hud(&amp;#41;:GetCustomStatic(&quot;main_task&quot;&amp;#41; or get_hud(&amp;#41;:AddCustomStatic(&quot;main_task&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-- задаем 100% прозрачность тексту, чтоб не светился без нужды&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cs:wnd(&amp;#41;:SetTextColor(0,240,217,182&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;act_key = str -- запоминаем нажатую кнопку&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;news_manager.send_tip(db.actor,&quot;нажали &quot;..act_key&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;-- отлов отпускания&lt;br /&gt;&amp;nbsp;&amp;nbsp;local cs = get_hud(&amp;#41;:GetCustomStatic(&quot;main_task&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if act_key~=&quot;&quot; and not cs then -- была нажата клавиша, а статика нет&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;con:execute(&quot;unbind_sec scores&quot;&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;news_manager.send_tip(db.actor,&quot;отпустили &quot;..act_key&amp;#41;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;act_key=&quot;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;function dik_numpad0(&amp;#41;&lt;br /&gt;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;function dik_numpad1(&amp;#41;&lt;br /&gt;end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;function dik_numpad2(&amp;#41;&lt;br /&gt;end&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;&lt;br /&gt;&lt;br /&gt;При нажатии клавиши 0 на дополнительной клавиатуре будет выведено сообщение &quot;нажали 0&quot;, а при отпускании &quot;отпустили 0&quot;.Функцию update вызываем из апдейта биндера актора. Имена функций берутся из класса-перечисления DIK_keys, описание которого можно найти в lua_help.script.</content:encoded>
			<category>Скрипты, конфиги, логика, движок</category>
			<dc:creator>Hardtmuth</dc:creator>
			<guid>https://stalker-gaming.ru/forum/8-675-1</guid>
		</item>
	</channel>
</rss>