<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x421;&#x43A;&#x440;&#x438;&#x43F;&#x442;&#x44B;, &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x438;, &#x43B;&#x43E;&#x433;&#x438;&#x43A;&#x430;, &#x434;&#x432;&#x438;&#x436;&#x43E;&#x43A; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x442;&#x435;&#x43C;</title><link>https://ap-pro.ru/forums/28-skripty-konfigi-logika-dvizhok/</link><description>&#x421;&#x43A;&#x440;&#x438;&#x43F;&#x442;&#x44B;, &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x438;, &#x43B;&#x43E;&#x433;&#x438;&#x43A;&#x430;, &#x434;&#x432;&#x438;&#x436;&#x43E;&#x43A; &#x43F;&#x43E;&#x441;&#x43B;&#x435;&#x434;&#x43D;&#x438;&#x445; &#x442;&#x435;&#x43C;</description><language>ru</language><item><title>&#x41F;&#x435;&#x440;&#x435;&#x43D;&#x43E;&#x441; &#x43C;&#x43E;&#x434;&#x438;&#x444;&#x438;&#x43A;&#x430;&#x446;&#x438;&#x439; &#x43D;&#x430; Nintendo Switch</title><link>https://ap-pro.ru/forums/topic/10146-perenos-modifikaciy-na-nintendo-switch/</link><description><![CDATA[<p>
	Приветствую господа!
</p>

<p>
	В связи с выходом любимой трилогии на любимый switch задался вопросом переноса туда хотя бы простеньких модификаций, сам опыта в разработке никогда не имел. Установив на свич версию старенький мод "Re-Animation Project" получил представленную на скринах картину, всё оружие смещено к центру, прицеливание смещено сильно влево. При этом болт, нож, бинокль корректно отображаются. Правка позиции в конфигах абсолютно не меняет ситуацию. Может кто подскажет, куда копать?
</p>
<p><a href="https://ap-pro.ru/uploads/monthly_2024_11/2024110318421300.jpg.70a37df2cecfe4ce59ab4c17c4b85005.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="45427" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" data-src="https://ap-pro.ru/uploads/monthly_2024_11/2024110318421300.thumb.jpg.2cb62e9b0c2442cb6edc2ba6538a0ac7.jpg" data-ratio="56,2" width="1000" class="ipsImage ipsImage_thumbnailed" alt="2024110318421300.jpg"></a></p>
<p><a href="https://ap-pro.ru/uploads/monthly_2024_11/2024110318421400.jpg.57a781eec3c7170714181a5b08f0c543.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="45428" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" data-src="https://ap-pro.ru/uploads/monthly_2024_11/2024110318421400.thumb.jpg.b1ef1ff5608de3defeedf6d03e1758de.jpg" data-ratio="56,2" width="1000" class="ipsImage ipsImage_thumbnailed" alt="2024110318421400.jpg"></a></p>
<p><a href="https://ap-pro.ru/uploads/monthly_2024_11/2024110318421900.jpg.f445e76b4158f0dc1c552a1eba7d1187.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="45429" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" data-src="https://ap-pro.ru/uploads/monthly_2024_11/2024110318421900.thumb.jpg.2f29c4a21ef53a7c03b9a3fef3d9df67.jpg" data-ratio="56,2" width="1000" class="ipsImage ipsImage_thumbnailed" alt="2024110318421900.jpg"></a></p>
<p><a href="https://ap-pro.ru/uploads/monthly_2024_11/2024110318422000.jpg.188e55599e2853bcf181fb6b0e770312.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="45430" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" data-src="https://ap-pro.ru/uploads/monthly_2024_11/2024110318422000.thumb.jpg.4d3ebfb53660272b401f31d44acf549c.jpg" data-ratio="56,2" width="1000" class="ipsImage ipsImage_thumbnailed" alt="2024110318422000.jpg"></a></p>]]></description><guid isPermaLink="false">10146</guid><pubDate>Sun, 03 Nov 2024 15:50:20 +0000</pubDate></item><item><title>[COP] &#x417;&#x430;&#x441;&#x435;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x43D;&#x43E;&#x432;&#x43E;&#x439; &#x43B;&#x43E;&#x43A;&#x430;&#x446;&#x438;&#x438; - &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;&#x44B; &#x43F;&#x43E; &#x441;&#x438;&#x43C;&#x443;&#x43B;&#x44F;&#x446;&#x438;&#x438;</title><link>https://ap-pro.ru/forums/topic/14540-cop-zaselenie-novoy-lokacii-voprosy-po-simulyacii/</link><description><![CDATA[<p>
	Привет бродяги!
</p>

<p>
	Решил я значит тряхнуть <s>гениталиями</s> стариной и помоддить сталкер для удовольствия.
</p>

<p>
	Подключил локу новую, в общий граф ее не запиливал, пока только тестирую на отдельно собранном для этой локи спавне. В скриптах и конфигах прописал, заполняю смарт-террейнами, сим сквадами и тестирую. Вот какие странности и непонятки:
</p>

<p>
	1. Включил в _g.script dev_debug = true и sim_debug = true. На некоторых смартах, куда приходят сим-сквады, все равно показывает capacity = 1(0). А на пустых смартах - capacity = 1(1). Что за баги в дебаге?))
</p>

<p>
	2. Для проверки работ смарта, у меня есть тестовый сквад [mod_test_squad], который я спавню в свежесозданном смарте и проверяю корректность всех работ. В simulation_objects_props этот сквад тоже записан:
</p>

<p>
	[mod_test_squad]:default_squad<br />
	sim_avail = true
</p>

<p>
	Так вот, даже когда в настройках смарта стоит max_population = 1, и в нем уже есть mod_test_squad, в него все равно может прийти другой сим-сквад. С чем это связано? Может допустим переполнение смартов (больше чем max_population) происходить, если не хватает смартов для симуляции?
</p>

<p>
	 
</p>

<p>
	 
</p>]]></description><guid isPermaLink="false">14540</guid><pubDate>Sun, 03 May 2026 07:24:54 +0000</pubDate></item><item><title>6 &#x44F;&#x434;&#x435;&#x440; &#x432;&#x43C;&#x435;&#x441;&#x442;&#x43E; 4 &#x432; &#x421;&#x442;&#x430;&#x43B;&#x43A;&#x435;&#x440; Dead Air</title><link>https://ap-pro.ru/forums/topic/14412-6-yader-vmesto-4-v-stalker-dead-air/</link><description><![CDATA[<p>
	Проблема в Дед Аире: он использует только 4 ядра, хотя на многих ПК уже 6 ядер. На моём мощном ПК Дед Аир идёт с фризами даже на минималках. Я знаю, что движок старый, но может можно как-то это исправить и сделать чтобы использовало 6 ядер? Подскажите пожалуйста.
</p>]]></description><guid isPermaLink="false">14412</guid><pubDate>Fri, 10 Apr 2026 18:55:21 +0000</pubDate></item><item><title>&#x41A;&#x430;&#x43A; &#x43E;&#x43F;&#x442;&#x438;&#x43C;&#x438;&#x437;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x43C;&#x43E;&#x434;&#x44B; &#x43D;&#x430; S.T.A.L.K.E.R.</title><link>https://ap-pro.ru/forums/topic/3557-kak-optimizirovat-mody-na-stalker/</link><description><![CDATA[<p style="text-align:center;">
	<span style="font-size:22px;">В этой теме советы для модмейкеров, как оптимизировать скрипты сталкера на любую часть игры. Вручную.<br />
	Вся информация достоверная, проверена лично мною, когда я делал <a href="https://ap-pro.ru/forums/topic/3425-cop-optimized/" rel=""><span style="color:#2ecc71;">CoP optimized</span></a>.</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Главное">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Память">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<ol><li>
						Память безусловно играет большую роль. Особенно на высоких настройках графики. Но в скриптах безусловно есть функции, которые не используются. Их следует просто удалить.
					</li>
					<li>
						<span style="color:#e74c3c;">_G</span>. Глобальная область видимости. Обычно в этот скрипт добавляют функции, которые используются повсеместно.<br />
						Но там могут быть функции, которые используются только в одном скрипте, возьмём к примеру utils. И всё. Эта самая функция видна в каждом скрипте, т.к. она помещена в _G. А зачем? Зачем помещать в _G, если эта функция используется лишь в одном файле? Функцию следует переместить в тот файл, к примеру в utils.<br />
						Также нужно сделать и с глобальными переменными.
					</li>
					<li>
						Локальные и глобальные объекты. Разные вещи, всё-таки. Некоторые скрипты содержат в себе глобальные переменные, например скрипт modules. Другие скрипты во время своей работы могут обратиться к какой-то глобальной переменной из modules.<br />
						Но, везде но... в скрипте создаётся глобальная переменная, но она используется только в этом скрипте. То есть, <strong><span style="color:#e74c3c;">по сути</span></strong> она используется как локальная, но она глобальная. Доступ к глобальным переменным происходит немного медленнее, чем к локальной. В данном случае необходимо все<span style="color:#e74c3c;"><strong> такие</strong></span> глобальные переменные, которые в этом скрипте, сделать локальными.
					</li>
					<li>
						Функции и локальные функции (<span style="color:#3498db;"><strong>local function ()</strong></span>). Первое - это те функции, к которым можно обратиться из других скриптов, глобальные функции. Абсолютно в каждом скрипте есть глобальная функция, и это нормально. Но есть те функции, которые как и переменные (тавтология), используются только в данном файле, но они объявлены как глобальные. Повторюсь,
						<blockquote class="ipsQuote" data-ipsquote="">
							<div class="ipsQuote_citation">
								Цитата
							</div>

							<div class="ipsQuote_contents">
								<p>
									Доступ к глобальным переменным происходит немного медленнее, чем к локальной.
								</p>
							</div>
						</blockquote>
						<br />
						это касается и функций, поэтому эти функции должны быть объявлены как локальные.
					</li>
					<li>
						Каждый символ в строке весит 1 байт. Например, пустая строка "" весит 1 байт (в конце всегда нуль-терминатор, \0).<br />
						Поэтому не рекомендую вам делать длинные названия чего-либо (их названия - это строки), ибо займёт много памяти, особенно, если это какой-нибудь класс, который используется у нескольких объектов.
					</li>
				</ol></div>
		</div>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Лишние действия">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<ol><li>
						Цикл for i = 0, 65535 do. Это цикл, перебирающий все спавн-объекты в игре. Много где используется.<br />
						Итак, <strong>первое замечание</strong>, это конец цикла - итерация №65535. Это максимально допустимое число типа <strong><span style="color:#9b59b6;">unsigned short (int)</span>,</strong> и это максимум спавн-объектов, который может быть в игре. В игре по умолчанию объект с ID 65535 это "Invalid". От него ничего нельзя получить, никаких данных. Просто это сигнализирует о том, что дальше объектов быть не может, этот последний.<br />
						Следовательно, необходимо делать не 65535 итераций, а 65534.<br /><strong>Второе замечание, </strong>ID, с которого начинается итерация, ноль. Ноль это всегда ID игрока, абсолютно всегда, так как самым первым на уровне создаётся и загружается именно игрок. В некоторых случаях, например, поиск и удаление каких-то предметов с помощью такого цикла. В таком случае, актёр - не предмет, следовательно он нам вообще не нужен, и итерацию нужно начинать с единички. Вот вполне вероятно, что ID 1 - это предмет.
					</li>
					<li>
						Балячка сталкерских скриптов, - передача аргумента в качестве объекта, от которого будет взят только один параметр. Зачем передавать целый объект, если используется один лишь его параметр, можно передать тот самый параметр.
						<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Код с примером">
							<div class="ipsSpoiler_header">
								<span>Спойлер</span>
							</div>

							<div class="ipsSpoiler_contents">
								<pre class="ipsCode prettyprint lang-lua prettyprinted">



<span class="com">--КАК НЕ НАДО ДЕЛАТЬ!!!</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> IsActor</span><span class="pun">(</span><span class="pln">obj</span><span class="pun">)</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> obj</span><span class="pun">:</span><span class="pln">id</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="kwd">end</span><span class="pln">
</span><span class="com">--представим, что мы откуда-то взяли НПС, CGameObject* (именно указатель на него!)</span><span class="pln">
print</span><span class="pun">(</span><span class="pln">IsActor</span><span class="pun">(</span><span class="pln">who</span><span class="pun">))</span><span class="pln"> </span><span class="com">--результат неизвестен</span><span class="pln">

</span><span class="com">--КАК НАДО ДЕЛАТЬ</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> IsActor</span><span class="pun">(</span><span class="pln">obj_id</span><span class="pun">)</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> obj_id </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
</span><span class="kwd">end</span><span class="pln">
</span><span class="com">--представим, что мы откуда-то взяли НПС, CGameObject* (именно указатель на него!)</span><span class="pln">
print</span><span class="pun">(</span><span class="pln">IsActor</span><span class="pun">(</span><span class="pln">who</span><span class="pun">:</span><span class="pln">id</span><span class="pun">()))</span><span class="pln"> </span><span class="com">--результат неизвестен</span></pre>

								<p>
									 
								</p>
							</div>
						</div>

						<p>
							Думаю, вы уловили суть.
						</p>
					</li>
					<li>
						<p>
							<span style="color:#e74c3c;"><strong>Удалите все функции, которые вызываются, но в результате они ничего не делают. Например, функция </strong></span><strong><span style="color:#f1c40f;">printf </span></strong>и её аналоги (print_table,store_table). Это - лишние действия, которые затрачивают ресурсы компьютера в результате на ничего. Зачем? Каждой программе безусловно нужно тестирование и отладка, printf та самая функция.<br />
							Но дело тут в том, что она просто не нужна. Если движовая функция <span style="color:#9b59b6;">log </span>доступна, то printf выводит в лог кучу информации. Которая модмейкеру, уверен, не нужна. Если модмейкеру нужно что-то отладить, исправить какой-то баг, то <span style="color:#e74c3c;"><strong>ОН САМ</strong></span> может в нужном месте запихнуть вывод в лог, а потом закомментировать. И ещё, иногда это забывают делать, и в итоге, в логе мода, который выпустили в открытую сеть, много ненужной инфы. И в некоторых случаях это только затрудняет поиск причины вылета.
						</p>
					</li>
					<li>
						<p>
							Создание таблицы, и после её создания сразу же внесение данных. Это смотрится красиво, но код от этого замедляется ох как хорошо. Таких таблиц вообще не следует допускать. Lua проще записать всю информацию в таблицу <strong><span style="color:#e74c3c;">на этапе её создания, чем после неё.</span></strong>
						</p>

						<pre class="ipsCode prettyprint lang-lua prettyprinted">


<span class="com">--ТАК НЕ ДОЛЖНО БЫТЬ!!!!</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> t </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">
t</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pln">
t</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pln">
t</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pln">

</span><span class="com">--ВОТ ТАК ДОЛЖНО. Эквивалетно прошлому примеру, но побыстрее.</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> t </span><span class="pun">=</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
	</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln">
  	</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
  	</span><span class="pun">[</span><span class="lit">3</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pln">
</span><span class="pun">}</span></pre>
					</li>
					<li>
						Постоянная проверка на неравенство значений. Это лишнее!<br />
						По факту ведь ничего не изменится, если такой код
						<pre class="ipsCode prettyprint lang-lua prettyprinted">


<span class="com">--Допустим это функция вызывается из bind_stalker.actor_binder:update(dt)</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> lst </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> update</span><span class="pun">(</span><span class="pln">dt</span><span class="pun">)</span><span class="pln">
	</span><span class="com">--съедает фпс</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> dt </span><span class="pun">~=</span><span class="pln"> lst </span><span class="kwd">then</span><span class="pln">
		lst </span><span class="pun">=</span><span class="pln"> dt
	</span><span class="kwd">end</span><span class="pln">
</span><span class="kwd">end</span></pre>

						<p>
							можно переделать в код вида
						</p>

						<pre class="ipsCode prettyprint lang-lua prettyprinted">


<span class="com">--Допустим это функция вызывается из bind_stalker.actor_binder:update(dt)</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> lst </span><span class="pun">=</span><span class="pln"> </span><span class="lit">10</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> update</span><span class="pun">(</span><span class="pln">dt</span><span class="pun">)</span><span class="pln">
	</span><span class="com">--ускорение примерно в 3,5 раза за удаление ОДНОГО неравенства</span><span class="pln">
	lst </span><span class="pun">=</span><span class="pln"> dt
</span><span class="kwd">end</span></pre>

						<p>
							который будет быстрее.
						</p>
					</li>
				</ol></div>
		</div>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Про строки">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<ol><li>
						 Соединения строк. В Lua можно со строкой соединять и число, без использования функции tostring. Быстрее работает тот код, который без использования tostring.
						<pre class="ipsCode prettyprint lang-lua prettyprinted">


<span class="kwd">local</span><span class="pln"> c </span><span class="pun">=</span><span class="pln"> </span><span class="str">"math"</span><span class="pun">..</span><span class="pln">tostring</span><span class="pun">(</span><span class="lit">7</span><span class="pun">)</span><span class="pln"> </span><span class="com">--медленнее</span><span class="pln">
</span><span class="com">--Эквивалентно</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> c </span><span class="pun">=</span><span class="pln"> </span><span class="str">"math"</span><span class="pun">..</span><span class="lit">7</span><span class="pln"> </span><span class="com">--быстрее</span></pre>

						<p>
							 
						</p>
					</li>
					<li>
						Математические операции со строками. Да, именно так, но есть одно но:
						<pre class="ipsCode prettyprint lang-lua prettyprinted">


<span class="com">--Такой код будет работать</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> c </span><span class="pun">=</span><span class="pln"> </span><span class="str">"70"</span><span class="pln">
c </span><span class="pun">=</span><span class="pln"> c </span><span class="pun">-</span><span class="pln"> </span><span class="lit">5</span><span class="pln">
c </span><span class="pun">=</span><span class="pln"> c </span><span class="pun">+</span><span class="pln"> </span><span class="lit">2</span><span class="pln">
c </span><span class="pun">=</span><span class="pln"> c </span><span class="pun">*</span><span class="pln"> </span><span class="lit">2</span><span class="pln">
c </span><span class="pun">=</span><span class="pln"> c </span><span class="pun">/</span><span class="pln"> </span><span class="lit">4</span><span class="pln">
print</span><span class="pun">(</span><span class="pln">c</span><span class="pun">)</span><span class="pln"> </span><span class="com">--выведет 33.5</span><span class="pln">

</span><span class="com">--ТАКОЙ КОД НЕ БУДЕТ РАБОТАТЬ</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> c </span><span class="pun">=</span><span class="pln"> </span><span class="str">"70f"</span><span class="pln">
c </span><span class="pun">=</span><span class="pln"> c </span><span class="pun">-</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="com">--выведет ошибку</span><span class="pln">
c </span><span class="pun">=</span><span class="pln"> c </span><span class="pun">+</span><span class="pln"> </span><span class="lit">2</span><span class="pln">
c </span><span class="pun">=</span><span class="pln"> c </span><span class="pun">*</span><span class="pln"> </span><span class="lit">2</span><span class="pln">
c </span><span class="pun">=</span><span class="pln"> c </span><span class="pun">/</span><span class="pln"> </span><span class="lit">4</span><span class="pln">
print</span><span class="pun">(</span><span class="pln">c</span><span class="pun">)</span><span class="pln">
</span><span class="com">--[[
lua: main.lua:2: attempt to perform arithmetic on a string value (local 'c')
stack traceback:
	main.lua:2: in main chunk
	[C]: in ?
]]</span></pre>

						<p>
							Если в строке есть символы, не определяющиеся как число (буквы, например) - то будет ошибка в коде. Тогда в строке должны быть только цифры (точка, минус).<br />
							Работает и с шестнадцатеричной системой исчисления (0xff).<br />
							Даже если в строке целое число, то в результате действия с любыми математическими операторами, встроенными в Lua, оно преобразуется во <span style="color:#e74c3c;"><strong>float.</strong></span>
						</p>
					</li>
				</ol></div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Прочее">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Мелочи, которые тоже придают прирост ФПС.
		</p>

		<ol><li>
				Старайтесь избегать деления. Да, именно так. Процесс деления происходит немного медленнее, чем процесс умножения. Например:
				<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Код с примером">
					<div class="ipsSpoiler_header">
						<span>Спойлер</span>
					</div>

					<div class="ipsSpoiler_contents">
						<pre class="ipsCode prettyprint lang-lua prettyprinted">


<span class="kwd">local</span><span class="pln"> test </span><span class="pun">=</span><span class="pln"> </span><span class="lit">150</span><span class="pln">
test </span><span class="pun">=</span><span class="pln"> test </span><span class="pun">*</span><span class="pln"> </span><span class="lit">0.1</span><span class="pln"> </span><span class="com">--В данном случае эквивалентно test = test / 10</span><span class="pln">
print</span><span class="pun">(</span><span class="pln">test</span><span class="pun">)</span><span class="pln"> </span><span class="com">--Выведет 15</span></pre>

						<p>
							Список замен:<br />
							/10 = * 0.1<br />
							/100 = * 0.01<br />
							/1000 = * 0.001 и т.п.<br />
							/2 = * 0.5<br />
							/4 = * 0.25<br />
							/5 = * 0.2<br />
							/8 = * 0.125
						</p>
					</div>
				</div>
			</li>
			<li>
				<span style="color:#e74c3c;"><strong>Не используйте степень. Вообще. </strong></span>Когда я проводил тесты, то просто поразился результату. Например, если какое-то число умножать само на себя два раза, то это будет в полтора раза быстрее, чем возвести в квадрат.
			</li>
			<li>
				Удалите лишние аргументы из функции, которые не используются, но передаются. Например:
				<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="kwd">local</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> test</span><span class="pun">(</span><span class="pln">param</span><span class="pun">)</span><span class="pln"> </span><span class="com">-- param не используется!!! но передаётся</span><span class="pln">
  print</span><span class="pun">(</span><span class="str">"Test?"</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">end</span><span class="pln">
test</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">)</span></pre>

				<p>
					В данном случае нужно удалить аргумент param в функции, и убрать его при передаче. Зачем лишний раз передавать "ничего"?
				</p>
			</li>
			<li>
				<p>
					Удалите пустые блоки кода. Даже в оригинальных скриптах они есть.<br />
					 
				</p>

				<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="kwd">function</span><span class="pln"> test</span><span class="pun">()</span><span class="pln">
   </span><span class="kwd">return</span><span class="pln"> math</span><span class="pun">.</span><span class="pln">random</span><span class="pun">(</span><span class="lit">3</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">end</span><span class="pln">
</span><span class="com">--ПУСТОЙ БЛОК КОДА!!!</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> test</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
  </span><span class="com">--print(true)</span><span class="pln">
</span><span class="kwd">end</span><span class="pln">

</span><span class="com">--НУЖНО ЗАМЕНИТЬ НА</span><span class="pln">
</span><span class="com">--if test() == 2 then</span><span class="pln">
  </span><span class="com">--print(true)</span><span class="pln">
</span><span class="com">--end</span><span class="pln">

</span><span class="com">--ИЛИ ВОВСЕ УДАЛИТЬ!</span></pre>
			</li>
			<li>
				Если вдруг какой-то файл после каких-то действий не будет использоваться, то лучше его удалить из памяти, ведь он в дальнейшем не пригодится. Сделать это можно так:
				<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="pln">_G</span><span class="pun">[</span><span class="str">"имя скрипта"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">nil</span><span class="pln">
</span><span class="com">--или (эквивалентно)</span><span class="pln">
_G</span><span class="pun">.имя</span><span class="pln">_</span><span class="pun">скрипта</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">nil</span></pre>

				<p>
					Или, если похожая ситуация с функцией (например, каллбэк на старт игры)
				</p>

				<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="pun">имя</span><span class="pln">_</span><span class="pun">скрипта[</span><span class="str">"имя_функции"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">nil</span><span class="pln">
</span><span class="com">--или (эквивалентно)</span><span class="pln">
</span><span class="pun">имя</span><span class="pln">_</span><span class="pun">скрипта.имя</span><span class="pln">_</span><span class="pun">функции</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">nil</span></pre>
			</li>
			<li>
				Умножить, разделить сложить и вычесть все известные числа.
				<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="kwd">local</span><span class="pln"> a </span><span class="pun">=</span><span class="pln"> </span><span class="lit">12</span><span class="pun">*</span><span class="lit">12</span><span class="pln">
</span><span class="com">--Сделать так. Умножить известные числа</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> a </span><span class="pun">=</span><span class="pln"> </span><span class="lit">144</span></pre>

				<p>
					 
				</p>
			</li>
		</ol></div>
</div>

<p>
	 
</p>]]></description><guid isPermaLink="false">3557</guid><pubDate>Thu, 09 Jun 2022 05:16:54 +0000</pubDate></item><item><title>&#x41F;&#x430;&#x440;&#x430; &#x432;&#x43E;&#x43F;&#x440;&#x43E;&#x441;&#x43E;&#x432; &#x43F;&#x440;&#x43E; AI additions</title><link>https://ap-pro.ru/forums/topic/8302-para-voprosov-pro-ai-additions/</link><description><![CDATA[<p>
	Недавно начал играть в OGSM 2.4.3 и заметил, что интелект НПС не такой продвинутый, что и огорчает. Хотел накатить  AI additions, но увидев на форумах, что есть некоторые ошибки, передумал. Но эта мысль не дает покоя, все таки хочется установить. Можете помочь в этом деле или дать более четкий ответ?
</p>

<p>
	P.S Почему на новом AP-PRO нет темы с AI additions, как на старом?
</p>]]></description><guid isPermaLink="false">8302</guid><pubDate>Sun, 03 Mar 2024 19:10:57 +0000</pubDate></item><item><title>&#x424;&#x443;&#x43D;&#x43A;&#x446;&#x438;&#x44F; &#x43F;&#x440;&#x43E;&#x432;&#x435;&#x440;&#x43A;&#x438; &#x441;&#x43C;&#x435;&#x440;&#x442;&#x438; NPC</title><link>https://ap-pro.ru/forums/topic/14234-funkciya-proverki-smerti-npc/</link><description><![CDATA[<p>
	function is_npc_dead(npc)
</p>

<p>
	    if npc and npc:character_health() &lt;= 0 then
</p>

<p>
	        return true
</p>

<p>
	    end
</p>

<p>
	    return false
</p>

<p>
	end
</p>

<p>
	 
</p>

<p>
	Народ, эта функция по проверке смерти  npc будет работать?
</p>

<p>
	Если нет то подскажите рабочую .
</p>]]></description><guid isPermaLink="false">14234</guid><pubDate>Wed, 04 Mar 2026 09:52:57 +0000</pubDate></item><item><title>&#x418;&#x441;&#x445;&#x43E;&#x434;&#x43D;&#x44B;&#x439; &#x43A;&#x43E;&#x434; S.T.A.L.K.E.R: Shadow of Chernobyl &#x43F;&#x43E;&#x434; Visual studio 2019</title><link>https://ap-pro.ru/forums/topic/8626-ishodnyy-kod-stalker-shadow-of-chernobyl-pod-visual-studio-2019/</link><description><![CDATA[<p>
	Исходный код тени Чернобыля для Visual studio 2019<br />
	Авторы - VAX325, Deathman, Mihan323<br /><br />
	Помимо адаптации сборки x0.0007 патча под новую Visual studio добавлены:
</p>

<ul><li>
		Тени от травы
	</li>
	<li>
		Вертикальная синхронизация
	</li>
	<li>
		Безрамочный оконный режим
	</li>
	<li>
		Отключен TOPMOST
	</li>
	<li>
		Исправление бага с игнорированием ночной фоновой музыки
	</li>
	<li>
		Инерция оружия в прицеливании
	</li>
</ul><p>
	И немногое другое, что я успел добавить за вечер<br />
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Скриншоты">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<img alt="ss_deathman_03-29-24_01-45-34_l01_escape" class="ipsImage" data-ratio="56.24" height="562" style="height:auto;" width="1000" data-src="https://media.discordapp.net/attachments/1076796385866825778/1223036919080943786/ss_deathman_03-29-24_01-45-34_l01_escape.jpg?ex=661864e4&amp;is=6605efe4&amp;hm=0ca794316f9976b5612077f64b90dda1d6abb9b432ced0d4872aba7f54bad904&amp;=&amp;format=webp&amp;width=1202&amp;height=676" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="ss_deathman_03-29-24_01-45-43_l01_escape" class="ipsImage" data-ratio="56.24" height="562" style="height:auto;" width="1000" data-src="https://media.discordapp.net/attachments/1076796385866825778/1223036919513092096/ss_deathman_03-29-24_01-45-43_l01_escape.jpg?ex=661864e4&amp;is=6605efe4&amp;hm=7af8e216610bd90439e4aa9f3ea398edf9e019f110f34ff5760b6590f2117fb4&amp;=&amp;format=webp&amp;width=1202&amp;height=676" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="ss_deathman_03-29-24_01-47-47_l01_escape" class="ipsImage" data-ratio="56.24" height="562" style="height:auto;" width="1000" data-src="https://media.discordapp.net/attachments/1076796385866825778/1223036919953363055/ss_deathman_03-29-24_01-47-47_l01_escape.jpg?ex=661864e4&amp;is=6605efe4&amp;hm=41dd5de4abe7ca4b7d253a3ec5b0946285ef71452af66e96f26875d513c05ba9&amp;=&amp;format=webp&amp;width=1202&amp;height=676" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="ss_deathman_03-29-24_02-27-11_l02_garbag" class="ipsImage" data-ratio="56.24" height="562" style="height:auto;" width="1000" data-src="https://media.discordapp.net/attachments/1076796385866825778/1223036920360341676/ss_deathman_03-29-24_02-27-11_l02_garbage.jpg?ex=661864e4&amp;is=6605efe4&amp;hm=d2e9486b97cd83015c0d23fd1ed78ba23152257f4a3f22d508da05f089d83a3a&amp;=&amp;format=webp&amp;width=1202&amp;height=676" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="ss_deathman_03-29-24_02-27-55_l02_garbag" class="ipsImage" data-ratio="56.24" height="562" style="height:auto;" width="1000" data-src="https://media.discordapp.net/attachments/1076796385866825778/1223036920783835136/ss_deathman_03-29-24_02-27-55_l02_garbage.jpg?ex=661864e4&amp;is=6605efe4&amp;hm=ce2791d21a0e1b2b1684bb3722b77475f3b514a7aeaf2c2bda09fa4736436173&amp;=&amp;format=webp&amp;width=1202&amp;height=676" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="GitHub Репозиторий с исходным кодом">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://github.com/Deathman00/S.T.A.L.K.E.R.-SHOC-VS2019" rel="external nofollow">https://github.com/Deathman00/S.T.A.L.K.E.R.-SHOC-VS2019</a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Собранный движок чтобы обычным игрокам тоже было что потрогать">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://cdn.discordapp.com/attachments/1076796385866825778/1223036876374671360/bin.rar?ex=661864da&amp;is=6605efda&amp;hm=126c8e041a36b3f1536c449d78a7a261a79d3c1a7f73cedd9a37abde7042cb86&amp;" rel="external nofollow">https://cdn.discordapp.com/attachments/1076796385866825778/1223036876374671360/bin.rar?ex=661864da&amp;is=6605efda&amp;hm=126c8e041a36b3f1536c449d78a7a261a79d3c1a7f73cedd9a37abde7042cb86&amp;</a>
		</p>
	</div>
</div>

<p>
	Приветствуются пулл реквесты, советы, а также прочая активность.<br />
	От активности зависит дальнейшее добавление улучшательств в этот репозиторий
</p>

<div>
	<hr />
	Дополнено 9 минуты спустя
</div>

<p>
	Моя страница в ВК - <a href="http://vk.com/ns_deathman/" rel="external nofollow"><span style="color:#3498db;">http://vk.com/ns_deathman/</span></a>
</p>]]></description><guid isPermaLink="false">8626</guid><pubDate>Thu, 28 Mar 2024 22:42:31 +0000</pubDate></item><item><title>&#x420;&#x435;&#x434;&#x430;&#x43A;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x434;&#x432;&#x438;&#x436;&#x43A;&#x430;</title><link>https://ap-pro.ru/forums/topic/1823-redaktirovanie-dvizhka/</link><description><![CDATA[
<p>
	<span style="color:#f39c12;">Автор темы: </span>ForserX
</p>

<p>
	<a href="https://ap-pro.ru/forums/topic/1820-predlozheniya-po-pravkam-dvizhka" rel="">Предложения по правкам движка</a>
</p>

<p>
	<span style="color:#f39c12;">Сборки:</span>
</p>

<ul>
<li>
		<a href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BA%D0%B0_X-Ray" rel="external nofollow">Сборка X-Ray 1.0007(rc1)</a>
	</li>
	<li>
		<a href="https://yadi.sk/d/9VZFHAHrhvrCg" rel="external nofollow">Сборка X-Ray 1.6.02</a>
	</li>
</ul>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Исходники">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:#f39c12;">"X-Ray Engine" Оригинальные версии:</span>
		</p>

		<ul>
<li>
				<a href="https://yadi.sk/d/66aSbxmp2JYkq" rel="external nofollow">Shadow of Chernobyl</a>
			</li>
		</ul>
<p>
			<span style="color:#f39c12;">Исходники:</span>
		</p>

		<ul>
<li>
				<a href="http://www.gameru.net/forum/index.php?s=&amp;showtopic=55777&amp;view=findpost&amp;p=1489128" rel="external nofollow">Исходники SoC (1.0007rc1)</a>
			</li>
			<li>
				<a href="http://www.gameru.net/forum/index.php?s=&amp;showtopic=55777&amp;view=findpost&amp;p=1489128" rel="external nofollow">CS (all versions) and 2 build</a>
			</li>
			<li>
				<a href="http://www.gameru.net/forum/index.php?s=&amp;showtopic=55777&amp;view=findpost&amp;p=1495584" rel="external nofollow">Исходники CoP</a>
			</li>
			<li>
				<a href="https://yadi.sk/d/bd0u9AKAfv8jF" rel="external nofollow">Исходники X-Ray 2.0</a>
			</li>
			<li>
				<a href="https://www.gameru.net/forum/index.php?showtopic=60320" rel="external nofollow">1.0007(rc1) Lost Alpha</a>
			</li>
			<li>
				<a href="https://yadi.sk/d/smv9hMa3gqGf5" rel="external nofollow">Исходники ogse.dll</a>
			</li>
		</ul>
<p>
			<span style="color:#f39c12;">Репозитории:</span>
		</p>

		<ul>
<li>
				<a href="https://github.com/OpenXRay" rel="external nofollow">OpenXRay (CS &amp; CoP)</a>
			</li>
			<li>
				<a href="https://bitbucket.org/stalker/" rel="external nofollow">xrDev (SoC, CS, CoP etc)</a>
			</li>
			<li>
				<a href="https://bitbucket.org/redpython/" rel="external nofollow">Репозиторий от RedPython</a>
			</li>
			<li>
				<a href="https://bitbucket.org/ForserX/" rel="external nofollow">Репозиторий от ForserX</a>
			</li>
		</ul>
</div>
</div>

<p>
	<span style="color:#f39c12;">Правки:</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Исправленный exe-файл для SoC 1.0006 от Macron">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:#f39c12;">Ссылка: <a href="http://yadi.sk/d/At9Tw0ueSaDyS" rel="external nofollow">ЯндексДиск</a></span>
		</p>

		<p>
			<span style="color:#f39c12;">Изменения:</span>
		</p>

		<ul>
<li>
				Отсутствие старфорсоов и сопутствующих проблем
			</li>
			<li>
				В nodvd-вариантах из за сбоев в циклах движка могли происходить вылеты, которые здесь невозможны
			</li>
			<li>
				Нормальная система отлова багов, в nodvd её по сути не было, движковые логи не писало
			</li>
			<li>
				Если у НПЦ проблемы с логикой, nodvd-вариант сразу крешится без лога и бьются сейвы, тут это пофиксено
			</li>
			<li>
				Фикс ошибки "(bytes_need&lt;=mSize) &amp;&amp; vl_Count" на r2, связанной с перегрузками видеобуфера
			</li>
			<li>
				Оптимизация требований к памяти (GlobalMemoryStatus вместо GlobalMemoryStatusEx)
			</li>
			<li>
				Возможность менять hud_fov (несколько предустановок, рассчитано исключительно на данный экзешник)
			</li>
			<li>
				Возможность менять fov для xrgame.dll от 1.0006 (несколько предустановок)
			</li>
			<li>
				Отключено загаживание консоли/лога сообщениями "CL setdestroy"
			</li>
			<li>
				Расширено меню установки fov для xrgame.dll
			</li>
			<li>
				Добавлены опциональные (необязательные к установке) фиксы. Запуск и выбор - через 10006_patcher.cmd:
			</li>
			<li>
				Увеличение числа стеков памяти
			</li>
			<li>
				Увеличение DVB (Vertices Buffer) до 6 mb
			</li>
			<li>
				Увеличение DIB (Indices Buffer) до 1 mb
			</li>
			<li>
				Отключение ругательств рендера на шейдеры
			</li>
			<li>
				Отключение ругательств на неправильное положение солнца в погодном конфиге (by lvg_brest)
			</li>
			<li>
				Отключение разных дебаг-сообщений в xrgame.dll
			</li>
			<li>
				Основан на новом экзешнике от GSC с принудительным ограничением кадров (защита от перегрева видеокарт/БП)
			</li>
			<li>
				Возможность опционально отключать ограничитель кадров (защиту от перегрева видеокарт/БП)
			</li>
			<li>
				Теперь единый экзешник + внешние патчеры ru/ww
			</li>
			<li>
				Теперь единый fov/hud_fov switcher
			</li>
			<li>
				Новый xrGameSpy.dll (сетевая игра переключается на сервер GSC)
			</li>
		</ul>
</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Проекты по правке движка">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<ul>
<li>
				<a href="https://ap-pro.ru/forums/topic/207-cut-x-ray-project-%D1%82%D1%87-%D1%87%D0%BD-%D0%B7%D0%BF/" rel="">Cut X-Ray</a>
			</li>
			<li>
				<a href="https://yadi.sk/d/OLYPbDXWjyEkH" rel="external nofollow">X-Ray extensions</a>
			</li>
		</ul>
</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Правки для SoC 1.0004 от Kolgomor">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:#f39c12;">Ссылка: <a href="https://yadi.sk/d/4snyxLdTVfcEt" rel="external nofollow">ЯндексДиск</a></span>
		</p>

		<p>
			<span style="color:#f39c12;">Изменения:</span>
		</p>

		<ul>
<li>
				Анимация ходьбы anim_walk для пистолетов
			</li>
			<li>
				Новые скриптовые методы:
				<ul>
<li>
						inv_weight - получить вес макс. вес
					</li>
					<li>
						set_inv_weight - установить макс. вес
					</li>
					<li>
						move_on_belt - переместить предмет на пояс
					</li>
					<li>
						item_on_belt - получить предмет на поясе
					</li>
					<li>
						set_ammo_type - установить тип патронов
					</li>
				</ul>
</li>
			<li>
				Новые скриптовые кaллбэки:
				<ul>
<li>
						on_item_belt - перемещение предмета на пояс
					</li>
					<li>
						on_item_ruck - перемещение предмета в рюкзак
					</li>
					<li>
						on_item_slot - перемещение предмета в слот
					</li>
					<li>
						on_switch_nightvision - переключение ПНВ
					</li>
				</ul>
</li>
			<li>
				Новые консольные команды:
				<ul>
<li>
						fov [5.0, 180.0] - глобальный fov камеры
					</li>
					<li>
						k_ammo_on_belt [on\off] - патроны на поясе
					</li>
				</ul>
</li>
			<li>
				Артефакты работают только из рюкзака, на поясе не действуют на ГГ - пояс теперь по сути контейнер артефактов. Из инвентаря действуют абсолютно все свойства артефактов (радиоизлучение, пулестойкость, хим. защита и т.д.).
			</li>
		</ul>
</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Clear xrGame.dll 1.0006">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Вылечивает xrgame.dll ТЧ 1.0006 от засирания лога/консоли ненужными дебаг-сообщениями вида:
		</p>

		<ul>
<li>
				--NeedToDestroyObject
			</li>
			<li>
				Destroying local grenade
			</li>
			<li>
				sv destroy object
			</li>
			<li>
				ge_destroy not found on server
			</li>
			<li>
				sv ownership id_parent id_entity
			</li>
			<li>
				sv !ownership (entity already has parent)
			</li>
			<li>
				sv reject. id_parent id_entity
			</li>
			<li>
				[16-9] get_xml_name for
			</li>
		</ul>
<p>
			Проверялся как на чистой dll, так и на пропатченной через x-ray extensions/cut x-ray.<br>
			С мультиплеером правка несовместима.
		</p>

		<p>
			<span style="color:#f39c12;">Ссылка: </span><a href="https://yadi.sk/d/IWIubHufMM4Mo" rel="external nofollow">ЯндексДиск</a>
		</p>

		<p>
			<span style="color:#f39c12;">Установка: </span>Скопировать clear_xrGame.cmd и patch2.exe в папку с xrgame.dll и запустить clear_xrGame.cmd.
		</p>

		<p>
			Также для полной чистоты лога рекомендуется использовать "Исправленный экзешник для S.T.A.L.K.E.R ТЧ 1.0006 (v2)" или в своем экзешнике хекс-редактором найти и обнулить байты фразы: cl setDestroy [%d][%d]
		</p>
	</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Soc 1.0006 sprint fixx by RayTwitty и Macron">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Основан на X-Ray extensions portable r230
		</p>

		<p>
			<span style="color:#f39c12;">Изменения:</span>
		</p>

		<ul>
<li>
				Включены худовые анимации спринта для ножа,болта,гранат,бинокля
			</li>
			<li>
				Исправлено положение при виде с внешней камеры для ножа,болта,гранат,бинокля
			</li>
			<li>
				Болту увеличено время жизни, cокращено время набора силы броска по ПК, возвращена старая анимация
			</li>
			<li>
				Исправлена модель худа SPAS-12
			</li>
			<li>
				Альтернативная анимация стрельбы из SPAS-12
			</li>
			<li>
				Для xrgame применены стандартные настройки из X-Ray extensions portable r230 (пропатченный xrgame.dll необходим для работы скрипта восстанавливающего спринт)
			</li>
			<li>
				Работают команды cam_fov/hud_fov, включено солнце и т.п.
			</li>
			<li>
				Пара правок bind_stalker для повышения стабильности (by makdm и Zander_driver)
			</li>
		</ul>
<p>
			<span style="color:#f39c12;">Ссылка: </span><a href="https://yadi.sk/d/nlZsIkmyj3CNX" rel="external nofollow">ЯндексДиск</a>
		</p>
	</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Правки для SoC 1.0004 от Forser">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:#f39c12;">Ссылка: </span><a href="https://yadi.sk/d/2g_uc0mMjysMy" rel="external nofollow">Скриншоты в формате PNG</a>
		</p>
	</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Правки от K.D.">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:#f39c12;">Ссылка: </span><a href="https://yadi.sk/d/vHqphiMbQF3Xu" rel="external nofollow">Увеличения радиуса прорисовки травы</a>
		</p>
	</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Правки от kstn">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<ul>
<li>
				<a href="https://xray-engine.org/index.php?title=PanicLog" rel="external nofollow">PanicLog</a>
			</li>
			<li>
				<a href="http://modroom.at.ua/load/soft/shoc_keylogger_v_1_01/4-1-0-129" rel="external nofollow">KeyLogger by kstn(ТЧ)</a>
			</li>
		</ul>
</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="FOV">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<ul>
<li>
				<a href="https://yadi.sk/d/YJ7r-eTIQpns9" rel="external nofollow">FoV для версий 1.0003-1.0006; 1.5.04; 1.5.07; 1.5.10; 1.6-1.6.02</a>
			</li>
			<li>
				<a href="https://yadi.sk/d/Fvjw7nBwf4sao" rel="external nofollow">FOV 55 (ЧН 1.5.10)</a>
			</li>
			<li>
				<a href="https://yadi.sk/d/xPl_zX53gtogg" rel="external nofollow">FOV 85 (ТЧ 1.0004)</a>
			</li>
		</ul>
</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Графика">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<ul>
<li>
				<a href="https://www.moddb.com/mods/atmosfear-for-call-of-pripyat/addons/sweetfx-for-call-of-pripyat-presets" rel="external nofollow">SweetFX 1.4 Presets by Cromm Cruac</a>
			</li>
			<li>
				<a href="https://ap-pro.ru/forums/topic/1822-enbseries-tch/" rel="">ENBSeries (для ТЧ)</a>
			</li>
		</ul>
</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="LUA">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<ul>
<li>
				<a href="https://yadi.sk/d/9NSITCytjGycN" rel="external nofollow">Lua-перexватчик от alpet</a>
			</li>
			<li>
				<a href="https://code.google.com/archive/p/xrluafix/" rel="external nofollow">LuaFix by RvP</a>
			</li>
			<li>
				<a href="https://yadi.sk/d/zn3T0fiTB62kW" rel="external nofollow">LuaFix в редакции от Aplet</a>
			</li>
		</ul>
</div>
</div>

<hr>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разное">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="http://imasters.org.ru/viewtopic.php?id=321" rel="external nofollow">EnvFX</a>
		</p>
	</div>
</div>

<p>
	<span style="color:#f39c12;">Советы:</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Полезные посты">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<ul>
<li>
				<a href="https://www.gameru.net/forum/index.php?showtopic=55777&amp;st=3560&amp;p=1553203&amp;#entry1553203" rel="external nofollow">Ограничение на размещение динамических моделей в игре</a>
			</li>
			<li>
				<a href="https://www.gameru.net/forum/index.php?showtopic=55777&amp;st=3540&amp;p=1552959&amp;#entry1552959" rel="external nofollow">Фикс полосы загрузки в ЗП</a>
			</li>
			<li>
				<a href="https://www.gameru.net/forum/index.php?showtopic=61938" rel="external nofollow">Многоядерность</a>
			</li>
			<li>
				<a href="https://www.gameru.net/forum/index.php?showtopic=55777&amp;st=3560&amp;p=1553216&amp;#entry1553216" rel="external nofollow">Купол на актером</a>
			</li>
			<li>
				<a href="https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/59/?tab=comments#comment-947394" rel="external nofollow">Фикс сохранения клиентских объектов</a>
			</li>
			<li>
				<a href="https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/59/?tab=comments#comment-947394" rel="external nofollow">Воздействие аномалий на НПС [COP]</a>
			</li>
			<li>
				<a href="https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/74/?tab=comments#comment-956264" rel="external nofollow">Оффлайн перемещение</a> + <a href="https://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page/74/?tab=comments#comment-956941" rel="external nofollow">дополнение</a>
			</li>
			<li>
				<a href="https://www.gameru.net/forum/index.php?showtopic=55777&amp;st=3660&amp;p=1555729&amp;#entry1555729" rel="external nofollow">mVPTexgen</a>
			</li>
			<li>
				<a href="https://gsc-game.com/russian/index.php?t=community&amp;s=forums&amp;s_game_type=xr&amp;thm_page=6&amp;thm_id=12345&amp;page=6&amp;sort=DESC&amp;sec_id=14&amp;offset=-240" rel="external nofollow">Трава</a>
			</li>
		</ul>
</div>
</div>

<p style="text-align: center;">
	Так же в теме можно задавать различные вопросы, связанные с редактированием движка.
</p>
]]></description><guid isPermaLink="false">1823</guid><pubDate>Sun, 23 Aug 2020 18:26:54 +0000</pubDate></item><item><title>&#x41A;&#x430;&#x43A; &#x432; &#x442;&#x447; &#x432;&#x435;&#x440;&#x43D;&#x443;&#x442;&#x44C; &#x431;&#x438;&#x43B;&#x434;&#x43E;&#x432;&#x441;&#x43A;&#x443;&#x44E; &#x440;&#x430;&#x441;&#x43A;&#x430;&#x447;&#x43A;&#x443; &#x440;&#x443;&#x43A;</title><link>https://ap-pro.ru/forums/topic/13650-kak-v-tch-vernut-bildovskuyu-raskachku-ruk/</link><description><![CDATA[<p>
	Я незнаю как добавить раскачку из билдов, много вариантов перепробовал но ничего не получилось движок просто не компилится и прошу помочь с этим (можно писать в вк)
</p>]]></description><guid isPermaLink="false">13650</guid><pubDate>Wed, 10 Dec 2025 17:49:02 +0000</pubDate></item><item><title>&#x41A;&#x430;&#x43A;&#x438;&#x435; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433;&#x438; AI (&#x41D;&#x41F;&#x421;) &#x431;&#x44B;&#x432;&#x430;&#x44E;&#x442; (&#x441;&#x440;&#x435;&#x434;&#x438; &#x43F;&#x43E;&#x43F;&#x443;&#x43B;&#x44F;&#x440;&#x43D;&#x44B;&#x445;)?</title><link>https://ap-pro.ru/forums/topic/13822-kakie-konfigi-ai-nps-byvayut-sredi-populyarnyh/</link><description><![CDATA[<p>
	Здравствуйте. С неправильно настроенным ИИ играть не интересно. А ведь именно "живые" противники - визитная карточка игры. Я уже <a href="https://ap-pro.ru/forums/topic/2541-v-kakih-modah-ii-perepilen-v-luchshuyu-storonu/?tab=comments#comment-77796" rel=""><span style="color:#0000ff;">задавал похожий вопрос</span></a><span style="color:#2c3e50;"> </span>5 лет назад, сейчас спрашиваю еще раз - подскажите, что есть и как искать?<br />
	Я вижу такие категории модов:<br />
	1• Легаси - слишком просто, противники, по сути, болванчики для стрельбы. Стелс невозможен либо наоборот, слишком прост.<br />
	2• Легаси с "васянским" тюнингом - попадают на расстоянии &gt;200 метров, когда мои пули даже не долетают до них. Попадалось и такое. Я так понимаю, это скрипт, адаптированный для игроков с отличной моторикой и реакцией, которые умеют в онлайн PVP шутеры вроде CS 1.6. Я не из таких шустрых).<br /><strong>3• Глубокие модификации скриптов, когда противники умеют в убегать в укрытия и делать окружение, стелс играбелен и реалистичен.</strong><br /><br />
	Вот третье я и хочу поиграть. Но не знаю названий таких модов/сборок игр.<br />
	Подскажите пожалуйста такое, желательно с кратким описанием, что в ИИ цепляет, чем интересен.<br />
	PS Вопрос про Тень чернобыля
</p>]]></description><guid isPermaLink="false">13822</guid><pubDate>Sun, 04 Jan 2026 08:31:18 +0000</pubDate></item><item><title>&#x423;&#x43D;&#x438;&#x432;&#x435;&#x440;&#x441;&#x430;&#x43B;&#x44C;&#x43D;&#x44B;&#x439; &#x43F;&#x430;&#x442;&#x447; &#x434;&#x43B;&#x44F; &#x422;&#x427; (1.0003 - 1.0006)</title><link>https://ap-pro.ru/forums/topic/1909-universalnyy-patch-dlya-tch-10003-10006/</link><description><![CDATA[<p style="text-align:center;">
	<span style="color:#d35400;"><span style="font-size:20px;">Универсальный патч для ТЧ (1.0003 - 1.0006)</span></span>
</p>

<p style="text-align:center;">
	<em><span style="color:#f1c40f;">Тип исполнения:</span></em> Установщик
</p>

<p style="text-align:center;">
	<span style="color:#f1c40f;"><em>Версия:</em></span> 6.9.0
</p>

<p style="text-align:center;">
	<em><span style="color:#f1c40f;">Платформа: </span></em>Windows
</p>

<p style="text-align:center;">
	<u><em><strong>(Для обладателей Linux пункт другие лицензии WW и RU, но особо не тестировался)</strong></em></u>
</p>

<hr /><p>
	<strong>Особенности установки:</strong>
</p>

<ol><li>
		Поддерживает 9 вариантов установки (<u>Steam</u>, <u>GoG ww</u>, <u>THQ license</u>, <u>На выбор расположения ww и ru,</u> <u>1C license,</u> <u>GoG ru</u>, <u>Steam Russian Client,</u> <u>Серебрянное издание</u>). Дополнительно +6 репаков от: R.G.Energy, R.G.Mechanics, dixen18, R.G.Catalyst (по ключу от R.G.Energy), Xatab.
	</li>
	<li>
		Включает в себя 3 патча (<u>1.0004</u>, <u>1.0005</u>, <u>1.0006</u>) и три варианта с патчем 1.0006 (<u>Multi Patch</u>, <u>Macron Fixxed V4</u>, <u>OGSE renders for SoC</u>), а так же патч 1.0003 для любителей раритета и откат до версии 1.0000 и патч 1.0001.
	</li>
	<li>
		Добавлен Macron FoV Changer (Угол обзора выбирается перед установкой из 10 вариантов)
	</li>
	<li>
		Запись смены ключа в реестре на выбор пользователя.
	</li>
	<li>
		<u>NoDVD</u>, <u>Crack</u> и <u>похожего не используется</u>, в основе оригинальные файлы официальных патчей без StarForce и проверки диска. (Кроме патчей 1.0003,1.0001 и версии 1.0000 где используется NoDvD для RU клиентов)
	</li>
</ol><p style="text-align:center;">
	<em><span style="color:#f1c40f;">Скачать:</span></em> <a href="https://disk.yandex.ru/d/EC2hJHISp3N8kg" rel="external nofollow">Ссылка (Яндекс Диск)</a> <span style="color:#f1c40f;"><em>или</em></span> <a href="https://mega.nz/folder/EZ9jSIRD#CoTK568am6XJ0vUdDGBkrw" rel="external nofollow">Ссылка (Mega.NZ)</a>
</p>

<p style="text-align:center;">
	<span style="color:#f1c40f;"><em>Урезанная версия (только панель "Инструменты"):</em></span> <a href="https://disk.yandex.ru/d/OFC9yLoBglQHgg" rel="external nofollow">Ссылка (Яндекс Диск)</a> <span style="color:#f1c40f;"><em>или</em></span> <a href="https://mega.nz/folder/gdcgSQwS#bztaZPSZLyQpdCdnPzOULQ" rel="external nofollow">Ссылка (Mega.NZ)</a>
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Демонстрационные видео">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p style="text-align:center;">
			<em><span style="color:#f1c40f;">Пример установки (устаревшее видео от версии 1.1):</span></em> <a href="https://youtu.be/AhVK6cM1uTc" rel="external nofollow">Видео (YouTube)</a>
		</p>

		<p style="text-align:center;">
			<span style="color:#f1c40f;"><em>Пример установки патча поверх AA2.1 на Steam Rip (версия патчера 3.5):</em></span> <a href="https://youtu.be/316fEn9iKHE" rel="external nofollow">видео (Youtube)</a>
		</p>

		<p style="text-align:center;">
			<span style="color:#f1c40f;"><em>Установка SVN project (версия патчера 4.7.5) при выборе в патчере: </em></span><a href="https://youtu.be/QX5_DcuE1CQ" rel="external nofollow">видео (Youtube)</a>
		</p>

		<p style="text-align:center;">
			<span style="color:#f1c40f;"><em>Упрощенная интерпретация установки в Steam (пример SFZ project EZ0): </em></span><a href="https://youtu.be/Jf95U3tNh0U" rel="external nofollow">Ссылка (Youtube Video)</a>
		</p>

		<p style="text-align:center;">
			<span style="color:#f1c40f;"><em>Сторонний клиент в Steam v2 (пример OGSR engine): </em></span><a href="https://youtu.be/3q8xJ8wQtSc" rel="external nofollow">Ссылка (Youtube Video)</a>
		</p>

		<p style="text-align:center;">
			<span style="color:#f1c40f;"><em>Упаковщик игровых ресурсов в db: </em></span><a href="https://youtu.be/0hN3CmvexVI" rel="external nofollow">Ссылка (Youtube Video)</a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Пример использования патчера для модов под WW клиенты">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://hostingkartinok.com/show-image.php?id=e0039a022078eee0ddfaa1180974fa97" rel="external nofollow"><img alt="e0039a022078eee0ddfaa1180974fa97.gif" class="ipsImage" data-ratio="55.49" style="height:auto;" width="1166" data-src="https://s8.hostingkartinok.com/uploads/images/2021/01/e0039a022078eee0ddfaa1180974fa97.gif" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Пример установки патча 1.0003 на портативный клиент из Steam">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://hostingkartinok.com/show-image.php?id=989d99d26776a141a3cdb3538d91a31c" rel="external nofollow"><img alt="989d99d26776a141a3cdb3538d91a31c.gif" class="ipsImage" data-ratio="61.41" style="height:auto;" width="1091" data-src="https://s1.hostingkartinok.com/uploads/images/2022/02/989d99d26776a141a3cdb3538d91a31c.gif" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Пример работы с FoV Switcher в пункте &quot;Инструменты&quot;">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://hostingkartinok.com/show-image.php?id=0559ab5f10d5493df1c09a16c7a20fe0" rel="external nofollow"><img alt="0559ab5f10d5493df1c09a16c7a20fe0.gif" class="ipsImage" data-ratio="56.43" style="height:auto;" width="1200" data-src="https://s1.hostingkartinok.com/uploads/images/2022/02/0559ab5f10d5493df1c09a16c7a20fe0.gif" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Пример использования перепаковщика архивов RU в WW (Shadow Addon 0.8.8)">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<div class="ipsEmbeddedVideo">
			<div>
				<iframe allowfullscreen="" frameborder="0" height="113" title="Установка мода &quot;Shadow Addon 0.8.8&quot; на Steam клиент (Демонстрация 2)" width="200" data-embed-src="https://www.youtube.com/embed/zVAmiZ-mRX0?feature=oembed"></iframe>
			</div>
		</div>

		<div class="ipsEmbeddedVideo">
			<div>
				<iframe allowfullscreen="" frameborder="0" height="150" title="Установка мода &quot;Shadow Addon 0.8.8&quot; на Steam клиент" width="200" data-embed-src="https://www.youtube.com/embed/Ul_qkVYxP3w?feature=oembed"></iframe>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Дополнительные возможности в патчере модов для WW">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://postimages.org/" rel="external nofollow"><img alt="2022-12-25-11-12-52-988.gif" class="ipsImage" data-ratio="68.79" style="height:auto;" width="894" data-src="https://i.postimg.cc/8cRLvVjx/2022-12-25-11-12-52-988.gif" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Распаковка архивов по заданной пользователем маске">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://postimages.org/" rel="external nofollow"><img alt="2024-05-12-18-59-08-747.gif" class="ipsImage" data-ratio="62.34" style="height:auto;" width="1200" data-src="https://i.postimg.cc/vBT3RPKf/2024-05-12-18-59-08-747.gif" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a>
		</p>
	</div>
</div>

<p style="text-align:center;">
	<font color="#e74c3c"><span style="font-size:11px;">Внимание! Смотрите компоненты внимательно, на предмет действительно нужного.</span></font>
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Скриншоты установки">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<img alt="Image00002.jpg.8bc68706ce5c2720845bd6d4d170e888.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="8904" data-ratio="76.54" style="height:auto;" width="503" data-src="https://ap-pro.ru/uploads/monthly_2021_05/Image00002.jpg.8bc68706ce5c2720845bd6d4d170e888.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="Image00003.jpg.cbec263d020a0906e738d1f3693f7158.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="8905" data-ratio="90.46" style="height:auto;" width="503" data-src="https://ap-pro.ru/uploads/monthly_2021_05/Image00003.jpg.cbec263d020a0906e738d1f3693f7158.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="Image00004.jpg.f0788870b3eb5690e065e0a0e5c3aa2e.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="8906" data-ratio="90.46" style="height:auto;" width="503" data-src="https://ap-pro.ru/uploads/monthly_2021_05/Image00004.jpg.f0788870b3eb5690e065e0a0e5c3aa2e.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="Image00005.jpg.54d5b16e9fe61d5208c4e70ad3917ea4.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="8907" data-ratio="70.13" style="height:auto;" width="606" data-src="https://ap-pro.ru/uploads/monthly_2021_05/Image00005.jpg.54d5b16e9fe61d5208c4e70ad3917ea4.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="Image00006.jpg.6c58095a06a595a2bf8ee8c876f07ff4.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="8908" data-ratio="76.54" style="height:auto;" width="503" data-src="https://ap-pro.ru/uploads/monthly_2021_05/Image00006.jpg.6c58095a06a595a2bf8ee8c876f07ff4.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="Image00007.jpg.19ede6da37025e2fffaf1abb4a3e7165.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="8909" data-ratio="76.54" style="height:auto;" width="503" data-src="https://ap-pro.ru/uploads/monthly_2021_05/Image00007.jpg.19ede6da37025e2fffaf1abb4a3e7165.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="Image00008.jpg.67f34e15d06d3b44e85e244e58d4a6ab.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="8910" data-ratio="76.54" style="height:auto;" width="503" data-src="https://ap-pro.ru/uploads/monthly_2021_05/Image00008.jpg.67f34e15d06d3b44e85e244e58d4a6ab.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="Image00001.jpg.9973b5a86afe7c801450a07a42517f64.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="31794" data-ratio="61.66" style="height:auto;" width="446" data-src="https://ap-pro.ru/uploads/monthly_2023_12/Image00001.jpg.9973b5a86afe7c801450a07a42517f64.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /><img alt="Image00002.jpg.36a179176c5c658312f6645e52b34dd1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="31795" data-ratio="61.66" style="height:auto;" width="446" data-src="https://ap-pro.ru/uploads/monthly_2023_12/Image00002.jpg.36a179176c5c658312f6645e52b34dd1.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Обновления">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:#f1c40f;">от 10.05.2026</span>
		</p>

		<ul><li>
				-Оптимизация некоторых функций для ускорения работы
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 21.04.2026</span>
		</p>

		<ul><li>
				-Оптимизация некоторых функций для ускорения работы
			</li>
			<li>
				-Прочие мелкие правки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.03.2026</span>
		</p>

		<ul><li>
				-Исправлено не правильное определение пути установки игры в утилитах (не выводился)
			</li>
			<li>
				-Мелкие правки кода
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 17.01.2026</span>
		</p>

		<ul><li>
				-Исправлен неправильный адрес установки патча от Макрона на патче 1.0004
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.11.2025</span>
		</p>

		<ul><li>
				-Заменен файл EnvFXinfo.rtf на EnvFXinfo.txt для работоспособности чтения информации
			</li>
			<li>
				-Подправлено условие внесения номера патча и пути расположения в реестровую запись
			</li>
			<li>
				-Упаковщик ресурсов в db: Открывается путь до последней указанной папки при нажатие "поиск папки"
			</li>
			<li>
				-В добавление стороннего клиента игры в Steam добавлен патч для LA EE v1.2.2
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 23.08.2025</span>
		</p>

		<ul><li>
				-Распаковщик игровых архивов: Добавлен пресет для распаковки Enhanced Edition
			</li>
			<li>
				-Редактор переносимого веса: Исправлено появление кнопки редактировать при копировать - вставить в поле пути до папки
			</li>
			<li>
				-Редактор переносимого веса: Добавлена проверка нахождения всех 4х параметров, чтобы избежать записи параметров если их нет
			</li>
			<li>
				-Мелкие поправки\исправления
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 08.06.2025</span>
		</p>

		<ul><li>
				-В добавление стороннего клиента игры в Steam добавлен пресет для I.W.P. для Зова Чернобыля
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 27.03.2025</span>
		</p>

		<ul><li>
				 -Исправлена ошибка в адресации байта для патча 1.0005
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 02.03.2025</span>
		</p>

		<ul><li>
				-Подправлены найденные опечатки и ошибки работы в "Добавление стороннего клиента в Steam v2"
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 08.01.2025</span>
		</p>

		<ul><li>
				-Расширен размер стартового окна патчера
			</li>
			<li>
				-В NoDVD v2.5: добавлены 3 варианта NoDVD для 1.0000 Postmortem, 1.0000 и 1.0001 Hatred
			</li>
			<li>
				-В инструменты добавлен: "Фикс путей Steam до игры". Прописывает путь расположения игр трилогии Сталкер в реестре для обнаружения патчами
			</li>
			<li>
				-Прочие мелкие исправления
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 02.01.2025</span>
		</p>

		<ul><li>
				 -Обновлен Universal ACDC v1.40 от @abramcumner до версии 1.42
			</li>
			<li>
				-В патчер модов под WW добавлен мод: Хроники Кайдана 4 (под движки от Macron и OGSE)
			</li>
			<li>
				-Прочие мелкие правки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 04.11.2024</span>
		</p>

		<ul><li>
				-В редактор записи реестра добавлен вывод информации о ключе сетевой игры и ключе издания
			</li>
			<li>
				-В редактор записи реестра добавлена возможность редактировать ключ игры
			</li>
			<li>
				-Полностью переписанный инструмент "Сторонний клиент в Steam v2" по аналогии с Stalker_Steam(other_mods_or_games)
			</li>
			<li>
				-Steam Fix Overlay для чистых версий игр из Steam доступно в "Сторонний клиент в Steam v2"
			</li>
			<li>
				-Прочие мелкие правки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 03.11.2024</span>
		</p>

		<ul><li>
				-В редактор записи реестра добавлен вывод информации о пути и патче игры
			</li>
			<li>
				-Обновлен патч Fix for the 12th Generation Intel® Core™ CPUs ставилась PreWin11 patch
			</li>
			<li>
				-В NoDVD v2.5: произведена оптимизация кода
			</li>
			<li>
				-Добавлен Fix 12th Gen Intel для всей серии Трилогии в панель инструментов    
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 13.10.2024</span>
		</p>

		<ul><li>
				-Перенесена 100% очистка некоторых файлов на выборочный компонент очистки
			</li>
			<li>
				-Добавлена запись информации о выбранных компонентах (место установки\readme\Info_UPSetupComponents.txt)
			</li>
			<li>
				-В патчер модов под WW добавлен мод: Вариант Омега 2. Версия 2.04
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 09.10.2024</span>
		</p>

		<ul><li>
				-Расширена очистка файлов при установке патча
			</li>
			<li>
				-В патчер модов под WW добавлен мод: Закон Дегтярева
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 06.10.2024</span>
		</p>

		<ul><li>
				-В патчер модов под WW добавлен мод: SoC Extensions [исправление ошибок ТЧ]
			</li>
			<li>
				-Разблокирован показ кнопки "Найти файл" в патчере модов под WW
			</li>
			<li>
				-Добавлен Universal ACDC v1.40 от @abramcumner в раздел ACDC tools
			</li>
			<li>
				-Переписана форма окна ACDC tools + исправлены неверные параметры размеров
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 22.09.2024</span>
		</p>

		<ul><li>
				-Правка backup файлов в утилитах, чтобы не подподали под удаление функции FixStart
			</li>
			<li>
				-Переписана функция очистки сторонних .db архивов на более расширенную
			</li>
			<li>
				-Мелкие правки функционала
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 21.09.2024</span>
		</p>

		<ul><li>
				-В патчер модов под WW добавлен мод: Новый Сюжет от dan_a + "РЕАНИМАЦИЯ" Хемуль36рус
			</li>
			<li>
				-FoV Switcher: Если при старте резервный файл обнаружен в папке, кнопка для восстановления становится активной
			</li>
			<li>
				-Мелкие правки функционала
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 08.09.2024</span>
		</p>

		<ul><li>
				-Расширена очистка ненужных файлов
			</li>
			<li>
				-В NoDVD добавлена: Возможность возврата к первоначальному решению
			</li>
			<li>
				-В NoDVD добавлена: Вывод сообщения об отсутствие заменяего файла, если путь указан не правильно
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 31.08.2024 переобновление 2</span>
		</p>

		<ul><li>
				-Исправлена ошибка в создателе ярлыка на файл при выборе путей
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 31.08.2024</span>
		</p>

		<ul><li>
				-Переименован пункт установка NoDVD
			</li>
			<li>
				-В NoDVD добавлены: файлы от GoG клиентов
			</li>
			<li>
				-В инструменты добавлен: Создатель ярлыка на рабочем столе
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 18.08.2024</span>
		</p>

		<ul><li>
				-Добавлено: порядок установки патча в виде описания, срабатывает по кнопке Info на стартовом экране
			</li>
			<li>
				-Добавлен установщик NoDVD для WorldWide и Russian лицензий (для не желающих играть на чистых файлах US лицензии)
			</li>
			<li>
				-Прочие мелкие поправки функционала
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 14.05.2024</span>
		</p>

		<ul><li>
				-Исправлена ошибка в функции по распаковке файлов во временный каталог
			</li>
			<li>
				-Редактор переносимого веса: Правки расположения элементов
			</li>
			<li>
				-Распаковщик игровых архивов: Добавлено обновление списка с опцией удаления архивов при распаковке
			</li>
			<li>
				-Упаковщик ресурсов игры в db: Исправлена блокировка пути в момент сжатия папки
			</li>
			<li>
				-Прочие мелкие поправки функционала
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 12.05.2024</span>
		</p>

		<ul><li>
				-Распаковщик игровых архивов: Заменено расположение некоторых элементов
			</li>
			<li>
				-Распаковщик игровых архивов: Добавлена возможность распаковки по маске, которую можете задать сами
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 11.05.2024</span>
		</p>

		<ul><li>
				-Перепаковщик игровых архивов: Подправлено сокрытие кнопки упаковать
			</li>
			<li>
				-Перепаковщик игровых архивов: Скрыты окна в трее от конвертора и пакера
			</li>
			<li>
				-Поправлено масштабирование прогресс бара при установке
			</li>
			<li>
				-Мелкие правки функционала
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 01.04.2024</span>
		</p>

		<ul><li>
				-Переписаны некоторые функции установки для более точного срабатывания
			</li>
			<li>
				-Добавлено пункт удаления сохраений в очистку (папка с игрой - известные папки заполнения, общие документы - стандартная папка создаваемая лицензией)
			</li>
			<li>
				-Оптимизация некоторого функционала для более быстрой отработки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 09.03.2024</span>
		</p>

		<ul><li>
				-Редактор переносимого веса: Доработка поведения при внедрение изменений
			</li>
			<li>
				-Урезанная версия патча: Поправки активации кнопки "Инструменты" при старте
			</li>
			<li>
				-Убраны лишние действия при старте
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 03.02.2024</span>
		</p>

		<ul><li>
				-Корректировка некоторых элементов установщика
			</li>
			<li>
				-Исправлено применение действий в реестре при выбранном компоненте "Заменить *** в реестре" (переписана логика выбора)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 28.01.2024</span>
		</p>

		<ul><li>
				-Запись пути расположения в ключ реестра сделан отдельным пунктом от версии игры
			</li>
			<li>
				-Правки на стартовой странице под корректное масштабирование текста на кнопках
			</li>
			<li>
				-Добавлен правщик реестра записи игры ТЧ,ЧН,ЗП для перезаписи пути расположения игры и версии патча
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 18.01.2024</span>
		</p>

		<ul><li>
				-Unpacker архивов: Исправлен баг с неправильным отображением строки с количеством найденных архивов
			</li>
			<li>
				-Unpacker архивов: Исправлен баг с неправильным поиском архивов
			</li>
			<li>
				-Исправления в функции сравнения
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 13.01.2024</span>
		</p>

		<ul><li>
				-Исправлена 100% ошибка Runtime Error(at...:...) после нажатия кнопки установить
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 07.01.2024</span>
		</p>

		<ul><li>
				-Расширен распаковщик игровых ресурсов добавлены: STALKER Anomaly
			</li>
			<li>
				-Конвертер из архивов из WW в RU: Оптимизированы некоторые проверки и добавлен новый пункт (для резервной копии)
			</li>
			<li>
				-Заменен принцип прописи разрешения экрана в файл User.ltx
			</li>
			<li>
				-Оптимизация некоторого кода установщика
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 05.01.2024</span>
		</p>

		<ul><li>
				-Заменено название батника "Запустить_игру.bat" на "STALKER_start.bat"
			</li>
			<li>
				-Переписана функция очистки директории игры от лишних папок (Оптимизирована)
			</li>
			<li>
				-Удалена библиотека для закрытия запущенных приложений (Функционал перенесен на стандартные методы Windows)
			</li>
			<li>
				-Исправлено зависание окна установщика при нажатие на кнопку "Завершить"
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 04.01.2024</span>
		</p>

		<ul><li>
				-FoV Switcher: Добавлено больше вариантов углов диапазона от 110 до 46
			</li>
			<li>
				-FoV Switcher: Исправлен параметр FoV маркируемый как 55 (стандарт для ЗП\ЧН) на 46, 55 прописывает другое значение
			</li>
			<li>
				-Unpacker архивов: Мелкие исправления\измененния, добавлен счетчик найденных архивов
			</li>
			<li>
				-Подчищены некоторые файлы с описаниями
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 02.01.2024</span>
		</p>

		<ul><li>
				-Исправлено поведение считывания файлов в распаковщике ресурсов
			</li>
			<li>
				-Исправлена ошибка при нажатие на чистка репортов Xray (Заменен сам стиль поведения при нажатие)
			</li>
			<li>
				-Оптимизация кода\функций
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 31.12.2023</span>
		</p>

		<ul><li>
				-В распаковщике игровых ресурсов: Исправлена возможная неправильная компановка списка архивов с нарушением порядка архивов
			</li>
			<li>
				-Оптимизация\удаление кода некоторых функций
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 10.12.2023</span>
		</p>

		<ul><li>
				-В патчер модов под в WW версии добавлен: Движок от Macron'a (под патч 1.0004)
			</li>
			<li>
				-Расширен распаковщик игровых ресурсов добавлены: STALKER Build_2571-2945, Build_1482-2232, Build_1096-1472
			</li>
			<li>
				-В распаковщике игровых ресурсов: поправлен выбор ключа распаковки в зависимости от выбранного клиента игры
			</li>
			<li>
				-В распаковщике игровых ресурсов: блокировка листа выбора и кнопок сортировки при выполнение распаковки
			</li>
			<li>
				-В распаковщике игровых ресурсов: добавлены дополнительные фильтры распаковки (.ogm, .h, .s, .ps, .vs, .graph)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 2.12.2023</span>
		</p>

		<ul><li>
				-Расширен распаковщик игровых ресурсов (добавлена возможность выбора распаковываемого файла)
			</li>
			<li>
				-Мелкие поправки в коде установщика
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 25.11.2023</span>
		</p>

		<ul><li>
				-В редактор веса добавлен вариант AMK MOD v2 для редактирования веса если установлен Inventory Mod или используется мод в котором он есть
			</li>
			<li>
				-Добавлена упущенная очистка функционала при выходе из окна установки     
			</li>
			<li>
				-В патчер модов под в WW версии добавлен мод: Новый арсенал 5.1
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 19.11.2023</span>
		</p>

		<ul><li>
				-В распаковщике архивов игры исправлено статичное название папки в описание при выполнение операции
			</li>
			<li>
				-В распаковщик архивов добавлен стиль VIVIENT-MODS (для распаковки их стиля запаковки модов Инкубатор и Ловец снов)
			</li>
			<li>
				-Обьеденены некоторые функции, уменьшено количество кода (оптимизация)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 11.11.2023</span>
		</p>

		<ul><li>
				-Добавлена в виде компонента установка флажка "Отключить оптимизацию на весь экран" для фикса работы VSync с Reddit'a (для windows 8 и выше)
			</li>
			<li>
				-Поправлена установка флажка права администратора (убрано выставление флажка оптимизации, теперь добавляет только права админа)
			</li>
			<li>
				-Заменен тип внедрения Steam fix Overlay (сделано через пропатчивание файла)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 12.10.2023</span>
		</p>

		<ul><li>
				-Чуть расширен набор файлов для очистки в утилите: Fix Start
			</li>
			<li>
				-Кнопка очистки репортов Xray Engine перенесена в стартовый экран в подпункт утилиты
			</li>
			<li>
				-Мини-правки кода для улучшения отработки на некоторых системах
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 7.10.2023</span>
		</p>

		<ul><li>
				-Поправлены еще некоторые функции, чтобы не вызывать подвисания патчера
			</li>
			<li>
				-Доработаны функции для работы со временными файлами
			</li>
			<li>
				-Добавлены еще файлы в автоматическую очистку при установке патча
			</li>
			<li>
				-В патчер модов под в WW версии поправлен ошибка для мода: Lost World Origin
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 6.10.2023</span>
		</p>

		<ul><li>
				-Поправлены некоторые функции, чтобы не вызывать подвисания патчера
			</li>
			<li>
				-Добавлен выбор файла у Steam Engine WW между оригинальным и с вырезанными повышенными правами доступа
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 1.10.2023</span>
		</p>

		<ul><li>
				-В патчер модов под в WW версии добавлен мод: Lost World Troops of Doom (патч 3.6)
			</li>
			<li>
				-В оригинальном файле XR_3DA.exe для WorldWide версии из Steam вырезаны повышенные права доступа (оригинальный файл сохранен)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 30.09.2023</span>
		</p>

		<ul><li>
				-Добавлена установка stalker build 5578 (только для клиентов игры с RU архивами .db)
			</li>
			<li>
				-Исправлена опечатка в FoV Swither'е мешающая определению пути к файлу в зависимости от клиента
			</li>
			<li>
				-Переименована резервная копия fsgame.ltx чтобы не удалялась утилитой fix_start
			</li>
			<li>
				-В патчер модов под в WW версии добавлен мод: Эхо Чернобыля [2]
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 29.09.2023</span>
		</p>

		<ul><li>
				-Изменена поддержка файла c названием файла патча stk-multi-client-patch-any-4-6.exe, если патч переименован используйте соответствующий файл .ini с похожим названием
			</li>
			<li>
				-В патчер модов под в WW версии добавлен мод: Тайный путь
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 28.09.2023</span>
		</p>

		<ul><li>
				-Исправлена ошибка при отработке патча 4Gb patcher с путями без пробелов
			</li>
			<li>
				-Добавлена поддержка файла stk-multi-client-patch-any-4-6.ini с параметрами ClientGame=.. и ModePatch=.
			</li>
		</ul><p>
			Пример заполнения файла stk-multi-client-patch-any-4-6.ini<br />
			;(портативная версия RU клиент)<br />
			;(установка патча 1.0003)<br />
			[General]<br />
			ClientGame=5<br />
			ModePatch=4
		</p>

		<p>
			<span style="color:#f1c40f;">от 27.09.2023</span>
		</p>

		<ul><li>
				-Поправлена отработка FoV patcher'a (теперь наверное точно работает)
			</li>
			<li>
				-Добавлен к применению 4Gb patcher для XR_3DA.exe (для успокоения пользователей)   
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 16.09.2023</span>
		</p>

		<ul><li>
				-Для распаковщика игровых ресурсов добавлена пресет распаковки Lost Alpha DC 1.4005(7)
			</li>
			<li>
				-Для распаковщика игровых ресурсов добавлена возможность задать свое название папки для распаковки
			</li>
			<li>
				-Для распаковщика игровых ресурсов добавлена функция удаления архива по окончанию распаковки
			</li>
			<li>
				-Доработка некоторых проверочных функций
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 13.08.2023</span>
		</p>

		<ul><li>
				-Для мода Апокалипсис под 1.0004 в патчере модов добавлено - выбор памяти и отвязки от нулевого ядра
			</li>
			<li>
				-Доработка некоторых функций установщика
			</li>
			<li>
				-Открыто применение исправления надписей Items, Take all, Description для всех видов клиентов (ставить обдуманно)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 06.08.2023</span>
		</p>

		<ul><li>
				-Для OGSM Gold Edition в патчере модов добавлено - выбор памяти и отвязки от нулевого ядра
			</li>
			<li>
				-Для Кривая дорога в патчере модов добавлено - выбор памяти и отвязки от нулевого ядра
			</li>
			<li>
				-Для Песни железных ёлок в патчере модов добавлено - выбор памяти
			</li>
			<li>
				-В конвертере архивов доработано появление кнопки конвертировать при копировать\вставить в окно для пути расположения
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 05.08.2023</span>
		</p>

		<ul><li>
				-Для Lost World: Origin в патчере модов добавлено - выбор памяти и отвязки от нулевого ядра
			</li>
			<li>
				-Для Хроники Кайдана (ч.1,ч.2,ч.3,движок от Макрона,движок от OGSE) в патчере модов добавлено - выбор памяти и отвязки от нулевого ядра
			</li>
			<li>
				-Текстовые правки в патчере модов
			</li>
			<li>
				-Для GoG (bin 1.0006) в патчере модов добавлено - возможность подключения патча от Macron'a (только Exe-файл)
			</li>
			<li>
				-Мелкие доработки по внедрению патча от Macron'a для 1.0006
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 02.08.2023</span>
		</p>

		<ul><li>
				-В патчер модов под в WW версии добавлен мод: CGIM Origin
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 30.07.2023</span>
		</p>

		<ul><li>
				-Обновлен конвертор xray_re-tools до версии 0.2.3 (Работает на Windows XP при наличии распространяемого пакета Visual C++ 2015-2019)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 29.07.2023</span>
		</p>

		<ul><li>
				 -Добавлена конвертация архивов .db5-8 до версии из Серебрянного издания или наоборот из 1С (только для RU клиентов игры)
			</li>
			<li>
				 -Оптимизация кода патча архивов .db*
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 23.07.2023</span>
		</p>

		<ul><li>
				-В "Инструменты" добавлен редактор переносимого веса с поддержкой ТЧ, ЧН, ЗП, AMK MOD
			</li>
			<li>
				-Мелкие правки текста
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.07.2023</span>
		</p>

		<ul><li>
				-Убран конвертер для x64 систем (из-за не завершения работы при не правильных аргументах)
			</li>
			<li>
				-Добавлен простенький распаковщик ресурсов игры (поддерживающий клиенты игры: ТЧ ru, ТЧ ww, ЧН и ЗП)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 07.07.2023</span>
		</p>

		<ul><li>
				-В патчер модов под WW добавлен мод: Shadow Addon 0.8.9 и RU GoG клиент
			</li>
			<li>
				-Мелкие правки в названиях
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 25.06.2023</span>
		</p>

		<ul><li>
				-В патчер модов под WW добавлен мод: STALKER FM se и оригинальная версия
			</li>
			<li>
				-Переправлена работа опции: FixStart
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 12.06.2023</span>
		</p>

		<ul><li>
				-Добавлен для установки патч 1.0001
			</li>
			<li>
				-Добавлена история изменений патча 1.0001
			</li>
			<li>
				-Переписана функция перепатчивания файлов db* (оптимизация)
			</li>
			<li>
				-Доработана пропись информации в реестре (по кнопке)
			</li>
			<li>
				-Доработано замена номера патча в установочной реестровой записи при 1С и THQ лицензии
			</li>
			<li>
				-Для версии 1.0000 добавлен выбор лицензионного файла запуска для применения лицензионных патчей подбирается автоматически в зависимости от типа RU или WW (практическое применение есть только в 1С и THQ лицензиях)
			</li>
			<li>
				-Исправлены мелкие ошибки технического плана и косметического
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 11.06.2023</span>
		</p>

		<ul><li>
				-Добавлен для установки Fix for the 12th Generation Intel® Core™ CPUs для патчей 1.0006 оригинал и с правками от macron'a (в разеделе модифицированные рендеры)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 24.05.2023</span>
		</p>

		<ul><li>
				-Добавлен для установки патч pre1.0007 (только для Steam WW - добавлен выбор между оригинальным exe файлом и измененным от TSNest)
			</li>
			<li>
				-В FoV Switcher добавлен вариант изменения pre1.0007
			</li>
			<li>
				-Добавлена история изменений патчей (для патча 1.0003, 1.0004-1.0006, PrePatch1.0007)
			</li>
			<li>
				-Поправлено положение некоторых кнопок
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 19.05.2023 v2</span>
		</p>

		<ul><li>
				-xrCompress поправлен для работы с Windows XP  и выше
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 19.05.2023</span>
		</p>

		<ul><li>
				-Доработан выбор исполняемых файлов в зависимости от разрядности (x86 или x64)
			</li>
			<li>
				-Исполняемые файлы подправлены для работы начиная с Windows XP
			</li>
			<li>
				-Исправления в коде установке с учетом предыдущих изменений
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.05.2023 v2</span>
		</p>

		<ul><li>
				-Добавлена дополнительная проверка существования папки при выборе клиента игры
			</li>
			<li>
				-Добавлена поддержка клиента игры (Серебрянное издание)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.05.2023</span>
		</p>

		<ul><li>
				-Исправление кодировки у текстовых файлов
			</li>
			<li>
				-Переделано окно отображения информации
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 12.05.2023</span>
		</p>

		<ul><li>
				-Переписан принцип работы "Сторонний клиент в Steam v1"
			</li>
			<li>
				-Поправлены некоторые функции установщика
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 16.04.2023</span>
		</p>

		<ul><li>
				-В патчер модов под WW добавлен мод: История снайпера: Ловушка судьбы
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 02.04.2023</span>
		</p>

		<ul><li>
				-Переделано поведение опции - FixStart (Рабочий фикс записи пустого списка в файл)
			</li>
			<li>
				-Заменен тип отображений форм
			</li>
			<li>
				-Доработка функций проверки
			</li>
			<li>
				-Доработка функций исполнения
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 19.03.2023</span>
		</p>

		<ul><li>
				-Для патчей 1.0003 и 1.0000 активировано действие по: Отключению от нулевого ядра и смены работы с памятью
			</li>
			<li>
				-Оптимизация кода установщика
			</li>
			<li>
				-Переделано поведение опции - FixStart (Тестировочный фикс записи пустого списка в файл после очистки)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 18.03.2023</span>
		</p>

		<ul><li>
				-Активировано добавление шрифта в систему для установщика, если он не будет найден на ПК пользователя
			</li>
			<li>
				-Мелкие правки функций
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 07.03.2023</span>
		</p>

		<ul><li>
				-В патчер модов под WW добавлен мод: "Darkest Time: Extended"
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 25.02.2023</span>
		</p>

		<ul><li>
				-Поправлена функция блокировки резервирования папок bin и gamedata
			</li>
			<li>
				-Заменена функция очистки не нужных файлов
			</li>
			<li>
				-Немного переделано поведение опции - FixStart
			</li>
			<li>
				-Подчищены устаревшие решения
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 23.02.2023</span>
		</p>

		<ul><li>
				-История изменений в патче перенесена в сам патч
			</li>
			<li>
				-Расширена форма с выводимым текстом
			</li>
			<li>
				-Поправлена функция восстановления в "патчере модов под WW"
			</li>
			<li>
				-В патчер модов под WW для мода "Апокалипсис на патче 1.0006" добавлена возможность правки памяти и ядра
			</li>
			<li>
				-Обновлен распаковщик WinRAR до версии 6.21
			</li>
			<li>
				-Добавлена возможность создать\восстановить ярлык игры ТЧ в Steam на рабочем столе
			</li>
			<li>
				-Другие мелкие правки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 19.02.2023</span>
		</p>

		<ul><li>
				-Поправлены условия выполнения в некоторых файлах
			</li>
			<li>
				-Подправлен вспомогательный файл для ACDC
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.02.2023</span>
		</p>

		<ul><li>
				-В патчер модов под WW добавлен мод: <em>B.H.A.E. (Between Heaven And Earth)</em>
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 4.02.2023</span>
		</p>

		<ul><li>
				-Убраны лишние строчки кода
			</li>
			<li>
				-Оптимизированы некоторые функции
			</li>
			<li>
				-Переделана система backup файла в "патчере модов под WW"
			</li>
			<li>
				-Добавлена возможность восстановить оригинальный файл до применения патча в "патчере модов под WW"
			</li>
			<li>
				-Корректировка некоторых строк с текстом
			</li>
			<li>
				-Обновлен файл распаковщик от Winrar (Unrar.exe) до крайней версии на момент 04.02.2023
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 22.01.2023</span>
		</p>

		<ul><li>
				-Добавлено дополнительное действие в backup "ничего не делать просто бекап" для возможности выбора действия без удаления
			</li>
			<li>
				-Поправлены некоторые описания
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 21.01.2023</span>
		</p>

		<ul><li>
				-Добавлено удаление db-архивов (.dbc и .dbd) в режиме установки установки без db архивов при установке патчей 1.0004 и 1.0005
			</li>
			<li>
				-Мелкие исправления и улучшения
			</li>
			<li>
				-Подправлено поведение Edit в упаковщике db архивов при копирование в него пути
			</li>
			<li>
				-Подправлено резервирование папки bin в <em>сторонний клиент в steam</em> (в папку bin_original)
			</li>
			<li>
				-Ускорен бэкап папок bin и gamedata
			</li>
			<li>
				-Удаление бэкапа, если он существует перед созданием нового на выбор пользователя
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 07.01.2023</span>
		</p>

		<ul><li>
				-Переписано внедрение правки Zenobian Mod на прицелы (ставится в конце всех правок и делается бэкап файла перед внедрением)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 03.01.2023</span>
		</p>

		<ul><li>
				-Переписан инструмент FixStart в составе патча (повышена скорость отработки)
			</li>
			<li>
				-Переписана очистка лишних папок в каталоге с игрой (повышена скорость отработки)
			</li>
			<li>
				-Поправлены мелочные опечатки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 25.12.2022</span>
		</p>

		<ul><li>
				-Исправлен возможный не правильный вызов функции по созданию символической ссылки на иностранных языках
			</li>
			<li>
				-Расширенные функции в патчер модов для WW (оптимизация работы памяти и отвязка от нулевого ядра). Функции добавлены в некоторые моды, не во все. (будут добавляться постепенно - возможно, по наличию времени)
			</li>
			<li>
				-Прочие мелочные правки текста и кода
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 09.12.2022</span>
		</p>

		<ul><li>
				-Набор локализаций переделан из архива *.xdb* в обычную папку gamedata (для избежания замены имеющих от какого либо мода, если данный файл в папке существует он пропускается - чтобы не портить локализацию в моде). Пункт не предназначен для запакованных модов, потому как файлов в папке text никаких не будет и поставяться от оригинальной игры
			</li>
			<li>
				-Движок от Mocron под 1.0004 разделен на 2 вида (Оригинальную и дополненную версию)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 04.12.2022</span>
		</p>

		<ul><li>
				-Улучшенные общие функции (добавлены проверки и действия при определенных ситуациях - для исключения проблем и не работоспособности)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 26.11.2022</span>
		</p>

		<ul><li>
				-В инструменты добавлен пункт Fix Start (Добавлен улучшенный функционал утилиты для устранения проблем запуска игр серии Сталкер - Fix Start.exe)
			</li>
			<li>
				-Поправлена проверка путей расположения для FoV Swither и Патчера модов под WW клиенты
			</li>
			<li>
				-Прочие мелкие правки для улучшения
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 13.11.2022</span>
		</p>

		<ul><li>
				-В патчере модов под WW добавлен мод: <em>Истинный путь 1.3</em>
			</li>
			<li>
				-Стандартизирована функция открытия ссылок в браузере
			</li>
			<li>
				-Прочие исправления для оптимизации патча
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 30.10.2022</span>
		</p>

		<ul><li>
				-Добавлен 2 алгоритм конвертации (без промежуточной папки) в конвертер архивов RU - WW
			</li>
			<li>
				-Добавлено тектовое описание действий при конвертации
			</li>
			<li>
				-В упаковщике архивов открыта текстовая строка пути для копировать-вставить
			</li>
			<li>
				-Прочие исправления в формах инструментов
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 29.10.2022 v2</span>
		</p>

		<ul><li>
				-Исправлена функция извлечения файла из-за которой ломался перепаковщик архивов игры
			</li>
			<li>
				-В патчере модов под WW добавлен мод: <em>Shadows Addon 2.0 [unofficial patch] by Avgust1n</em>
			</li>
			<li>
				<em>-</em>Мелкие поправки функционала
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 29.10.2022</span>
		</p>

		<ul><li>
				-Добавлена правка типа работы с памятью для всех патчей
			</li>
			<li>
				-Заменен тип сжатия патча (на размер самого exe никак не повлияло, лишь скорость работы)
			</li>
			<li>
				-Подправлены некоторые аспекты поведения патча
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 22.10.2022</span>
		</p>

		<ul><li>
				-Добавлен fsgame.ltx от Steam (сохранения в папке _appdata_), действия подстроены под данный выбор
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 21.10.2022</span>
		</p>

		<ul><li>
				-Переписана система backup для bin и gamedata для всех клиентов под один вариант для всех
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 20.10.2022</span>
		</p>

		<ul><li>
				-Добавлена возможность backup папки bin и gamedata для портативных клиетнов
			</li>
			<li>
				-Поправлены недочеты функции backup для установленных клиетнов
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.10.2022</span>
		</p>

		<ul><li>
				-Правка некоторых функций для более точной отработки
			</li>
			<li>
				-Для портативной установки убрана проверка реестра на наличие пути (скорость работы патча)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 17.09.2022</span>
		</p>

		<ul><li>
				-Доработаны некоторые функции используемые в патче
			</li>
			<li>
				-Заменен компрессор сжатия патча на более новый от 2022 года
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 05.09.2022</span>
		</p>

		<ul><li>
				-Добавлена правка приоритета нулевого ядра для всех патчей.
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 03.09.2022</span>
		</p>

		<ul><li>
				-Упрощена функция конвертации архивов в перепаковщике (для более быстрого выполнения)
			</li>
			<li>
				-В перепаковщике добавлена возможность сделать резервную копию перепакованных архивов (если файл в создаваемой папке для резерва - нет).
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 27.08.2022</span>
		</p>

		<ul><li>
				-Список изменений за прошедший месяц утерян
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 30.07.2022</span>
		</p>

		<ul><li>
				-Убран сброс путей и блокировка кнопки в патчере модов под WW (сбрасывается только выбранный мод для патча)
			</li>
			<li>
				-Исправлено поведение в конверторе архивов игры (если папка при запуске выбрана, то кнопка конвертации активна и не нужно перевыбирать путь)
			</li>
			<li>
				-Добавлена панель ACDC с двумя вариантами 1.35 и 1.38, просто извлекает данное средство на рабочий стол в собранном виде, а далее на усмотрение пользователя (для удобства, чтобы не скачивать его отдельно)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 24.07.2022</span>
		</p>

		<ul><li>
				-Мелкие исправления
			</li>
			<li>
				-Добавлен клиент: Steam WW с замененным клиентом на русский (Для тех, кто делал по этой инструкции: <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=370189559" rel="external nofollow">Гайд</a>)
			</li>
			<li>
				-Для патча 1.0003  и клиент 1.0000 добавлена правка: Disable debug logs
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 23.07.2022</span>
		</p>

		<ul><li>
				-Поправлено поведение при определение клиентов игры
			</li>
			<li>
				-Добавлена поддержка Repack от dixen18
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 9.07.2022</span>
		</p>

		<ul><li>
				-Оптимизация кода по патчу с WW на RU и обратно в момент установки
			</li>
			<li>
				-Добавлен в патчер модов для WW лицензий мод: <em>Сборка S.T.A.L.K.E.R. F.M. под 6-ой патч</em>
			</li>
			<li>
				-Очистка вывода сообщений в лог\консоль для Истинный путь v2.1, сделана на усмотрение пользователя
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 6.07.2022</span>
		</p>

		<ul><li>
				-Доработка предыдущих изменений в поведение патча
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 5.07.2022</span>
		</p>

		<ul><li>
				-Убрано удаление папки mods в других моментах, оставлен по выбору компонента по очистке (компонент выбран по-умолчанию)
			</li>
			<li>
				-Вычищены иные не связные действия, которые были вынесены на компоненты
			</li>
			<li>
				-На странице выбора папки добавлена возможность отключить установку db -архивов (отключаются и иные действия с такими файлами)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 4.07.2022</span>
		</p>

		<ul><li>
				-Добавлена очистка файлов .db с E по Z добавляемые модами (для удобства) - на выбор пользователя
			</li>
			<li>
				-Добавлено удаление папки mods при установке (для удобства) - на выбор пользователя
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 25.06.2022</span>
		</p>

		<ul><li>
				-Добавлены 2 правки на -mblur и -smap_4096 для патчей 1.0004 и 1.0006
			</li>
			<li>
				-У патча 1.0004 пункт про скриншоты в png перенесен в пункт правки для рендера
			</li>
			<li>
				-У правок от  RayTwitty aka Shadows и других убрана блокировка на выбор одного пункта, теперь выбираются все
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 24.06.2022</span>
		</p>

		<ul><li>
				-Правка функции датирования от не нужных условий
			</li>
			<li>
				-Заменена функция резервирования папок bin и gamedata на другую (более новую и правильно работающую)
			</li>
			<li>
				-Удален код функции резрвирования за его не надобностью
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 21.06.2022</span>
		</p>

		<ul><li>
				-Заменен тип сжатия патча (Ultra 64)
			</li>
			<li>
				-Убран показ веса компонентов, за не особой надобностью
			</li>
			<li>
				-Для патча 1.0004 с движком от Macron добавлено - Включение принудительной синхронизации по аналогии с 1.0006 (не проверялось)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 18.06.2022</span>
		</p>

		<ul><li>
				-Исправления в функции по очистке файлов и папок
			</li>
			<li>
				-Фикс снятия атрибутов
			</li>
			<li>
				-Фикс положения некоторых элементов
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 12.06.2022</span>
		</p>

		<ul><li>
				-Расширено стартовое окно (для удобства)
			</li>
			<li>
				-Добавлен переключатель номер записи игрового клиента (поддерживает 1C, GoG, THQ, репаки - другие не поддерживает). Для тех у кого несколько раз установлен один и тот же игровой клиент.
			</li>
			<li>
				-Доработано поведение кнопки: Применить и продолжить
			</li>
			<li>
				-Добавлено автозаполнение строк в параметрах на вкладке инструменты, в зависимости от выбранного клиента игры
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 11.06.2022</span>
		</p>

		<ul><li>
				-Еще раз поправлено не срабатывающее условие (Это не Steam) - теперь точно работает <span><span class="ipsEmoji">?</span></span>
			</li>
			<li>
				-Из-за предыдущей правки возвращено создание батника в каталоге игры для не Steam версий
			</li>
			<li>
				-Более точное определение ключей установщиков и репаков, активация кнопки продолжить и правка для Wine ранее было запрещено (могло и не активировать кнопку продолжить)
			</li>
			<li>
				-Некоторый новый функционал для будущего улучшения определения
			</li>
			<li>
				-Убраны лишние посреднические функции там, где они и не нужны были (оптимизация кода)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 9.06.2022 v2</span>
		</p>

		<ul><li>
				-Поправлено по ошибке замененное название 2 клиентов - R.G.Energy и R.G.Mechanics
			</li>
			<li>
				-Другое условие проверки в патчер модов для WW лицензий
			</li>
			<li>
				-Добавлено предупреждение под знаком ? на стартовом экране
			</li>
			<li>
				-Добавлено сообщение в патчер модов для WW, если два пути заданы, а мод не указан
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 9.06.2022</span>
		</p>

		<ul><li>
				-Изменено поведение по удалению файлов в 'Инструментах' (удаляются теперь и файлы с флагом Только для чтения)
			</li>
			<li>
				-При установке патчей и замене файлов убрано возможное окно по атрибуту Только чтение, теперь заменяется автоматически не спрашивая
			</li>
			<li>
				-Исправлено не работающее условие проверки (это не Steam)
			</li>
			<li>
				-В патчер модов под WW лицензии добавлен мод: В Аду... ПСЫ в двух вариантах (Авторский EXE и Оригинальный)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 8.06.2022</span>
		</p>

		<ul><li>
				-Переписано удаление файлов при установке (удаляются атрибуты и идет удаление)
			</li>
			<li>
				-Переписано удаление папок при установке (удаляются атрибуты у файлов, удаление файлов, удаление атрибутов у папок, удаление папок)
			</li>
			<li>
				-При пропуске папки bin и gamedata для удаления идет снятие атрибутов у файлов в папке
			</li>
			<li>
				-При переходе со стартового окна на основную форму происходит закрытие работающих процессов игр (xr_3da.exe и xrEngine.exe)
			</li>
			<li>
				-Правка некоторых элементов оформления
			</li>
			<li>
				-На стартовом окне добавлено отображение статуса учетной записи использующей патч (если пользователь из группы администраторов высвечивает - Администратор, все остальные - Пользователь)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 7.06.2022</span>
		</p>

		<ul><li>
				-Заменена очистка файлов thumbs.db на другой тип зачистки
			</li>
			<li>
				-Правки в пункт Сторонний клиент в Steam v1 (уменьшена отображаемая форма)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 6.06.2022</span>
		</p>

		<ul><li>
				-Исправлена работа по очистке пустых папок (ранее работала не правильно, повезет если что-то очистит в каталоге)
			</li>
			<li>
				-Переписаны пару функций, уменьшено количество вызовов и проверок (оптимизация кода)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 3.06.2022</span>
		</p>

		<ul><li>
				-Разблокирован запуск на Windows XP (по ошибке запуск производился с Vista и выше)
			</li>
			<li>
				-Поправлен цвет некоторых элементов
			</li>
			<li>
				-Очистка файлов немного расширена
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 1.06.2022</span>
		</p>

		<ul><li>
				-Поправлен размер элемента с чекбоксом для запуска игры (заменен и цвет)
			</li>
			<li>
				-Поправлено поведение кнопки "Сторонний клиент в Steam v2"
			</li>
			<li>
				-Выставлена блокировка на установку в сетевые расположения
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 31.05.2022 (мини обновление)</span>
		</p>

		<ul><li>
				-Исправлено условие появления галочки старта игры в конце патча для всех других клиентов помимо steam (не работало ранее)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 28.05.2022</span>
		</p>

		<ul><li>
				-Добавлена проверка на Wine у функций проверяющих рееестр
			</li>
			<li>
				-На Wine автоматом выбирается при старте пункт "другие WW лицензии"
			</li>
			<li>
				-Добавлен еще одни ключ проверки клиента игры: R.G.Mechanics
			</li>
			<li>
				-Подправлены еще немного положение некоторых элементов
			</li>
			<li>
				-Добавлен откат игры до версии 1.0000 (используется NoDVD в целях практичности)  !на клиенты 1С и THQ в последствие возможно ставить официальные патчи с 1.0004 до 1.0006 без ошибок.
			</li>
			<li>
				-Расширена запись в реестр по пункту (добавлена возможность прописи индификатора клиента и пути до игры - автоматически RU или WW)
			</li>
			<li>
				-Добавлено внедрение оригинальных файлов ReadMe и License (автоматически RU или WW) - воизбежание вылета ошибки на оригинальном патче
			</li>
			<li>
				-Мелкие исправление в прикладные возможности
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 24.05.2022</span>
		</p>

		<ul><li>
				-Возвращен предыдущий скин патчера
			</li>
			<li>
				-Поправлены размеры некоторых форм
			</li>
			<li>
				-Исправлено поведение патчера модов под WW
			</li>
			<li>
				-Убрана ошибка в патчере WW модов, если файл exe не найден или в строке ничего не указано
			</li>
			<li>
				-Добавлена ключ клиент игры - Repack R.G.Energy (так же этим ключем можно патчить репак от R.G.Catalyst обновленный)
			</li>
			<li>
				-Поправлен некоторый текст
			</li>
			<li>
				-Для лицензии 1С и THQ замена имени отображаемого названия игры при патчах в панели удаления (по аналогии с оригинальными патчами от GSC) - меняется имя и версия патча
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 22.05.2022</span>
		</p>

		<ul><li>
				-Заменен скин патчера на очень черный (на время)
			</li>
			<li>
				-Правка расположения элементов и цветов в патче
			</li>
			<li>
				-Правка описания некоторых названий
			</li>
			<li>
				-Заменена форма выхода\закрытия патча на более подходящую
			</li>
			<li>
				-Оптимизация некоторых функций
			</li>
			<li>
				-Правка определения и распаковки доп.софта по разрядности
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 21.05.2022</span>
		</p>

		<ul><li>
				-Меню универсального упаковщика расширено (добавлен упаковщик от OGSR  - работает на спец. условиях (требует x64 систему и наличие рядом с патчером папки gamedata, выбор папки запрещен!))
			</li>
			<li>
				-Добавление мелкого необходимого функционала для работы с файлами
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 19.05.2022</span>
		</p>

		<ul><li>
				-Для универсального упаковщика немного расширено описание, что и как
			</li>
			<li>
				-Изменено некоторое положение кнопок
			</li>
			<li>
				-Для Steam добавлена ссылка для запуска в каталоге с игрой и разблокирован запуск игры в конце обработки патчером
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.05.2022</span>
		</p>

		<ul><li>
				-В пункт "Инструменты" добавлен универсальный упаковщик игровых файлов в архивы db\xdb (на основе xrCompress)
			</li>
			<li>
				-Доработана функция отображения txt файлов, под новые возможности
			</li>
			<li>
				-Поправлен один ошибочный параметр в патчере WW
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 7.05.2022</span>
		</p>

		<ul><li>
				-Исправлена не работоспособность конвектора архивов игры при пробелах в пути к папке
			</li>
			<li>
				-В конвектор архивов добавлена возможность удаления папок мультиплеерных карт из состава игрового архива
			</li>
			<li>
				-Правки некоторых размеров элементов
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 6.05.2022</span>
		</p>

		<ul><li>
				-Возвращена надпись (версия патчера) на стартовом окне
			</li>
			<li>
				-Заменена версия правленного движка от Macron для 1.0004 (на более полную)
			</li>
			<li>
				-В патчер модов для WW добавлена функция затирания записей в лог из Macron Fixx v4 для Exe файлов (Включена для одного (пока что) мода - Истинный путь 2.1)
			</li>
			<li>
				-Убраны дублированные вызовы WinApi функционала
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 4.04.2022</span>
		</p>

		<ul><li>
				-Добавлен в патчер модов для WW лицензий моды: RMA AA 3.0 и Истинный путь 2.1
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 7.03.2022</span>
		</p>

		<ul><li>
				-Заменен метод сжатия файлов в патчере для ускорения работы
			</li>
			<li>
				-Добавлен в патчер модов для WW лицензий моды: Серия от Zaurus - Апокалипсис, Поиск, Долг: Философия войны
			</li>
			<li>
				-Заменена очередность условий у двух функций для правильности и более быстрой отработке
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 27.02.2022</span>
		</p>

		<ul><li>
				-Доработано поведение при масштабирование &gt;100%
			</li>
			<li>
				-Заменен размер изображения на стартовом окне (Для большей четкости)
			</li>
			<li>
				-В FoV Switcher добавлены 2 мода: Пространственная аномалия (Update 4.1) и Под прикрытием смерти: Клондайк 2.0
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 26.02.2022 v2</span>
		</p>

		<ul><li>
				-Восстановлено оригинальное действие по нажатию на кнопку обзор.
			</li>
			<li>
				-Добавлен в патчер модов для WW лицензий мод: <em>S.T.A.L.K.E.R. Apocalipsis с адаптацией под ТЧ 1.0006 и оружейным паком.</em>
			</li>
			<li>
				<em>-</em>Доработано поведение патчера модов для мировой лицензии из магазина Steam
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 21.02.2022</span>
		</p>

		<ul><li>
				-Встроен полностью FoV Switcher от Macron в полном составе
			</li>
			<li>
				-Доработан откат FoV
			</li>
			<li>
				-Заменен выбор папки в перепаковщике
			</li>
			<li>
				-Поправлены некоторые размеры элементов установщика
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 20.02.2022</span>
		</p>

		<ul><li>
				-Правка размеров элементов интерфейса
			</li>
			<li>
				-Переписано поведение кнопки Обзор, на более правильное для патчера
			</li>
			<li>
				-Дополнительные проверки при поиске файла\правка функции перемещения папок и файлов
			</li>
			<li>
				-В пункт "Инструменты" добавлена кнопка FoV Switcher (пример работы смотрите под соответствующем спойлером)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 18.02.2022</span>
		</p>

		<ul><li>
				-Переписаны некоторые элементы кода для большей практичности
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 03.02.2022</span>
		</p>

		<ul><li>
				-Переделан выбор папки в патчере под WW лицензии
			</li>
			<li>
				-Добавлены в патчер модов для WW лицензий: OGSM на патче 1.0007 и OGSM + FWR mod
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 29.01.2022</span>
		</p>

		<ul><li>
				-Добавлена ссылка по клику на надпись (на инструкцию по добавлению любого мода в Steam от 1beer)
			</li>
			<li>
				-Поправлена функция отображения картинок (до более правильной)
			</li>
			<li>
				-Создание символических ссылок перенесено на системные библиотеки
			</li>
			<li>
				-Открыт фикс надписей для патча 1.0003 WW версии
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 19.01.2022</span>
		</p>

		<ul><li>
				-Добавлена прозрачность при перетаскивание
			</li>
			<li>
				-Добавлена опция сторонний клиент игры в Steam v2
			</li>
			<li>
				-Доработана функция по перемещению папки bin в bin_original_files (могла сбоить и удалять исходные файлы)
			</li>
			<li>
				-Мелкие правки и улучшения
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 7.01.2022</span>
		</p>

		<ul><li>
				-Добавлена шейдерная правка от K.D. под R2 (Волны от ветра на траве)
			</li>
			<li>
				-Улучшен фикс надписей для широкоформатов (файл ставится если файл такой же не обнаружен в папке, если есть установка проверяет его на наличие ошибок и исправляет) - работает только с не измененными ранее строками
			</li>
			<li>
				-Движковая правка режима дождя из OLR 2.5 (под патчи 1.0003 - 1.0006)
			</li>
			<li>
				-Правки по улучшению кода установки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 5.12.2021</span>
		</p>

		<ul><li>
				-Добавлен FXAA Tool из мода Хроники Кайдана в графические настройки
			</li>
			<li>
				-Подчищены более не используемые функции
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 21.11.2021</span>
		</p>

		<ul><li>
				-Добавлен в патчер модов для WW лицензий мод: <em>Хроники Кайдана: Третья серия </em>(в 3 вариантах)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 9.11.2021</span>
		</p>

		<ul><li>
				-Добавлен раздел мини-фиксов (2 фикса добавлено на область инвентаря для широкоформатов и надписей Take All, Description, Items)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 6.11.2021</span>
		</p>

		<ul><li>
				-Добавлена блокировка запуска патча (минимум windows XP)
			</li>
			<li>
				-Добавлена блокировка некоторых функций, не работающих на windows XP
			</li>
			<li>
				-Переделана инициализация некоторых функций API нужных для патча, из-за возможной ошибки на English-US системах и переделана немного их отработка.
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 24.09.2021</span>
		</p>

		<ul><li>
				-Заменено поведение при нажатие у 2х кнопок.
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 5.09.2021</span>
		</p>

		<ul><li>
				-Заменено исполнение расположения кнопок на стартовой форме
			</li>
			<li>
				-Добавлен упрощенный интегратор в Steam модификаций по инструкции от 1beer
			</li>
			<li>
				-Мелкие правки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 4.09.2021</span>
		</p>

		<ul><li>
				-Подправлено поведение создателя ярлыков
			</li>
			<li>
				-Исправлено поведение патчера EXE-файлов под WW лицензии
			</li>
			<li>
				-Добавление функционала для будущего добавления (не активно пока что)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 16.08.2021</span>
		</p>

		<ul><li>
				-Поправлено определение русской лицензии в Steam
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 13.08.2021</span>
		</p>

		<ul><li>
				-Поправлены некоторые ошибки поведения установщика при выборе некоторых компонентов и оптимизирован патчер модов под WW клиенты
			</li>
			<li>
				-Добавлен 8 вариант типа установки: Steam с русским клиентом игры (Для тех кому повезло его купить в своё время) (За предоставленные файлы от такого клиента игры спасибо: <a href="https://ap-pro.ru/profile/29036-gnomi123/" rel="">Gnomi123</a> )
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 30.07.2021</span>
		</p>

		<ul><li>
				-Поправлено поведение при выборе некоторых компонентов
			</li>
			<li>
				-Добавлен перепаковщик игровых архивов под WW версии игры (подойдет для модов запакованных в db архивы для русских версий, дабы не мучиться со скачивание русского клиента) - расширенная версия 1.1
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 25.07.2021</span>
		</p>

		<ul><li>
				-Убраны официальные EXEшники для патча 1.0003 (в них нет смысла, на современных системах и из-за старости патча)
			</li>
			<li>
				-Добавлен пункт графические настройки: SweetFX 1.4
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 16.07.2021</span>
		</p>

		<ul><li>
				-Добавлен патч 1.0003 для старых модов. Единственное - но! Используется NoDVD для запуска этого патча, оригинальный файл достать не удалось. (Для любителей старых модов сойдет и так)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 13.07.2021</span>
		</p>

		<ul><li>
				-Для RU клиентов добавлен авто патч по необходимости для файла gamedata.dba до более полного.
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 11.07.2021</span>
		</p>

		<ul><li>
				-Для WW клиентов добавлено недостающее intro от русской версии игры (чтобы моды русские не вылетали в момент старта клиента по недостаче файла).
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 9.07.2021</span>
		</p>

		<ul><li>
				-Добавлено определение установки из под Wine, которое блокирует не работающие функции под Wine.
			</li>
			<li>
				-Для создаваемых батников прописана дополнительная команда Taskkill для закрытия процессов предыдущего(их) запуска(ов), чтобы не висела игра.
			</li>
			<li>
				-Чистка репортов Xray стала доступна и в других лицензиях WW и RU
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 3.07.2021</span>
		</p>

		<ul><li>
				-Добавлено: <u>Использование нескольких ядер процессора (Метод Macron'a)</u>.
			</li>
			<li>
				Игру запускать через файл в папке с игрой - <strong>STALKER_coreCPU.cmd</strong>
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 14.06.2021 rev2</span>
		</p>

		<ul><li>
				-Добавлен в патчер модов для WW лицензий мод: <em>Кривая дорога</em>
			</li>
			<li>
				-Правка по оптимизации работы
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 14.06.2021</span>
		</p>

		<ul><li>
				-Подправлен маленький визуальный баг формы при переходе со страницы на страницу
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 12.03.2021</span>
		</p>

		<ul><li>
				-Добавлена правка Panic Log для 1.0004 и 1.0006 (при выборе появляется кнопка с описанием, что это такое). При выборе делается резервная копия оригинального файла для возможности отката.
			</li>
			<li>
				-Добавлена правленая xrGame.dll от Kolgomor под патч 1.0004 с описанием, того что меняет и какие компоненты отменяются при ее выборе.
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 6.03.2021</span>
		</p>

		<ul><li>
				-Расширена чистка Reshade\SweetFX\Enb
			</li>
			<li>
				-Для <u><em>Круглый курсор</em></u> и <u><em>Смерть от первого лица</em></u> из состава архива Xray Cut добавлены сопутствующие файлы (упущены при добавлении)
			</li>
			<li>
				-В патчер WW добавлен мод <strong>Epilogue</strong>
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 28.02.2021</span>
		</p>

		<ul><li>
				-Исправлена опечатка в патчере у SVN Portable (спасибо Macron за предоставление ссылки)
			</li>
			<li>
				-Текстовые правки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 13.02.2021</span>
		</p>

		<ul><li>
				-Оптимизация установщика
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 7.02.2021</span>
		</p>

		<ul><li>
				-Добавлено в WW патчер: RMA115vr_OGSM231 от YTroll
			</li>
			<li>
				-Расширена чистка мусорных файлов в клиентах игры
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 16.01.2021</span>
		</p>

		<ul><li>
				-Возвращена иконка крестика на стартовую панель (Для возможности закрытия)
			</li>
			<li>
				-Добавлен патчер бинарника модов под WW клиенты игры
			</li>
			<li>
				(Поддерживает 3 мода: Хроники Кардана часть 1 и часть 2, Lost World Origin)
			</li>
			<li>
				-Правка кода для оптимизации работы
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 3.12.2020</span>
		</p>

		<ul><li>
				-Исправление кода элементов отображения (визуальные правки)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 29.11.2020</span>
		</p>

		<ul><li>
				-Добавлена возможность установки SVN portable (как устанавливается смотрите в 'Демонстрационные видео')
			</li>
			<li>
				-Добавлена возможность установки XRay Extensions Portable
			</li>
			<li>
				-Добавлен скин для установки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 24.10.2020</span>
		</p>

		<ul><li>
				-Исправлены некоторые описания в паре мест
			</li>
			<li>
				-Для официальных клиент Steam, THQ, 1C, GoG ru, GoG ww добавлен пункт резервации папок (bin, gamedata). Резервация проходит путем - переименования соответствующей папки в вид "название папки_backup". Если в папке с игрой в момент с игрой будет уже существовать папка с похожим названием - резервация не будет произведена (К тому же, если папка 'gamedata' отсутствует то она не будет предлагаться к резервации).
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 23.10.2020</span>
		</p>

		<ul><li>
				-Расширена чистка Enb, SweetFX и т.д.
			</li>
			<li>
				(Добавлена чистка: 3GB patcher'a и 4GB patcher'a - за их бестолковость на патчах выше 1.0003)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 20.10.2020</span>
		</p>

		<ul><li>
				-Расширена чистка Enb, SweetFX и т.д.
			</li>
			<li>
				-Добавлен R2 рендер от AA2.1 в 2 вариантах под 1.0006
			</li>
			<li>
				-Добавлен R2 рендер от ST2+AA2 под 1.0005 и 1.0004
			</li>
			<li>
				-Исправлена ошибка при запуске с EnvFX (не правильный формат архива ставился)
			</li>
			<li>
				-Правка кода
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 11.10.2020</span>
		</p>

		<ul><li>
				-Запуск патчера сделан начиная с Windows XP и выше
			</li>
			<li>
				-Переписано поведение кнопки сохранения описаний (более производительная)
			</li>
			<li>
				-Оптимизация кода
			</li>
			<li>
				-Добавлен фикс деревьев (для проверки на модах - типа: Autumn Aurora 2.1)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 6.10.2020</span>
		</p>

		<ul><li>
				-Расширенные движковые правки и функционал модифицированных рендеров
			</li>
			<li>
				-Для патчей 1.0004 и 1.0006 добавлены правки из Xray Cut Pack
			</li>
			<li>
				-В наборе локализаций добавлены 3 вида языка для установки (Не ставится, если файл активации локализации обнаружится в Gamedata - актуально для модов)
			</li>
			<li>
				-Добавлен Hud_fov Changer от Macron - 5 на выбор (подстроен под все патчи из установки)
			</li>
			<li>
				-Добавлена кнопка сохранить описание при прочтение в папке с игрой
			</li>
			<li>
				-Переписана установка с упрощением кода для скорости установки
			</li>
			<li>
				-Номер патчера вынесен на стартовое меню
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 2.10.2020</span>
		</p>

		<ul><li>
				-Заменена картинка в конце установки на более ТЧшную
			</li>
			<li>
				-Добавлена зачистка от ненужных файлов патчей (на выбор)
			</li>
			<li>
				-Добавлен создатель ярлыков  в конце установки. (пример на скриншотах) 
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 1.10.2020</span>
		</p>

		<ul><li>
				-Добавлен пункт установки локализации текста взято из Steam с добавление украинского (доступно во всех типах, кроме Steam установки
			</li>
			<li>
				-Переписана система нахождения игр, теперь просто блокируется кнопка продолжить, если клиент не найдет на ПК (для удобства пользователя)
			</li>
			<li>
				-Поправлены кое-где опечатки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 30.09.2020</span>
		</p>

		<ul><li>
				-Расширена очистка (на количество удаляемых файлов)
			</li>
			<li>
				-Добавлена поддержка 1C лицензии, GoG russian и на выбор расположения ru клиентов игры (на основе worldwide бинарников)
			</li>
			<li>
				-GoG бинарники добавлены в 2 вариантах (от русской и worldwide версии)
			</li>
			<li>
				-Добавления батника для запуска игры в каталог клиента (для удобства)
			</li>
			<li>
				-Оптимизация работы установки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 28.09.2020</span>
		</p>

		<ul><li>
				-Добавлены описания к XrayCut Renders и правке из Zenobian Mod 
			</li>
			<li>
				-Переделана последняя страница после установка патчера
			</li>
			<li>
				-В тип установке Steam добавлена установка оригинальных бинарников Steam для отката до оригинала
			</li>
			<li>
				-Удален запуск игры с последней страницы для установки на Steam
			</li>
			<li>
				-Добавлены некоторые правки для патчей 1.0006 смотрите в патчере (на выбор пользователя)
			</li>
			<li>
				-Некоторая оптимизация в установщик
			</li>
			<li>
				-Возможность создать батник для запуска в каталоге игры (Для всех, кроме Steam)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 26.09.2020</span>
		</p>

		<ul><li>
				-Добавлены рендеры под 1.0006 от Xray Cut Project
			</li>
			<li>
				-Добавлена правка на удаление вылета по текстурам под 1.0006
			</li>
			<li>
				-Добавлена правки на использование предметов из инвенторя НПС от Kolmogor или Xray Cut Project
			</li>
			<li>
				-В Multi Patch добавлен вариант Russian EXE patched WW
			</li>
			<li>
				-Добавлены действия с Fsgame.ltx (при первой установке создается резервная копия файла клиента)
			</li>
			<li>
				-При выборе действий с Fsgame доступно на выбор добавление User.ltx (3 варианта - оригинал и 2 от Serega76  с автопрописью разрешения экрана монитора во время установки)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 25.09.2020</span>
		</p>

		<ul><li>
				-Добавлены описания для звуковых патчей
			</li>
			<li>
				-Добавлена возможность про игнорировать удаление папки bin при установке
			</li>
			<li>
				-Добавлена зачистка файлов Reshade, SweetFX, ENB и Thumbs (Будет расширяться список чистки)
			</li>
			<li>
				-Расширен выбор FoV на основе Switcher'a от Macron под 1.0006
			</li>
			<li>
				-Убран пункт записи в реестр номера патча в других WW лицензиях
			</li>
			<li>
				-Добавлен выбор рендеров в патч 1.0006 (от K.D. или SkyLoader) с описанием изменений
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 24.09.2020</span>
		</p>

		<ul><li>
				-Описание измененний движков удалены из ссылки и перенесены в саму установку при выборе компонента
			</li>
			<li>
				-Добавлена возможность про игнорировать удаление папки gamedata при установке (полезно для модов не затрагивающие архивы игры и папку bin) 
			</li>
			<li>
				-Добавлена возможность повесить права администратора и удалить при переустановки на файл XR_3DA.exe
			</li>
			<li>
				-Новое окно выбора версии клиента
			</li>
			<li>
				-Изначально для установки выставлен чистый патч 1.0006 (добавление MultiPatch снято)
			</li>
			<li>
				-Для пользователей Steam, GoG, THQ присутствует очистка репортов Xray движка (освобождает место на диске от мусора)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 22.09.2020</span>
		</p>

		<ul><li>
				-Правка на регулируемые прицелы от Zenobian Mod (читать описание по ссылке на скачивание), подойдет для модов
			</li>
			<li>
				-Возможность добавить\удалить права администратора с xr_3da.exe (главное правильно указывать путь)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 18.09.2020</span>
		</p>

		<ul><li>
				-Установка Multi patch перенесена под раздел патча 1.0006
			</li>
			<li>
				-Добавлен выбор бинарников от GOG в 2 вариантах (Чистый из  English версии и модифицированный от русской версии)
			</li>
			<li>
				-Добавлена улучшенная библиотека OpenAl.dll под все варианты на замену оригинальной
			</li>
			<li>
				-Правка xrGame.dll на удаление Debug Logs из Macron Fix v4 адапирована ко всем патчам
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 17.09.2020</span>
		</p>

		<ul><li>
				-Оптимизация кода установки
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 16.09.2020</span>
		</p>

		<ul><li>
				-Для патчей 1.0004 и 1.0006 добавлена установка EAX Fixes v3 от Macron
			</li>
			<li>
				-Для патча 1.0006 добавлена установка S.T.A.L.K.E.R. EnvFX (embed)
			</li>
		</ul><p>
			<span style="color:#f1c40f;">от 15.09.2020</span>
		</p>

		<ul><li>
				-Для патча 1.0004 добавлена установка правленного движка от Macron
			</li>
			<li>
				-Добавлены описания измененных движков по ссылке на скачивание
			</li>
		</ul></div>
</div>

<p>
	<em><strong><span style="color:#f1c40f;">P.S. Если понравился патч, не забудьте отметить лайком. Вам не долго, а автору приятно <span><span class="ipsEmoji">🙂</span></span></span></strong></em>
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Отдельные ссылки">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://disk.yandex.ru/d/42vz2C7pzM_35A" rel="external nofollow">SVN Portable r232a (Яндекс Диск)</a>
		</p>

		<p>
			<a href="https://disk.yandex.ru/d/VWEa5i34p3bBuw" rel="external nofollow">Xray Cut Project (под 1.0004 и 1.0006)</a>
		</p>

		<p>
			<a href="https://synthira.ru/load/s_t_a_l_k_e_r/drugoe/fov_switcher_v1_7_rasshirennyj_ugol_obzora_iz_glaz_ot_macron_dlja_tch_chn_zp/25-1-0-2068" rel="external nofollow">FoV Switcher v1.7</a>
		</p>

		<p>
			<a href="https://ap-pro.ru/forums/topic/331-lost-alpha-dc/?do=findComment&amp;comment=179947" rel="">Установка Lost Alpha в Steam (Ссылка на пост)</a>
		</p>

		<p>
			<a href="https://ap-pro.ru/forums/topic/3656-zapusk-lyubogo-modaigry-v-steam-pod-lyuboy-chastyu-trilogii/" rel="">Установка модов\игр за место игр трилогии в Steam</a>
		</p>

		<p>
			<a href="https://ap-pro.ru/forums/topic/279-amk-141/?do=findComment&amp;comment=183961" rel="">Пересобранный установщик AMK mod 1.4.1</a>
		</p>
	</div>
</div>

<p>
	<span style="color:#e67e22;"><em>Внимание!!! При заходе в игру после патча и перехода в опции игры с последующим нажатием на кнопку отмены - возможна не критическая ошибка. Чтобы ее избежать, нужно нажать на применить и далее спокойно можно будет использовать кнопку отмены.</em></span>
</p>

<p>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Что нужно сделать после скачивания патча с файлообменника на свой ПК!!!">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<div class="ipsEmbeddedVideo">
			<div>
				<iframe allowfullscreen="" frameborder="0" height="150" title="Что нужно сделать после скачивания универсального патча для ТЧ" width="200" data-embed-src="https://www.youtube.com/embed/x9FKdhz0nX4?feature=oembed"></iframe>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Порядок обновления для GoG клиента">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<strong><em><span style="color:#f1c40f;">Краткое описание действий для смены патча на GoG клиенте:</span></em></strong>
		</p>

		<ol><li>
				Скачать патч
			</li>
			<li>
				Запустить его
			</li>
			<li>
				Выбрать пункт с клиентом GoG (russian или worldwide)
			</li>
			<li>
				Далее выбираете парметры и активацию необходимого патча на стартовом меню
			</li>
			<li>
				Нажимаете "принять и продолжить"
			</li>
			<li>
				Следуете по установке - нажимая "далее" и выбирая вам необходимые пункты, компоненты и правки для патча
			</li>
			<li>
				Ждете установку
			</li>
			<li>
				Все необходимый патч и набор правок установен
			</li>
			<li>
				Нажимаете "Готово"
			</li>
		</ol><p>
			*Если игра не перехватывается закидываем патч в папку с игрой для своего удобства (ленивого выбора пути установки) и выбираем пункт другие лицензии (RU или WW в зависимости от вашего клиента игры). А далее тоже самое что с пункта 4 и последовательно вниз.
		</p>

		<p>
			 
		</p>

		<p style="text-align:center;">
			<em><strong><span style="color:#1abc9c;">Видео пример:</span></strong></em>
		</p>

		<div class="ipsEmbeddedVideo">
			<div>
				<iframe allowfullscreen="" frameborder="0" height="150" title="Возврат Тень Чернобыля с патча 1.0006 из GoG\Steam на патч 1.0004" width="200" data-embed-src="https://www.youtube.com/embed/EiXQbDKx0C0?feature=oembed"></iframe>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>]]></description><guid isPermaLink="false">1909</guid><pubDate>Mon, 14 Sep 2020 02:09:52 +0000</pubDate></item><item><title>&#x420;&#x435;&#x434;&#x430;&#x43A;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; OpenXRay</title><link>https://ap-pro.ru/forums/topic/3457-redaktirovanie-openxray/</link><description><![CDATA[
<p>
	Так как я человек лени, мне было лень искать по всяким форумам людей кто будет редактировать движок. В связи с этим я решил взяться за OpenXRay (честь и хвала его создателям), так как он собирается и редактируется без проблем.  Я хочу оставить тут записи тем людям что хотят, хоть как-то отредактировать движок(новые слоты, новые характеристики и т.д.). 
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="OpenXRay">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://github.com/OpenXRay/xray-16/wiki/%5BRU%5D-%D0%9A%D0%B0%D0%BA-%D1%81%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%B4%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA-%D0%BD%D0%B0-Windows" rel="external nofollow">Исходный Код OpenXRay</a><br /><br /><a href="https://github.com/OpenXRay/xray-16/wiki/%5BRU%5D-%D0%9A%D0%B0%D0%BA-%D1%81%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%B4%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA-%D0%BD%D0%B0-Windows" rel="external nofollow">Как собрать OpenXRay (обязательно к прочтению)</a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Мой репозиторий OpenX-Ray">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://github.com/DaniilOzol181/XRay-16-Scarlet-Sunset/tree/ScarletSunset" rel="external nofollow">Scarlet Sunset Engine</a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Мой репозиторий обычного движка(можно собрать VS 2019)">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a href="https://gitlab.com/DaniilOzol181/ng-engine" rel="external nofollow">NGEngine</a>
		</p>
	</div>
</div>

<p>
	Если у вас так же, как и у меня есть подходящие уроки, то поделитесь с людьми, ведь даже нам иногда могут помочь:)
</p>

<p>
	<font color="#c0392b">WARNING!!! Все правки производятся в xrGame.dll. Если же они делаются не там, то будет сделан отдельный спойлер для правок других библиотек!!!</font><br />
	Пожалуй первыми моими уроками будет вот это:
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Как добавить новые слоты в инвентарь(Нож, бинокль и др.)">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Первое что мы будем редактировать файл UIActorMenuInitialize.cpp.
		</p>

		<p>
			Ищем вот эту строку:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln"> </span><span class="kwd">constexpr</span><span class="pln"> std</span><span class="pun">::</span><span class="pln">tuple</span><span class="pun">&lt;</span><span class="pln">eActorMenuListType</span><span class="pun">,</span><span class="pln"> cpcstr</span><span class="pun">,</span><span class="pln"> cpcstr</span><span class="pun">,</span><span class="pln"> cpcstr</span><span class="pun">,</span><span class="pln"> cpcstr</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">bool</span><span class="pun">&gt;</span><span class="pln"> inventory_lists</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span></pre>

		<p>
			Как вы наверно заметили(если хотя бы немного знаете инглишь),то это таблица с некоторыми ссылками, а именно на такие параметры как: иконка, степень повреждённости(прогресс бар), подсветка и иконка блокировки(как у шлема в экзоскелете или артефактов).<br />
			Добавляем туда вот такие строки:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        </span><span class="pun">{</span><span class="pln"> eInventoryKnifeList</span><span class="pun">,</span><span class="pln">     </span><span class="str">"dragdrop_knife"</span><span class="pun">,</span><span class="pln">           </span><span class="str">"progess_bar_knife"</span><span class="pun">,</span><span class="pln">   </span><span class="str">"knife_slot_highlight"</span><span class="pun">,</span><span class="pln">    </span><span class="kwd">nullptr</span><span class="pun">,</span><span class="pln">            </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="com">// Нож</span><span class="pln">
        </span><span class="pun">{</span><span class="pln"> eInventoryBinocularList</span><span class="pun">,</span><span class="pln"> </span><span class="str">"dragdrop_binocular"</span><span class="pun">,</span><span class="pln">       </span><span class="kwd">nullptr</span><span class="pun">,</span><span class="pln">               </span><span class="str">"binocular_slot_highlight"</span><span class="pun">,</span><span class="kwd">nullptr</span><span class="pun">,</span><span class="pln">            </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="com">// Бинокль</span></pre>

		<p>
			<br />
			        <br />
			Если хотим в бинокле сделать прогресс-бар, то можно добавить во второй строке на место первой nullptr вот это "progess_bar_binocular". (главное не забыть добавить это в actor_menu).<br />
			Теперь ищем вот эту строку:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    std</span><span class="pun">::</span><span class="pln">tuple</span><span class="pun">&lt;</span><span class="pln">eActorMenuListType</span><span class="pun">,</span><span class="pln"> cpcstr</span><span class="pun">,</span><span class="pln"> </span><span class="typ">CUIWindow</span><span class="pun">*&gt;</span><span class="pln"> inventory_lists</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span></pre>

		<p>
			<br />
			    <br />
			Это также таблица в которую нужно добавить вот эти строки:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        </span><span class="pun">{</span><span class="pln"> eInventoryKnifeList</span><span class="pun">,</span><span class="pln">     </span><span class="str">"dragdrop_knife"</span><span class="pun">,</span><span class="pln">     m_pInventoryWnd </span><span class="pun">},</span><span class="pln"> </span><span class="com">// Нож</span><span class="pln">
        </span><span class="pun">{</span><span class="pln"> eInventoryBinocularList</span><span class="pun">,</span><span class="pln"> </span><span class="str">"dragdrop_binocular"</span><span class="pun">,</span><span class="pln"> m_pInventoryWnd </span><span class="pun">},</span><span class="pln"> </span><span class="com">// Бинокль</span></pre>

		<p>
			<br />
			        <br />
			Также ищем вот эту строку:
		</p>

		<p>
			    BindDragDropListEvents(m_pLists[eInventoryAutomaticList]);<br />
			    <br />
			И буквально после нее добавляем вот это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">BindDragDropListEvents</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">]);</span><span class="pln">
    </span><span class="typ">BindDragDropListEvents</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">]);</span></pre>

		<p>
			<br />
			    <br />
			С первым файлом пожалуй закончили. Приступаем ко второму, а именно UIActorMenuInventory.cpp
		</p>

		<p>
			В нём нам нужна строка
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">InitInventoryMode</span><span class="pun">()</span></pre>

		<p>
			Это опять таблица, в нее (желательно в середину) нужно добавить вот это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">]-&gt;</span><span class="typ">Show</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
    m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">]-&gt;</span><span class="typ">Show</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span></pre>

		<p>
			<br />
			Теперь в таблице    
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln"> </span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> all_lists</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span></pre>

		<p>
			Добавляем через запятую следующее(желательно как изначально сделано) то есть вот это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">],</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">],</span></pre>

		<p>
			Добавить так, чтобы всё выглядело так(хотя это необязательно):
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBeltList</span><span class="pun">],</span><span class="pln"> 
m_pLists</span><span class="pun">[</span><span class="pln">eInventoryPistolList</span><span class="pun">],</span><span class="pln"> 
m_pLists</span><span class="pun">[</span><span class="pln">eInventoryAutomaticList</span><span class="pun">],</span><span class="pln"> 
m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">],</span><span class="pln"> 
m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">],</span><span class="pln">
m_pLists</span><span class="pun">[</span><span class="pln">eInventoryOutfitList</span><span class="pun">],</span><span class="pln"> 
m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">],</span><span class="pln"> 
m_pLists</span><span class="pun">[</span><span class="pln">eInventoryDetectorList</span><span class="pun">],</span><span class="pln"> 
m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBagList</span><span class="pun">],</span><span class="pln">
m_pLists</span><span class="pun">[</span><span class="pln">eTradeActorBagList</span><span class="pun">],</span><span class="pln"> 
m_pLists</span><span class="pun">[</span><span class="pln">eTradeActorList</span><span class="pun">]</span></pre>

		<p>
			<br />
			        <br />
			С еще одной таблицей мы покончили. Не беспокойтесь, их будет еще очень немножко много:)<br />
			И как я и обещал, нам нужно изменить еще одну таблицу. Ищем строку     if (onlyBagList)<br />
			Сразу после нее идёт список слотов:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">INV_SLOT2
INV_SLOT3</span></pre>

		<p>
			<br />
			И т.д. 
		</p>

		<p>
			Так сразу после них, нужно удалить следующие строки:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">SlotIsPersistent</span><span class="pun">(</span><span class="pln">KNIFE_SLOT</span><span class="pun">))</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">SlotIsPersistent</span><span class="pun">(</span><span class="pln">BINOCULAR_SLOT</span><span class="pun">))</span></pre>

		<p>
			Теперь меняем следующую таблицу, ее можно найти по такой строке:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">GetSlotList</span><span class="pun">(</span><span class="pln">u16 slot_idx</span><span class="pun">)</span></pre>

		<p>
			В ней нужно поменять:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">case</span><span class="pln"> KNIFE_SLOT</span><span class="pun">:</span><span class="pln">
</span><span class="kwd">case</span><span class="pln"> BINOCULAR_SLOT</span><span class="pun">:</span></pre>

		<p>
			На следующее:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">case</span><span class="pln"> KNIFE_SLOT</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">];</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">case</span><span class="pln"> BINOCULAR_SLOT</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">];</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">;</span></pre>

		<p>
			Со вторым файлом покончили. Теперь следующий, а именно     UIActorMenu.cpp<br />
			В начале мы добавим к инклудам следующие два файла:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"WeaponKnife.h"</span><span class="pln">

</span><span class="com">#include</span><span class="pln"> </span><span class="str">"WeaponBinocular.h"</span></pre>

		<p>
			<br />
			В таблицу
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln"> </span><span class="typ">EDDListType</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">GetListType</span><span class="pun">(</span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> l</span><span class="pun">)</span></pre>

		<p>
			<br />
			 <br />
			Добавляем следующее:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">l </span><span class="pun">==</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">])</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> iActorSlot</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">l </span><span class="pun">==</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">])</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> iActorSlot</span><span class="pun">;</span></pre>

		<p>
			<br />
			        <br />
			В таблицу
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="pln">clear_highlight_lists</span><span class="pun">()</span><span class="pln">

    m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
    m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">false</span><span class="pun">);</span></pre>

		<p>
			 
		</p>

		<p>
			В таблицу
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="pln">highlight_item_slot</span><span class="pun">(</span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> cell_item</span><span class="pun">)</span></pre>

		<p>
			Добавляем после 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">CWeapon</span><span class="pun">*</span><span class="pln"> weapon </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CWeapon</span><span class="pun">*&gt;(</span><span class="pln">item</span><span class="pun">);</span></pre>

		<p>
			Вот это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">CWeaponKnife</span><span class="pun">*</span><span class="pln"> knife </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CWeaponKnife</span><span class="pun">*&gt;(</span><span class="pln">item</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">CWeaponBinoculars</span><span class="pun">*</span><span class="pln"> binoculars </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CWeaponBinoculars</span><span class="pun">*&gt;(</span><span class="pln">item</span><span class="pun">);</span></pre>

		<p>
			Также после 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">weapon </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> INV_SLOT_2 </span><span class="pun">||</span><span class="pln"> slot_id </span><span class="pun">==</span><span class="pln"> INV_SLOT_3</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryPistolList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryAutomaticList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></pre>

		<p>
			Добавляем вот это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">knife </span><span class="pun">&amp;&amp;</span><span class="pln"> slot_id </span><span class="pun">==</span><span class="pln"> KNIFE_SLOT</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">binoculars </span><span class="pun">&amp;&amp;</span><span class="pln"> slot_id </span><span class="pun">==</span><span class="pln"> BINOCULAR_SLOT</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></pre>

		<p>
			<br />
			В таблицу
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">ClearAllLists</span><span class="pun">()</span></pre>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    m_pLists</span><span class="pun">[</span><span class="pln">eInventoryKnifeList</span><span class="pun">]-&gt;</span><span class="typ">ClearAll</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
    m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBinocularList</span><span class="pun">]-&gt;</span><span class="typ">ClearAll</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span></pre>

		<p>
			<br />
			    <br />
			Теперь в файле UIActorMenu.h добавим ссылки:<br />
			В таблицу 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">enum</span><span class="pln"> eActorMenuListType</span></pre>

		<p>
			Вот это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        eInventoryKnifeList</span><span class="pun">,</span><span class="pln">
        eInventoryBinocularList</span><span class="pun">,</span><span class="pln">    </span></pre>

		<p>
			Всё, можно собирать движок(если вы закончили). И когда вы его соберете мы приступим к самому UI. Сразу предупреждаю, я не учу вас рисовать, так что рисовать будете сами, я покажу только примерно, все UI вам нужно будет подгонять самим, под свой инвентарь. Для редактирования возьмём actor_menu.xml этот файл отвечает за разрешение 1024x768 вроде, а actor_menu_16.xml отвечает за широкоформат, в нём делаете практически точно так же как и в первом, в них будут различаться только координаты и на пару пикселей размер(если знакомы с UI то сами знаете).<br />
			Так, побазарили и хватит, приступим к редактированию:<br />
			После 
		</p>

		<pre class="ipsCode prettyprint lang-xml prettyprinted">

<span class="pln">    </span><span class="tag">&lt;detector_slot_highlight</span><span class="pln"> </span><span class="atn">x</span><span class="pun">=</span><span class="atv">"463"</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"330"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"96"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"48"</span><span class="pln"> </span><span class="atn">stretch</span><span class="pun">=</span><span class="atv">"1"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;texture&gt;</span><span class="pln">ui_inGame2_detector_highlighter</span><span class="tag">&lt;/texture&gt;</span><span class="pln">
    </span><span class="tag">&lt;/detector_slot_highlight&gt;</span></pre>

		<p>
			<br />
			Добавляем следующее(сделана на примере детектора, но работает просто чудесно)
		</p>

		<pre class="ipsCode prettyprint lang-html prettyprinted">

<span class="pln">    </span><span class="tag">&lt;knife_slot_highlight</span><span class="pln"> </span><span class="atn">x</span><span class="pun">=</span><span class="atv">"463"</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"350"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"96"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"48"</span><span class="pln"> </span><span class="atn">stretch</span><span class="pun">=</span><span class="atv">"1"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;texture&gt;</span><span class="pln">ui_inGame2_detector_highlighter</span><span class="tag">&lt;/texture&gt;</span><span class="pln">
    </span><span class="tag">&lt;/knife_slot_highlight&gt;</span><span class="pln">

    </span><span class="tag">&lt;binocular_slot_highlight</span><span class="pln"> </span><span class="atn">x</span><span class="pun">=</span><span class="atv">"463"</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"370"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"96"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"48"</span><span class="pln"> </span><span class="atn">stretch</span><span class="pun">=</span><span class="atv">"1"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;texture&gt;</span><span class="pln">ui_inGame2_detector_highlighter</span><span class="tag">&lt;/texture&gt;</span><span class="pln">
    </span><span class="tag">&lt;/binocular_slot_highlight&gt;</span></pre>

		<p>
			<br />
			Теперь после
		</p>

		<pre class="ipsCode prettyprint lang-xml prettyprinted">

<span class="pln">    </span><span class="tag">&lt;progess_bar_outfit</span><span class="pln"> </span><span class="atn">x</span><span class="pun">=</span><span class="atv">"484"</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"309"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"58"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"5"</span><span class="pln"> </span><span class="atn">horz</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">min</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">max</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">pos</span><span class="pun">=</span><span class="atv">"0"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;progress&gt;</span><span class="pln">
            </span><span class="tag">&lt;texture</span><span class="pln"> </span><span class="atn">r</span><span class="pun">=</span><span class="atv">"142"</span><span class="pln"> </span><span class="atn">g</span><span class="pun">=</span><span class="atv">"149"</span><span class="pln"> </span><span class="atn">b</span><span class="pun">=</span><span class="atv">"149"</span><span class="tag">&gt;</span><span class="pln">ui_inGame2_inventory_status_bar</span><span class="tag">&lt;/texture&gt;</span><span class="pln">
        </span><span class="tag">&lt;/progress&gt;</span><span class="pln">
        </span><span class="tag">&lt;min_color</span><span class="pln"> </span><span class="atn">r</span><span class="pun">=</span><span class="atv">"196"</span><span class="pln"> </span><span class="atn">g</span><span class="pun">=</span><span class="atv">"18"</span><span class="pln"> </span><span class="atn">b</span><span class="pun">=</span><span class="atv">"18"</span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;middle_color</span><span class="pln"> </span><span class="atn">r</span><span class="pun">=</span><span class="atv">"255"</span><span class="pln"> </span><span class="atn">g</span><span class="pun">=</span><span class="atv">"255"</span><span class="pln"> </span><span class="atn">b</span><span class="pun">=</span><span class="atv">"118"</span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;max_color</span><span class="pln"> </span><span class="atn">r</span><span class="pun">=</span><span class="atv">"107"</span><span class="pln"> </span><span class="atn">g</span><span class="pun">=</span><span class="atv">"207"</span><span class="pln"> </span><span class="atn">b</span><span class="pun">=</span><span class="atv">"119"</span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;/progess_bar_outfit&gt;</span></pre>

		<p>
			<br />
			Добавляем 
		</p>

		<pre class="ipsCode prettyprint lang-xml prettyprinted">

<span class="pln">    </span><span class="tag">&lt;progess_bar_knife</span><span class="pln"> </span><span class="atn">x</span><span class="pun">=</span><span class="atv">"484"</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"324"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"58"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"5"</span><span class="pln"> </span><span class="atn">horz</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">min</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">max</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">pos</span><span class="pun">=</span><span class="atv">"0"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;progress&gt;</span><span class="pln">
            </span><span class="tag">&lt;texture</span><span class="pln"> </span><span class="atn">r</span><span class="pun">=</span><span class="atv">"142"</span><span class="pln"> </span><span class="atn">g</span><span class="pun">=</span><span class="atv">"149"</span><span class="pln"> </span><span class="atn">b</span><span class="pun">=</span><span class="atv">"149"</span><span class="tag">&gt;</span><span class="pln">ui_inGame2_inventory_status_bar</span><span class="tag">&lt;/texture&gt;</span><span class="pln">
        </span><span class="tag">&lt;/progress&gt;</span><span class="pln">
        </span><span class="tag">&lt;min_color</span><span class="pln"> </span><span class="atn">r</span><span class="pun">=</span><span class="atv">"196"</span><span class="pln"> </span><span class="atn">g</span><span class="pun">=</span><span class="atv">"18"</span><span class="pln"> </span><span class="atn">b</span><span class="pun">=</span><span class="atv">"18"</span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;middle_color</span><span class="pln"> </span><span class="atn">r</span><span class="pun">=</span><span class="atv">"255"</span><span class="pln"> </span><span class="atn">g</span><span class="pun">=</span><span class="atv">"255"</span><span class="pln"> </span><span class="atn">b</span><span class="pun">=</span><span class="atv">"118"</span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;max_color</span><span class="pln"> </span><span class="atn">r</span><span class="pun">=</span><span class="atv">"107"</span><span class="pln"> </span><span class="atn">g</span><span class="pun">=</span><span class="atv">"207"</span><span class="pln"> </span><span class="atn">b</span><span class="pun">=</span><span class="atv">"119"</span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;/progess_bar_knife&gt;</span></pre>

		<p>
			<br />
			Также добавляем после
		</p>

		<pre class="ipsCode prettyprint lang-xml prettyprinted">

<span class="pln">    </span><span class="tag">&lt;dragdrop_detector</span><span class="pln"> </span><span class="atn">x</span><span class="pun">=</span><span class="atv">"458"</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"328"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"106"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"55"</span><span class="pln">
        </span><span class="atn">cell_width</span><span class="pun">=</span><span class="atv">"41"</span><span class="pln"> </span><span class="atn">cell_height</span><span class="pun">=</span><span class="atv">"41"</span><span class="pln"> </span><span class="atn">rows_num</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">cols_num</span><span class="pun">=</span><span class="atv">"2"</span><span class="pln">
        </span><span class="atn">custom_placement</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">a</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">virtual_cells</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">vc_vert_align</span><span class="pun">=</span><span class="atv">"c"</span><span class="pln">
        </span><span class="atn">vc_horiz_align</span><span class="pun">=</span><span class="atv">"c"</span><span class="tag">/&gt;</span></pre>

		<p>
			<br />
			Вот это вот
		</p>

		<pre class="ipsCode prettyprint lang-xml prettyprinted">

<span class="pln">    </span><span class="tag">&lt;dragdrop_knife</span><span class="pln"> </span><span class="atn">x</span><span class="pun">=</span><span class="atv">"458"</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"348"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"106"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"55"</span><span class="pln">
        </span><span class="atn">cell_width</span><span class="pun">=</span><span class="atv">"41"</span><span class="pln"> </span><span class="atn">cell_height</span><span class="pun">=</span><span class="atv">"41"</span><span class="pln"> </span><span class="atn">rows_num</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">cols_num</span><span class="pun">=</span><span class="atv">"2"</span><span class="pln">
        </span><span class="atn">custom_placement</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">a</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">virtual_cells</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">vc_vert_align</span><span class="pun">=</span><span class="atv">"c"</span><span class="pln">
        </span><span class="atn">vc_horiz_align</span><span class="pun">=</span><span class="atv">"c"</span><span class="tag">/&gt;</span><span class="pln">

    </span><span class="tag">&lt;dragdrop_binocular</span><span class="pln"> </span><span class="atn">x</span><span class="pun">=</span><span class="atv">"458"</span><span class="pln"> </span><span class="atn">y</span><span class="pun">=</span><span class="atv">"368"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"106"</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"55"</span><span class="pln">
        </span><span class="atn">cell_width</span><span class="pun">=</span><span class="atv">"41"</span><span class="pln"> </span><span class="atn">cell_height</span><span class="pun">=</span><span class="atv">"41"</span><span class="pln"> </span><span class="atn">rows_num</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">cols_num</span><span class="pun">=</span><span class="atv">"2"</span><span class="pln">
        </span><span class="atn">custom_placement</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">a</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">virtual_cells</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">vc_vert_align</span><span class="pun">=</span><span class="atv">"c"</span><span class="pln">
        </span><span class="atn">vc_horiz_align</span><span class="pun">=</span><span class="atv">"c"</span><span class="tag">/&gt;</span></pre>

		<p>
			Теперь в system.ltx исправим следующие строки:
		</p>

		<pre class="ipsCode">

slot_persistent_1   = true   ;knife
slot_active_1       = true</pre>

		<p>
			На вот это:
		</p>

		<pre class="ipsCode">

slot_persistent_1   = false   ;knife
slot_active_1       = true</pre>

		<p>
			Также это:
		</p>

		<pre class="ipsCode">

slot_persistent_5   = true   ;binocular
slot_active_5       = true</pre>

		<p>
			На это:
		</p>

		<pre class="ipsCode">

slot_persistent_5   = false   ;binocular
slot_active_5       = true</pre>

		<p>
			Вот пожалуй и всё. Но если у вас вдруг случился вылет, сразу же бежим кидать в меня тапком, чтобы я нашёл ошибку, а то я уже говорил, что пишу в два часа ночи, а это значит что я несу всякий бред. После того как сообщите свою ошибку(желательно с логом, а он ОБЯЗАТЕЛЬНО будет(если его нет, то вы накосячили где-то, где я не давал корректировку.))<br /><br />
			Автор данного урока: Doctor_Oz(Даниил Озол)
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Добавление доп. ячеек артефактов">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Первым делом изменим кол-во артефактов в самом рюкзаке. (смысла не ищите, его нет XD)
		</p>

		<p>
			<br />
			Откроем файл Inventory.cpp и найдём строчку 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">m_iMaxBelt </span><span class="pun">=</span><span class="pln"> pSettings</span><span class="pun">-&gt;</span><span class="pln">read_if_exists</span><span class="str">&lt;s32&gt;</span><span class="pun">(</span><span class="str">"inventory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"max_belt"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">);</span></pre>

		<p>
			Нам нужно изменить цифру(большую не ставьте, не рекомендую). Лично я уже изменил на 8(сначала была 5).
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">m_iMaxBelt </span><span class="pun">=</span><span class="pln"> pSettings</span><span class="pun">-&gt;</span><span class="pln">read_if_exists</span><span class="str">&lt;s32&gt;</span><span class="pun">(</span><span class="str">"inventory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"max_belt"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">);</span></pre>

		<p>
			<br />
			Так как мы изменили системное кол-во артефактов, нам надо изменить макс. кол-во ячеек которые могут быть открыты с помощью костюма.<br />
			Откроем файл CustomOutfit.cpp и найдём функцию:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CCustomOutfit</span><span class="pun">::</span><span class="typ">Load</span><span class="pun">(</span><span class="pln">LPCSTR section</span><span class="pun">)</span></pre>

		<p>
			В этой функции найдём строчку:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">clamp</span><span class="pun">(</span><span class="pln">m_artefact_count</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">u32</span><span class="pun">)</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">u32</span><span class="pun">)</span><span class="lit">5</span><span class="pun">);</span></pre>

		<p>
			И изменим на:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">clamp</span><span class="pun">(</span><span class="pln">m_artefact_count</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">u32</span><span class="pun">)</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">u32</span><span class="pun">)</span><span class="lit">8</span><span class="pun">);</span></pre>

		<p>
			<br />
			Так же в файле найдём функцию(да я знаю что переменная, но всё же):
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">bool</span><span class="pln"> </span><span class="typ">CCustomOutfit</span><span class="pun">::</span><span class="pln">install_upgrade_impl</span><span class="pun">(</span><span class="pln">LPCSTR section</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> test</span><span class="pun">)</span></pre>

		<p>
			А в ней найдём точно такую же строку и изменяем ее также:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">clamp</span><span class="pun">(</span><span class="pln">m_artefact_count</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">u32</span><span class="pun">)</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">u32</span><span class="pun">)</span><span class="lit">5</span><span class="pun">);</span></pre>

		<p>
			На:<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">clamp</span><span class="pun">(</span><span class="pln">m_artefact_count</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">u32</span><span class="pun">)</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">u32</span><span class="pun">)</span><span class="lit">8</span><span class="pun">);</span></pre>

		<p>
			Вот пожалуй и всё. Теперь вы можете просто изменить кол-во артефактов в outfit.ltx, UI и System.ltx также, как делали(если делали конечно, если нет то google в помощь).
		</p>

		<p>
			Автор данного урока: Doctor_Oz(Даниил Озол)
		</p>

		<p>
			Автор правки: Doctor_Oz(Даниил Озол)
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Как добавить щелчок при включении фонарика">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Под редакцию попадает два файла: <span style="color:#2ecc71;">Torch.cpp</span> и <span style="color:#2ecc71;">Torch.h</span><br /><br />
			Ну пожалуй приступим. Откроем файл Torch.cpp и если вы ничего там не редактировали ищем функцию на 76 строке
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CTorch</span><span class="pun">::</span><span class="typ">Load</span><span class="pun">(</span><span class="pln">LPCSTR section</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    inherited</span><span class="pun">::</span><span class="typ">Load</span><span class="pun">(</span><span class="pln">section</span><span class="pun">);</span><span class="pln">
    light_trace_bone </span><span class="pun">=</span><span class="pln"> pSettings</span><span class="pun">-&gt;</span><span class="pln">r_string</span><span class="pun">(</span><span class="pln">section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"light_trace_bone"</span><span class="pun">);</span><span class="pln">

    m_bNightVisionEnabled </span><span class="pun">=</span><span class="pln"> </span><span class="pun">!!</span><span class="pln">pSettings</span><span class="pun">-&gt;</span><span class="pln">r_bool</span><span class="pun">(</span><span class="pln">section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"night_vision"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Меняем её на:<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CTorch</span><span class="pun">::</span><span class="typ">Load</span><span class="pun">(</span><span class="pln">LPCSTR section</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    inherited</span><span class="pun">::</span><span class="typ">Load</span><span class="pun">(</span><span class="pln">section</span><span class="pun">);</span><span class="pln">
    light_trace_bone </span><span class="pun">=</span><span class="pln"> pSettings</span><span class="pun">-&gt;</span><span class="pln">r_string</span><span class="pun">(</span><span class="pln">section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"light_trace_bone"</span><span class="pun">);</span><span class="pln">

	m_light_section </span><span class="pun">=</span><span class="pln"> READ_IF_EXISTS</span><span class="pun">(</span><span class="pln">pSettings</span><span class="pun">,</span><span class="pln"> r_string</span><span class="pun">,</span><span class="pln"> section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"light_section"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"torch_definition"</span><span class="pun">);</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pSettings</span><span class="pun">-&gt;</span><span class="pln">line_exist</span><span class="pun">(</span><span class="pln">section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"snd_turn_on"</span><span class="pun">))</span><span class="pln">
		m_sounds</span><span class="pun">.</span><span class="typ">LoadSound</span><span class="pun">(</span><span class="pln">section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"snd_turn_on"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"sndTurnOn"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> SOUND_TYPE_ITEM_USING</span><span class="pun">);</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pSettings</span><span class="pun">-&gt;</span><span class="pln">line_exist</span><span class="pun">(</span><span class="pln">section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"snd_turn_off"</span><span class="pun">))</span><span class="pln">
		m_sounds</span><span class="pun">.</span><span class="typ">LoadSound</span><span class="pun">(</span><span class="pln">section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"snd_turn_off"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"sndTurnOff"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> SOUND_TYPE_ITEM_USING</span><span class="pun">);</span><span class="pln">

    m_bNightVisionEnabled </span><span class="pun">=</span><span class="pln"> </span><span class="pun">!!</span><span class="pln">pSettings</span><span class="pun">-&gt;</span><span class="pln">r_bool</span><span class="pun">(</span><span class="pln">section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"night_vision"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Теперь ищем функцию <span style="color:#c0392b;">void CTorch::Switch(bool light_on) </span>и дабы вам не заморачиваться(если вы конечно НЕ редактировали файл до этого) просто изменим её на это:<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CTorch</span><span class="pun">::</span><span class="typ">Switch</span><span class="pun">(</span><span class="kwd">bool</span><span class="pln"> light_on</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
	</span><span class="typ">CActor</span><span class="pun">*</span><span class="pln"> pActor </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CActor</span><span class="pun">*&gt;(</span><span class="pln">H_Parent</span><span class="pun">());</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pActor</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">{</span><span class="pln">
		</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">light_on </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">m_switched_on</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">{</span><span class="pln">
			</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_sounds</span><span class="pun">.</span><span class="typ">FindSoundItem</span><span class="pun">(</span><span class="str">"SndTurnOn"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">))</span><span class="pln">
				m_sounds</span><span class="pun">.</span><span class="typ">PlaySound</span><span class="pun">(</span><span class="str">"SndTurnOn"</span><span class="pun">,</span><span class="pln"> pActor</span><span class="pun">-&gt;</span><span class="typ">Position</span><span class="pun">(),</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> </span><span class="pun">!!</span><span class="pln">pActor</span><span class="pun">-&gt;</span><span class="typ">HUDview</span><span class="pun">());</span><span class="pln">
		</span><span class="pun">}</span><span class="pln">
		</span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">light_on </span><span class="pun">&amp;&amp;</span><span class="pln"> m_switched_on</span><span class="pun">)</span><span class="pln">
		</span><span class="pun">{</span><span class="pln">
			</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_sounds</span><span class="pun">.</span><span class="typ">FindSoundItem</span><span class="pun">(</span><span class="str">"SndTurnOff"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">))</span><span class="pln">
				m_sounds</span><span class="pun">.</span><span class="typ">PlaySound</span><span class="pun">(</span><span class="str">"SndTurnOff"</span><span class="pun">,</span><span class="pln"> pActor</span><span class="pun">-&gt;</span><span class="typ">Position</span><span class="pun">(),</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> </span><span class="pun">!!</span><span class="pln">pActor</span><span class="pun">-&gt;</span><span class="typ">HUDview</span><span class="pun">());</span><span class="pln">
		</span><span class="pun">}</span><span class="pln">
	</span><span class="pun">}</span><span class="pln">
	
    m_switched_on </span><span class="pun">=</span><span class="pln"> light_on</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">can_use_dynamic_lights</span><span class="pun">())</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        light_render</span><span class="pun">-&gt;</span><span class="pln">set_active</span><span class="pun">(</span><span class="pln">light_on</span><span class="pun">);</span><span class="pln">

        </span><span class="com">// CActor *pA = smart_cast&lt;CActor *&gt;(H_Parent());</span><span class="pln">
        </span><span class="com">// if(!pA)</span><span class="pln">
        light_omni</span><span class="pun">-&gt;</span><span class="pln">set_active</span><span class="pun">(</span><span class="pln">light_on</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    glow_render</span><span class="pun">-&gt;</span><span class="pln">set_active</span><span class="pun">(</span><span class="pln">light_on</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(*</span><span class="pln">light_trace_bone</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">IKinematics</span><span class="pun">*</span><span class="pln"> pVisual </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">IKinematics</span><span class="pun">*&gt;(</span><span class="typ">Visual</span><span class="pun">());</span><span class="pln">
        VERIFY</span><span class="pun">(</span><span class="pln">pVisual</span><span class="pun">);</span><span class="pln">
        u16 bi </span><span class="pun">=</span><span class="pln"> pVisual</span><span class="pun">-&gt;</span><span class="pln">LL_BoneID</span><span class="pun">(</span><span class="pln">light_trace_bone</span><span class="pun">);</span><span class="pln">

        pVisual</span><span class="pun">-&gt;</span><span class="pln">LL_SetBoneVisible</span><span class="pun">(</span><span class="pln">bi</span><span class="pun">,</span><span class="pln"> light_on</span><span class="pun">,</span><span class="pln"> TRUE</span><span class="pun">);</span><span class="pln">
        pVisual</span><span class="pun">-&gt;</span><span class="typ">CalculateBones</span><span class="pun">(</span><span class="pln">TRUE</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Также меняем функцию <span style="color:#c0392b;">bool CTorch::net_Spawn(CSE_Abstract* DC)</span> на это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">bool</span><span class="pln"> </span><span class="typ">CTorch</span><span class="pun">::</span><span class="pln">net_Spawn</span><span class="pun">(</span><span class="pln">CSE_Abstract</span><span class="pun">*</span><span class="pln"> DC</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    CSE_Abstract</span><span class="pun">*</span><span class="pln"> e </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">CSE_Abstract</span><span class="pun">*)(</span><span class="pln">DC</span><span class="pun">);</span><span class="pln">
    CSE_ALifeItemTorch</span><span class="pun">*</span><span class="pln"> torch </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="pln">CSE_ALifeItemTorch</span><span class="pun">*&gt;(</span><span class="pln">e</span><span class="pun">);</span><span class="pln">
    R_ASSERT</span><span class="pun">(</span><span class="pln">torch</span><span class="pun">);</span><span class="pln">
    cNameVisual_set</span><span class="pun">(</span><span class="pln">torch</span><span class="pun">-&gt;</span><span class="pln">get_visual</span><span class="pun">());</span><span class="pln">

    R_ASSERT</span><span class="pun">(!</span><span class="typ">GetCForm</span><span class="pun">());</span><span class="pln">
    R_ASSERT</span><span class="pun">(</span><span class="pln">smart_cast</span><span class="pun">&lt;</span><span class="typ">IKinematics</span><span class="pun">*&gt;(</span><span class="typ">Visual</span><span class="pun">()));</span><span class="pln">
    </span><span class="typ">CForm</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> xr_new</span><span class="pun">&lt;</span><span class="pln">CCF_Skeleton</span><span class="pun">&gt;(</span><span class="kwd">this</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">inherited</span><span class="pun">::</span><span class="pln">net_Spawn</span><span class="pun">(</span><span class="pln">DC</span><span class="pun">))</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">FALSE</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">bool</span><span class="pln"> b_r2 </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GEnv</span><span class="pun">.</span><span class="typ">Render</span><span class="pun">-&gt;</span><span class="typ">GenerationIsR2OrHigher</span><span class="pun">();</span><span class="pln">

    </span><span class="typ">IKinematics</span><span class="pun">*</span><span class="pln"> K </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">IKinematics</span><span class="pun">*&gt;(</span><span class="typ">Visual</span><span class="pun">());</span><span class="pln">
    </span><span class="typ">CInifile</span><span class="pun">*</span><span class="pln"> pUserData </span><span class="pun">=</span><span class="pln"> K</span><span class="pun">-&gt;</span><span class="pln">LL_UserData</span><span class="pun">();</span><span class="pln">
    R_ASSERT3</span><span class="pun">(</span><span class="pln">pUserData</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Empty Torch user data!"</span><span class="pun">,</span><span class="pln"> torch</span><span class="pun">-&gt;</span><span class="pln">get_visual</span><span class="pun">());</span><span class="pln">
	R_ASSERT2</span><span class="pun">(</span><span class="pln">pUserData</span><span class="pun">-&gt;</span><span class="pln">section_exist</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">),</span><span class="pln"> </span><span class="str">"Section not found in torch user data! Check 'light_section' field in config"</span><span class="pun">);</span><span class="pln">
	lanim </span><span class="pun">=</span><span class="pln"> </span><span class="typ">LALib</span><span class="pun">.</span><span class="typ">FindItem</span><span class="pun">(</span><span class="pln">pUserData</span><span class="pun">-&gt;</span><span class="pln">r_string</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"color_animator"</span><span class="pun">));</span><span class="pln">
	guid_bone </span><span class="pun">=</span><span class="pln"> K</span><span class="pun">-&gt;</span><span class="pln">LL_BoneID</span><span class="pun">(</span><span class="pln">pUserData</span><span class="pun">-&gt;</span><span class="pln">r_string</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"guide_bone"</span><span class="pun">));</span><span class="pln">
	VERIFY</span><span class="pun">(</span><span class="pln">guid_bone </span><span class="pun">!=</span><span class="pln"> BI_NONE</span><span class="pun">);</span><span class="pln">

	</span><span class="typ">Fcolor</span><span class="pln"> clr </span><span class="pun">=</span><span class="pln"> pUserData</span><span class="pun">-&gt;</span><span class="pln">r_fcolor</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">b_r2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">"color_r2"</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">"color"</span><span class="pun">);</span><span class="pln">
    fBrightness </span><span class="pun">=</span><span class="pln"> clr</span><span class="pun">.</span><span class="pln">intensity</span><span class="pun">();</span><span class="pln">
	</span><span class="typ">float</span><span class="pln"> range </span><span class="pun">=</span><span class="pln"> pUserData</span><span class="pun">-&gt;</span><span class="pln">r_float</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">b_r2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">"range_r2"</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">"range"</span><span class="pun">);</span><span class="pln">
    light_render</span><span class="pun">-&gt;</span><span class="pln">set_color</span><span class="pun">(</span><span class="pln">clr</span><span class="pun">);</span><span class="pln">
    light_render</span><span class="pun">-&gt;</span><span class="pln">set_range</span><span class="pun">(</span><span class="pln">range</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">b_r2</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">bool</span><span class="pln"> useVolumetric </span><span class="pun">=</span><span class="pln"> pUserData</span><span class="pun">-&gt;</span><span class="pln">read_if_exists</span><span class="str">&lt;bool&gt;</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"volumetric_enabled"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
        light_render</span><span class="pun">-&gt;</span><span class="pln">set_volumetric</span><span class="pun">(</span><span class="pln">useVolumetric</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">useVolumetric</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">float</span><span class="pln"> volQuality </span><span class="pun">=</span><span class="pln"> pUserData</span><span class="pun">-&gt;</span><span class="pln">read_if_exists</span><span class="str">&lt;float&gt;</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"volumetric_quality"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.f</span><span class="pun">);</span><span class="pln">
            clamp</span><span class="pun">(</span><span class="pln">volQuality</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.f</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.f</span><span class="pun">);</span><span class="pln">
            light_render</span><span class="pun">-&gt;</span><span class="pln">set_volumetric_quality</span><span class="pun">(</span><span class="pln">volQuality</span><span class="pun">);</span><span class="pln">

            </span><span class="typ">float</span><span class="pln"> volIntensity </span><span class="pun">=</span><span class="pln"> pUserData</span><span class="pun">-&gt;</span><span class="pln">read_if_exists</span><span class="str">&lt;float&gt;</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"volumetric_intensity"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.f</span><span class="pun">);</span><span class="pln">
            clamp</span><span class="pun">(</span><span class="pln">volIntensity</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.f</span><span class="pun">,</span><span class="pln"> </span><span class="lit">10.f</span><span class="pun">);</span><span class="pln">
            light_render</span><span class="pun">-&gt;</span><span class="pln">set_volumetric_intensity</span><span class="pun">(</span><span class="pln">volIntensity</span><span class="pun">);</span><span class="pln">

            </span><span class="typ">float</span><span class="pln"> volDistance </span><span class="pun">=</span><span class="pln"> pUserData</span><span class="pun">-&gt;</span><span class="pln">read_if_exists</span><span class="str">&lt;float&gt;</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"volumetric_distance"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.f</span><span class="pun">);</span><span class="pln">
            clamp</span><span class="pun">(</span><span class="pln">volDistance</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.f</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.f</span><span class="pun">);</span><span class="pln">
            light_render</span><span class="pun">-&gt;</span><span class="pln">set_volumetric_distance</span><span class="pun">(</span><span class="pln">volDistance</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

	</span><span class="typ">Fcolor</span><span class="pln"> clr_o </span><span class="pun">=</span><span class="pln"> pUserData</span><span class="pun">-&gt;</span><span class="pln">r_fcolor</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">b_r2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">"omni_color_r2"</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">"omni_color"</span><span class="pun">);</span><span class="pln">
	</span><span class="typ">float</span><span class="pln"> range_o </span><span class="pun">=</span><span class="pln"> pUserData</span><span class="pun">-&gt;</span><span class="pln">r_float</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">b_r2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="str">"omni_range_r2"</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="str">"omni_range"</span><span class="pun">);</span><span class="pln">
    light_omni</span><span class="pun">-&gt;</span><span class="pln">set_color</span><span class="pun">(</span><span class="pln">clr_o</span><span class="pun">);</span><span class="pln">
    light_omni</span><span class="pun">-&gt;</span><span class="pln">set_range</span><span class="pun">(</span><span class="pln">range_o</span><span class="pun">);</span><span class="pln">

	light_render</span><span class="pun">-&gt;</span><span class="pln">set_cone</span><span class="pun">(</span><span class="pln">deg2rad</span><span class="pun">(</span><span class="pln">pUserData</span><span class="pun">-&gt;</span><span class="pln">r_float</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"spot_angle"</span><span class="pun">)));</span><span class="pln">
	light_render</span><span class="pun">-&gt;</span><span class="pln">set_texture</span><span class="pun">(</span><span class="pln">READ_IF_EXISTS</span><span class="pun">(</span><span class="pln">pUserData</span><span class="pun">,</span><span class="pln">r_string</span><span class="pun">,</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"spot_texture"</span><span class="pun">,(</span><span class="lit">0</span><span class="pun">)));</span><span class="pln">

	glow_render</span><span class="pun">-&gt;</span><span class="pln">set_texture</span><span class="pun">(</span><span class="pln">pUserData</span><span class="pun">-&gt;</span><span class="pln">r_string</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"glow_texture"</span><span class="pun">));</span><span class="pln">
    glow_render</span><span class="pun">-&gt;</span><span class="pln">set_color</span><span class="pun">(</span><span class="pln">clr</span><span class="pun">);</span><span class="pln">
	glow_render</span><span class="pun">-&gt;</span><span class="pln">set_radius</span><span class="pun">(</span><span class="pln">pUserData</span><span class="pun">-&gt;</span><span class="pln">r_float</span><span class="pun">(</span><span class="pln">m_light_section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"glow_radius"</span><span class="pun">));</span><span class="pln">

    </span><span class="com">//включить/выключить фонарик</span><span class="pln">
    </span><span class="typ">Switch</span><span class="pun">(</span><span class="pln">torch</span><span class="pun">-&gt;</span><span class="pln">m_active</span><span class="pun">);</span><span class="pln">
    VERIFY</span><span class="pun">(!</span><span class="pln">torch</span><span class="pun">-&gt;</span><span class="pln">m_active </span><span class="pun">||</span><span class="pln"> </span><span class="pun">(</span><span class="pln">torch</span><span class="pun">-&gt;</span><span class="pln">ID_Parent </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">0xffff</span><span class="pun">));</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">torch</span><span class="pun">-&gt;</span><span class="pln">ID_Parent </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln">
        </span><span class="typ">SwitchNightVision</span><span class="pun">(</span><span class="pln">torch</span><span class="pun">-&gt;</span><span class="pln">m_nightvision_active</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
    </span><span class="com">// else</span><span class="pln">
    </span><span class="com">//	SwitchNightVision	(false, false);</span><span class="pln">

    m_delta_h </span><span class="pun">=</span><span class="pln"> PI_DIV_2 </span><span class="pun">-</span><span class="pln"> atan</span><span class="pun">((</span><span class="pln">range </span><span class="pun">*</span><span class="pln"> </span><span class="lit">0.5f</span><span class="pun">)</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> _abs</span><span class="pun">(</span><span class="pln">TORCH_OFFSET</span><span class="pun">.</span><span class="pln">x</span><span class="pun">));</span><span class="pln">

    </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">TRUE</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Последнее было добавлено не для звука, а потому что мы изменили TORCH_DEFINITION на m_light_section и теперь нам надо зарегистрировать этот самый m_light_section<br />
			Откроем файл Torch.h и сразу после     <span style="color:#c0392b;">Fvector m_focus; </span>добавим вот это:     <span style="color:#2ecc71;">shared_str m_light_section;</span><br />
			Чтобы получилось вот это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">float</span><span class="pln"> m_delta_h</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">Fvector2</span><span class="pln"> m_prev_hp</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">bool</span><span class="pln"> m_switched_on</span><span class="pun">;</span><span class="pln">
    ref_light light_render</span><span class="pun">;</span><span class="pln">
    ref_light light_omni</span><span class="pun">;</span><span class="pln">
    ref_glow glow_render</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">Fvector</span><span class="pln"> m_focus</span><span class="pun">;</span><span class="pln">
    shared_str m_light_section</span><span class="pun">;</span></pre>

		<p>
			Так же <a class="ipsAttachLink" contenteditable="false" data-fileext="zip" data-fileid="18303" href="https://ap-pro.ru/applications/core/interface/file/attachment.php?id=18303" rel="">torch.zip</a> в папку sounds закиньте звуки включения и выключения(изначально они одинаковые, но вы можете поменять на свои)<br /><br />
			Так же в файле где у вас хранится device_torch (изначально он находится в misc\items.ltx), в сам device_torch нужно добавить строки:<br />
			snd_turn_on                              = torch\ваше_название_звука_включения ;(тут писать без расширения .ogg)<br />
			snd_turn_off                             = torch\ваше_название_звука_выключения ;(тут писать без расширения .ogg)
		</p>

		<p>
			Автор данного урока: Doctor_Oz(Даниил Озол)
		</p>

		<p>
			Автор правки: На данный момент неизвестен, кроме ника на GitHub (revolucas), код был взят из открытого репозитория <a href="https://github.com/revolucas/CoC-Xray/commit/16c08641cb1bc7b08519e2033a4bb13a56712153" rel="external nofollow">Call of Chernobyl (ссылка на коммит)</a>
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Изменение надписи, при нажатии правой кнопкой мыши по используемому предмету (Типа &quot;Съесть&quot;, &quot;Выпить&quot; и т.д.) на любую произвольную">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Под редакторство попадает только один файл в движке и один в gamedat'e.<br />
			Сначала начнём с движка, откроем файл: <span style="color:#c0392b;">UIActorMenuInventory.cpp </span><br />
			И если он у вас уже отредактирован ищем функцию: <span style="color:#27ae60;">void CUIActorMenu::PropertiesBoxForUsing(PIItem item, bool&amp; b_show)</span><br />
			А в ней вот эти строки:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">			</span><span class="com">// XXX: Xottab_DUTY: remove this..</span><span class="pln">
			</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">xr_strcmp</span><span class="pun">(</span><span class="pln">section_name</span><span class="pun">,</span><span class="pln"> </span><span class="str">"vodka"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="pun">!</span><span class="pln">xr_strcmp</span><span class="pun">(</span><span class="pln">section_name</span><span class="pun">,</span><span class="pln"> </span><span class="str">"energy_drink"</span><span class="pun">))</span><span class="pln">
				act_str </span><span class="pun">=</span><span class="pln"> </span><span class="str">"st_drink"</span><span class="pun">;</span><span class="pln">
			</span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">xr_strcmp</span><span class="pun">(</span><span class="pln">section_name</span><span class="pun">,</span><span class="pln"> </span><span class="str">"bread"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="pun">!</span><span class="pln">xr_strcmp</span><span class="pun">(</span><span class="pln">section_name</span><span class="pun">,</span><span class="pln"> </span><span class="str">"kolbasa"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> </span><span class="pun">!</span><span class="pln">xr_strcmp</span><span class="pun">(</span><span class="pln">
				section_name</span><span class="pun">,</span><span class="pln"> </span><span class="str">"conserva"</span><span class="pun">))</span><span class="pln">
				act_str </span><span class="pun">=</span><span class="pln"> </span><span class="str">"st_eat"</span><span class="pun">;</span><span class="pln">
			</span><span class="kwd">else</span><span class="pln">
				act_str </span><span class="pun">=</span><span class="pln"> </span><span class="str">"st_use"</span><span class="pun">;</span></pre>

		<p>
			И заменяем их полностью на:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        act_str </span><span class="pun">=</span><span class="pln"> READ_IF_EXISTS</span><span class="pun">(</span><span class="pln">pSettings</span><span class="pun">,</span><span class="pln"> r_string</span><span class="pun">,</span><span class="pln"> section_name</span><span class="pun">,</span><span class="pln"> </span><span class="str">"use_caption"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"st_use"</span><span class="pun">);</span></pre>

		<p>
			Теперь при использовании ЛЮБОГО предмета, будет высвечиваться надпись "Использовать"<br />
			Дабы её изменить, достаточно в секции нужно предмета указать:<br />
			use_caption = st_ваш_id_текста<br />
			Главное не забудьте локализировать эту надпись, иначе вы будете видеть надпись "st_ваш_id_текста"
		</p>

		<p>
			Автор данного урока: Doctor_Oz(Даниил Озол)
		</p>

		<p>
			Автор правки: Suhar_ (Lex_Addon)
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Урок по добавлению РЮКЗАКА">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Итак, долгожданный урок по добавлению рюкзака. Распинаться не будем, сразу приступим. В xrGame создайте фильтр (нажмите на какую нибудь папку, я выбрал xrGame/core/client/objects/item&amp;weapons/) и назовите его Backpack. В нём создайте новый элемент. При создании высветиться список и в нём нужно выбрать .cpp . Снизу надо ввести название ActorBackpack.cpp. Точно таким же образом создаём файл .h название отличается тем что вместо .cpp нужно вписать .h. 
		</p>

		<p>
			После того как мы их создали начнём редактирование их. Сначала откроем ActorBackpack.h, выделим всё в нём комбинацией клавиш ctrl + a и в него впишем это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#pragma</span><span class="pln"> once

</span><span class="com">#include</span><span class="pln"> </span><span class="str">"inventory_item_object.h"</span><span class="pln">

</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">CBackpack</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="typ">CInventoryItemObject</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">private</span><span class="pun">:</span><span class="pln">
	</span><span class="kwd">typedef</span><span class="pln">	</span><span class="typ">CInventoryItemObject</span><span class="pln"> inherited</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">public</span><span class="pun">:</span><span class="pln">
	</span><span class="typ">CBackpack</span><span class="pun">();</span><span class="pln">
	</span><span class="kwd">virtual</span><span class="pln">					</span><span class="pun">~</span><span class="typ">CBackpack</span><span class="pun">();</span><span class="pln">

	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln">			</span><span class="typ">Load</span><span class="pun">(</span><span class="pln">LPCSTR section</span><span class="pun">);</span><span class="pln">

	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln">			</span><span class="typ">Hit</span><span class="pun">(</span><span class="typ">float</span><span class="pln"> P</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ALife</span><span class="pun">::</span><span class="typ">EHitType</span><span class="pln"> hit_type</span><span class="pun">);</span><span class="pln">

	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln">			</span><span class="typ">OnMoveToSlot</span><span class="pun">(</span><span class="kwd">const</span><span class="pln"> </span><span class="typ">SInvItemPlace</span><span class="pun">&amp;</span><span class="pln"> prev</span><span class="pun">);</span><span class="pln">
	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln">			</span><span class="typ">OnMoveToRuck</span><span class="pun">(</span><span class="kwd">const</span><span class="pln"> </span><span class="typ">SInvItemPlace</span><span class="pun">&amp;</span><span class="pln"> previous_place</span><span class="pun">);</span><span class="pln">
	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln">			</span><span class="typ">OnH_A_Chield</span><span class="pun">();</span><span class="pln">

</span><span class="kwd">public</span><span class="pun">:</span><span class="pln">
	</span><span class="typ">float</span><span class="pln">					m_additional_weight</span><span class="pun">;</span><span class="pln">
	</span><span class="typ">float</span><span class="pln">					m_additional_weight2</span><span class="pun">;</span><span class="pln">
	</span><span class="typ">float</span><span class="pln">					m_fPowerRestoreSpeed</span><span class="pun">;</span><span class="pln">
	</span><span class="typ">float</span><span class="pln">					m_fPowerLoss</span><span class="pun">;</span><span class="pln">

	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln">            net_Spawn</span><span class="pun">(</span><span class="pln">CSE_Abstract</span><span class="pun">*</span><span class="pln"> DC</span><span class="pun">);</span><span class="pln">
	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln">			net_Export</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">);</span><span class="pln">
	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln">			net_Import</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">);</span><span class="pln">
	
</span><span class="kwd">protected</span><span class="pun">:</span><span class="pln">
	</span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln">			install_upgrade_impl</span><span class="pun">(</span><span class="pln">LPCSTR section</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> test</span><span class="pun">);</span><span class="pln">
</span><span class="pun">};</span><span class="pln"> </span></pre>

		<p>
			Теперь открывает ActorBackpack.cpp и туда вписываем:
		</p>

		<pre class="ipsCode prettyprint lang-html prettyprinted">

<span class="pln">#include "stdafx.h"
#include "ActorBackpack.h"
#include "Actor.h"
#include "Inventory.h"

CBackpack::CBackpack()
{
	m_flags.set(FUsingCondition, FALSE);
}

CBackpack::~CBackpack()
{

}

void CBackpack::Load(LPCSTR section)
{
	inherited::Load(section);

	m_additional_weight = pSettings-&gt;r_float(section, "additional_inventory_weight");
	m_additional_weight2 = pSettings-&gt;r_float(section, "additional_inventory_weight2");
	m_fPowerRestoreSpeed = READ_IF_EXISTS(pSettings, r_float, section, "power_restore_speed", 0.0f);
	m_fPowerLoss = READ_IF_EXISTS(pSettings, r_float, section, "power_loss", 1.0f);
	clamp(m_fPowerLoss, EPS, 1.0f);

	m_flags.set(FUsingCondition, READ_IF_EXISTS(pSettings, r_bool, section, "use_condition", TRUE));
}

bool CBackpack::net_Spawn(CSE_Abstract* DC)
{
	return inherited::net_Spawn(DC);
}

void CBackpack::net_Export(NET_Packet&amp; P)
{
	inherited::net_Export(P);
	P.w_float_q8(GetCondition(), 0.0f, 1.0f);
}

void CBackpack::net_Import(NET_Packet&amp; P)
{
	inherited::net_Import(P);
	float _cond;
	P.r_float_q8(_cond, 0.0f, 1.0f);
	SetCondition(_cond);
}

void CBackpack::OnH_A_Chield()
{
	inherited::OnH_A_Chield();
}

void CBackpack::OnMoveToSlot(const SInvItemPlace&amp; previous_place)
{
	inherited::OnMoveToSlot(previous_place);
}

void CBackpack::OnMoveToRuck(const SInvItemPlace&amp; previous_place)
{
	inherited::OnMoveToRuck(previous_place);
}

void CBackpack::Hit(float hit_power, ALife::EHitType hit_type)
{
	if (IsUsingCondition() == false) return;
	hit_power *= GetHitImmunity(hit_type);
	ChangeCondition(-hit_power);
} 

bool CBackpack::install_upgrade_impl(LPCSTR section, bool test)
{
	bool result = inherited::install_upgrade_impl(section, test);

	result |= process_if_exists(section, "power_restore_speed", &amp;CInifile::r_float, m_fPowerRestoreSpeed, test);
	result |= process_if_exists(section, "power_loss", &amp;CInifile::r_float, m_fPowerLoss, test);
	clamp(m_fPowerLoss, 0.0f, 1.0f);

	result |= process_if_exists(section, "additional_inventory_weight", &amp;CInifile::r_float, m_additional_weight, test);
	result |= process_if_exists(section, "additional_inventory_weight2", &amp;CInifile::r_float, m_additional_weight2, test);

	return result;
} </span></pre>

		<p>
			Всё, эти файлы можно закрывать. Их трогать будем в случае если вам понадобится добавить  какую то функцию в рюкзак по типу ЗСД(замкнутой системы дыхания, то есть попросту сделать кислородный баллон). Теперь займёмся функцией добавление переносимого веса. Откроем Actor_Movement.cpp и ищем функцию:<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CActor</span><span class="pun">::</span><span class="pln">get_additional_weight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">float</span><span class="pln"> res </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0f</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> outfit </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        res </span><span class="pun">+=</span><span class="pln"> outfit</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="typ">TIItemContainer</span><span class="pun">::</span><span class="typ">const_iterator</span><span class="pln"> it </span><span class="pun">=</span><span class="pln"> inventory</span><span class="pun">().</span><span class="pln">m_belt</span><span class="pun">.</span><span class="pln">begin</span><span class="pun">();</span><span class="pln"> inventory</span><span class="pun">().</span><span class="pln">m_belt</span><span class="pun">.</span><span class="pln">end</span><span class="pun">()</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> it</span><span class="pun">;</span><span class="pln"> </span><span class="pun">++</span><span class="pln">it</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CArtefact</span><span class="pun">*</span><span class="pln"> artefact </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CArtefact</span><span class="pun">*&gt;(*</span><span class="pln">it</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">artefact</span><span class="pun">)</span><span class="pln">
            res </span><span class="pun">+=</span><span class="pln"> artefact</span><span class="pun">-&gt;</span><span class="typ">AdditionalInventoryWeight</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">return</span><span class="pln"> res</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Сначала перед ней есть 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"Artefact.h"</span></pre>

		<p>
			После неё добавим, но не в функции 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			Теперь меняем саму функцию на это:<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CActor</span><span class="pun">::</span><span class="pln">get_additional_weight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">float</span><span class="pln"> res </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0f</span><span class="pun">;</span><span class="pln">
    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> outfit </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        res </span><span class="pun">+=</span><span class="pln"> outfit</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

	</span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">BACKPACK_SLOT</span><span class="pun">));</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln">
		res </span><span class="pun">+=</span><span class="pln"> pBackpack</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="typ">TIItemContainer</span><span class="pun">::</span><span class="typ">const_iterator</span><span class="pln"> it </span><span class="pun">=</span><span class="pln"> inventory</span><span class="pun">().</span><span class="pln">m_belt</span><span class="pun">.</span><span class="pln">begin</span><span class="pun">();</span><span class="pln"> inventory</span><span class="pun">().</span><span class="pln">m_belt</span><span class="pun">.</span><span class="pln">end</span><span class="pun">()</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> it</span><span class="pun">;</span><span class="pln"> </span><span class="pun">++</span><span class="pln">it</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CArtefact</span><span class="pun">*</span><span class="pln"> artefact </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CArtefact</span><span class="pun">*&gt;(*</span><span class="pln">it</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">artefact</span><span class="pun">)</span><span class="pln">
            res </span><span class="pun">+=</span><span class="pln"> artefact</span><span class="pun">-&gt;</span><span class="typ">AdditionalInventoryWeight</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">return</span><span class="pln"> res</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Всё с этим файлом закончили. Теперь идём в следующий CustomOutfit.cpp. Мы его редактируем чтобы можно было сделать возможность закрыть слот, например в том же экзоскелете. Сразу после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorHelmet.h"</span></pre>

		<p>
			Добавим 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			Теперь после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    bIsHelmetAvaliable </span><span class="pun">=</span><span class="pln"> </span><span class="pun">!!</span><span class="pln">READ_IF_EXISTS</span><span class="pun">(</span><span class="pln">pSettings</span><span class="pun">,</span><span class="pln"> r_bool</span><span class="pun">,</span><span class="pln"> section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"helmet_avaliable"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></pre>

		<p>
			Добавим:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    bIsBackpackAvaliable </span><span class="pun">=</span><span class="pln"> </span><span class="pun">!!</span><span class="pln">READ_IF_EXISTS</span><span class="pun">(</span><span class="pln">pSettings</span><span class="pun">,</span><span class="pln"> r_bool</span><span class="pun">,</span><span class="pln"> section</span><span class="pun">,</span><span class="pln"> </span><span class="str">"backpack_avaliable"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></pre>

		<p>
			Теперь ищем функцию 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CCustomOutfit</span><span class="pun">::</span><span class="typ">OnMoveToSlot</span><span class="pun">(</span><span class="kwd">const</span><span class="pln"> </span><span class="typ">SInvItemPlace</span><span class="pun">&amp;</span><span class="pln"> prev</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pInventory</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CActor</span><span class="pun">*</span><span class="pln"> pActor </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CActor</span><span class="pun">*&gt;(</span><span class="pln">H_Parent</span><span class="pun">());</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pActor</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">ApplySkinModel</span><span class="pun">(</span><span class="pln">pActor</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">prev</span><span class="pun">.</span><span class="pln">type </span><span class="pun">==</span><span class="pln"> eItemPlaceSlot </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="typ">CTorch</span><span class="pun">*</span><span class="pln"> pTorch </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CTorch</span><span class="pun">*&gt;(</span><span class="pln">pActor</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">TORCH_SLOT</span><span class="pun">));</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pTorch </span><span class="pun">&amp;&amp;</span><span class="pln"> pTorch</span><span class="pun">-&gt;</span><span class="typ">GetNightVisionStatus</span><span class="pun">())</span><span class="pln">
                    pTorch</span><span class="pun">-&gt;</span><span class="typ">SwitchNightVision</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="typ">PIItem</span><span class="pln"> pHelmet </span><span class="pun">=</span><span class="pln"> pActor</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">HELMET_SLOT</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pHelmet </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">)</span><span class="pln">
                pActor</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">Ruck</span><span class="pun">(</span><span class="pln">pHelmet</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">

        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			И меняем на это:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CCustomOutfit</span><span class="pun">::</span><span class="typ">OnMoveToSlot</span><span class="pun">(</span><span class="kwd">const</span><span class="pln"> </span><span class="typ">SInvItemPlace</span><span class="pun">&amp;</span><span class="pln"> prev</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pInventory</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CActor</span><span class="pun">*</span><span class="pln"> pActor </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CActor</span><span class="pun">*&gt;(</span><span class="pln">H_Parent</span><span class="pun">());</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pActor</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">ApplySkinModel</span><span class="pun">(</span><span class="pln">pActor</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">prev</span><span class="pun">.</span><span class="pln">type </span><span class="pun">==</span><span class="pln"> eItemPlaceSlot </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="typ">CTorch</span><span class="pun">*</span><span class="pln"> pTorch </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CTorch</span><span class="pun">*&gt;(</span><span class="pln">pActor</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">TORCH_SLOT</span><span class="pun">));</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pTorch </span><span class="pun">&amp;&amp;</span><span class="pln"> pTorch</span><span class="pun">-&gt;</span><span class="typ">GetNightVisionStatus</span><span class="pun">())</span><span class="pln">
                    pTorch</span><span class="pun">-&gt;</span><span class="typ">SwitchNightVision</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="typ">PIItem</span><span class="pln"> pHelmet </span><span class="pun">=</span><span class="pln"> pActor</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">HELMET_SLOT</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pHelmet </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">)</span><span class="pln">
                pActor</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">Ruck</span><span class="pun">(</span><span class="pln">pHelmet</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
			
            </span><span class="typ">PIItem</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> pActor</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">BACKPACK_SLOT</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">bIsBackpackAvaliable</span><span class="pun">)</span><span class="pln">
                pActor</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">Ruck</span><span class="pun">(</span><span class="pln">pBackpack</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Дальше идём в CustomOutfit.h и после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">bool</span><span class="pln"> bIsHelmetAvaliable</span><span class="pun">;</span></pre>

		<p>
			Добавить
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">bool</span><span class="pln"> bIsBackpackAvaliable</span><span class="pun">;</span></pre>

		<p>
			Теперь идём в Inventory.cpp и вместо
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">false</span><span class="pln"> </span><span class="com">// helmet</span></pre>

		<p>
			Ставим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> </span><span class="com">// helmet</span><span class="pln">
    </span><span class="kwd">false</span><span class="pln"> </span><span class="com">// backpack</span></pre>

		<p>
			Теперь в функции 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">bool</span><span class="pln"> </span><span class="typ">CInventory</span><span class="pun">::</span><span class="typ">CanPutInSlot</span><span class="pun">(</span><span class="typ">PIItem</span><span class="pln"> pIItem</span><span class="pun">,</span><span class="pln"> u16 slot_id</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">const</span></pre>

		<p>
			Сразу после 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> HELMET_SLOT</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> pOutfit </span><span class="pun">=</span><span class="pln"> m_pOwner</span><span class="pun">-&gt;</span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pOutfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pOutfit</span><span class="pun">-&gt;</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></pre>

		<p>
			Добавим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> BACKPACK_SLOT</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> pOutfit </span><span class="pun">=</span><span class="pln"> m_pOwner</span><span class="pun">-&gt;</span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pOutfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pOutfit</span><span class="pun">-&gt;</span><span class="pln">bIsBackpackAvaliable</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></pre>

		<p>
			Всё. Теперь идём в EntityConditions.cpp. Сразу после <br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorHelmet.h"</span></pre>

		<p>
			Добавим 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			Теперь ищем функцию
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CEntityCondition</span><span class="pun">::</span><span class="typ">HitPowerEffect</span><span class="pun">(</span><span class="typ">float</span><span class="pln"> power_loss</span><span class="pun">)</span></pre>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CEntityCondition</span><span class="pun">::</span><span class="typ">HitPowerEffect</span><span class="pun">(</span><span class="typ">float</span><span class="pln"> power_loss</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">CInventoryOwner</span><span class="pun">*</span><span class="pln"> pInvOwner </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CInventoryOwner</span><span class="pun">*&gt;(</span><span class="pln">m_object</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">pInvOwner</span><span class="pun">)</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> power_loss</span><span class="pun">;</span><span class="pln">

    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> pOutfit </span><span class="pun">=</span><span class="pln"> pInvOwner</span><span class="pun">-&gt;</span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
	</span><span class="typ">CHelmet</span><span class="pun">*</span><span class="pln"> pHelmet </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">CHelmet</span><span class="pun">*)</span><span class="pln">pInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">HELMET_SLOT</span><span class="pun">);</span><span class="pln">
	</span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">CBackpack</span><span class="pun">*)</span><span class="pln">pInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">BACKPACK_SLOT</span><span class="pun">);</span><span class="pln">

	</span><span class="kwd">return</span><span class="pln"> power_loss </span><span class="pun">*</span><span class="pln"> </span><span class="pun">(</span><span class="lit">0.5f</span><span class="pln"> </span><span class="pun">+(</span><span class="pln">pOutfit</span><span class="pun">?</span><span class="pln">pOutfit</span><span class="pun">-&gt;</span><span class="pln">m_fPowerLoss</span><span class="pun">:</span><span class="pln">EPS</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pHelmet</span><span class="pun">?</span><span class="pln">pHelmet</span><span class="pun">-&gt;</span><span class="pln">m_fPowerLoss</span><span class="pun">:</span><span class="pln">EPS</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack</span><span class="pun">?</span><span class="pln">pBackpack</span><span class="pun">-&gt;</span><span class="pln">m_fPowerLoss</span><span class="pun">:</span><span class="pln">EPS</span><span class="pun">));</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			С очередным файлом закончили. Теперь открываем файл InventoryOwner.cpp и ПЕРЕД этим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CInventoryOwner</span><span class="pun">::</span><span class="typ">MaxCarryWeight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span></pre>

		<p>
			Добавляем
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			И теперь меняем всю функцию 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CInventoryOwner</span><span class="pun">::</span><span class="typ">MaxCarryWeight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span></pre>

		<p>
			На
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CInventoryOwner</span><span class="pun">::</span><span class="typ">MaxCarryWeight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">float</span><span class="pln"> ret </span><span class="pun">=</span><span class="pln"> inventory</span><span class="pun">().</span><span class="typ">GetMaxWeight</span><span class="pun">();</span><span class="pln">

    </span><span class="kwd">const</span><span class="pln"> </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> outfit </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">)</span><span class="pln">
        ret </span><span class="pun">+=</span><span class="pln"> outfit</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight2</span><span class="pun">;</span><span class="pln">

	</span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">BACKPACK_SLOT</span><span class="pun">));</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln">
		ret </span><span class="pun">+=</span><span class="pln"> pBackpack</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight2</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">return</span><span class="pln"> ret</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Теперь переходим в script_game_object_inventory_owner.cpp<br />
			И после 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"PhysicObject.h"</span></pre>

		<p>
			Добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			Теперь займёмся заменой функций(если что функцией считается не только строка но и всё что в таких скобках {...} после неё):<br />
			Заменим это
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CScriptGameObject</span><span class="pun">::</span><span class="typ">GetAdditionalMaxWeight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span></pre>

		<p>
			На это
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CScriptGameObject</span><span class="pun">::</span><span class="typ">GetAdditionalMaxWeight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> outfit </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomOutfit</span><span class="pun">*&gt;(&amp;</span><span class="pln">object</span><span class="pun">());</span><span class="pln">
	</span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(&amp;</span><span class="pln">object</span><span class="pun">());</span><span class="pln">
	</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">outfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">GEnv</span><span class="pun">.</span><span class="typ">ScriptEngine</span><span class="pun">-&gt;</span><span class="pln">script_log</span><span class="pun">(</span><span class="typ">LuaMessageType</span><span class="pun">::</span><span class="typ">Error</span><span class="pun">,</span><span class="pln">
                                        </span><span class="str">"CCustomOutfit : cannot access class member GetAdditionalMaxWeight!"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">)</span><span class="pln">
		</span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight2</span><span class="pun">);</span><span class="pln">

	</span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight2</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Теперь это 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CScriptGameObject</span><span class="pun">::</span><span class="typ">GetAdditionalMaxWalkWeight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span></pre>

		<p>
			На это
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">float</span><span class="pln"> </span><span class="typ">CScriptGameObject</span><span class="pun">::</span><span class="typ">GetAdditionalMaxWalkWeight</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">const</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> outfit </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomOutfit</span><span class="pun">*&gt;(&amp;</span><span class="pln">object</span><span class="pun">());</span><span class="pln">
	</span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(&amp;</span><span class="pln">object</span><span class="pun">());</span><span class="pln">
	</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">outfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">GEnv</span><span class="pun">.</span><span class="typ">ScriptEngine</span><span class="pun">-&gt;</span><span class="pln">script_log</span><span class="pun">(</span><span class="typ">LuaMessageType</span><span class="pun">::</span><span class="typ">Error</span><span class="pun">,</span><span class="pln">
                                        </span><span class="str">"CCustomOutfit : cannot access class member GetAdditionalMaxWalkWeight!"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">)</span><span class="pln">
		</span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight</span><span class="pun">);</span><span class="pln">

	</span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Дальше это
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CScriptGameObject</span><span class="pun">::</span><span class="typ">SetAdditionalMaxWeight</span><span class="pun">(</span><span class="typ">float</span><span class="pln"> add_max_weight</span><span class="pun">)</span></pre>

		<p>
			На это
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CScriptGameObject</span><span class="pun">::</span><span class="typ">SetAdditionalMaxWeight</span><span class="pun">(</span><span class="typ">float</span><span class="pln"> add_max_weight</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> outfit </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomOutfit</span><span class="pun">*&gt;(&amp;</span><span class="pln">object</span><span class="pun">());</span><span class="pln">
	</span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(&amp;</span><span class="pln">object</span><span class="pun">());</span><span class="pln">
	</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">outfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">GEnv</span><span class="pun">.</span><span class="typ">ScriptEngine</span><span class="pun">-&gt;</span><span class="pln">script_log</span><span class="pun">(</span><span class="typ">LuaMessageType</span><span class="pun">::</span><span class="typ">Error</span><span class="pun">,</span><span class="pln">
                                        </span><span class="str">"CCustomOutfit : cannot access class member SetAdditionalMaxWeight!"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">)</span><span class="pln">
		outfit</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight2 </span><span class="pun">=</span><span class="pln"> add_max_weight</span><span class="pun">;</span><span class="pln">

	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln">
		pBackpack</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight2 </span><span class="pun">=</span><span class="pln"> add_max_weight</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Теперь это
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CScriptGameObject</span><span class="pun">::</span><span class="typ">SetAdditionalMaxWalkWeight</span><span class="pun">(</span><span class="typ">float</span><span class="pln"> add_max_walk_weight</span><span class="pun">)</span></pre>

		<p>
			На это
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CScriptGameObject</span><span class="pun">::</span><span class="typ">SetAdditionalMaxWalkWeight</span><span class="pun">(</span><span class="typ">float</span><span class="pln"> add_max_walk_weight</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> outfit </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomOutfit</span><span class="pun">*&gt;(&amp;</span><span class="pln">object</span><span class="pun">());</span><span class="pln">
	</span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(&amp;</span><span class="pln">object</span><span class="pun">());</span><span class="pln">
	</span><span class="kwd">if</span><span class="pun">(!</span><span class="pln">outfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">GEnv</span><span class="pun">.</span><span class="typ">ScriptEngine</span><span class="pun">-&gt;</span><span class="pln">script_log</span><span class="pun">(</span><span class="typ">LuaMessageType</span><span class="pun">::</span><span class="typ">Error</span><span class="pun">,</span><span class="pln">
                                        </span><span class="str">"CCustomOutfit : cannot access class member SetAdditionalMaxWalkWeight!"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit</span><span class="pun">)</span><span class="pln">
		outfit</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight </span><span class="pun">=</span><span class="pln"> add_max_walk_weight</span><span class="pun">;</span><span class="pln">

	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln">
		pBackpack</span><span class="pun">-&gt;</span><span class="pln">m_additional_weight </span><span class="pun">=</span><span class="pln"> add_max_walk_weight</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Всё, теперь займёмся UI составляющей
		</p>

		<p>
			Откроем UIActorMenu.h и после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        eInventoryHelmetList</span><span class="pun">,</span></pre>

		<p>
			Добавить:
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        eInventoryBackpackList</span><span class="pun">,</span></pre>

		<p>
			<br />
			Открываем UIActorMenu.cpp и сразу после<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorHelmet.h"</span></pre>

		<p>
			Добавим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			Теперь в функцию
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">EDDListType</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">GetListType</span><span class="pun">(</span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> l</span><span class="pun">)</span></pre>

		<p>
			Сразу после 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">l </span><span class="pun">==</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">nullptr</span><span class="pun">)</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> iActorSlot</span><span class="pun">;</span></pre>

		<p>
			Добавим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">l </span><span class="pun">==</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="kwd">nullptr</span><span class="pun">)</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> iActorSlot</span><span class="pun">;</span></pre>

		<p>
			Теперь в функции
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="pln">clear_highlight_lists</span><span class="pun">()</span></pre>

		<p>
			Сразу после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">])</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">false</span><span class="pun">);</span></pre>

		<p>
			Добавим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">])</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">false</span><span class="pun">);</span></pre>

		<p>
			В функции 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="pln">highlight_item_slot</span><span class="pun">(</span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> cell_item</span><span class="pun">)</span></pre>

		<p>
			Сразу после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">CHelmet</span><span class="pun">*</span><span class="pln"> helmet </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CHelmet</span><span class="pun">*&gt;(</span><span class="pln">item</span><span class="pun">);</span></pre>

		<p>
			Добавим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> backpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(</span><span class="pln">item</span><span class="pun">);</span></pre>

		<p>
			Дальше после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">helmet </span><span class="pun">&amp;&amp;</span><span class="pln"> slot_id </span><span class="pun">==</span><span class="pln"> HELMET_SLOT</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">])</span><span class="pln">
            m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></pre>

		<p>
			Добавим<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">backpack </span><span class="pun">&amp;&amp;</span><span class="pln"> slot_id </span><span class="pun">==</span><span class="pln"> BACKPACK_SLOT</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">])</span><span class="pln">
            m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]-&gt;</span><span class="typ">Highlight</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></pre>

		<p>
			Дальше в функции
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">ClearAllLists</span><span class="pun">()</span></pre>

		<p>
			После
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">])</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]-&gt;</span><span class="typ">ClearAll</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span></pre>

		<p>
			Добавим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">])</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]-&gt;</span><span class="typ">ClearAll</span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span></pre>

		<p>
			Теперь идём в UIActorMenuInventory.cpp
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"actor_defs.h"</span></pre>

		<p>
			Пишем
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			В функции 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">InitInventoryMode</span><span class="pun">()</span></pre>

		<p>
			После
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">ShowIfExist</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">],</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></pre>

		<p>
			Добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">ShowIfExist</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">],</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></pre>

		<p>
			Дальше в функции<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">OnInventoryAction</span><span class="pun">(</span><span class="typ">PIItem</span><span class="pln"> pItem</span><span class="pun">,</span><span class="pln"> u16 action_type</span><span class="pun">)</span></pre>

		<p>
			Сразу после<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">		m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">],</span></pre>

		<p>
			Добавляем
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">		m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">],</span><span class="pln"> </span></pre>

		<p>
			Теперь ищем строку<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">InitCellForSlot</span><span class="pun">(</span><span class="pln">HELMET_SLOT</span><span class="pun">);</span></pre>

		<p>
			И сразу после неё<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">InitCellForSlot</span><span class="pun">(</span><span class="pln">BACKPACK_SLOT</span><span class="pun">);</span></pre>

		<p>
			Теперь функцию<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">bool</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">ToSlot</span><span class="pun">(</span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> itm</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> force_place</span><span class="pun">,</span><span class="pln"> u16 slot_id</span><span class="pun">)</span></pre>

		<p>
			Меняем на<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">bool</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">ToSlot</span><span class="pun">(</span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> itm</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> force_place</span><span class="pun">,</span><span class="pln"> u16 slot_id</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> old_owner </span><span class="pun">=</span><span class="pln"> itm</span><span class="pun">-&gt;</span><span class="typ">OwnerList</span><span class="pun">();</span><span class="pln">
    </span><span class="typ">PIItem</span><span class="pln"> iitem </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">PIItem</span><span class="pun">)</span><span class="pln">itm</span><span class="pun">-&gt;</span><span class="pln">m_pData</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">bool</span><span class="pln"> b_own_item </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">iitem</span><span class="pun">-&gt;</span><span class="pln">parent_id</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">object_id</span><span class="pun">());</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> HELMET_SLOT</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> pOutfit </span><span class="pun">=</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pOutfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pOutfit</span><span class="pun">-&gt;</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
	
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> BACKPACK_SLOT</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> pOutfit </span><span class="pun">=</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pOutfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pOutfit</span><span class="pun">-&gt;</span><span class="pln">bIsBackpackAvaliable</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">CanPutInSlot</span><span class="pun">(</span><span class="pln">iitem</span><span class="pun">,</span><span class="pln"> slot_id</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> new_owner </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetSlotList</span><span class="pun">(</span><span class="pln">slot_id</span><span class="pun">);</span><span class="pln">

        </span><span class="com">//Alundaio</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">new_owner</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">

        </span><span class="com">/*if (slot_id == GRENADE_SLOT || !new_owner)
        {
            return true; // fake, sorry (((
        }
        else*/</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> OUTFIT_SLOT</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> pOutfit </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomOutfit</span><span class="pun">*&gt;(</span><span class="pln">iitem</span><span class="pun">);</span><span class="pln">
            </span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(</span><span class="pln">iitem</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pOutfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pOutfit</span><span class="pun">-&gt;</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> helmet_list </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetSlotList</span><span class="pun">(</span><span class="pln">HELMET_SLOT</span><span class="pun">);</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">helmet_list </span><span class="pun">&amp;&amp;</span><span class="pln"> helmet_list</span><span class="pun">-&gt;</span><span class="typ">ItemsCount</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> helmet_cell </span><span class="pun">=</span><span class="pln"> helmet_list</span><span class="pun">-&gt;</span><span class="typ">GetItemIdx</span><span class="pun">(</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
                    </span><span class="typ">ToBag</span><span class="pun">(</span><span class="pln">helmet_cell</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
			
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pOutfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pOutfit</span><span class="pun">-&gt;</span><span class="pln">bIsBackpackAvaliable</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> backpack_list </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetSlotList</span><span class="pun">(</span><span class="pln">BACKPACK_SLOT</span><span class="pun">);</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">backpack_list </span><span class="pun">&amp;&amp;</span><span class="pln"> backpack_list</span><span class="pun">-&gt;</span><span class="typ">ItemsCount</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> backpack_cell </span><span class="pun">=</span><span class="pln"> backpack_list</span><span class="pun">-&gt;</span><span class="typ">GetItemIdx</span><span class="pun">(</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
                    </span><span class="typ">ToBag</span><span class="pun">(</span><span class="pln">backpack_cell</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">bool</span><span class="pln"> result </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">b_own_item</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">Slot</span><span class="pun">(</span><span class="pln">slot_id</span><span class="pun">,</span><span class="pln"> iitem</span><span class="pun">);</span><span class="pln">
        VERIFY</span><span class="pun">(</span><span class="pln">result</span><span class="pun">);</span><span class="pln">

        </span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> old_owner</span><span class="pun">-&gt;</span><span class="typ">RemoveItem</span><span class="pun">(</span><span class="pln">itm</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">old_owner </span><span class="pun">==</span><span class="pln"> new_owner</span><span class="pun">));</span><span class="pln">

        </span><span class="kwd">while</span><span class="pln"> </span><span class="pun">(</span><span class="pln">i</span><span class="pun">-&gt;</span><span class="typ">ChildsCount</span><span class="pun">())</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> child </span><span class="pun">=</span><span class="pln"> i</span><span class="pun">-&gt;</span><span class="typ">PopChild</span><span class="pun">(</span><span class="kwd">nullptr</span><span class="pun">);</span><span class="pln">
            old_owner</span><span class="pun">-&gt;</span><span class="typ">SetItem</span><span class="pun">(</span><span class="pln">child</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        new_owner</span><span class="pun">-&gt;</span><span class="typ">SetItem</span><span class="pun">(</span><span class="pln">i</span><span class="pun">);</span><span class="pln">

        </span><span class="typ">SendEvent_Item2Slot</span><span class="pun">(</span><span class="pln">iitem</span><span class="pun">,</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">object_id</span><span class="pun">(),</span><span class="pln"> slot_id</span><span class="pun">);</span><span class="pln">

        </span><span class="typ">SendEvent_ActivateSlot</span><span class="pun">(</span><span class="pln">slot_id</span><span class="pun">,</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">object_id</span><span class="pun">());</span><span class="pln">

        </span><span class="com">// ColorizeItem						( itm, false );</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> OUTFIT_SLOT</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">MoveArtefactsToBag</span><span class="pun">();</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">else</span><span class="pln">
    </span><span class="pun">{</span><span class="pln"> </span><span class="com">// in case slot is busy</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">force_place </span><span class="pun">||</span><span class="pln"> slot_id </span><span class="pun">==</span><span class="pln"> NO_ACTIVE_SLOT</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">SlotIsPersistent</span><span class="pun">(</span><span class="pln">slot_id</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> slot_id </span><span class="pun">!=</span><span class="pln"> DETECTOR_SLOT</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> INV_SLOT_2 </span><span class="pun">&amp;&amp;</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">CanPutInSlot</span><span class="pun">(</span><span class="pln">iitem</span><span class="pun">,</span><span class="pln"> INV_SLOT_3</span><span class="pun">))</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">ToSlot</span><span class="pun">(</span><span class="pln">itm</span><span class="pun">,</span><span class="pln"> force_place</span><span class="pun">,</span><span class="pln"> INV_SLOT_3</span><span class="pun">);</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">slot_id </span><span class="pun">==</span><span class="pln"> INV_SLOT_3 </span><span class="pun">&amp;&amp;</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">CanPutInSlot</span><span class="pun">(</span><span class="pln">iitem</span><span class="pun">,</span><span class="pln"> INV_SLOT_2</span><span class="pun">))</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">ToSlot</span><span class="pun">(</span><span class="pln">itm</span><span class="pun">,</span><span class="pln"> force_place</span><span class="pun">,</span><span class="pln"> INV_SLOT_2</span><span class="pun">);</span><span class="pln">

        </span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> slot_list </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetSlotList</span><span class="pun">(</span><span class="pln">slot_id</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">slot_list</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">

        </span><span class="kwd">const</span><span class="pln"> </span><span class="typ">PIItem</span><span class="pln"> _iitem </span><span class="pun">=</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">slot_id</span><span class="pun">);</span><span class="pln">

        </span><span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> invlist </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetListByType</span><span class="pun">(</span><span class="pln">iActorBag</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">invlist </span><span class="pun">!=</span><span class="pln"> slot_list</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">slot_list</span><span class="pun">-&gt;</span><span class="typ">ItemsCount</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">

            </span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> slot_cell </span><span class="pun">=</span><span class="pln"> slot_list</span><span class="pun">-&gt;</span><span class="typ">GetItemIdx</span><span class="pun">(</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!(</span><span class="pln">slot_cell </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="kwd">static_cast</span><span class="pun">&lt;</span><span class="typ">PIItem</span><span class="pun">&gt;(</span><span class="pln">slot_cell</span><span class="pun">-&gt;</span><span class="pln">m_pData</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> _iitem</span><span class="pun">))</span><span class="pln">
                </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">

            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="typ">ToBag</span><span class="pun">(</span><span class="pln">slot_cell</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln">
                </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        </span><span class="kwd">else</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="com">//Alundaio: Since the player's inventory is being used as a slot we need to search for cell with matching m_pData</span><span class="pln">
            </span><span class="kwd">auto</span><span class="pln"> container </span><span class="pun">=</span><span class="pln"> slot_list</span><span class="pun">-&gt;</span><span class="typ">GetContainer</span><span class="pun">();</span><span class="pln">
            </span><span class="kwd">auto</span><span class="pln"> child_list </span><span class="pun">=</span><span class="pln"> container</span><span class="pun">-&gt;</span><span class="typ">GetChildWndList</span><span class="pun">();</span><span class="pln">
            </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">auto</span><span class="pun">&amp;</span><span class="pln"> it </span><span class="pun">:</span><span class="pln"> child_list</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
                </span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">static_cast</span><span class="pun">&lt;</span><span class="typ">CUICellItem</span><span class="pun">*&gt;(</span><span class="pln">it</span><span class="pun">);</span><span class="pln">
                </span><span class="kwd">const</span><span class="pln"> </span><span class="typ">PIItem</span><span class="pln"> pitm </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">static_cast</span><span class="pun">&lt;</span><span class="typ">PIItem</span><span class="pun">&gt;(</span><span class="pln">i</span><span class="pun">-&gt;</span><span class="pln">m_pData</span><span class="pun">);</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pitm </span><span class="pun">==</span><span class="pln"> _iitem</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">
                    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="typ">ToBag</span><span class="pun">(</span><span class="pln">i</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">))</span><span class="pln">
                        </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">

                    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
                </span><span class="pun">}</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">

            </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">ToSlot</span><span class="pun">(</span><span class="pln">itm</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> slot_id</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">bool</span><span class="pln"> result </span><span class="pun">=</span><span class="pln"> </span><span class="typ">ToSlot</span><span class="pun">(</span><span class="pln">itm</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln"> slot_id</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">b_own_item </span><span class="pun">&amp;&amp;</span><span class="pln"> result </span><span class="pun">&amp;&amp;</span><span class="pln"> slot_id </span><span class="pun">==</span><span class="pln"> DETECTOR_SLOT</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="typ">CCustomDetector</span><span class="pun">*</span><span class="pln"> det </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomDetector</span><span class="pun">*&gt;(</span><span class="pln">iitem</span><span class="pun">);</span><span class="pln">
            det</span><span class="pun">-&gt;</span><span class="typ">ToggleDetector</span><span class="pun">(</span><span class="pln">g_player_hud</span><span class="pun">-&gt;</span><span class="pln">attached_item</span><span class="pun">(</span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> NULL</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">return</span><span class="pln"> result</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Дальше в функции
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="typ">CUIDragDropListEx</span><span class="pun">*</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">GetSlotList</span><span class="pun">(</span><span class="pln">u16 slot_idx</span><span class="pun">)</span></pre>

		<p>
			Сразу после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">case</span><span class="pln"> HELMET_SLOT</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">];</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">;</span></pre>

		<p>
			Добавляем
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">case</span><span class="pln"> BACKPACK_SLOT</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">];</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">;</span></pre>

		<p>
			Теперь функцию <br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">PropertiesBoxForSlots</span><span class="pun">(</span><span class="typ">PIItem</span><span class="pln"> item</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">bool</span><span class="pun">&amp;</span><span class="pln"> b_show</span><span class="pun">)</span></pre>

		<p>
			Меняем на
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">PropertiesBoxForSlots</span><span class="pun">(</span><span class="typ">PIItem</span><span class="pln"> item</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">bool</span><span class="pun">&amp;</span><span class="pln"> b_show</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> pOutfit </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomOutfit</span><span class="pun">*&gt;(</span><span class="pln">item</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">CHelmet</span><span class="pun">*</span><span class="pln"> pHelmet </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CHelmet</span><span class="pun">*&gt;(</span><span class="pln">item</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">CBackpack</span><span class="pun">*</span><span class="pln"> pBackpack </span><span class="pun">=</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(</span><span class="pln">item</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">CInventory</span><span class="pun">&amp;</span><span class="pln"> inv </span><span class="pun">=</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">inventory</span><span class="pun">();</span><span class="pln">

    </span><span class="com">// Флаг-признак для невлючения пункта контекстного меню: Dreess Outfit, если костюм уже надет</span><span class="pln">
    </span><span class="kwd">bool</span><span class="pln"> bAlreadyDressed </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="pln">
    u16 cur_slot </span><span class="pun">=</span><span class="pln"> item</span><span class="pun">-&gt;</span><span class="typ">BaseSlot</span><span class="pun">();</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">pOutfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">pHelmet </span><span class="pun">&amp;&amp;</span><span class="pln"> cur_slot </span><span class="pun">!=</span><span class="pln"> NO_ACTIVE_SLOT </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">inv</span><span class="pun">.</span><span class="typ">SlotIsPersistent</span><span class="pun">(</span><span class="pln">cur_slot</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="pln">
        inventory</span><span class="pun">().</span><span class="typ">ItemFromSlot</span><span class="pun">(</span><span class="pln">cur_slot</span><span class="pun">)</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> item </span><span class="com">/*&amp;&amp; inv.CanPutInSlot(item, cur_slot)*/</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_move_to_slot"</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_SLOT_ACTION</span><span class="pun">);</span><span class="pln">
        b_show </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">item</span><span class="pun">-&gt;</span><span class="typ">Belt</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> inv</span><span class="pun">.</span><span class="typ">CanPutInBelt</span><span class="pun">(</span><span class="pln">item</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_move_on_belt"</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_BELT_ACTION</span><span class="pun">);</span><span class="pln">
        b_show </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">item</span><span class="pun">-&gt;</span><span class="typ">Ruck</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> inv</span><span class="pun">.</span><span class="typ">CanPutInRuck</span><span class="pun">(</span><span class="pln">item</span><span class="pun">)</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">(</span><span class="pln">cur_slot </span><span class="pun">==</span><span class="pln"> NO_ACTIVE_SLOT </span><span class="pun">||</span><span class="pln"> </span><span class="pun">!</span><span class="pln">inv</span><span class="pun">.</span><span class="typ">SlotIsPersistent</span><span class="pun">(</span><span class="pln">cur_slot</span><span class="pun">)))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">pOutfit</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">pHelmet</span><span class="pun">)</span><span class="pln">
            </span><span class="pun">{</span><span class="pln">
				</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">pBackpack</span><span class="pun">)</span><span class="pln">
				</span><span class="pun">{</span><span class="pln">
					</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_currMenuMode </span><span class="pun">==</span><span class="pln"> mmDeadBodySearch</span><span class="pun">)</span><span class="pln">
						m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_move_to_bag"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">nullptr</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_BAG_ACTION</span><span class="pun">);</span><span class="pln">
					</span><span class="kwd">else</span><span class="pln">
						m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_unequip"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">nullptr</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_BAG_ACTION</span><span class="pun">);</span><span class="pln">
				</span><span class="pun">}</span><span class="pln">
				</span><span class="kwd">else</span><span class="pln">
					m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_undress_backpack"</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_BAG_ACTION</span><span class="pun">);</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
            </span><span class="kwd">else</span><span class="pln">
                m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_undress_helmet"</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_BAG_ACTION</span><span class="pun">);</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
        </span><span class="kwd">else</span><span class="pln">
            m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_undress_outfit"</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_BAG_ACTION</span><span class="pun">);</span><span class="pln">

        bAlreadyDressed </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
        b_show </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pOutfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">bAlreadyDressed</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_dress_outfit"</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_SLOT_ACTION</span><span class="pun">);</span><span class="pln">
        b_show </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="typ">CCustomOutfit</span><span class="pun">*</span><span class="pln"> outfit_in_slot </span><span class="pun">=</span><span class="pln"> m_pActorInvOwner</span><span class="pun">-&gt;</span><span class="typ">GetOutfit</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pHelmet </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">bAlreadyDressed </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">outfit_in_slot </span><span class="pun">||</span><span class="pln"> outfit_in_slot</span><span class="pun">-&gt;</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_dress_helmet"</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_SLOT_ACTION</span><span class="pun">);</span><span class="pln">
        b_show </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">pBackpack </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">bAlreadyDressed </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">outfit_in_slot </span><span class="pun">||</span><span class="pln"> outfit_in_slot</span><span class="pun">-&gt;</span><span class="pln">bIsBackpackAvaliable</span><span class="pun">))</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        m_UIPropertiesBox</span><span class="pun">-&gt;</span><span class="typ">AddItem</span><span class="pun">(</span><span class="str">"st_dress_backpack"</span><span class="pun">,</span><span class="pln"> NULL</span><span class="pun">,</span><span class="pln"> INVENTORY_TO_SLOT_ACTION</span><span class="pun">);</span><span class="pln">
        b_show </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

		<p>
			Теперь в функции<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIActorMenu</span><span class="pun">::</span><span class="typ">UpdateOutfit</span><span class="pun">()</span></pre>

		<p>
			Сразу после
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">])</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">outfit</span><span class="pun">-&gt;</span><span class="pln">bIsHelmetAvaliable</span><span class="pun">)</span><span class="pln">
            m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]-&gt;</span><span class="typ">SetCellsCapacity</span><span class="pun">({</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">});</span><span class="pln">
        </span><span class="kwd">else</span><span class="pln">
            m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]-&gt;</span><span class="typ">SetCellsCapacity</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]-&gt;</span><span class="typ">MaxCellsCapacity</span><span class="pun">());</span><span class="pln">
    </span><span class="pun">}</span></pre>

		<p>
			Добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">   </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">])</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">outfit </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">!</span><span class="pln">outfit</span><span class="pun">-&gt;</span><span class="pln">bIsBackpackAvaliable</span><span class="pun">)</span><span class="pln">
            m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]-&gt;</span><span class="typ">SetCellsCapacity</span><span class="pun">({</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">});</span><span class="pln">
        </span><span class="kwd">else</span><span class="pln">
            m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]-&gt;</span><span class="typ">SetCellsCapacity</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]-&gt;</span><span class="typ">MaxCellsCapacity</span><span class="pun">());</span><span class="pln">
    </span><span class="pun">}</span></pre>

		<p>
			Теперь откроем файл UIActorMenuInitialize.cpp
		</p>

		<p>
			Найдём данную строку
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        </span><span class="pun">{</span><span class="pln"> eInventoryHelmetList</span><span class="pun">,</span><span class="pln">    	</span><span class="str">"dragdrop_helmet"</span><span class="pun">,</span><span class="pln">          </span><span class="str">"progess_bar_helmet"</span><span class="pun">,</span><span class="pln">  	</span><span class="str">"helmet_slot_highlight"</span><span class="pun">,</span><span class="pln">   </span><span class="str">"helmet_over"</span><span class="pun">,</span><span class="pln">      </span><span class="kwd">false</span><span class="pln"> </span><span class="pun">},</span></pre>

		<p>
			И после добавим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        </span><span class="pun">{</span><span class="pln"> eInventoryBackpackList</span><span class="pun">,</span><span class="pln">    </span><span class="str">"dragdrop_backpack"</span><span class="pun">,</span><span class="pln">          </span><span class="kwd">nullptr</span><span class="pun">,</span><span class="pln">  	</span><span class="str">"backpack_slot_highlight"</span><span class="pun">,</span><span class="pln">   </span><span class="str">"backpack_over"</span><span class="pun">,</span><span class="pln">      </span><span class="kwd">false</span><span class="pln"> </span><span class="pun">},</span></pre>

		<p>
			Теперь ищем строки
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">])</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]-&gt;</span><span class="typ">SetMaxCellsCapacity</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]-&gt;</span><span class="typ">CellsCapacity</span><span class="pun">());</span></pre>

		<p>
			Добавим после них
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">])</span><span class="pln">
        m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]-&gt;</span><span class="typ">SetMaxCellsCapacity</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]-&gt;</span><span class="typ">CellsCapacity</span><span class="pun">());</span></pre>

		<p>
			Теперь ищем строку
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">BindDragDropListEvents</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryHelmetList</span><span class="pun">]);</span></pre>

		<p>
			И после неё добавим
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    </span><span class="typ">BindDragDropListEvents</span><span class="pun">(</span><span class="pln">m_pLists</span><span class="pun">[</span><span class="pln">eInventoryBackpackList</span><span class="pun">]);</span></pre>

		<p>
			Теперь идём в файл UIInventoryUpgradeWnd.cpp<br />
			И там также как и везде добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			Дальше в функции<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CUIInventoryUpgradeWnd</span><span class="pun">::</span><span class="typ">InitInventory</span><span class="pun">(</span><span class="typ">CUICellItem</span><span class="pun">*</span><span class="pln"> cellItem</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">bool</span><span class="pln"> can_upgrade</span><span class="pun">)</span></pre>

		<p>
			Меняем это<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomOutfit</span><span class="pun">*&gt;(</span><span class="pln">m_inv_item</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CHelmet</span><span class="pun">*&gt;(</span><span class="pln">m_inv_item</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            is_shader </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
            m_item</span><span class="pun">-&gt;</span><span class="typ">SetShader</span><span class="pun">(</span><span class="typ">InventoryUtilities</span><span class="pun">::</span><span class="typ">GetOutfitUpgradeIconsShader</span><span class="pun">());</span><span class="pln">
        </span><span class="pun">}</span></pre>

		<p>
			На это<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">        </span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">smart_cast</span><span class="pun">&lt;</span><span class="typ">CCustomOutfit</span><span class="pun">*&gt;(</span><span class="pln">m_inv_item</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CHelmet</span><span class="pun">*&gt;(</span><span class="pln">m_inv_item</span><span class="pun">)</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> smart_cast</span><span class="pun">&lt;</span><span class="typ">CBackpack</span><span class="pun">*&gt;(</span><span class="pln">m_inv_item</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            is_shader </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">;</span><span class="pln">
            m_item</span><span class="pun">-&gt;</span><span class="typ">SetShader</span><span class="pun">(</span><span class="typ">InventoryUtilities</span><span class="pun">::</span><span class="typ">GetOutfitUpgradeIconsShader</span><span class="pun">());</span><span class="pln">
        </span><span class="pun">}</span></pre>

		<p>
			Теперь идём в <span style="color:#c0392b;">xrServerEntities</span><br />
			Ищем там файл object_factory_register.cpp<br />
			И в нём сразу после <br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorHelmet.h"</span></pre>

		<p>
			Добавляем
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#include</span><span class="pln"> </span><span class="str">"ActorBackpack.h"</span></pre>

		<p>
			Теперь ищем строку<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    ADD</span><span class="pun">(</span><span class="typ">CHelmet</span><span class="pun">,</span><span class="pln"> CSE_ALifeItem</span><span class="pun">,</span><span class="pln"> CLSID_EQUIPMENT_HELMET</span><span class="pun">,</span><span class="pln"> </span><span class="str">"helmet"</span><span class="pun">);</span></pre>

		<p>
			И сразу после неё добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">    ADD</span><span class="pun">(</span><span class="typ">CBackpack</span><span class="pun">,</span><span class="pln"> CSE_ALifeItemBackpack</span><span class="pun">,</span><span class="pln"> CLSID_EQUIPMENT_BACKPACK</span><span class="pun">,</span><span class="pln"> </span><span class="str">"equ_backpack"</span><span class="pun">);</span></pre>

		<p>
			Теперь идём в файл clsid_game.h<br />
			И там после<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#define</span><span class="pln"> CLSID_EQUIPMENT_HELMET MK_CLSID</span><span class="pun">(</span><span class="str">'E'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Q'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'_'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'H'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'L'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'M'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'E'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'T'</span><span class="pun">)</span></pre>

		<p>
			Добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">#define</span><span class="pln"> CLSID_EQUIPMENT_BACKPACK MK_CLSID</span><span class="pun">(</span><span class="str">'E'</span><span class="pun">,</span><span class="str">'Q'</span><span class="pun">,</span><span class="str">'_'</span><span class="pun">,</span><span class="str">'B'</span><span class="pun">,</span><span class="str">'A'</span><span class="pun">,</span><span class="str">'K'</span><span class="pun">,</span><span class="str">'P'</span><span class="pun">,</span><span class="str">'K'</span><span class="pun">)</span></pre>

		<p>
			Теперь идём в файл inventory_space.h
		</p>

		<p>
			И после 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">
    HELMET_SLOT</span><span class="pun">,</span><span class="pln"> </span><span class="com">// helmet</span></pre>

		<p>
			Добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">	BACKPACK_SLOT</span><span class="pun">,</span><span class="pln"> </span><span class="com">// backpack</span></pre>

		<p>
			Теперь идём в файл xrServer_Objects_ALife_Items.cpp<br />
			И сразу после<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">////////////////////////////////////////////////////////////////////////////</span><span class="pln">
</span><span class="com">// CSE_ALifeItemHelmet</span><span class="pln">
</span><span class="com">////////////////////////////////////////////////////////////////////////////</span><span class="pln">
CSE_ALifeItemHelmet</span><span class="pun">::</span><span class="pln">CSE_ALifeItemHelmet</span><span class="pun">(</span><span class="pln">LPCSTR caSection</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> CSE_ALifeItem</span><span class="pun">(</span><span class="pln">caSection</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">
CSE_ALifeItemHelmet</span><span class="pun">::~</span><span class="pln">CSE_ALifeItemHelmet</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemHelmet</span><span class="pun">::</span><span class="pln">STATE_Read</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> tNetPacket</span><span class="pun">,</span><span class="pln"> u16 size</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> inherited</span><span class="pun">::</span><span class="pln">STATE_Read</span><span class="pun">(</span><span class="pln">tNetPacket</span><span class="pun">,</span><span class="pln"> size</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemHelmet</span><span class="pun">::</span><span class="pln">STATE_Write</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> tNetPacket</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> inherited</span><span class="pun">::</span><span class="pln">STATE_Write</span><span class="pun">(</span><span class="pln">tNetPacket</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemHelmet</span><span class="pun">::</span><span class="pln">UPDATE_Read</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> tNetPacket</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    inherited</span><span class="pun">::</span><span class="pln">UPDATE_Read</span><span class="pun">(</span><span class="pln">tNetPacket</span><span class="pun">);</span><span class="pln">
    tNetPacket</span><span class="pun">.</span><span class="pln">r_float_q8</span><span class="pun">(</span><span class="pln">m_fCondition</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0f</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0f</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemHelmet</span><span class="pun">::</span><span class="pln">UPDATE_Write</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> tNetPacket</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    inherited</span><span class="pun">::</span><span class="pln">UPDATE_Write</span><span class="pun">(</span><span class="pln">tNetPacket</span><span class="pun">);</span><span class="pln">
    tNetPacket</span><span class="pun">.</span><span class="pln">w_float_q8</span><span class="pun">(</span><span class="pln">m_fCondition</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0f</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0f</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#ifndef</span><span class="pln"> XRGAME_EXPORTS
</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemHelmet</span><span class="pun">::</span><span class="typ">FillProps</span><span class="pun">(</span><span class="pln">LPCSTR pref</span><span class="pun">,</span><span class="pln"> </span><span class="typ">PropItemVec</span><span class="pun">&amp;</span><span class="pln"> items</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> inherited</span><span class="pun">::</span><span class="typ">FillProps</span><span class="pun">(</span><span class="pln">pref</span><span class="pun">,</span><span class="pln"> items</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="com">#endif</span><span class="pln"> </span><span class="com">// #ifndef XRGAME_EXPORTS</span><span class="pln">

BOOL CSE_ALifeItemHelmet</span><span class="pun">::</span><span class="typ">Net_Relevant</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span></pre>

		<p>
			Добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="com">////////////////////////////////////////////////////////////////////////////</span><span class="pln">
</span><span class="com">// CSE_ALifeItemBackpack</span><span class="pln">
</span><span class="com">////////////////////////////////////////////////////////////////////////////</span><span class="pln">
CSE_ALifeItemBackpack</span><span class="pun">::</span><span class="pln">CSE_ALifeItemBackpack</span><span class="pun">(</span><span class="pln">LPCSTR caSection</span><span class="pun">)</span><span class="pln"> </span><span class="pun">:</span><span class="pln"> CSE_ALifeItem</span><span class="pun">(</span><span class="pln">caSection</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">
CSE_ALifeItemBackpack</span><span class="pun">::~</span><span class="pln">CSE_ALifeItemBackpack</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemBackpack</span><span class="pun">::</span><span class="pln">STATE_Read</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> tNetPacket</span><span class="pun">,</span><span class="pln"> u16 size</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> inherited</span><span class="pun">::</span><span class="pln">STATE_Read</span><span class="pun">(</span><span class="pln">tNetPacket</span><span class="pun">,</span><span class="pln"> size</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemBackpack</span><span class="pun">::</span><span class="pln">STATE_Write</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> tNetPacket</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> inherited</span><span class="pun">::</span><span class="pln">STATE_Write</span><span class="pun">(</span><span class="pln">tNetPacket</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemBackpack</span><span class="pun">::</span><span class="pln">UPDATE_Read</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> tNetPacket</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    inherited</span><span class="pun">::</span><span class="pln">UPDATE_Read</span><span class="pun">(</span><span class="pln">tNetPacket</span><span class="pun">);</span><span class="pln">
    tNetPacket</span><span class="pun">.</span><span class="pln">r_float_q8</span><span class="pun">(</span><span class="pln">m_fCondition</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0f</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0f</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemBackpack</span><span class="pun">::</span><span class="pln">UPDATE_Write</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> tNetPacket</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    inherited</span><span class="pun">::</span><span class="pln">UPDATE_Write</span><span class="pun">(</span><span class="pln">tNetPacket</span><span class="pun">);</span><span class="pln">
    tNetPacket</span><span class="pun">.</span><span class="pln">w_float_q8</span><span class="pun">(</span><span class="pln">m_fCondition</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0f</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0f</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#ifndef</span><span class="pln"> XRGAME_EXPORTS
</span><span class="kwd">void</span><span class="pln"> CSE_ALifeItemBackpack</span><span class="pun">::</span><span class="typ">FillProps</span><span class="pun">(</span><span class="pln">LPCSTR pref</span><span class="pun">,</span><span class="pln"> </span><span class="typ">PropItemVec</span><span class="pun">&amp;</span><span class="pln"> items</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> inherited</span><span class="pun">::</span><span class="typ">FillProps</span><span class="pun">(</span><span class="pln">pref</span><span class="pun">,</span><span class="pln"> items</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="com">#endif</span><span class="pln"> </span><span class="com">// #ifndef XRGAME_EXPORTS</span><span class="pln">

BOOL CSE_ALifeItemBackpack</span><span class="pun">::</span><span class="typ">Net_Relevant</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">true</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span></pre>

		<p>
			Дальше идём в xrServer_Objects_ALife_Items.h<br />
			И сразу после<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">class</span><span class="pln"> CSE_ALifeItemHelmet </span><span class="pun">:</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> CSE_ALifeItem
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">using</span><span class="pln"> inherited </span><span class="pun">=</span><span class="pln"> CSE_ALifeItem</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">public</span><span class="pun">:</span><span class="pln">
    CSE_ALifeItemHelmet</span><span class="pun">(</span><span class="pln">LPCSTR caSection</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="pun">~</span><span class="pln">CSE_ALifeItemHelmet</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> BOOL </span><span class="typ">Net_Relevant</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> UPDATE_Read</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> UPDATE_Write</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> STATE_Read</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">,</span><span class="pln"> u16 size</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> STATE_Write</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">);</span><span class="pln">
    SERVER_ENTITY_EDITOR_METHODS
</span><span class="pun">};</span></pre>

		<p>
			Добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">class</span><span class="pln"> CSE_ALifeItemBackpack </span><span class="pun">:</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> CSE_ALifeItem
</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">using</span><span class="pln"> inherited </span><span class="pun">=</span><span class="pln"> CSE_ALifeItem</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">public</span><span class="pun">:</span><span class="pln">
    CSE_ALifeItemBackpack</span><span class="pun">(</span><span class="pln">LPCSTR caSection</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="pun">~</span><span class="pln">CSE_ALifeItemBackpack</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> BOOL </span><span class="typ">Net_Relevant</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> UPDATE_Read</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> UPDATE_Write</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> STATE_Read</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">,</span><span class="pln"> u16 size</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">virtual</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> STATE_Write</span><span class="pun">(</span><span class="pln">NET_Packet</span><span class="pun">&amp;</span><span class="pln"> P</span><span class="pun">);</span><span class="pln">
    SERVER_ENTITY_EDITOR_METHODS
</span><span class="pun">};</span></pre>

		<p>
			Теперь идём в файл xrServer_Objects_ALife_Items_script2.cpp<br />
			И после<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">SCRIPT_EXPORT</span><span class="pun">(</span><span class="pln">CSE_ALifeItemHelmet</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">CSE_ALifeItem</span><span class="pun">),</span><span class="pln">
    </span><span class="pun">{</span><span class="pln"> module</span><span class="pun">(</span><span class="pln">luaState</span><span class="pun">)[</span><span class="pln">luabind_class_item1</span><span class="pun">(</span><span class="pln">CSE_ALifeItemHelmet</span><span class="pun">,</span><span class="pln"> </span><span class="str">"cse_alife_item_helmet"</span><span class="pun">,</span><span class="pln"> CSE_ALifeItem</span><span class="pun">)];</span><span class="pln"> </span><span class="pun">});</span></pre>

		<p>
			Добавляем<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">SCRIPT_EXPORT</span><span class="pun">(</span><span class="pln">CSE_ALifeItemBackpack</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">CSE_ALifeItem</span><span class="pun">),</span><span class="pln">
    </span><span class="pun">{</span><span class="pln"> module</span><span class="pun">(</span><span class="pln">luaState</span><span class="pun">)[</span><span class="pln">luabind_class_item1</span><span class="pun">(</span><span class="pln">CSE_ALifeItemBackpack</span><span class="pun">,</span><span class="pln"> </span><span class="str">"cse_alife_item_backpack"</span><span class="pun">,</span><span class="pln"> CSE_ALifeItem</span><span class="pun">)];</span><span class="pln"> </span><span class="pun">});</span></pre>

		<p>
			Всё. С движком закончили. Дальше дело за малым. Отредактировать xml, сделать файл рюкзака и зарегистрировать его в System.ltx<br />
			Так же в том же самом System.ltx меняем slots_count вместо 12 на 13<br />
			Также после<br />
			slot_persistent_12  = false ;helmet<br />
			slot_active_12      = false
		</p>

		<p>
			Добавим
		</p>

		<p>
			slot_persistent_13  = false ;backpack<br />
			slot_active_13      = false
		</p>

		<p>
			 
		</p>

		<p>
			Всё, теперь точно закончили. Если что, тестовый файл рюкзака я прикреплю, поэтому достаточно будет зарегистрировать его в System.ltx и добавить в папку misc для удобства. <br />
			Урок Doctor_Oz (Даниил Озол)<br />
			Код взят из Call of Chernobyl(нужна будет ссылка попросите, отправлю отдельным сообщением в теме)
		</p>

		<p>
			Так же если вы в костюм добавите isBackpackAvaiable = false то у вас будет закрыт слот рюкзака(по умолчанию он открыт)<br />
			Всем благ! Будут проблемы обращайтесь!
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Урок &quot;Изгоняем Наруто из ГГ&quot;">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Редактировать надо только один файл, ActorAnimation.cpp<br />
			Ищем функцию 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="kwd">void</span><span class="pln"> </span><span class="typ">CActor</span><span class="pun">::</span><span class="pln">g_SetAnimation</span><span class="pun">(</span><span class="pln">u32 mstate_rl</span><span class="pun">)</span></pre>

		<p>
			В ней ищем строки <br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">                        </span><span class="kwd">case</span><span class="pln"> </span><span class="typ">CArtefact</span><span class="pun">::</span><span class="pln">eIdle</span><span class="pun">:</span><span class="pln"> M_torso </span><span class="pun">=</span><span class="pln"> TW</span><span class="pun">-&gt;</span><span class="pln">moving</span><span class="pun">[</span><span class="pln">moving_idx</span><span class="pun">];</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
                        </span><span class="kwd">case</span><span class="pln"> </span><span class="typ">CArtefact</span><span class="pun">::</span><span class="pln">eShowing</span><span class="pun">:</span><span class="pln"> M_torso </span><span class="pun">=</span><span class="pln"> TW</span><span class="pun">-&gt;</span><span class="pln">draw</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
                        </span><span class="kwd">case</span><span class="pln"> </span><span class="typ">CArtefact</span><span class="pun">::</span><span class="pln">eHiding</span><span class="pun">:</span><span class="pln"> M_torso </span><span class="pun">=</span><span class="pln"> TW</span><span class="pun">-&gt;</span><span class="pln">holster</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
                        </span><span class="kwd">case</span><span class="pln"> </span><span class="typ">CArtefact</span><span class="pun">::</span><span class="pln">eActivating</span><span class="pun">:</span><span class="pln"> M_torso </span><span class="pun">=</span><span class="pln"> TW</span><span class="pun">-&gt;</span><span class="pln">zoom</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
                        </span><span class="kwd">default</span><span class="pun">:</span><span class="pln"> M_torso </span><span class="pun">=</span><span class="pln"> TW</span><span class="pun">-&gt;</span><span class="pln">moving</span><span class="pun">[</span><span class="pln">moving_idx</span><span class="pun">];</span></pre>

		<p>
			После этих строк идут такие скобки } и после 5 пишем данный текст:<br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-c prettyprinted">

<span class="pln">		</span><span class="kwd">else</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">m_bAnimTorsoPlayed</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">moving_idx </span><span class="pun">==</span><span class="pln"> </span><span class="typ">STorsoWpn</span><span class="pun">::</span><span class="pln">eSprint</span><span class="pun">)</span><span class="pln">
            M_torso </span><span class="pun">=</span><span class="pln"> ST</span><span class="pun">-&gt;</span><span class="pln">m_torso</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">moving</span><span class="pun">[</span><span class="pln">moving_idx</span><span class="pun">];</span><span class="pln">
        </span><span class="kwd">else</span><span class="pln">
            M_torso </span><span class="pun">=</span><span class="pln"> ST</span><span class="pun">-&gt;</span><span class="pln">m_torso</span><span class="pun">[</span><span class="lit">4</span><span class="pun">].</span><span class="pln">moving</span><span class="pun">[</span><span class="pln">moving_idx</span><span class="pun">];</span><span class="pln"> </span><span class="com">//Alundaio: Fix torso anim no wpn</span><span class="pln">
        </span><span class="pun">}</span></pre>

		<p>
			Всё, теперь можно собирать. Скриншоты прилагаются:<br /><a href="https://ibb.co/vVgVcrZ" rel="external nofollow"><img alt="ss-06-01-22-19-51-58-arena.jpg" class="ipsImage" style="height:auto;" data-src="https://i.ibb.co/dj1jf3G/ss-06-01-22-19-51-58-arena.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a><br /><a href="https://ibb.co/G06nJWZ" rel="external nofollow"><img alt="ss-06-01-22-19-51-59-arena.jpg" class="ipsImage" style="height:auto;" data-src="https://i.ibb.co/560G9rQ/ss-06-01-22-19-51-59-arena.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a><br /><a href="https://ibb.co/Y35GGSW" rel="external nofollow"><img alt="ss-06-01-22-19-52-06-arena.jpg" class="ipsImage" style="height:auto;" data-src="https://i.ibb.co/g30CC87/ss-06-01-22-19-52-06-arena.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a><a href="https://ibb.co/2Y2FzB5" rel="external nofollow"><img alt="ss-06-01-22-19-52-07-arena.jpg" class="ipsImage" style="height:auto;" data-src="https://i.ibb.co/CsdwjFW/ss-06-01-22-19-52-07-arena.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a>
		</p>

		<p>
			 
		</p>

		<p>
			Урок от Doctor_Oz (Даниил Озол)<br />
			Код был дан разработчиком <a href="https://ap-pro.ru/profile/1776-mfs-team/" rel="">M.F.S. Team</a>
		</p>
	</div>
</div>

<p>
	<a class="ipsAttachLink" data-fileext="ltx" data-fileid="18425" href="https://ap-pro.ru/applications/core/interface/file/attachment.php?id=18425" rel="">backpack.ltx</a>
</p>
]]></description><guid isPermaLink="false">3457</guid><pubDate>Tue, 26 Apr 2022 06:58:57 +0000</pubDate></item><item><title>&#x41A;&#x430;&#x43A; &#x432;&#x43A;&#x43B;&#x44E;&#x447;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x433;&#x43E;&#x434;&#x43D;&#x44B;&#x435; &#x443;&#x441;&#x43B;&#x43E;&#x432;&#x438;&#x44F; &#x441;&#x43E;&#x43B;&#x43D;&#x446;&#x430;, &#x432; Stalker &#x422;&#x427;?</title><link>https://ap-pro.ru/forums/topic/13238-kak-vklyuchit-pogodnye-usloviya-solnca-v-stalker-tch/</link><description><![CDATA[<p>
	В интернете так и не смог раздобыть ничего полезного. Посоветуйте скрипт/конфиг/консольную команду, как включить рабочий ход солнца (а именно, чтобы солнышко светило ярко - как в ЧН. Можно и без лучей). Видать разработчики, не стали заморачиваться и сделали на скорую руку. Вообще я заметил, в ТЧ из-за вырезни - погодные условия работают максимально криво (на некоторых локациях, вообще отключена смена дня и ночи, освещение статичное, отсутствует движение солнца и луны). 
</p>
<p><a href="https://ap-pro.ru/uploads/monthly_2025_09/1a54b21s-1920.jpg.d14463c55c962ba951bf619ca943f063.jpg" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="53872" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" data-src="https://ap-pro.ru/uploads/monthly_2025_09/1a54b21s-1920.thumb.jpg.ab9cdb980bb6f80d1c41341ed6bba71b.jpg" data-ratio="56,2" width="1000" class="ipsImage ipsImage_thumbnailed" alt="1a54b21s-1920.jpg"></a></p>]]></description><guid isPermaLink="false">13238</guid><pubDate>Sun, 28 Sep 2025 17:07:25 +0000</pubDate></item><item><title>&#x41F;&#x440;&#x43E;&#x431;&#x43B;&#x435;&#x43C;&#x430; &#x441; &#x43F;&#x440;&#x438;&#x446;&#x435;&#x43B;&#x43E;&#x43C;</title><link>https://ap-pro.ru/forums/topic/12705-problema-s-pricelom/</link><description><![CDATA[<p>
	Столкнулся с такой проблемой перенес пушку анимки все работает, прицелы привязаны до своих костей, но когда прикрепляю любой прицел происходит мих прицелов. Буду благодарен за помощь
</p>

<p>
	<img alt="spacer.png" class="ipsImage" data-ratio="56.23" height="562" style="height:auto;" width="1000" data-src="https://media.discordapp.net/attachments/1080778992501657690/1409508008639074375/ss_xashizz_08-25-25_14-53-47_jupiter.jpg?ex=68ada220&amp;is=68ac50a0&amp;hm=47787fcd18e05d97f8ea20b892fe83459727d0eaa218132eac4cf283085a20ab&amp;=&amp;format=webp&amp;width=1188&amp;height=668" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></p>]]></description><guid isPermaLink="false">12705</guid><pubDate>Mon, 25 Aug 2025 12:02:45 +0000</pubDate></item><item><title>&#x420;&#x435;&#x434;&#x430;&#x43A;&#x442;&#x438;&#x440;&#x43E;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x430;&#x43F;&#x433;&#x440;&#x435;&#x439;&#x434;&#x43E;&#x432;</title><link>https://ap-pro.ru/forums/topic/3375-redaktirovanie-apgreydov/</link><description><![CDATA[
<p>
	Заметил интересную вещь, если в нулевом scheme_index стоит апгрейд на выбор(пример на пикче), при попытке разделения происходит вылет, он ищет "up_gr_firstab_killer_outfit". Может кто подсказать как это правильнее править?
</p>

<p>
	</p>
<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Как я разделяю">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted">
<span class="pln">Было
[up_gr_firstab_killer_outfit]
elements                = up_firsta_killer_outfit, up_firstb_killer_outfit

Стало
[up_gr_firsta_killer_outfit]
elements                = up_firsta_killer_outfit

[up_gr_firstb_killer_outfit]
elements                = up_firstb_killer_outfit</span></pre>

<p>
	</p>
</div>

<p>
	<img alt="1250118127_Screenshot2022-03-2012-03-05.png.5db41bbbe754a1351521a291c2601fb9.png" class="ipsImage ipsImage_thumbnailed" data-fileid="16722" data-ratio="160.86" style="height:auto;" width="465" data-src="https://ap-pro.ru/uploads/monthly_2022_03/1250118127_Screenshot2022-03-2012-03-05.png.5db41bbbe754a1351521a291c2601fb9.png" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></p>
</div>
<p>
</p>
]]></description><guid isPermaLink="false">3375</guid><pubDate>Sun, 20 Mar 2022 09:40:06 +0000</pubDate></item><item><title>&#x41F;&#x43E;&#x43B;&#x435;&#x437;&#x43D;&#x44B;&#x435; &#x444;&#x443;&#x43D;&#x43A;&#x446;&#x438;&#x438; &#x434;&#x43B;&#x44F; &#x441;&#x43A;&#x440;&#x438;&#x43F;&#x442;&#x43E;&#x432; &#x441;&#x442;&#x430;&#x43B;&#x43A;&#x435;&#x440;&#x430;</title><link>https://ap-pro.ru/forums/topic/3429-poleznye-funkcii-dlya-skriptov-stalkera/</link><description><![CDATA[
<p style="text-align:center;">
	<span style="color:#f1c40f;"><span style="font-size:28px;">Полезные функции для скриптов сталкера.<br />
	Автор темы: liner</span></span><br /><strong>Данная тема предназначена для модмейкеров</strong>. Рядовым пользователям здесь делать нечего.<br />
	В этой теме я составил много полезных на мой взгляд функций (для <span style="color:#2980b9;">Lua</span>), которые уже написаны другими людьми и за которыми вы собственно сюда и зашли.<br />
	Напоминаю, что версия <span style="color:#2980b9;">Lua</span> в сталкере - 5.1. Так что все функции писались именно под эту версию.
</p>

<p style="text-align:center;">
	<span style="color:#3498db;"><span style="font-size:26px;">Если вы используете материал из этой темы, то пожалуйста, не удаляйте копирайты и оставляйте благодарность автору(ам), ведь это элементарная этика модостроения!</span></span><br /><br />
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Есть ли у НПС заданные предметы (по секции) has_items">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: СS, CoP<br />
			Автор: liner
		</p>

		<p>
			<span style="color:#27ae60;">--Есть ли у НПС все заданные предметы?<br />
			--число предметов не ограничено</span>
		</p>

		<p>
			<span style="color:#f39c12;">function</span> has_items(npc,...) <span style="color:#27ae60;">--секции предметов</span><br />
			   <span style="color:#f39c12;"> local</span> t = {...}<br />
			   <span style="color:#f39c12;"> local function</span> calc(q,itm)<br />
			        <span style="color:#f39c12;">local</span> sect = itm:section()<br />
			        <span style="color:#f39c12;">for</span> k,v <span style="color:#f39c12;">in</span> <span style="color:#e74c3c;">pairs</span>(t) <span style="color:#f39c12;">do</span><br />
			            <span style="color:#f39c12;">if</span> sect == v <span style="color:#f39c12;">then</span><br />
			                v =<span style="color:#f39c12;"> nil<br />
			                return<br />
			            end<br />
			        end<br />
			    end</span><br />
			    npc:iterate_inventory(calc)<br />
			    <span style="color:#f39c12;">return</span> <span style="color:#9b59b6;">table.getn</span>(t) == <span style="color:#e74c3c;">0</span> <span style="color:#27ae60;">--все элементы таблицы должны быть nil</span><br /><span style="color:#f39c12;">end</span><br /><br />
			Как использовать:<br />
			has_items(db.actor,<span style="color:#999999;">"medkit"</span>,<span style="color:#999999;">"bandage"</span>,<span style="color:#999999;">"wpn_pm"</span>)                    <span style="color:#3498db;">&lt;</span><span style="color:#f39c12;">CAI_Stalker*</span>, <span style="color:#3498db;">...&lt;</span><span style="color:#9b59b6;">string</span><span style="color:#3498db;">&gt;&gt;</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Удалить из инвентаря НПС несколько предметов remove_item_count">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC (под сомнением), CS, CoP<br />
			Автор: Suhar_<br /><span style="color:#3498db;">Функция удаляет из инвентаря непися несколько предметов</span><br /><br /><span style="color:#f39c12;">function</span> remove_item_count(who, item_section, count)<br />
			    <span style="color:#f39c12;">local</span> current_count = count<br />
			    <span style="color:#f39c12;">local</span> <span style="color:#f39c12;">function</span> remove(tmp, item)<br />
			        <span style="color:#f39c12;">if</span> item:section()==item_section and (current_count&gt;<span style="color:#e74c3c;">0</span>) <span style="color:#f39c12;">then</span><br />
			            current_count = current_count - <span style="color:#e74c3c;">1</span><br />
			           <span style="color:#2ecc71;"> -- Переходим от игрового объекта к серверному объекту через его айди<br />
			            -- Удаляем серверный объект</span><br />
			            alife():release(alife():object(item:id()), <span style="color:#f39c12;">true</span>)<br />
			        <span style="color:#f39c12;">elseif</span> current_count&lt;=<span style="color:#e74c3c;">0</span> <span style="color:#f39c12;">then</span><br />
			            <span style="color:#f39c12;">return<br />
			        end<br />
			    end</span><br />
			    who:iterate_inventory(remove)<br /><span style="color:#f39c12;">end</span><br /><br />
			Как использовать:<br />
			remove_item_count(нпс_или_актор, секция_предмета_который_будем_удалять, сколько_штук_удалить)<br /><span style="color:#2980b9;">&lt;</span><span style="color:#f39c12;">CGameObject*</span><span style="color:#2980b9;">,</span><span style="color:#999999;">string</span><span style="color:#2980b9;">,</span><span style="color:#e74c3c;">number</span><span style="color:#2980b9;">&gt;</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Аналог движковому READ_IF_EXISTS">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: liner<br /><span style="color:#3498db;">Прочитать из секции в каком-то файле строчку, и, если этой строчки/секции не существует, вернуть значение по умолчанию, которое задаётся пользователем. Иначе функция вернёт то, что прочитала из секции.</span><br /><br /><span style="color:#e74c3c;">ВНИМАНИЕ!!! ДЛЯ ЭТОЙ ФУНКЦИИ НУЖНО ПОДКЛЮЧИТЬ ФУНКЦИЮ toboolean. ОНА В ЭТОЙ ТЕМЕ!!!</span><br /><br /><span style="color:#f39c12;">function</span> READ_EX(r_type,sect,what,default_val,ini)<br />
			    <span style="color:#f39c12;">if not</span> ini <span style="color:#f39c12;">then</span><br />
			        ini = system_ini()<br />
			    <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">if not</span> ini:section_exist(sect) <span style="color:#f39c12;">or not</span> ini:line_exist(sect,what) <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">return</span> default_val<br />
			    <span style="color:#f39c12;">end</span> <span style="color:#2ecc71;">--если до сюдова, значит есть нужные параметры</span><br />
			    <span style="color:#f39c12;">if</span> r_type ==<span style="color:#999999;"> "number"</span> <span style="color:#f39c12;">then</span><br />
			       <span style="color:#f39c12;"> return</span> ini:r_u32(sect,what)<br />
			    <span style="color:#f39c12;">elseif</span> r_type == <span style="color:#999999;">"string"</span> <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">return</span> ini:r_string(sect,what)<br />
			    <span style="color:#f39c12;">elseif</span> r_type == <span style="color:#999999;">"float"</span> <span style="color:#f39c12;">then</span><br />
			       <span style="color:#f39c12;"> return</span> ini:r_float(sect,what)<br />
			    <span style="color:#f39c12;">elseif</span> r_type == <span style="color:#999999;">"bool"</span> <span style="color:#f39c12;">then<br />
			        return</span> <span style="color:#e74c3c;">toboolean</span>(ini:r_string(sect,what))<br />
			    <span style="color:#f39c12;">elseif</span> r_type == <span style="color:#999999;">"s32"</span> <span style="color:#f39c12;">then<br />
			        return</span> ini:r_s32(sect,what)<br />
			    <span style="color:#f39c12;">else<br />
			        return nil<br />
			    end<br />
			end</span><br /><br />
			Как использовать:<br />
			                                                                                                            <strong>(НЕОБЯЗАТЕЛЬНО)</strong>             <strong>(НЕОБЯЗАТЕЛЬНО)</strong><br />
			READ_EX(тип,чтения, секция, какую_строчку_прочитать, значение_по_умолчанию, файл_из_которого_будем_читать)<br /><span style="color:#2980b9;">&lt;</span><span style="color:#999999;">string</span><span style="color:#2980b9;">,</span><span style="color:#999999;">string</span><span style="color:#2980b9;">,</span><span style="color:#999999;">string</span><span style="color:#2980b9;">,</span><span style="color:#e74c3c;">a</span><span style="color:#f39c12;">n</span><span style="color:#9b59b6;">y</span>,CIniFile<span style="color:#e67e22;">*</span><span style="color:#2980b9;">&gt;</span><br />
			READ_EX(<span style="color:#999999;">"float"</span>, <span style="color:#999999;">"damage_head_40"</span>, <span style="color:#999999;">"bip01_neck"</span>, <span style="color:#e74c3c;">0.5</span>) <span style="color:#2ecc71;">--Если в секции damage_head_40 есть строчка bip01_neck, то функция вернёт значение этой строчки, а иначе заданное значение по умолчанию 0.5</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Зафиксировать число между двумя диапазонами clamp">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: liner<br /><span style="color:#3498db;">Зафиксировать число между двумя диапазонами<br />
			Если число не входит в диапазон, то это число становится минимальным числом диапазона, если оно было меньше минимума, и, соответственно, максимум - если исходное число больше максимума.</span><br /><br /><span style="color:#f39c12;">function</span> clamp(value, min, max)<br />
			    <span style="color:#f39c12;">if</span> min ~= <span style="color:#f39c12;">nil</span> <span style="color:#f39c12;">and</span> value&lt;min <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">return</span> min<br />
			    <span style="color:#f39c12;">elseif</span> max ~= <span style="color:#f39c12;">nil</span> <span style="color:#f39c12;">and</span> value&gt;max <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">return</span> max<br />
			    <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">return</span> value<br /><span style="color:#f39c12;">end</span>
		</p>

		<p>
			Как использовать:<br />
			clamp(исходное_число,минимум <strong>(необязательно)</strong>,максимум <strong>(необязательно)</strong>)          <span style="color:#2980b9;">&lt;</span><span style="color:#e74c3c;">number</span><span style="color:#2980b9;">,</span><span style="color:#e74c3c;">number</span><span style="color:#2980b9;">,</span><span style="color:#e74c3c;">number</span><span style="color:#2980b9;">&gt;</span><br />
			clamp(<span style="color:#e74c3c;">7.7</span>, <span style="color:#e74c3c;">6.02</span>, <span style="color:#e74c3c;">7.5</span>)          <span style="color:#2ecc71;">--output: 7.5</span><br />
			clamp(<span style="color:#e74c3c;">14</span>,<span style="color:#e74c3c;">15</span>,<span style="color:#e74c3c;">16</span>)                 <span style="color:#2ecc71;">--output: 15</span><br />
			clamp(<span style="color:#e74c3c;">0</span>,<span style="color:#e74c3c;">8</span>)                           <span style="color:#2ecc71;">--output: 8</span><br />
			clamp(<span style="color:#e74c3c;">-3</span>,<span style="color:#f39c12;">nil</span>,<span style="color:#e74c3c;">-5</span>)                    <span style="color:#2ecc71;">--output: -5</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Вывести текст чуть выше центра экрана с заданным временем исчезновения HudMsg">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC (под сомнением), CS, CoP<br />
			Автор: makdm, liner<br /><span style="color:#3498db;">Вывести нужный текст чуть выше центра экрана с заданным временем его исчезновения</span><br /><br /><span style="color:#f39c12;">local</span> a_show = <span style="color:#f39c12;">true</span><br /><span style="color:#f39c12;">function</span> HudMsg(text_center, sTime) <span style="color:#2ecc71;">--Copyright makdm, liner</span><br />
			    <span style="color:#f39c12;">if</span> sTime == <span style="color:#f39c12;">nil then</span> sTime = 5 <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">local</span> hud = get_hud()<br />
			    <span style="color:#f39c12;">local</span> timer_text = time_global() + sTime*<span style="color:#e74c3c;">1000</span><br />
			    <span style="color:#f39c12;">if</span> a_show == <span style="color:#f39c12;">true then</span><br />
			        a_show = <span style="color:#f39c12;">false</span><br />
			        hud:HideActorMenu()<br />
			        <span style="color:#f39c12;">local</span> cs_text = hud:GetCustomStatic(<span style="color:#999999;">"not_enough_money_mine"</span>)<br />
			       <span style="color:#f39c12;"> if </span>cs_text <span style="color:#f39c12;">then</span><br />
			            hud:RemoveCustomStatic(<span style="color:#999999;">"not_enough_money_mine"</span>)<br />
			        <span style="color:#f39c12;">end</span><br />
			        hud:AddCustomStatic(<span style="color:#999999;">"not_enough_money_mine"</span>, <span style="color:#f39c12;">true</span>)<br />
			        cs_text = hud:GetCustomStatic(<span style="color:#999999;">"not_enough_money_mine"</span>)<br />
			        cs_text:wnd():TextControl():SetText(<span style="color:#9b59b6;">game.translate_string</span>(text_center))<br />
			        level.add_call(<br />
			           <span style="color:#f39c12;"> function</span> ()<br />
			           <span style="color:#f39c12;"> if</span> timer_text &lt; time_global() <span style="color:#f39c12;">then<br />
			                return true<br />
			            end<br />
			            end</span>,<br />
			            <span style="color:#f39c12;">function</span> ()<br />
			                hud:RemoveCustomStatic(<span style="color:#999999;">"not_enough_money_mine"</span>)<br />
			                a_show = <span style="color:#f39c12;">true</span><br />
			            <span style="color:#f39c12;">end</span><br />
			        )<br />
			    <span style="color:#f39c12;">end<br />
			end</span><br /><br />
			Как использовать:<br />
			HudMsg(стринг_ид_текста_который_нужно_вывести, время_показа_в_секундах)         <span style="color:#2980b9;">&lt;</span><span style="color:#999999;">string</span><span style="color:#2980b9;">,</span><span style="color:#e74c3c;">number</span><span style="color:#2980b9;">&gt;</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Выдать предмет(ы) игроку give_item">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: liner<br /><br /><span style="color:#f39c12;">function</span> give_item(sect,count)<br />
			    <span style="color:#f39c12;">if </span>count==nil<span style="color:#f39c12;"> or</span> count == 1 <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">return</span> alife():create(sect,db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),ACT_ID)<br />
			    <span style="color:#f39c12;">else</span><br />
			        <span style="color:#f39c12;">local</span> act = db.actor<br />
			        <span style="color:#f39c12;">local</span> pos,lv,gv,id = act:position(),act:level_vertex_id(),act:game_vertex_id(),act:id()<br />
			        <span style="color:#f39c12;">for</span> i=<span style="color:#e74c3c;">1</span>, count <span style="color:#f39c12;">do</span><br />
			            alife():create(sect,pos,lv,gv,id)<br />
			        <span style="color:#f39c12;">end<br />
			    end<br />
			end</span><br /><br />
			Как использовать:<br />
			give_item(секция_предмета, количество_которое_надо_заспаунить<strong>(необязательно, по умолчанию 1)</strong>)      <span style="color:#2980b9;">&lt;</span><span style="color:#999999;">string</span><span style="color:#2980b9;">,</span><span style="color:#e74c3c;">number</span><span style="color:#2980b9;">&gt;</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Вызвать lua код с помощью строки LOADVOID">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: liner<br /><br /><span style="color:#3498db;">Данная функция позволяет выполнить функцию из какого-нибудь скрипта. Это действительно очень нужная функция.</span>
		</p>

		<p>
			<span style="color:#f39c12;">function</span> LOADVOID(funct, ...)<br />
			    <span style="color:#f39c12;">return</span> <span style="color:#e74c3c;">loadstring</span>(<span style="color:#e74c3c;">tostring</span>(funct))(...)<br /><span style="color:#f39c12;">end</span>
		</p>

		<p>
			Как использовать:<br />
			LOADVOID(имя_функции, аргументы_которые_нужно_передать_в_функцию (<strong>НЕОБЯЗАТАЛЬЕНО</strong>))   <span style="color:#2980b9;">&lt;</span><span style="color:#999999;">string</span><span style="color:#2980b9;">, </span><span style="color:#e74c3c;">a</span><span style="color:#f39c12;">n</span><span style="color:#9b59b6;">y</span><span style="color:#2980b9;">&gt;</span><br />
			LOADVOID(<span style="color:#999999;">"sim_squad_scripted.init()"</span>, <span style="color:#f39c12;">true</span>)          <span style="color:#2ecc71;">--эквивалентно коду: sim_squad_scripted.init(true)</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Добавить спот на объект add_spot_on_map">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: CS, CoP<br />
			Автор: Suhar_<br /><span style="color:#3498db;">Добавить метку на объект по его ID на карту (пда и/или миникарту, зависит от настроек спота)</span>
		</p>

		<p>
			<span style="color:#f39c12;">function</span> add_spot_on_map(obj_id, location_name, descr)<br />
			   <span style="color:#f39c12;"> if</span> level.map_has_object_spot(obj_id,location_name)==<span style="color:#e74c3c;">0</span> <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">if</span> descr==<span style="color:#f39c12;">nil then</span><br />
			            descr=<span style="color:#999999;">""</span><br />
			        <span style="color:#f39c12;">end</span><br />
			        level.map_add_object_spot_ser(obj_id, location_name, descr)<br />
			    <span style="color:#f39c12;">end<br />
			end</span>
		</p>

		<p>
			Как использовать:<br />
			add_spot_on_map(ID объекта, имя_спота, описание_спота<strong>(необязательно)</strong>)           <span style="color:#2980b9;">&lt;</span><span style="color:#e74c3c;">number</span><span style="color:#2980b9;">,</span><span style="color:#999999;">string</span><span style="color:#2980b9;">,</span><span style="color:#999999;">string</span><span style="color:#2980b9;">&gt;</span><br />
			add_spot_on_map(<span style="color:#e74c3c;">3280</span>, <span style="color:#999999;">"alife_secondary_presentation_stalker"</span>, <span style="color:#9b59b6;">game.translate_string</span>(<span style="color:#999999;">"st_squad_spot_descr"</span>))
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Посчитать количество символов в строке calc_symbols">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: liner<br /><span style="color:#3498db;">Посчитать количество заданных символов в строке</span>
		</p>

		<p>
			<span style="color:#f39c12;">function</span> calc_symbols(str,symbol)<br />
			    <span style="color:#f39c12;">local</span> n = <span style="color:#e74c3c;">0</span><br />
			    <span style="color:#f39c12;">for</span> s <span style="color:#f39c12;">in</span> str:<span style="color:#9b59b6;">gmatch</span>(symbol) <span style="color:#f39c12;">do</span><br />
			        n = n + <span style="color:#e74c3c;">1</span><br />
			    <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">return</span> n<br /><span style="color:#f39c12;">end</span><br /><br />
			Как использовать:<br />
			calc_symbols(текст, символы_в_тексте_которые_надо_посчитать)          <span style="color:#2980b9;">&lt;</span><span style="color:#999999;">string</span><span style="color:#2980b9;">,</span><span style="color:#999999;">string</span><span style="color:#2980b9;">&gt;</span><br />
			calc_symbols(<span style="color:#999999;">"abc inferno base"</span>, <span style="color:#999999;">"a"</span>)                   <span style="color:#2ecc71;">--output: 2</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Преобразовать аргумент в булеан toboolean">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: liner<br /><span style="color:#3498db;">Преобразовать аргумент в булеан (true или false).</span><br /><span style="color:#e74c3c;">ВНИМАНИЕ!!! ДЛЯ ЭТОЙ ФУНКЦИИ НУЖНО ПОДКЛЮЧИТЬ ФУНКЦИЮ </span><span style="color:#9b59b6;">string.filter</span><span style="color:#e74c3c;">. ОНА В ЭТОЙ ТЕМЕ!!!</span><br /><span style="color:#f39c12;">function</span> <span style="color:#e74c3c;">toboolean</span>(arg)<br />
			    <span style="color:#f39c12;">if</span> arg ~= <span style="color:#f39c12;">nil</span> <span style="color:#f39c12;">then</span><br />
			       <span style="color:#f39c12;"> if</span> <span style="color:#e74c3c;">type</span>(arg) == <span style="color:#999999;">"string"</span> <span style="color:#f39c12;">then</span><br />
			            arg = <span style="color:#9b59b6;">string.filter</span>(arg) <span style="color:#2ecc71;">--убираем все отступы и пробелы из строки</span><br />
			        <span style="color:#f39c12;">end</span><br />
			        <span style="color:#f39c12;">if</span> arg==<span style="color:#999999;">"true"</span> <span style="color:#f39c12;">or</span> <span style="color:#e74c3c;">tonumber</span>(arg) == <span style="color:#e74c3c;">1</span> <span style="color:#f39c12;">or</span> arg == <span style="color:#999999;">"on"</span> <span style="color:#f39c12;">or</span> arg == <span style="color:#f39c12;">true then return true end</span><br />
			        <span style="color:#f39c12;">if</span> arg==<span style="color:#999999;">"false"</span> <span style="color:#f39c12;">or</span> <span style="color:#e74c3c;">tonumber</span>(arg) == <span style="color:#e74c3c;">0</span> <span style="color:#f39c12;">or</span> arg == <span style="color:#999999;">"off"</span> <span style="color:#f39c12;">or</span> arg == <span style="color:#f39c12;">false then return false end</span><br />
			    <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">return nil<br />
			end</span><br /><br />
			Как использовать:<br /><span style="color:#e74c3c;">toboolean</span>(любой аргумент типа bool или number или string)<br /><span style="color:#e74c3c;">toboolean</span>(<span style="color:#e74c3c;">1</span>)        <span style="color:#2ecc71;">--output: true</span><br /><span style="color:#e74c3c;">toboolean</span>(<span style="color:#999999;">"0"</span>)     <span style="color:#2ecc71;">--outpit: false</span><br /><span style="color:#e74c3c;">toboolean</span>(<span style="color:#f39c12;">nil</span>)      <span style="color:#2ecc71;">--output: nil</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Распарсить строку через ключ &quot;запятая&quot; parse_by_comma">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: Suhar_<br /><br /><span style="color:#3498db;">Распарсить строку через символ "запятая"</span>
		</p>

		<p>
			<span style="color:#e74c3c;">ВНИМАНИЕ!!! ДЛЯ ЭТОЙ ФУНКЦИИ НУЖНО ПОДКЛЮЧИТЬ ФУНКЦИЮ </span><span style="color:#9b59b6;">string.explode</span><span style="color:#e74c3c;">. ОНА В ЭТОЙ ТЕМЕ!!!</span><br /><span style="color:#f39c12;">function</span> parse_by_comma(s)<br />
			    s = <span style="color:#9b59b6;">string.gsub</span>(s,<span style="color:#999999;">" "</span>,<span style="color:#999999;"> ""</span>) <span style="color:#2ecc71;">--удаляем пробелы</span><br />
			    s = <span style="color:#9b59b6;">string.gsub</span>(s,<span style="color:#999999;">"    "</span>,<span style="color:#999999;"> ""</span>) <span style="color:#2ecc71;">--удаляем табуляции</span><br />
			    s = <span style="color:#9b59b6;">string.explode</span>(<span style="color:#999999;">","</span>, s, <span style="color:#f39c12;">false</span>)<br />
			    <span style="color:#f39c12;">return</span> s<br /><span style="color:#f39c12;">end</span><br /><br />
			Как использовать:<br />
			parse_by_comma(текст)          <span style="color:#2980b9;">&lt;</span><span style="color:#999999;">string</span><span style="color:#2980b9;">&gt;</span><br />
			parse_by_comma(<span style="color:#999999;">"s,u,b,b"</span>)       <span style="color:#2ecc71;">--output: таблица вида<br />
			--{<br />
			--    [1] = "s",<br />
			--    [2] = "u",<br />
			--    [3] = "b",<br />
			--    [4] = "b"<br />
			--}</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разбить строку на элементы string.explode">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: Bak<br /><span style="color:#3498db;">Разбить строку на элементы с помощью специального ключа</span>
		</p>

		<p>
			<span style="color:#e74c3c;">ВНИМАНИЕ!!! ДЛЯ ЭТОЙ ФУНКЦИИ НУЖНО ПОДКЛЮЧИТЬ ФУНКЦИЮ </span><span style="color:#9b59b6;">trim</span><span style="color:#e74c3c;">. ОНА В ЭТОЙ ТЕМЕ!!!</span><br /><span style="color:#f39c12;">function</span> <span style="color:#9b59b6;">string.explode</span>(div,str,clear)<br />
			   <span style="color:#f39c12;"> local</span> t={}<br />
			    <span style="color:#f39c12;">local</span> cpt = <span style="color:#9b59b6;">string.find</span>(str,div,1,true)<br />
			    <span style="color:#f39c12;">if</span> cpt <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">repeat</span><br />
			            <span style="color:#f39c12;">if</span> clear <span style="color:#f39c12;">then</span><br />
			                <span style="color:#9b59b6;">table.insert</span>(t,trim(<span style="color:#9b59b6;">string.sub</span>(str,1,cpt-1)))<br />
			            <span style="color:#f39c12;">else</span><br />
			                <span style="color:#9b59b6;">table.insert</span>(t,<span style="color:#9b59b6;">string.sub</span>(str,1,cpt-1))<br />
			            <span style="color:#f39c12;">end</span><br />
			            str = <span style="color:#9b59b6;">string.sub</span>(str,cpt+<span style="color:#9b59b6;">string.len</span>(div))<br />
			            cpt = <span style="color:#9b59b6;">string.find</span>(str,div,1,<span style="color:#f39c12;">true</span>)<br />
			        <span style="color:#f39c12;">until</span> cpt==<span style="color:#f39c12;">nil</span><br />
			    <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">if</span> clear <span style="color:#f39c12;">then</span><br />
			        <span style="color:#9b59b6;">table.insert</span>(t,trim(str))<br />
			    <span style="color:#f39c12;">else</span><br />
			        <span style="color:#9b59b6;">table.insert</span>(t,str)<br />
			    <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">return</span> t<br /><span style="color:#f39c12;">end</span><br /><br />
			Как использовать:
		</p>

		<p>
			<span style="color:#9b59b6;">string.explode</span>(специальный ключ, строка, булеан использовать ли функцию <span style="color:#9b59b6;">trim</span>)     <span style="color:#2980b9;">&lt;</span><span style="color:#999999;">string</span>,<span style="color:#999999;">string</span>,<span style="color:#f39c12;">boolean</span><span style="color:#2980b9;">&gt;</span><br /><span style="color:#9b59b6;">string.explode</span>(<span style="color:#999999;">"$"</span>, <span style="color:#999999;">"el1$el2$el3&amp;&amp;@#&amp;@&amp;$null"</span>)          <span style="color:#2ecc71;">--output: таблица вида</span><br /><span style="color:#2ecc71;">--{<br />
			--   [1] = "el1",<br />
			--   [2] = "el2",<br />
			--   [3] = "el3&amp;&amp;@#&amp;@&amp;",<br />
			--   [4] = "null"<br />
			--}</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Очистка пробелов в начале и конце строки trim">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: ??? (утерян)
		</p>

		<p>
			<span style="color:#3498db;">Удаление пробелов в начале и конце строки</span><br /><span style="color:#f39c12;">function</span> trim(s)<br />
			    <span style="color:#f39c12;">return</span>(<span style="color:#9b59b6;">string.gsub</span>(s,<span style="color:#999999;">"^%s*(.-)%s*$"</span>,<span style="color:#999999;">"%1"</span>))<br /><span style="color:#f39c12;">end</span><br />
			Как вызывать:
		</p>

		<p>
			trim(текст)                      <span style="color:#2980b9;">&lt;</span><span style="color:#999999;">string</span><span style="color:#2980b9;">&gt;</span><br />
			trim(<span style="color:#999999;">" аболтус   !   "</span>)         <span style="color:#2ecc71;">--output:аболтус   !</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Среднее арифметическое чисел math.avr">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Автор функции: liner<br />
			Платформы: SoC, CS, CoP<br /><span style="color:#3498db;">Среднее арифметическое чисел (a<span style="font-size:8px;">ср</span> = a<span style="font-size:8px;">1</span> + a<span style="font-size:8px;">2</span>+ a<span style="font-size:8px;">3</span> +... <span style="font-size:26px;">:</span> n, где n - количество чисел)</span>
		</p>

		<p>
			<span style="color:#f39c12;">function</span> <span style="color:#9b59b6;">math.avr</span>(...)<br />
			    <span style="color:#f39c12;">local</span> t = {...}<br />
			    <span style="color:#f39c12;">local</span> sum = 0<br />
			    <span style="color:#f39c12;">for</span> _,v <span style="color:#f39c12;">in</span> <span style="color:#e74c3c;">pairs</span>(t) <span style="color:#f39c12;">do</span><br />
			        sum = sum + v<br />
			    <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">return</span> sum <span style="color:#ecf0f1;">/</span> <span style="color:#95a5a6;">#</span>t<br /><span style="color:#f39c12;">end</span>
		</p>

		<p>
			Как использовать:<br /><span style="color:#9b59b6;">math.avr</span>(любые числа)                     <span style="color:#2980b9;">&lt;</span><span style="color:#e74c3c;">number</span><span style="color:#2980b9;">&gt;</span><br /><span style="color:#9b59b6;">math.avr</span>(<span style="color:#e74c3c;">3</span>, <span style="color:#e74c3c;">5</span>, <span style="color:#e74c3c;">18</span>, <span style="color:#e74c3c;">30</span>) <span style="color:#2ecc71;">--output: 14</span>
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Получить тип данных аргумента typeid">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Платформы: SoC, CS, CoP<br />
			Автор: liner
		</p>

		<p>
			<span style="color:#3498db;">Получить тип данных аргумента. <strong>Внимание! Возвращаемый тип данных зависит ОТ ЗНАЧЕНИЯ ЧИСЛА!!!</strong><br />
			ВНИМАНИЕ!!! У ФУНКЦИИ ЕСТЬ СУЩЕСТВЕННЫЙ МИНУС: ФУНКЦИЯ НИКОГДА НЕ ВЕРНЁТ "&lt;float&gt;", ПОТОМУ ЧТО Я НЕ ЗНАЮ, КАК ЭТО СДЕЛАТЬ БЕЗ math.type (а эта функция с версии Lua 5.3)!</span><br /><span style="color:#f39c12;">function</span> typeid(arg)<br />
			    <span style="color:#f39c12;">local</span> t = <span style="color:#e74c3c;">type</span>(arg)<br />
			   <span style="color:#f39c12;"> if</span> t == <span style="color:#999999;">"string"</span> <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;string&gt;"</span><br />
			    <span style="color:#f39c12;">elseif</span> t == <span style="color:#999999;">"boolean"</span> <span style="color:#f39c12;">then</span><br />
			        <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;bool&gt;"</span><br />
			    <span style="color:#f39c12;">elseif</span> t == <span style="color:#999999;">"number"</span> <span style="color:#f39c12;">then</span><br /><span style="color:#2ecc71;">--liner: available since version Lua 5.3 ((<br />
			--        if math.type(arg) == "float" then<br />
			--            return "&lt;float&gt;"<br />
			--        end</span><br />
			        <span style="color:#2ecc71;">--unsigned integer</span><br />
			        <span style="color:#f39c12;">if</span> arg &gt;= <span style="color:#e74c3c;">0</span> <span style="color:#f39c12;">then</span><br />
			           <span style="color:#f39c12;"> if</span> arg &lt;= <span style="color:#e74c3c;">255</span> <span style="color:#f39c12;">then</span><br />
			                <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;u8&gt;"</span><br />
			            <span style="color:#f39c12;">elseif</span> arg &lt;= <span style="color:#e74c3c;">65535</span> <span style="color:#f39c12;">then</span><br />
			                <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;u16&gt;"</span><br />
			            <span style="color:#f39c12;">elseif</span> arg &lt;= <span style="color:#e74c3c;">4294967295</span> <span style="color:#f39c12;">then</span><br />
			                <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;u32&gt;"</span><br />
			            <span style="color:#f39c12;">end</span><br />
			        <span style="color:#2ecc71;">--signed integer</span><br />
			        <span style="color:#f39c12;">elseif</span> arg &gt;= -<span style="color:#e74c3c;">2147483648</span> <span style="color:#f39c12;">and</span> arg &lt; -<span style="color:#e74c3c;">32768</span> <span style="color:#f39c12;">then</span><br />
			           <span style="color:#f39c12;"> return</span><span style="color:#999999;"> "&lt;s32&gt;"</span><br />
			        <span style="color:#f39c12;">elseif</span> arg &gt;= -<span style="color:#e74c3c;">32768</span> <span style="color:#f39c12;">and</span> arg &lt; -<span style="color:#e74c3c;">128</span> <span style="color:#f39c12;">then</span><br />
			            <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;s16&gt;"</span><br />
			        <span style="color:#f39c12;">elseif</span> arg &gt;= <span style="color:#dddddd;">-</span><span style="color:#e74c3c;">128</span> <span style="color:#f39c12;">then</span><br />
			            <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;s8&gt;"</span><br />
			        <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">elseif</span> t == <span style="color:#999999;">"table"</span><span style="color:#f39c12;"> then</span><br />
			        <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;table&gt;"</span><br />
			    <span style="color:#f39c12;">elseif</span> t == <span style="color:#999999;">"userdata"</span> <span style="color:#f39c12;">then</span><br />
			       <span style="color:#f39c12;"> return</span> <span style="color:#999999;">"&lt;object&gt;"</span><br />
			    <span style="color:#f39c12;">end</span><br />
			    <span style="color:#f39c12;">return</span> <span style="color:#999999;">"&lt;undefined&gt;" </span><span style="color:#2ecc71;">--default</span><br /><span style="color:#f39c12;">end</span>
		</p>

		<p>
			Как использовать:<br />
			typeid(любой один аргумент)<br />
			typeid(<span style="color:#e74c3c;">7</span>)                 <span style="color:#2ecc71;">--output: &lt;u8&gt;</span><br />
			typeid(<span style="color:#e74c3c;">256</span>)            <span style="color:#2ecc71;">--output: &lt;u16&gt;</span><br />
			typeid({<span style="color:#e74c3c;">1234</span>, <span style="color:#e74c3c;">2458</span>, <span style="color:#999999;">"sl"</span>})            <span style="color:#2ecc71;">--output: &lt;table&gt;</span><br />
			И тому подобное...
		</p>
	</div>
</div>

<hr /><div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Комплексный вызов функций cws_call">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Автор: liner<br />
			Платформы: SoC (под сомнением), CS, CoP
		</p>

		<p>
			<span style="color:#3498db;">Комплексный вызов функции с доп. аргументами для функции (полное название: complex call with settings)<br />
			данная функция вызывает переданную функцию несколько раз с теми аргументами,<br />
			которые были переданы в ... и передаёт ещё дополнительно во все функции аргументы<br />
			из настройки_передачи.</span>
		</p>

		<p>
			_cjm = <span style="color:#999999;">"`"</span><span style="color:#2ecc71;"> --Эту переменную нужно объявить в _G, если cws_call используется повсеместно.</span><br /><span style="color:#f39c12;">function</span> cws_call(funct,settings,...)<br />
			    <span style="color:#f39c12;">local</span> t = {...}<br />
			    <span style="color:#f39c12;">local</span> s_size = #settings <span style="color:#2ecc71;">--кэшируем размер таблицы</span><br />
			    <span style="color:#f39c12;">local</span> lst = <span style="color:#e74c3c;">1</span><br />
			    <span style="color:#f39c12;">for</span> i = <span style="color:#e74c3c;">1</span>, #t <span style="color:#f39c12;">do</span><br />
			        <span style="color:#f39c12;">if</span> t<em> == _cjm <span style="color:#f39c12;">then</span></em><br /><em>            <span style="color:#f39c12;">local</span> ct = {}</em><br /><em>            <span style="color:#f39c12;">for</span> j = lst, i-<span style="color:#e74c3c;">1</span> <span style="color:#f39c12;">do</span></em><br /><em>                <span style="color:#9b59b6;">table.insert</span>(ct,t[j])</em><br /><em>            <span style="color:#f39c12;">end</span></em><br /><em>            <span style="color:#f39c12;">for</span> j = <span style="color:#e74c3c;">1</span>, s_size <span style="color:#f39c12;">do</span></em><br /><em>                <span style="color:#9b59b6;">table.insert</span>(ct,settings[j])</em><br /><em>            <span style="color:#f39c12;">end</span></em><br /><em>            lst = i + <span style="color:#e74c3c;">1</span></em><br /><em>            funct(<span style="color:#e74c3c;">select</span>(<span style="color:#e74c3c;">1</span>,<span style="color:#e74c3c;">unpack</span>(ct)))</em><br /><em>        <span style="color:#f39c12;">end</span></em><br /><em>    <span style="color:#f39c12;">end</span></em><br /><em>    <span style="color:#f39c12;">local</span> ct = {<span style="color:#e74c3c;">select</span>(lst,...)}</em><br /><em>    <span style="color:#f39c12;">for</span> j = <span style="color:#e74c3c;">1</span>, s_size <span style="color:#f39c12;">do</span></em><br /><em>        <span style="color:#9b59b6;">table.insert</span>(ct,settings[j])</em><br /><em>    <span style="color:#f39c12;">end</span></em><br /><em>    funct(<span style="color:#e74c3c;">select</span>(<span style="color:#e74c3c;">1</span>,<span style="color:#e74c3c;">unpack</span>(ct)))</em><br /><span style="color:#f39c12;"><em>end</em></span><br /><br /><em>Как использовать:</em><br /><em>cws_call(ссылка на функцию,{настройки_передачи},аргументы)               <span style="color:#2980b9;">&lt;</span><span style="color:#f39c12;">function</span>, table, ...</em><span style="color:#2980b9;"><em>&gt;</em></span><br /><em>cws_call(<span style="color:#e74c3c;">print</span>,{<span style="color:#999999;">"THIRD ARGUMENT"</span>,<span style="color:#999999;">"end"</span>}, <span style="color:#e74c3c;">1</span>,_cjm,<span style="color:#999999;">"GO!"</span>,<span style="color:#e74c3c;">0</span>,<span style="color:#e74c3c;">0</span>)</em>
		</p>

		<p>
			Где _cjm - разделитель, до него все аргументы будут переданы в функцию (в данном<br />
			случае это <span style="color:#e74c3c;">print</span>)
		</p>

		<p>
			Прошлый cws_call эквивалентен коду:<br />
			print(<span style="color:#e74c3c;">1</span>,<span style="color:#999999;">"THIRD ARGUMENT"</span>,<span style="color:#999999;">"end"</span>)<br />
			print(<span style="color:#999999;">"GO!"</span>,<span style="color:#e74c3c;">0</span>,<span style="color:#e74c3c;">0</span>,<span style="color:#999999;">"THIRD ARGUMENT"</span>,<span style="color:#999999;">"end"</span>)
		</p>
	</div>
</div>
]]></description><guid isPermaLink="false">3429</guid><pubDate>Tue, 12 Apr 2022 12:53:28 +0000</pubDate></item><item><title>&#x418;&#x43D;&#x442;&#x435;&#x440;&#x430;&#x43A;&#x442;&#x438;&#x432; &#x43A; SoC gunslinger Adaptation[OGSR ENGINE]</title><link>https://ap-pro.ru/forums/topic/12197-interaktiv-k-soc-gunslinger-adaptationogsr-engine/</link><description><![CDATA[<p>
	Здравствуйте, хотел бы попросить помощь у тех кто "шарит" по данной теме.<br />
	Итак, есть интерактив написанный на LUA. Есть программа RutonyChat которая отслеживает данные о донате, и скрипт в игре считывает файлы доната, т.е кто-то донатит на сумму 20 рублей, и луа скрипт считывает это из тхт файла, и в игре появляются допустим собаки, не знаю только правильно ли он написан или нет <a href="https://pastebin.com/mBFU4M75" rel="external nofollow">САМ ИНТЕРАКТИВ</a>, загляните пожалуйста, и скажите что тут не так. <a href="https://pastebin.com/fETsXPgY" rel="external nofollow">bind_stalker.script</a> если надо что-то менять в нем. так же <a href="https://pastebin.com/bFPpNVW5" rel="external nofollow">init.script</a> который подключает интерактив. Опыта в LUA у меня нету, интерактив просто не работает, поэтому прошу помощи у вас.<br />
	Версия SoC gunslinger Adaptation 1.99 19.02.2025
</p>]]></description><guid isPermaLink="false">12197</guid><pubDate>Sat, 05 Jul 2025 20:22:04 +0000</pubDate></item><item><title>&#x412;&#x44B;&#x43B;&#x435;&#x442;&#x44B; &#x43F;&#x43E; &#x43F;&#x430;&#x43C;&#x44F;&#x442;&#x438;. &#x421;&#x43F;&#x43E;&#x441;&#x43E;&#x431; &#x43A;&#x43E;&#x442;&#x43E;&#x440;&#x44B;&#x439; &#x432;&#x430;&#x43C; &#x43D;&#x443;&#x436;&#x435;&#x43D;.</title><link>https://ap-pro.ru/forums/topic/1748-vylety-po-pamyati-sposob-kotoryy-vam-nuzhen/</link><description><![CDATA[
<p style="text-align:center;">
	<strong>Борьба с out of memory.</strong>
</p>

<p style="text-align:center;">
	<span style="color:#2ecc71;">Способ работает только на API DirectX версий 10 (R3) и выше. Также на оригинальных движках трилогий.</span>
</p>

<p style="text-align:center;">
	Текстуры теперь будут храниться в видеопамяти, не загружая оперативную. <br />
	Если видеопамять кончилась, то текстуры начинают грузиться в ОЗУ. <br />
	Так что правку рекомендую включать всем, однако хороший результат будет у владельцев 4 гб видеопамяти, а самый лучший от 6 гб.
</p>

<p>
	      Эх, наконец-то свершилось, 32 битные моды больше не вылетает по памяти, ура! Максимальные настройки.<br />
	Форумчанин под ником <span style="color:#f1c40f;">Krt0ki</span> он же <span style="color:#f1c40f;"><a contenteditable="false" data-ipshover="" data-ipshover-target="https://ap-pro.ru/profile/110-mortan/?do=hovercard" data-mentionid="110" href="https://ap-pro.ru/profile/110-mortan/" rel="">@mortan</a></span> рассказал о "переключений" текстур с ОЗУ на видеопамять, об этом способе ему поведал сам "Shoker". Это вещь была сделана GSC для оптимизаций под слабые карты, в те "бородатые года в основном были 256-512мб GDDR затычки, однако ОЗУ было более 1.5 гб.
</p>

<p>
	    Самое странное, что за такое продолжительное время, а именно начиная с 2009 года никто об этом не рассказывает, выглядит очень странно, такое ощущение что разработчики нас <span style="color:#7f8c8d;"><s>отгораживают от рептилоидов  </s></span><s><span style="color:#ffffff;"> </span></s><span style="color:#ffffff;">просто забывают и не рассказывают про этот про способ.</span><br />
	     Cпособ немного улучшит положение у владельцев ПК с видеокартами у которых памяти менее 1 ГБ, станет поменьше вылетов по памяти, некоторые непроходимые моменты теперь можно пройти.<br />
	Чтобы включить режим хранения текстур видеопамяти нужно прописать в ярлык: <span style="font-family:Tahoma, Geneva, sans-serif;"><span style="color:#f39c12;">-no_staging</span></span><br />
	     Для примера, я возьму мод Dead Air. Должно получится так:
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Пример как нужно прописать в ярлык:">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<img alt="115184038_.jpg.3edd007436dc0909d5b68d4ba21f184c.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="1782" data-ratio="126.25" style="height:auto;" width="419" data-src="https://ap-pro.ru/uploads/monthly_2020_08/115184038_.jpg.3edd007436dc0909d5b68d4ba21f184c.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></p>
	</div>
</div>

<p>
	   Не забудьте, ярлык должен быть создан от файла "xrEngine.exe".
</p>

<p>
	Отследить можно через мониторинг в Task manager или использовать сторонние программы, например MSI afterburner или FPS Monitor.
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Скриншот с мода Dead Air">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="1783" href="https://ap-pro.ru/uploads/monthly_2020_08/5262099.jpg.d5654354a69c9611cd6421f0787fa46a.jpg" rel=""><img alt="5262099.thumb.jpg.687a3ea0274036aec3111dca82f22c25.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="1783" data-ratio="56.30" style="height:auto;" width="1000" data-src="https://ap-pro.ru/uploads/monthly_2020_08/5262099.thumb.jpg.687a3ea0274036aec3111dca82f22c25.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></a>
		</p>
	</div>
</div>

<p>
	Имея видеокарту GTX 1070 8gb я забыл о вылетах по памяти...
</p>
]]></description><guid isPermaLink="false">1748</guid><pubDate>Sun, 09 Aug 2020 17:40:33 +0000</pubDate></item><item><title>[CoP] &#x41D;&#x43E;&#x432;&#x44B;&#x439;, &#x443;&#x441;&#x43E;&#x432;&#x435;&#x440;&#x448;&#x435;&#x43D;&#x441;&#x442;&#x432;&#x43E;&#x432;&#x430;&#x43D;&#x43D;&#x44B;&#x439; send_tip</title><link>https://ap-pro.ru/forums/topic/4012-cop-novyy-usovershenstvovannyy-send_tip/</link><description><![CDATA[<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Сам скрипт и как его адаптировать">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Заходим в xr_effects.script и листаем в самый низ,<br />
			Вставляем это в самый конец:<br />
			function give_game_news(actor, npc, p)<br />
			    local actor = db.actor<br />
			    local news_caption = game.translate_string(p[1])<br />
			    local news_text = game.translate_string(p[2])<br />
			    actor:give_game_news(news_caption, news_text, p[3], 0, p[4])<br />
			    xr_sound.set_sound_play(actor:id(), "pda_tips")<br />
			end<br />
			Главное чтобы перед ним <u>ни в коем случае</u> не было <strong><u>пробелов</u></strong>!<br />
			Готово.
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Активация скрипта">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Заходим в любую нужную вам логику рестриктора и пишем:<br />
			on_info = {условие} %=give_game_news(1:2:3:4)%<br />
			Теперь обозначения:<br />
			1 - имя отправителя из text\rus<br />
			2 - текст сообщения из text\rus<br />
			3 - Иконка отправителя которую можно взять из ui\ui_actor_portrets или ui_actor_newsmanager_icons<br />
			4 - Время показывания сообщения в миллисекундах (10000 - 10 сек)
		</p>
	</div>
</div>

<p>
	 
</p>]]></description><guid isPermaLink="false">4012</guid><pubDate>Fri, 30 Dec 2022 11:32:19 +0000</pubDate></item><item><title>&#x421;&#x43A;&#x440;&#x438;&#x43F;&#x442;&#x44B; &#x441;&#x43F;&#x430;&#x432;&#x43D;&#x430; &#x434;&#x43B;&#x44F; Stalker &#x417;&#x43E;&#x432; &#x41F;&#x440;&#x438;&#x43F;&#x44F;&#x442;&#x438;</title><link>https://ap-pro.ru/forums/topic/11524-skripty-spavna-dlya-stalker-zov-pripyati/</link><description><![CDATA[<p>
	Хотел бы узнать, есть ли какие-то скрипты для того чтобы вызвать какого-то определенного мутанта по одной лишь букве? Я стример и мне нужен такой скрипт, или что-то подобное, может через какую-нибудь программу, потому что через повелитель зоны это делать не удобно.
</p>]]></description><guid isPermaLink="false">11524</guid><pubDate>Tue, 13 May 2025 12:59:06 +0000</pubDate></item><item><title>&#x420;&#x430;&#x437;&#x431;&#x438;&#x440;&#x430;&#x435;&#x43C; &#x43F;&#x430;&#x434;&#x435;&#x43D;&#x438;&#x435; &#x440;&#x435;&#x43F;&#x443;&#x442;&#x430;&#x446;&#x438;&#x438;/&#x43E;&#x442;&#x43D;&#x43E;&#x448;&#x435;&#x43D;&#x438;&#x439; &#x432; NLC 7</title><link>https://ap-pro.ru/forums/topic/10964-razbiraem-padenie-reputaciiotnosheniy-v-nlc-7/</link><description><![CDATA[<p>
	В NLC 7 существует скриптовая система, благодаря которой, атакуя нейтральных (и вроде даже не атакующих враждебных) сталкеров, игрок в дальнейшем получит серьезные проблемы. 
</p>

<p>
	Первое, что приходит игроку - уведомления на КПК. Сообщения имеют такой посыл: "Видел, как один сталкер с харей покорёженной, парня завалил." и тд. 
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Примеры сообщений">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<img class="ipsImage ipsImage_thumbnailed" data-fileid="48919" data-ratio="57.06" width="531" alt="Screenshot_10.png.75c5657b315bcf6f0a1209847d9ef927.png" data-src="https://ap-pro.ru/uploads/monthly_2025_02/Screenshot_10.png.75c5657b315bcf6f0a1209847d9ef927.png" src="https://ap-pro.ru/applications/core/interface/js/spacer.png" /></p>
	</div>
</div>

<p>
	Эти сообщения находятся в <em>gamedata\scripts\sak\sak_dialog.script </em>в функции <em><strong>all_repa_no_good()</strong>. </em>В функции сначала игроку сбрасывает 50 очков репутации, затем запускается таймер с вызовом <strong><em>up_repa(-250),</em></strong> которая сделает понижение репутации ещё на 250 очков со сопутствующими ругательными сообщениями.
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="all_repa_no_good">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="kwd">function</span><span class="pln"> all_repa_no_good</span><span class="pun">()</span><span class="pln">
	db</span><span class="pun">.</span><span class="pln">actor</span><span class="pun">:</span><span class="pln">change_character_reputation</span><span class="pun">(</span><span class="lit">-50</span><span class="pun">)</span><span class="pln">
	</span><span class="kwd">local</span><span class="pln"> name</span><span class="pun">,</span><span class="pln">sname </span><span class="pun">=</span><span class="pln"> amk_names_lists</span><span class="pun">.</span><span class="pln">get_strings</span><span class="pun">()</span><span class="pln">
	sak</span><span class="pun">.</span><span class="pln">send_tip</span><span class="pun">(</span><span class="str">"Видел, как один сталкер с харей покорёженной, парня завалил. От такого всё, что хочешь ждать можно."</span><span class="pun">,</span><span class="pln">name</span><span class="pun">..</span><span class="str">" "</span><span class="pun">..</span><span class="pln">sname</span><span class="pun">,</span><span class="lit">0</span><span class="pun">,</span><span class="lit">15</span><span class="pun">,</span><span class="str">"uniq"</span><span class="pun">,</span><span class="str">"news"</span><span class="pun">,</span><span class="str">"gray"</span><span class="pun">)</span><span class="pln">
	</span><span class="kwd">local</span><span class="pln"> name2</span><span class="pun">,</span><span class="pln">sname2 </span><span class="pun">=</span><span class="pln"> amk_names_lists</span><span class="pun">.</span><span class="pln">get_strings</span><span class="pun">()</span><span class="pln">
	sak</span><span class="pun">.</span><span class="pln">send_tip</span><span class="pun">(</span><span class="str">"Это кто такой? Знал я одного. Морда ужас! Копчёный или не... На мы букву... В общем понятно всё с таким."</span><span class="pun">,</span><span class="pln">name2</span><span class="pun">..</span><span class="str">" "</span><span class="pun">..</span><span class="pln">sname2</span><span class="pun">,</span><span class="lit">15</span><span class="pun">,</span><span class="lit">15</span><span class="pun">,</span><span class="str">"uniq"</span><span class="pun">,</span><span class="str">"news"</span><span class="pun">,</span><span class="str">"gray"</span><span class="pun">)</span><span class="pln">
	timers</span><span class="pun">.</span><span class="pln">start_timer</span><span class="pun">(</span><span class="str">"hell_repa"</span><span class="pun">,</span><span class="lit">0</span><span class="pun">,</span><span class="lit">5</span><span class="pun">,</span><span class="lit">11</span><span class="pun">,</span><span class="str">"sak_dialog.up_repa(-250)"</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">end</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	Влияние текущей репутации на отношения группировок описывается в файле<em> gamedata\config\creatures\game_relations.ltx</em> в секции <strong><em>[reputation_relations]. </em></strong>Из которой видно, что при плохой репутации у игрока, НПС с (как минимум) нейтральной (и выше) будут негативно относиться к Меченному (-600, -400 и тд).
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="reputation_relations">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode prettyprint lang-html prettyprinted">

<span class="pln">[reputation_relations]
;	 		terrible, 	very_bad,  bad,	 neutral, good, very_good, excellent -это репутация актора
;============================================================================================
terrible	=      50,      25,      10,    0,      0,      0,    0
very_bad	=     100,      50,      25,    0,      0,      0,    0
bad			=     200,     100,      50,    0,      0,      0,    0
neutral		=    -600,    -300,    -150,    0,    150,    200,   450
good		=    -400,    -200,    -100,   10,    200,    300,   500
very_good	=    -250,    -150,     -50,   20,    250,    350,   550
excellent	=    -100,     -50,       0,   20,     25,     30,    50</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	На сколько я понял (из <em>game_relations.ltx</em>), если отношение становится меньше -150, то группировка становится враждебной.
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="пороговые значения для отношения персонажей">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode prettyprint lang-html prettyprinted">

<span class="pln">;пороговые значения для отношения персонажей
attitude_neutal_threshold =  -150	;когда attitude меньше значения, то выставляется ALife::eRelationEnemy
attitude_friend_threshold =   500	;когда attitude меньше значения, то выставляется ALife::eRelationNeutral, иначе ALife::eRelationFriend</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	Как вариант, можно в <em>sak_dialog.script</em> подправить сами значения (при передаче в <strong><em>db.actor:change_character_reputation</em></strong> и <strong><em>sak_dialog.up_repa</em></strong>). То есть, сообщения будут приходить, но репутация падать не будет. Но!... Давайте посмотрим откуда вызывается <strong><em>all_repa_no_good()? </em></strong>Вызов происходит из <strong><em>hellcar_repa_no_good()</em></strong> по таймеру. И hellcar_repa_no_good() вызывается из <em>scripts\xr\xr_motivator.script</em> функции <em><strong>motivator_binder:death_callback(victim, who).</strong></em> Опять же, другой вариант закомментировать сам вызов <strong><em>sak_dialog.hellcar_repa_no_good()</em></strong>.
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="motivator_binder:death_callback">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="kwd">if</span><span class="pln"> who</span><span class="pun">:</span><span class="pln">id</span><span class="pun">()==</span><span class="pln">db</span><span class="pun">.</span><span class="pln">actor</span><span class="pun">:</span><span class="pln">id</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
  xr_statistic</span><span class="pun">.</span><span class="pln">addKillCount</span><span class="pun">(</span><span class="pln">self</span><span class="pun">.</span><span class="pln">object</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> amk</span><span class="pun">.</span><span class="pln">get_npc_relation</span><span class="pun">(</span><span class="pln">victim</span><span class="pun">,</span><span class="pln">who</span><span class="pun">)~=</span><span class="str">"enemy"</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> self</span><span class="pun">.</span><span class="pln">object</span><span class="pun">:</span><span class="pln">character_community</span><span class="pun">()~=</span><span class="str">"bandit"</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
      sak_dialog</span><span class="pun">.</span><span class="pln">hellcar_repa_no_good</span><span class="pun">()</span><span class="pln">
    </span><span class="kwd">end</span><span class="pln">
    </span><span class="kwd">local</span><span class="pln"> gulag </span><span class="pun">=</span><span class="pln"> xr_gulag</span><span class="pun">.</span><span class="pln">get_npc_gulag</span><span class="pun">(</span><span class="pln">victim</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> gulag </span><span class="kwd">and</span><span class="pln"> gulag</span><span class="pun">.</span><span class="pln">name </span><span class="kwd">and</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> gulags_bad</span><span class="pun">[</span><span class="pln">gulag</span><span class="pun">.</span><span class="pln">name</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
      xr_gulag</span><span class="pun">.</span><span class="pln">setGulagEnemy</span><span class="pun">(</span><span class="pln">gulag</span><span class="pun">.</span><span class="pln">name</span><span class="pun">,</span><span class="pln"> db</span><span class="pun">.</span><span class="pln">actor</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">end</span><span class="pln">
  </span><span class="kwd">end</span><span class="pln">
</span><span class="kwd">end</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	Из интересного (на сколько я понял), если игрок убивает не враждебных и не бандитов, то будет происходить падение репутации. Не до конца понятно, конкретно тут, кто является <em>enemy?</em> Тот, кто просто имеет в поле "отношение" - враг? Или тот, кто именно атакует ГГ? Потому что, я помню был случай, что после замеров на Радаре вернулся в бар и меня стали атаковать долговцы с сообщениями, что "Меченный козел". Возможно, я на Радаре кого-то из монолитовцев вальнул, точно уже не помню.
</p>

<p>
	Последнее, про что не нужно забывать - при убийстве нейтральных/дружественных сталков в любом случае падает отношение. Это определяется всё в том же <em>game_relations.ltx</em> в секции <strong><em>communities_sympathy</em></strong>.
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="communities_sympathy">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode prettyprint lang-html prettyprinted">

<span class="pln">;коэффициенты "сочувствия" группировок
;после воздействия на одного из членов группировки
;goodwill его распространится на остальных членов группировки
;с определенным коэффициентом
[communities_sympathy]
actor							=	0.0
actor_dolg						=	0.0
actor_freedom 					=	0.0
stalker							=	0.05
monolith						=	0.0
military						=	0.0
killer							=	0.0
ecolog							=	0.4
dolg							=	0.2
freedom							=	0.2
bandit							=	0.0
zombied							=	0.0
trader							=	0.2
stranger						=	0.0
arena_enemy 					=	0.0
sniper 							=	0.0
green 							=	0.2</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	Всё это ковырялось в открытой NLC 7 3.8.2. В других версиях, возможно, что-то может быть по-другому. Но не думаю, что кто-то это менял на протяжении многих обновлений.
</p>]]></description><guid isPermaLink="false">10964</guid><pubDate>Sun, 23 Feb 2025 05:34:54 +0000</pubDate></item><item><title>&#x41B;&#x43E;&#x433;&#x438;&#x43A;&#x430; &#x41D;&#x41F;&#x421; - "use"</title><link>https://ap-pro.ru/forums/topic/10887-logika-nps-use/</link><description><![CDATA[<p>
	Всем привет. Народ, подскажите, блин, скоро голова взорвется))) В общем, есть у меня два нпс эксклюзивных. Мне нужно что бы, если актер подойдет ко второму нпс, ничего не происходило, то есть, был обычный диалог приветствия и "бывай" - дефолтный. Но если актер подойдет к первому нпс и поговорит с ним, на определенном предложении актер должен получить инфопоршень, который активирует второго нпс. То есть, после разговора с первым нпс, актер подходит ко второму, второй его САМ юзает и ведет специальный, сюжетный диалог, по окончанию которого диалоговое окно закрывается, и если еще раз заговорить со вторым нпс, снова будет обычный дефолтный диалог. Короче, у меня это все получилось, все работает, НО когда я снова подхожу ко второму нпс, уже после диалога, он снова меня САМ юзает и ведет обычный дефолтный диалог. Именно что дефолтный. Это мне и нужно, но мне не нужно, что бы он снова (постоянно) меня юзал. Как мне избавится от этого? Фуф, надеюсь понятно объяснил. Еще мне нужно выдать задание, после оканчания этого диалога...
</p>]]></description><guid isPermaLink="false">10887</guid><pubDate>Sun, 09 Feb 2025 17:14:31 +0000</pubDate></item><item><title>&#x420;&#x430;&#x437;&#x43D;&#x430;&#x44F; &#x433;&#x43E;&#x442;&#x43E;&#x432;&#x430;&#x44F; &#x43B;&#x43E;&#x433;&#x438;&#x43A;&#x430;</title><link>https://ap-pro.ru/forums/topic/6191-raznaya-gotovaya-logika/</link><description><![CDATA[<p>
	Я решил поделиться с вами небольшой шпаргалкой для мододелов.
</p>

<p>
	Здесь будет разная готовая логика с разбором.
</p>

<p>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Логика нпс Анимпоинт">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			[logic@название_нпс]<br />
			active = animpoint@название_нпс<br />
			suitable = {=check_npc_name(название_нпс)}true<br />
			prior = 90
		</p>

		<p>
			level_spot = левел_спот
		</p>

		<p>
			[animpoint@название_нпс]<br />
			use_camp = false\true<br />
			meet = no_meet\meet@любое_название<br />
			combat_ignore_cond = false\true<br />
			combat_ignore_keep_when_attacked = false\true<br />
			invulnerable = false\true<br />
			gather_items_enabled = false\true<br />
			help_wounded_enabled = false\true<br />
			corpse_detection_enabled = false\true<br />
			cover_name = смарт_ковер НПСа<br />
			trade_enable = false\true
		</p>

		<p>
			[meet@любое_название]<br />
			close_anim         = nil<br />
			close_victim     = nil<br />
			far_anim         = nil<br />
			far_victim         = nil<br />
			close_distance     = 0<br />
			far_distance     = 0<br />
			use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false<br />
			snd_on_use = {!dist_to_actor_le(3)} nil<br />
			meet_on_talking = false
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разбор">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[logic@название_нпс]<br />
					active = animpoint@название_нпс<br />
					suitable = {=check_npc_name(название_нпс)}true<br />
					prior = 90
				</p>

				<p>
					level_spot = левел_спот - метка нпс на карте
				</p>

				<p>
					[animpoint@название_нпс]<br />
					use_camp = false\true - будет ли нпс реагировать на camp зону<br />
					meet = no_meet\meet@любое_название - no_meet нельзя поговорить; можно поговорить<br />
					combat_ignore_cond = false\true - будет ли нпс реагировать на атаку<br />
					combat_ignore_keep_when_attacked = false\true - будет ли нпс реагировать на то когда он будет атакован<br />
					invulnerable = false\true - будет ли нпс бессмертный<br />
					gather_items_enabled = false\true - будет ли нпс подбирать предметы<br />
					help_wounded_enabled = false\true - будет ли нпс помогать раненым<br />
					corpse_detection_enabled = false\true - будет ли нпс лутать трупы<br />
					cover_name = смарт_ковер НПСа<br />
					trade_enable = false\true - будет ли нпс торговать
				</p>

				<p>
					[meet@любое_название]<br />
					close_anim         = nil<br />
					close_victim     = nil<br />
					far_anim         = nil<br />
					far_victim         = nil<br />
					close_distance     = 0<br />
					far_distance     = 0<br />
					use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false<br />
					snd_on_use = {!dist_to_actor_le(3)} nil<br />
					meet_on_talking = false
				</p>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Логика НПС walker">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			[logic@название_нпс]<br />
			active = walker@название_нпс<br />
			suitable = {=check_npc_name(название_нпс)}true<br />
			prior = 91<br />
			level_spot = левел_спот
		</p>

		<p>
			[walker@название_нпс]<br />
			path_walk = нпс_walk<br />
			path_look = нпс_look<br />
			meet = meet@любое_название<br />
			combat_ignore_cond = true<br />
			combat_ignore_keep_when_attacked = true<br />
			invulnerable = true<br />
			gather_items_enabled = false<br />
			help_wounded_enabled = false<br />
			corpse_detection_enabled = false
		</p>

		<p>
			[meet@любое_название ]<br />
			close_anim         = nil<br />
			close_victim     = nil<br />
			far_anim         = nil<br />
			far_victim         = nil<br />
			close_distance     = 0<br />
			far_distance     = 0<br />
			use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false<br />
			snd_on_use = {!dist_to_actor_le(3)} nil
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разбор">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					Тут разбор схемы walker. Полный разбор в схеме анимпоинта
				</p>

				<p>
					[logic@название_нпс]<br />
					active = walker@название_нпс<br />
					suitable = {=check_npc_name(название_нпс)}true<br />
					prior = 91<br />
					level_spot = левел_спот
				</p>

				<p>
					[walker@название_нпс]<br />
					path_walk = нпс_walk - где нпс стоит. Ставить только последние слова, которые начинаются с название нпс. Полное название не нужно<br />
					path_look = нпс_look - куда нпс смотрит. Ставить только последние слова, которые начинаются с название нпс. Полное название не нужно<br />
					meet = meet@любое_название<br />
					combat_ignore_cond = true<br />
					combat_ignore_keep_when_attacked = true<br />
					invulnerable = true<br />
					gather_items_enabled = false<br />
					help_wounded_enabled = false<br />
					corpse_detection_enabled = false
				</p>

				<p>
					[meet@любое_название ]<br />
					close_anim         = nil<br />
					close_victim     = nil<br />
					far_anim         = nil<br />
					far_victim         = nil<br />
					close_distance     = 0<br />
					far_distance     = 0<br />
					use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false<br />
					snd_on_use = {!dist_to_actor_le(3)} nil
				</p>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Логика камеры">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			[logic]<br />
			active = sr_idle
		</p>

		<p>
			[sr_idle]<br />
			on_info = {=actor_in_zone(space_rescrictor)} sr_cutscene %=run_postprocess(fade_in:1234) =disable_ui%
		</p>

		<p>
			[sr_cutscene]<br />
			point = где будет стоять гг после катсцены<br />
			look = куда будет смотреть гг после катсцены<br />
			cam_effector = scenario_cam\локация\название_камеры<br />
			global_cameffect = true\false<br />
			on_signal = cameff_end | sr_idle@end_cam %=stop_postprocess(1234) =enable_ui%
		</p>

		<p>
			[sr_idle@end_cam]
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разбор">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[logic]<br />
					active = sr_idle - активная логика
				</p>

				<p>
					[sr_idle]<br />
					on_info = {=actor_in_zone(space_rescrictor)} sr_cutscene %=run_postprocess(fade_in:1234) =disable_ui%
				</p>

				<p>
					{=actor_in_zone(space_rescrictor)} - проверка находится ли гг в спейс рестрикторе
				</p>

				<p>
					sr_cutscene - переключение на секцию sr_cutscene
				</p>

				<p>
					=run_postprocess(fade_in:1234) - включение чёрного экрана
				</p>

				<p>
					=disable_ui - отключение ui
				</p>

				<p>
					[sr_cutscene]<br />
					point = где будет стоять гг после катсцены<br />
					look = куда будет смотреть гг после катсцены<br />
					cam_effector = scenario_cam\локация\название_камеры<br />
					global_cameffect = true\false - не знаю за что отвечает, я обычно ставлю true<br />
					on_signal = cameff_end | sr_idle@end_cam %=stop_postprocess(1234) =enable_ui%
				</p>

				<p>
					on_signal = cameff_end - выполнить действие когда катсцена закончилась
				</p>

				<p>
					sr_idle@end_cam - переключение на секцию sr_idle@end_cam
				</p>

				<p>
					=enable_ui - включить ui
				</p>

				<p>
					[sr_idle@end_cam]
				</p>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Логика радио с возможностью включения и выключения">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			[logic]<br />
			active = ph_idle@play - активная секция
		</p>

		<p>
			[ph_idle@play]<br />
			on_info = %=play_sound(звук из scripts_sound)% ph_idle@time
		</p>

		<p>
			[ph_idle@off]<br />
			on_use = ph_idle@play<br />
			tips = radio_on
		</p>

		<p>
			[ph_idle@time]<br />
			on_game_timer = 15 | ph_idle@play<br />
			on_use = ph_idle@off %=stop_sound% <br />
			tips = radio_off
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разбор">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[logic]<br />
					active = ph_idle@play - а
				</p>

				<p>
					[ph_idle@play]<br />
					on_info = %=play_sound(звук из scripts_sound)% ph_idle@time - включение звука и переключение на секцию
				</p>

				<p>
					[ph_idle@off]<br />
					on_use = ph_idle@play - переключение на секцию при нажатии клавиши действия<br />
					tips = radio_on - подпись внизу экрана (нужно прописать в text\rus\любойфайл)
				</p>

				<p>
					[ph_idle@time]<br />
					on_game_timer = 15 | ph_idle@play - включение нового саундтрека через 1.5 секунды после окончания предыдущего<br />
					on_use = ph_idle@off %=stop_sound% - переключение на секцию при нажатии клавиши действия, остановка звука<br />
					tips = radio_off - подпись внизу экрана (нужно прописать в text\rus\любойфайл)
				</p>
			</div>
		</div>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="То, что нужно прописать в script_sound">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[radio]<br />
					type = 3d<br />
					npc_prefix = false<br />
					path = radio\radio_music_ - путь к саундтрекам<br />
					shuffle = rnd<br />
					idle = 1,10,100
				</p>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Логика аномалий">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			[anomal_zone]<br />
			layers_count = 2<br />
			respawn_tries = 2<br />
			max_artefacts = 2<br />
			artefacts = af_medusa, af_cristall_flower, af_night_star, af_vyvert (любые арты)<br />
			start_artefact = af_medusa<br />
			coeff = 3, 3, 2, 1<br />
			artefact_ways = вэй_поинты по которым будут двигаться артефакты<br />
			field_name = название радиоктивной\термической и т. д. зоны
		</p>

		<p>
			[mines_core]<br />
			список аномалий, которые будут всегда
		</p>

		<p>
			[layer_1]<br />
			mines_section = mines_layer_1
		</p>

		<p>
			[mines_layer_1]:mines_core<br />
			список аномалий, которые будут после выброса
		</p>

		<p>
			[layer_2]<br />
			mines_section = mines_layer_2
		</p>

		<p>
			[mines_layer_2]:mines_core
		</p>

		<p>
			список аномалий, которые будут после выброса
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разбор">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[anomal_zone]<br />
					layers_count = 2 - количество вариаций расположения аномалий<br />
					respawn_tries = 2 - не знаю зачем<br />
					max_artefacts = 2 - максимальное кол-во артов в аномалии<br />
					artefacts = af_medusa, af_cristall_flower, af_night_star, af_vyvert (любые арты)<br />
					start_artefact = af_medusa - артефакт, который появится сразу со 100% шансом<br />
					coeff = 3, 3, 2, 1 - шансы впадения артов (по порядку как в artefacts)<br />
					artefact_ways = вэй_поинты по которым будут двигаться артефакты<br />
					field_name = название радиоктивной\термической и т. д. зоны
				</p>

				<p>
					[mines_core]<br />
					список аномалий, которые будут всегда
				</p>

				<p>
					[layer_1]<br />
					mines_section = mines_layer_1
				</p>

				<p>
					[mines_layer_1]:mines_core<br />
					список аномалий, которые будут после выброса
				</p>

				<p>
					[layer_2]<br />
					mines_section = mines_layer_2
				</p>

				<p>
					[mines_layer_2]:mines_core
				</p>

				<p>
					список аномалий, которые будут после выброса
				</p>
			</div>
		</div>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Пример">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[anomal_zone]<br />
					layers_count = 2<br />
					respawn_tries = 2<br />
					max_artefacts = 2<br />
					artefacts = af_medusa, af_cristall_flower, af_night_star, af_vyvert<br />
					start_artefact = af_medusa<br />
					coeff = 3, 3, 2, 1<br />
					artefact_ways = test_anomal_zone_af_way_1, test_anomal_zone_af_way_2<br />
					field_name = escape_zone_field_radioactive_average
				</p>

				<p>
					[mines_core]<br />
					escape_zone_mine_gravitational_average_0002<br />
					escape_zone_mine_gravitational_average_0003<br />
					escape_zone_mine_gravitational_average_0004<br />
					escape_zone_mine_gravitational_average_0005<br />
					escape_zone_mine_gravitational_average_0006<br />
					escape_zone_mine_gravitational_average_0007
				</p>

				<p>
					[layer_1]<br />
					mines_section = mines_layer_1
				</p>

				<p>
					[mines_layer_1]:mines_core<br />
					escape_zone_mine_gravitational_average_0014<br />
					escape_zone_mine_gravitational_average_0015<br />
					escape_zone_mine_gravitational_average_0016<br />
					escape_zone_mine_gravitational_average_0017<br />
					escape_zone_mine_gravitational_average_0018<br />
					escape_zone_mine_gravitational_average_0019
				</p>

				<p>
					[layer_2]<br />
					mines_section = mines_layer_2
				</p>

				<p>
					[mines_layer_2]:mines_core<br />
					escape_zone_mine_gravitational_average<br />
					escape_zone_mine_gravitational_average_0000<br />
					escape_zone_mine_gravitational_average_0001<br />
					escape_zone_mine_gravitational_average_0008<br />
					escape_zone_mine_gravitational_average_0009<br />
					escape_zone_mine_gravitational_average_0010<br />
					escape_zone_mine_gravitational_average_0011<br />
					escape_zone_mine_gravitational_average_0012<br />
					escape_zone_mine_gravitational_average_0013
				</p>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Логика ламп которые работают только ночью">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			[logic]<br />
			active = sr_idle@off
		</p>

		<p>
			[sr_idle@off]<br />
			on_info = {=is_day} sr_idle@on %=turn_off(story_id освещения)%
		</p>

		<p>
			[sr_idle@on]<br />
			on_info = {!is_day} sr_idle@off %=turn_on(story_id освещения)%
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разбор">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[logic]<br />
					active = sr_idle@off - активная секция
				</p>

				<p>
					[sr_idle@off]<br />
					on_info = {=is_day} sr_idle@on %=turn_off(story_id освещения)%
				</p>

				<p>
					{=is_day} - проверка на день
				</p>

				<p>
					sr_idle@on - переключение на секцию sr_idle@on
				</p>

				<p>
					%=turn_off(story_id освещения)% - отключение освещения по story_id
				</p>

				<p>
					[sr_idle@on]<br />
					on_info = {!is_day} sr_idle@off %=turn_on(story_id освещения)%
				</p>

				<p>
					{!is_day} - проверка на отсутствие дня
				</p>

				<p>
					sr_idle@off - переключение на секцию sr_idle@off
				</p>

				<p>
					%=turn_off(story_id освещения)% - включение освещения по story_id
				</p>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Постоянный респавн сквада">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			[smart_terrain]<br />
			squad_id = id сквада<br />
			max_population = рекомендую поставить побольше, хотябы 5<br />
			respawn_params = respawn@имя_смарта
		</p>

		<p>
			[respawn@имя_смарта]<br />
			spawn_monsters@любое
		</p>

		<p>
			[spawn_monsters@любое]<br />
			spawn_squads = сквад
		</p>

		<p>
			spawn_num = 1
		</p>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Разбор">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[smart_terrain]<br />
					squad_id = id сквада<br />
					max_population = рекомендую поставить побольше, хотябы 5<br />
					respawn_params = respawn@имя_смарта
				</p>

				<p>
					[respawn@имя_смарта]<br />
					spawn_monsters@любое - здесь можно указать несколько сквадов
				</p>

				<p>
					[spawn_monsters@любое]<br />
					spawn_squads = сквад - имя сквада из squad_descr
				</p>

				<p>
					spawn_num = 1 - сколько сквадов может заспавниться за раз
				</p>
			</div>
		</div>

		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Пример">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<p>
					[smart_terrain]<br />
					squad_id = 3<br />
					max_population = 5<br />
					respawn_params = respawn@test_respawn_squad
				</p>

				<p>
					[respawn@test_respawn_squad]<br />
					spawn_monsters@flesh<br />
					spawn_monsters@boar
				</p>

				<p>
					[spawn_monsters@flesh]<br />
					spawn_squads = simulation_flesh<br />
					spawn_num = 2
				</p>

				<p>
					[spawn_monsters@boar]<br />
					spawn_squads = simulation_boar<br />
					spawn_num = 1
				</p>
			</div>
		</div>

		<p>
			 
		</p>
	</div>
</div>

<p>
	Тема будет дополняться
</p>]]></description><guid isPermaLink="false">6191</guid><pubDate>Wed, 06 Dec 2023 20:39:27 +0000</pubDate></item><item><title>X-Ray engine [1.6.00-1.6.02]</title><link>https://ap-pro.ru/forums/topic/1573-x-ray-engine-1600-1602/</link><description><![CDATA[
<p style="text-align: center;">
	<img class="ipsImage" data-ratio="62.50" height="625" style="height: auto; width: 600px;" width="1000" alt="913360.jpg" data-src="http://4put.ru/pictures/max/297/913360.jpg" src="https://ap-pro.ru/applications/core/interface/js/spacer.png"></p>

<p style="text-align: center;">
	<span style="color:#f39c12;"><strong>X-Ray engine </strong></span><span style="color:#3498db;"><strong>[1.6.00-1.6.02] </strong></span>
</p>

<p style="text-align: center;">
	 
</p>

<div>
	<strong>Дата:</strong> 15.04.2012<br><strong>Собрал в архив: </strong>Earthworm-Jim
</div>

<p style="text-align: center;">
	<strong>В архиве папки bin <em>(движок игры S.T.A.L.K.E.R. - Call of Pripyat)</em> версий:</strong> <span style="color:#95a5a6;">1.6.00</span>, <span style="color:#95a5a6;">1.6.01</span>, <span style="color:#95a5a6;">1.6.02</span>.<br><br><strong>СКАЧАТЬ:</strong> <a href="https://yadi.sk/d/ZGT5KJKj3CwTFU" rel="external nofollow">https://yadi.sk/d/ZGT5KJKj3CwTFU</a>
</p>
]]></description><guid isPermaLink="false">1573</guid><pubDate>Mon, 27 Jul 2020 19:00:43 +0000</pubDate></item><item><title>Advanced X-Ray API (WIP)</title><link>https://ap-pro.ru/forums/topic/9884-advanced-x-ray-api-wip/</link><description><![CDATA[<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Что это и зачем?">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Когда изучаешь более-менее серьёзный движок, обязательно к нему найдёшь документацию, в которой будут расписаны все классы и функции, доступные для использования, а так-же зачем они нужны. И как всем известно, у X-Ray ничего такого нет помимо lua_help.script (и тот не всегда вносит ясность, учитывая что создатели кастомных движков часто игнорируют его). Вот и мне, создавая очередной скрипт, пришла идея создать некий аналог документации по скриптовому API движка, то есть о том, что вынесено в скрипты. А так как разрабатываю мод на Advanced X-Ray, то и списочек буду делать для него.
		</p>

		<p>
			Однако, несмотря для это, его можно будет применить и для оригинального ЗП, для чего я буду помечать, является ли что-то не оригинальным, и при необходимости откуда. Так что если возле функции нет любой пометки, значить её с 99.9% можно использовать и в оригинальном ЗП.
		</p>

		<p>
			Как все могут догадаться, написать полную документацию даже по оригинальному движку требует титанических усилий, и я сомневаюсь, что получится это всё сделать. Поэтому я надеюсь, что другие модмейкеры (особенно те, кто разрабатывает на AXR) тоже захотят написать документацию и решатся мне помочь.
		</p>

		<p>
			Также хочу напомнить, что делаться это всё будет добровольно и безвозмездно, поэтому возможен довольно большой перерыв (или вообще забрасывание идеи) между частями документации. Чем более полезным окажется эта идея, тем больше шансов, что я буду это активно развивать.
		</p>
	</div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Как читать документацию?">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			Предполагается, что документация будет распределена по блокам, основанных на функциях script_register из движка. Решено так сделать для простоты мониторинга, написана ли для определённых скриптов документация или нет. Предполагается, что если какая-то из функций расписана, значит и остальные функции из той же функции script_register класса расписана.<br />
			Каждая функция написана в формате: (*если присутствует, где добавлено) &lt;типы выходных значений или void&gt; имя функции(параметры и их тип). Если записи со звёздочкой нет, значит она есть в оригинальном ЗП. <br />
			После этого идёт список входных и выходных параметров в том же порядке, что и их порядок в самой функции. Поля "Вход" или "Выход" могут быть упущены если для них нету параметров.<br />
			Последним пунктом идёт краткое описание этой фунции, для чего она вообще нужна.<br />
			Каждый блок будет спрятан под спойлер, также как и методы и поля класса и поля перечислений. Для поиска документации для конкретной функции лучше всего пользоваться поиском по теме.<br />
			Пример того, как оформлять документацию будет указан ниже в шапке в виде документации по классу .ltx конфигов. Остальное будет добавляться в виде постов в теме с добавлением ссылки в шапку. Также будут добавляться ссылки и на посты других пользователей в случае, если они придерживаются формату документации. Также разрешено простое обсуждение (но при этом просьба не использовать тему как аналог вопросницы, задавая тут вопросы по моддингу).<br />
			Если в документации замечен знак вопроса, то это значит, что написавшему это до конца (либо совсем) не понятно, что это такое. В таком случае других, кто знает ответ на вопрос, могут подсказать. Если получен ответ, большая просьба поправить свой пост, заменив знак вопроса на информацию.<br />
			Некоторые из типов в функциях и переменных:
		</p>

		<ul><li>
				u8 - числа от 0 до 255
			</li>
			<li>
				u16 - числа от 0 до 65535
			</li>
			<li>
				u32 - числа от 0 до 2^32-1
			</li>
			<li>
				u64 - числа от 0 до 2^64-1
			</li>
			<li>
				s8 - числа от -128 до 127
			</li>
			<li>
				s16 - числа от −32 768 до 32 767
			</li>
			<li>
				s32 - числа от -2^31 до 2^31-1
			</li>
			<li>
				s64 - числа от -2^63 до 2^63-1
			</li>
			<li>
				float - числа с плавающей запятой
			</li>
			<li>
				string - строки
			</li>
			<li>
				bool - булевые значения (те что принимают или true, или false)
			</li>
			<li>
				function - передача функции как переменной
			</li>
			<li>
				кастомный тип класса, зарегистрированного в lua
			</li>
		</ul></div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="script_ini_file_script.cpp">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="ini_file">
			<div class="ipsSpoiler_header">
				<span>Спойлер</span>
			</div>

			<div class="ipsSpoiler_contents">
				<ul><li>
						bool section_exist(string S)
						<ul><li>
								Вход: имя секции
							</li>
							<li>
								Выход: есть секция или нет
							</li>
							<li>
								Проверка на наличие секции в конфигах
							</li>
						</ul></li>
					<li>
						bool line_exist(string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: есть ключ в секции или нет
							</li>
							<li>
								Проверка на наличие определённого ключа в секции
							</li>
						</ul></li>
					<li>
						Int r_clsid(string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: скриптовый class id в виде числа
							</li>
							<li>
								Получить скриптовый class id из значения по ключу
							</li>
						</ul></li>
					<li>
						bool r_bool(string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: булевое значение
							</li>
							<li>
								Получить булевое значение ключа
							</li>
						</ul></li>
					<li>
						Int r_token(string S, string L, const CScriptTokenList &amp;token_list)
						<ul><li>
								Вход: имя секции; имя ключа; ?
							</li>
							<li>
								Выход: массив токенов и его размер?
							</li>
							<li>
								 ?
							</li>
						</ul></li>
					<li>
						string r_string_wq(string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: строка
							</li>
							<li>
								Получить строку?
							</li>
						</ul></li>
					<li>
						u32 line_count (string S)
						<ul><li>
								Вход: имя секции
							</li>
							<li>
								Выход: число
							</li>
							<li>
								Получить количество ключей в секции
							</li>
						</ul></li>
					<li>
						string r_string (string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: строка
							</li>
							<li>
								Получить строковое значение
							</li>
						</ul></li>
					<li>
						u32 r_u32 (string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: число
							</li>
							<li>
								Получить число по ключу (беззнаковое целочисленное)
							</li>
						</ul></li>
					<li>
						s32 r_s32 (string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: число
							</li>
							<li>
								Получить число по ключу (знаковое целочисленное)
							</li>
						</ul></li>
					<li>
						float r_float (string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: число
							</li>
							<li>
								Получить число по ключу (число с плавающей точкой)
							</li>
						</ul></li>
					<li>
						Fvector r_vector (string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Выход: вектор
							</li>
							<li>
								Получить значение векторного типа
							</li>
						</ul></li>
					<li>
						[bool, string, string] r_line (string S, int L)
						<ul><li>
								Вход: имя секции; номер строки в секции
							</li>
							<li>
								Выход: существование ключа; имя ключа; значение ключа в виде строки
							</li>
							<li>
								Получить значение в строке под номером
							</li>
						</ul></li>
					<li>
						(CoC) void w_bool(string S, string L, bool V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; булевое значение; комментарий
							</li>
							<li>
								Добавить в секцию ключ с булевым значением и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_color(string S, string L, u32 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; целочисленное беззнаковое значение; комментарий
							</li>
							<li>
								Добавить в секцию ключ с целочисленным беззнаковым значением и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_fcolor(string S, string L, Fcolor V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа Fcolor; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа Fcolor и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_float(string S, string L, float V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение в виде числа с плавающей запятой; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением в виде числа с плавающей запятой и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_fvector2(string S, string L, Fvector2 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа Fvector2; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа Fvector2 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_fvector3(string S, string L, Fvector3 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа Fvector3; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа Fvector3 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_fvector4(string S, string L, Fvector4 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа Fvector4; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа Fvector4 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_s16(string S, string L, s16 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа s16; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа s16 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_s32(string S, string L, s32 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа s32; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа s32 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_s64(string S, string L, s64 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа s64; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа s64 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_s8(string S, string L, s8 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа s8; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа s8 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_string(string S, string L, string V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; строковое значение; комментарий
							</li>
							<li>
								Добавить в секцию ключ со строковым значением и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_u16(string S, string L, u16 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа u16; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа u16 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_u32(string S, string L, u32 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа u32; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа u32 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_u64(string S, string L, u64 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа u64; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа u64 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void w_u8(string S, string L, u8 V, string comment)
						<ul><li>
								Вход: имя секции; имя ключа; значение типа u8; комментарий
							</li>
							<li>
								Добавить в секцию ключ со значением типа u8 и комментарием
							</li>
						</ul></li>
					<li>
						(CoC) void save_at_end(bool b)
						<ul><li>
								Вход: значение флага
							</li>
							<li>
								Записывать значение в конец секции?
							</li>
						</ul></li>
					<li>
						(CoC) void remove_line(string S, string L)
						<ul><li>
								Вход: имя секции; имя ключа
							</li>
							<li>
								Удалить ключ в секции
							</li>
						</ul></li>
					<li>
						(CoC) void set_override_names(bool b)
						<ul><li>
								Вход: значение флага
							</li>
							<li>
								Установить флаг ?
							</li>
						</ul></li>
					<li>
						(CoC) u32 section_count()
						<ul><li>
								Выход: количество секций
							</li>
							<li>
								Получить количество секций
							</li>
						</ul></li>
					<li>
						(CoC) void section_for_each(function functor)
						<ul><li>
								Вход: функция для вызова
							</li>
							<li>
								Пройтись по всем секциям и вызвать функцию для каждой из них. Функция должна принимать аргумент типа string, в который будет передаваться имя текущей секции.
							</li>
						</ul></li>
					<li>
						(CoC) void set_readonly(bool b)
						<ul><li>
								Вход: значение флага
							</li>
							<li>
								Выставить флаг, является ли файл только для чтения
							</li>
						</ul></li>
					<li>
						(CoC) string fname()
						<ul><li>
								Выход: имя .ltx файла
							</li>
							<li>
								Получить имя файла конфига
							</li>
						</ul></li>
				</ul></div>
		</div>

		<ul><li>
				CScriptIniFile* system_ini()
				<ul><li>
						Выход: конфиг настроек
					</li>
					<li>
						Получить конфиг настроек
					</li>
				</ul></li>
			<li>
				CScriptIniFile* game_ini()
				<ul><li>
						Выход: конфиги игры
					</li>
					<li>
						Получить конфиги игры
					</li>
				</ul></li>
			<li>
				CScriptIniFile* create_ini_file (string ini_string)
				<ul><li>
						Вход: имя файла
					</li>
					<li>
						Выход: файл конфига
					</li>
					<li>
						Создать файл конфига с определённым именем
					</li>
				</ul></li>
		</ul></div>
</div>

<div class="ipsSpoiler" data-ipsspoiler="" data-ipsspoiler-option="Остальные экспортированные функции и классы">
	<div class="ipsSpoiler_header">
		<span>Спойлер</span>
	</div>

	<div class="ipsSpoiler_contents">
		<iframe allowfullscreen="" data-embedauthorid="4389" data-embedcontent="" data-embedid="embed7316703471" scrolling="no" style="height:205px;max-width:100%;" data-embed-src="https://ap-pro.ru/forums/topic/9884-advanced-x-ray-api-wip/?do=embed&amp;comment=390989&amp;embedComment=390989&amp;embedDo=findComment"></iframe><iframe allowfullscreen="" data-embedauthorid="4389" data-embedcontent="" data-embedid="embed1249654634" scrolling="no" style="height:205px;max-width:100%;" data-embed-src="https://ap-pro.ru/forums/topic/9884-advanced-x-ray-api-wip/?do=embed&amp;comment=394700&amp;embedComment=394700&amp;embedDo=findComment"></iframe>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>]]></description><guid isPermaLink="false">9884</guid><pubDate>Tue, 17 Sep 2024 21:09:41 +0000</pubDate></item></channel></rss>
