<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://stalkerin.gameru.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=95.135.119.236&amp;*</id>
		<title>S.T.A.L.K.E.R. Inside Wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=95.135.119.236&amp;*"/>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/95.135.119.236"/>
		<updated>2026-04-30T10:31:12Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B0_.thm</id>
		<title>Файл формата .thm</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B0_.thm"/>
				<updated>2013-07-23T13:07:45Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Что это такое и зачем они нужны? ===&lt;br /&gt;
&lt;br /&gt;
Эти файлы могут использоваться во всех частях Сталкера (в ТЧ реже - чтобы дать конкретной текстуре параметры, не затрагивая textures.ltx). В ТЧ работают начиная с версии 1.0004. Используются для выставления параметров текстур — bump, detail и прочее. Имеют вид ''название_текстуры.thm'' и ''название_текстуры_bump.thm'' для bump текстур. Без них игра не подставляет текстуре нужные параметры и следовательно они получаются «плоские», хуже чем на статическом освещении. Для сравнения приведу картинки&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Изображение:No thm.jpg|thumb|Без thm]]&lt;br /&gt;
[[Изображение:With thm.jpg|thumb|C thm]]&lt;br /&gt;
&lt;br /&gt;
=== Как их создать? Какие параметры нужны? ===&lt;br /&gt;
&lt;br /&gt;
Для создания этих файлов нужен официальный СДК версии 0.5/0.6/0.7. С версией 0.4 есть нюанс (о нём примечании). Для начала, скачайте эту программу [http://stalkerin.gameru.net/downloads/stutils/dds2tgaLE.rar dds2tgaLE (373 KБ)] и установите её в папку import вашего СДК. Она нужна для быстрого перевода текстур из формата DDS в TGA, нужный СДК. Теперь, допустим, мы хотим сделать файл .thm для текстуры ''prop_plitka_lab''. Копируем текстуру ''prop_plitka_lab'' и ''prop_plitka_lab_bump'' в папку import, запускаем файл START.BAT — заместо dds мы получили tga текстуры. Теперь, в нашем случае, копируем их в папку ''rawdata\textures\prop''. Далее заходим в Level Editor, щёлкаем по кнопке Images и выбираем пункт Check New Textures&lt;br /&gt;
&lt;br /&gt;
[[Изображение:One.jpg]]&lt;br /&gt;
&lt;br /&gt;
В появившемся окошке жмём ОК и видим появившееся окно с текстурами которые вы добавили. На этом скриншоте отмечено то, что нам понадобится изменять (я уже поставил)&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Two.jpg]]&lt;br /&gt;
&lt;br /&gt;
Итак, в секции Bump в параметре Mode ставим Use — для различных текстур, а Use parallax — для текстур типа кирпичной кладки, кафеля (как в данной текстуре) и тп. В параметре Texture выбираем тестуру bump — ''prop_plitka_lab_bump''. В секции Detalis в параметрах Use as Diffuse и/или Use as Bump (R2) ставим галочку. Как расставить эти параметры грамотно? Обратимся к textures.ltx. Ищем нашу текстуру в нём, первое что находится:&lt;br /&gt;
 prop\prop_plitka_lab = detail\detail_tile_det2, 6.000000, usage[diffuse_or_bump]&lt;br /&gt;
Значит ставим галочки в параметрах Use as Diffuse и Use as Bump (R2). В параметре Texture под этими пунктами выбираем текстуру ''detail\detail_tile_det2'', предварительно сделав импорт этой текстуры в СДК. И в параметре Scale ставим 6.0. Ищем по файлу дальше, видим:&lt;br /&gt;
 prop\prop_plitka_lab = bump_mode[use:prop\prop_plitka_lab_bump], material[1.50]&lt;br /&gt;
Здесь пишется bump-текстура и «material», это степень наложения bump на текстуру - чем больше, тем рельефнее. Только в СДК поставить выше значения 1.0 не получится (не страшно). Вот что ещё находим:&lt;br /&gt;
 prop\prop_plitka_lab = 0&lt;br /&gt;
Здесь выставлен тип текстуры. Смотря по СДК и файлу textures.ltx, я понял так:&lt;br /&gt;
* 0 — 2D Texture&lt;br /&gt;
* 1 — Cube Map&lt;br /&gt;
* 2 — Bump Map&lt;br /&gt;
* 3 — Normal Map&lt;br /&gt;
* 4 — Terrain&lt;br /&gt;
По textures.ltx всё. Жмём ОК и ищем полученные изображения и их .thm файлы в папке СДК\…\gamedata\textures\…&lt;br /&gt;
Кстати, когда будете копировать готовые thm файлы, не забудьте скопировать не только ''prop_plitka_lab'' и ''prop_plitka_lab_bump'', но и ''prop_plitka_lab_bump#''. Уже можно их опробовать в игре&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Примечание по СДК 0.4===&lt;br /&gt;
&lt;br /&gt;
В СДК версии 0.4 создаются файлы thm, больше размером и с другим форматом, чем в ЧН/ЗП. Поэтому они не работают в них. Но есть способ как превратить эти файлы для ЧН/ЗП (из формата СДК 0.4 перевести в современный):&lt;br /&gt;
переделать их с помощью утилиты — [http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=421 thmParser], как использовать описано внутри.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Примечание по ошибке thm===&lt;br /&gt;
Иногда после процессов редактирования текстуры, бампа, thm в игре можно встретить баг: определенная текстура покрывается непонятной сеткой, немного напоминающей шахматную доску. Причиной этому может быть: &lt;br /&gt;
* отсутствие бапма, которого привязывает к текстуре thm&lt;br /&gt;
* неправильное название бампа (возможно, по невнимательности допустили ошибку)&lt;br /&gt;
* thm-файл устаревший, там указан другой бамп (могли забыть перебросить новый thm из СДК)&lt;br /&gt;
Лечение: проверяем наличие бампа, его название. Если что, прогоняем привязку текстуры к бампу через СДК еще один раз, получаем новый thm, копируем с заменой обновленные файлы из СДК в геймдату &lt;br /&gt;
&lt;br /&gt;
'''Автор статьи: [http://www.gameru.net/forum/index.php?showuser=13071 Ork]'''&lt;br /&gt;
&lt;br /&gt;
'''За помощь и поддержку спасибо [http://www.gameru.net/forum/index.php?showuser=11669 XaK] и BuS777'''&lt;br /&gt;
&lt;br /&gt;
'''Дополнил:''' FantomICW&lt;br /&gt;
&lt;br /&gt;
[[Категория:Texturing]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B0</id>
		<title>Создание нового торговца</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B0"/>
				<updated>2013-07-23T10:41:53Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Новый торговец==&lt;br /&gt;
&lt;br /&gt;
Болезненная тема для многих начинающих модмейкеров. Для создания нового тороговца требуется постигать навыки работы со спавн-файлом. Для создания торговца придётся запастись кое-какими утилитами:&lt;br /&gt;
&lt;br /&gt;
'''acdc''' от ''bardak'' [http://stalkerin.gameru.net/developer/mods/acdc11oct.rar скачать]&lt;br /&gt;
&lt;br /&gt;
'''ActivePerl 5.8.8''' для работы программы '''acdc''' [http://www.avege.ru/russian/perl/perl01.shtml скачать]&lt;br /&gt;
&lt;br /&gt;
==Практика==&lt;br /&gt;
&lt;br /&gt;
===Создание непися и профиля===&lt;br /&gt;
&lt;br /&gt;
И так. Сперва мы создаём профиль непися. Например, в файле '''character_desc_escape.xml''' по адресу '''gamedata\config\gameplay\'''&lt;br /&gt;
Можно создать отдельный файл для наших неписей, это упрощает совмещение модов.&lt;br /&gt;
В файле '''character_desc_escape.xml''', в самом низу, '''перед''' тегом ''&amp;lt;/xml&amp;gt;'' пишем профиль нового непися:&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;specific_character id=&amp;quot;esc_dark_stalker_voron&amp;quot; no_random = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
;важно при создании торговца, указать параметр no_random = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt;Ворон&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;icon&amp;gt;ui_npc_dark_voron&amp;lt;/icon&amp;gt;&lt;br /&gt;
&amp;lt;map_icon x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/map_icon&amp;gt;&lt;br /&gt;
&amp;lt;bio&amp;gt;sim_stalker_novice_bio&amp;lt;/bio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;class&amp;gt;esc_dark_stalker_01&amp;lt;/class&amp;gt; -- настраивает респавнер на класс персонажа для спавна разных моделей.&lt;br /&gt;
;т.к. мы спавним уникального непися, класс можно скопировать у любого другого непися или написать новый, уникальный класс.&lt;br /&gt;
&amp;lt;community&amp;gt;dark_stalker&amp;lt;/community&amp;gt;&lt;br /&gt;
&amp;lt;money min=&amp;quot;500000&amp;quot; max=&amp;quot;500000&amp;quot; infinitive=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/money&amp;gt;&lt;br /&gt;
;в поле денег, надо поставить бессконечные деньги - infinitive=&amp;quot;1&amp;quot;&lt;br /&gt;
;иначе вы сможете продать неписю товаров исключительно на указанную сумму.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;rank&amp;gt;1000&amp;lt;/rank&amp;gt;&lt;br /&gt;
&amp;lt;reputation&amp;gt;-553&amp;lt;/reputation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;visual&amp;gt;actors\dark_stalker\dark_stalker_voron&amp;lt;/visual&amp;gt; ;ссылка на файл-модель персонажа без окончания .ogf&lt;br /&gt;
&amp;lt;snd_config&amp;gt;characters_voice\human_01\monolith\&amp;lt;/snd_config&amp;gt;&lt;br /&gt;
&amp;lt;crouch_type&amp;gt;-1&amp;lt;/crouch_type&amp;gt;&lt;br /&gt;
&amp;lt;panic_treshold&amp;gt;0&amp;lt;/panic_treshold&amp;gt;&lt;br /&gt;
&amp;lt;supplies&amp;gt;&lt;br /&gt;
[spawn] \n&lt;br /&gt;
wpn_gauss \n&lt;br /&gt;
ammo_gauss \n&lt;br /&gt;
#include &amp;quot;gameplay\character_items.xml&amp;quot; \n&lt;br /&gt;
#include &amp;quot;gameplay\character_drugs.xml&amp;quot; \n&lt;br /&gt;
#include &amp;quot;gameplay\character_food.xml&amp;quot; &lt;br /&gt;
&amp;lt;/supplies&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;gameplay\character_criticals_3.xml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;start_dialog&amp;gt;hello_dialog_dark_stalker&amp;lt;/start_dialog&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt;dm_cool_info_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt;dm_help_wounded_medkit_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;actor_dialog&amp;gt;join_dark&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
&amp;lt;/specific_character&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Профиль создан, пара стандартных диалогов, взятых у любого другого профиля, дописать не составит труда. Я ничего не менял в своём коде. Лезем в '''npc_profile.xml''', который находится в той же папке. Где-нить внизу делаем запись:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;character id=&amp;quot;esc_dark_stalker_voron&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;class&amp;gt;esc_dark_stalker_01&amp;lt;/class&amp;gt; -- настраивает респавнер на класс персонажа для спавна разных моделей.&lt;br /&gt;
;т.к. мы спавним уникального непися, класс можно скопировать у любого другого непися или написать новый, уникальный класс.&lt;br /&gt;
&amp;lt;specific_character&amp;gt;esc_dark_stalker_voron&amp;lt;/specific_character&amp;gt; -- ссылка на профиль нашего непися.&lt;br /&gt;
&amp;lt;/character&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ввод в симуляцию===&lt;br /&gt;
&lt;br /&gt;
Непись создан. Теперь надо вводить его в симуляцию. Открываем файл '''gamedata\config\creatures\spawn_sections.ltx''' и прописываем в конце:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[esc_dark_stalker_voron]:stalker_trader - дописать суффикс торговца... хотя у меня и без него всё работало =)&lt;br /&gt;
$spawn                =  &amp;quot;respawn\esc_dark_stalker_voron&amp;quot; - опция спавна для Левел Едитора&lt;br /&gt;
character_profile    = esc_dark_stalker_voron - профиль непися, записанный в npc_profile.xml&lt;br /&gt;
spec_rank = regular&lt;br /&gt;
community = dark_stalker - группировка&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Спавн торговца через all.spawn файл==&lt;br /&gt;
&lt;br /&gt;
Дальше, самое нудное - спавн. Спасибо [[Участник:Arhet|Arhet]]'y за пример. Используя прогу '''acdc''' от bardak'a декомпилим all.spawn, создав батник разбора спавна (без active perl толку от проги бардака нуль - просто не запустится) и в понравившемся месте делаем запись с уникальным номером. Я заспавнил на Кордоне:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[8796]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = stalker_trader -- метка, что сталкер является торговцем&lt;br /&gt;
name = dark_stalker_voron -- имя любое, вроде бы; где оно используется не знаю&lt;br /&gt;
position = -215.67399597168,-20.403390884355,-151.03227233887 -- местоположение на игровой карте&lt;br /&gt;
direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942&lt;br /&gt;
&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
character_profile = esc_dark_stalker_voron&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 61 -- геймвертекс, без него спавнер не будет знать, на какой именно карте и в какой её части спавнить объект&lt;br /&gt;
distance = 3.5&lt;br /&gt;
level_vertex_id = 42599 -- левелвертекс, без него спавнер не будет знать, в именно какой части карты спавнить объект&lt;br /&gt;
object_flags = 0xfffffffb&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[logic]&lt;br /&gt;
cfg = scripts\esc_voron.ltx -- конфиг с логикой&lt;br /&gt;
[smart_terrains]&lt;br /&gt;
none = true -- смарт террейн; если создаёте статического торговца - лучше не выставлять смарт террейн&lt;br /&gt;
;если хотите бродягу - пишите по аналогии с другими неписями или создавайте свой смарт террейн, куда и определяйте непися&lt;br /&gt;
&lt;br /&gt;
[spawn]&lt;br /&gt;
wpn_gauss -- спавним в инвентаре всё, что хотим, в продажу оно не пойдёт&lt;br /&gt;
END&lt;br /&gt;
story_id = 9958 - уникальный стори_ид для меток на карте&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = actors\dark_stalker\dark_stalker_voron -- внешний вид, указать путь к .ogf модели, без окончания формата файла!&lt;br /&gt;
&lt;br /&gt;
; cse_alife_creature_abstract properties&lt;br /&gt;
g_team = 0&lt;br /&gt;
g_squad = 0&lt;br /&gt;
g_group = 0&lt;br /&gt;
health = 2&lt;br /&gt;
dynamic_out_restrictions = &lt;br /&gt;
dynamic_in_restrictions = &lt;br /&gt;
&lt;br /&gt;
upd:health = 2&lt;br /&gt;
upd:timestamp = 0&lt;br /&gt;
upd:creature_flags = 0&lt;br /&gt;
upd:position = -215.67399597168,-20.403390884355,-151.03227233887 -- те же координаты, что и в секции position&lt;br /&gt;
upd:o_model = 0&lt;br /&gt;
upd:o_torso = 0,0,0&lt;br /&gt;
upd:g_team = 0&lt;br /&gt;
upd:g_squad = 0&lt;br /&gt;
upd:g_group = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_monster_abstract properties&lt;br /&gt;
&lt;br /&gt;
upd:next_game_vertex_id = 65535&lt;br /&gt;
upd:prev_game_vertex_id = 65535&lt;br /&gt;
upd:distance_from_point = 0&lt;br /&gt;
upd:distance_to_point = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_human_abstract properties&lt;br /&gt;
predicate5 = 2,2,1,2,0&lt;br /&gt;
predicate4 = 2,2,1,2&lt;br /&gt;
&lt;br /&gt;
; cse_ph_skeleton properties&lt;br /&gt;
&lt;br /&gt;
upd:start_dialog = &lt;br /&gt;
&lt;br /&gt;
; se_stalker properties&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Спавн файл еще рано собирать!'''&lt;br /&gt;
&lt;br /&gt;
===Логика торговца===&lt;br /&gt;
&lt;br /&gt;
Далее, создаём файл конфиг торговца, который указали в спавне - '''gamedata\config\scripts\esc_voron.ltx''' и пишем в нём:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
trade = misc\trade_voron.ltx -- файл торговли, создаётся по аналогии с существующими&lt;br /&gt;
trader_flags = 0 - флаг трейдера&lt;br /&gt;
inv_max_weight = 10000 -- вес инвентаря торговца&lt;br /&gt;
on_death = death&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = esc_sin_voron_walk -- привязка вейпоинта, чтобы трейдер стоял на месте или двигался по определённому курсу&lt;br /&gt;
path_look = esc_sin_voron_look -- куда будет смотреть непись&lt;br /&gt;
meet = meet -- параметры реакции непися на встречу с актором&lt;br /&gt;
&lt;br /&gt;
[meet]&lt;br /&gt;
use = true&lt;br /&gt;
use_wpn = true -- перезаряжает оружие&lt;br /&gt;
meet_talk_enabled = true&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь лезем за скриптом от бардака и снимаем координаты местоположения нашего непися. У кого нету скрипта, копируем в '''gamedata/scripts/ui_main_menu.script''' этот скрипт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function main_menu:OnButton_credits_clicked() &lt;br /&gt;
local text &lt;br /&gt;
local vid &lt;br /&gt;
local gvid &lt;br /&gt;
local a = vector()  &lt;br /&gt;
local text &lt;br /&gt;
a = db.actor:position()  &lt;br /&gt;
vid = db.actor:level_vertex_id()  &lt;br /&gt;
gvid = db.actor:game_vertex_id()  &lt;br /&gt;
text = &amp;quot;Позиция:\\nX= &amp;quot;..a.x..&amp;quot;\\nY= &amp;quot;..a.y..&amp;quot;\\nZ= &amp;quot;..a.z..&amp;quot;\\nlevel_vertex= &amp;quot;..vid..&amp;quot;\\ngame_vertex_id= &amp;quot;..gvid &lt;br /&gt;
news_manager.send_tip(db.actor, text, nil, nil, 30000) &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заходим в игру, ищем нужное нам место (ногами), жмём из меню кнопку CREDITS и мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Всё - F12 или на бумажку списываем полученные координаты.&lt;br /&gt;
&lt;br /&gt;
===Создаём вейпоинты и лукпоинты===&lt;br /&gt;
&lt;br /&gt;
И так, мы сняли координаты мест, где хотим видеть торговца и где мы хотим, чтобы он ходил - теперь в разобранном all.spawn ищите файл '''way_*левел*.ltx''' и туда пишем данные. Я приведу пример свой, опять таки. В файле '''way_l01_escape.ltx''' пишем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[esc_sin_voron_look] -- имя, которые мы записали в ''gamedata\config\scripts\esc_voron.ltx''&lt;br /&gt;
points = p0,p1&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -205.306793212891,-20.4855155944824,-150.415893554688&lt;br /&gt;
p0:game_vertex_id = 46&lt;br /&gt;
p0:level_vertex_id = 54218&lt;br /&gt;
&lt;br /&gt;
p1:name = wp01&lt;br /&gt;
p1:flags = 0x1&lt;br /&gt;
p1:position = -207.645278930664,-20.2700958251953,-146.980590820313&lt;br /&gt;
p1:game_vertex_id = 61&lt;br /&gt;
p1:level_vertex_id = 45276&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[esc_sin_voron_walk] -- имя, которые мы записали в ''gamedata\config\scripts\esc_voron.ltx''&lt;br /&gt;
points = p0&lt;br /&gt;
p0:name = wp00&lt;br /&gt;
p0:flags = 0x1&lt;br /&gt;
p0:position = -215.67399597168,-20.403390884355,-151.03227233887&lt;br /&gt;
p0:game_vertex_id = 47&lt;br /&gt;
p0:level_vertex_id = 37503&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если нужно создать несколько вейпоинтов - смотрите по аналогии с уже существующими.&lt;br /&gt;
&lt;br /&gt;
После всего этого собираем all.spawn батником (что писать в батниках для сбора и разбора спавна - в файле '''help.txt''' в папке с программой), закидываем новый файл спавна в '''gamedata/spawn'' и стартуем новую игру.&lt;br /&gt;
&lt;br /&gt;
====Присваеваем торговлю уже имеющемуся неписю====&lt;br /&gt;
Можно и описанным способом, но иногда требуется присвоить торговлю к уже имеющимся неписям. Будем делать торговцем кого-нибудь из уже имеющихся... Кого, кого, кого...&lt;br /&gt;
&lt;br /&gt;
Как обычно Волка (у меня две подопытных &amp;quot;крысы&amp;quot;-Сидорович и Волк, а так как Сид уже им является, выбор очевиден. Ну чтож приступим. Необходимо создать &amp;quot;файл торговли&amp;quot; типа '''&amp;quot;trade_....ltx&amp;quot;'''. Можно прописать его самому(как это делать я объяснять не буду, т.к. и до меня все это сделано не один раз, можно скопировать любой другой... я скопировал '''&amp;quot;trade_freedom.ltx&amp;quot;''' и переименовал его в '''&amp;quot;trade_wolf&amp;quot;''' и удалил все прикондишны с информацией на разрешение торговли.&lt;br /&gt;
&lt;br /&gt;
Теперь нужно сослаться на него. Делается это в файле логики, то бишь в '''&amp;quot;gulag_escape.ltx&amp;quot;''' (почему в эскейп, думаю понятно, наш Волк находится на Кордоне. Открываем файл и ищем строки:&lt;br /&gt;
&amp;lt;ini&amp;gt;;-------------------------------------------------------------------------------------------------&lt;br /&gt;
;-- ESCAPE LAGER&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
; Волк&lt;br /&gt;
[logic@esc_lager_volk]&lt;br /&gt;
active = walker@esc_lager_volk_walker1&lt;br /&gt;
on_death = death@wolf&lt;br /&gt;
&lt;br /&gt;
[walker@esc_lager_volk_walker1]&lt;br /&gt;
path_walk = wolf_walk&lt;br /&gt;
path_look = wolf_look&lt;br /&gt;
meet = meet@wolf&lt;br /&gt;
on_actor_dist_le = 23| {+tutorial_wounded_start -esc_kill_bandits_quest_kill} remark@esc_lager_volk1 &lt;br /&gt;
on_actor_dist_le_nvis = 5| walker@esc_lager_volk_walker2&lt;br /&gt;
danger = danger_condition@shustryi&lt;br /&gt;
&lt;br /&gt;
[remark@esc_lager_volk1]&lt;br /&gt;
anim = hello_wpn&lt;br /&gt;
snd = esc_wolf_say_thanks&lt;br /&gt;
target = actor&lt;br /&gt;
on_signal = sound_end| walker@esc_lager_volk_walker2&lt;br /&gt;
on_actor_dist_le_nvis = 5| walker@esc_lager_volk_walker2&lt;br /&gt;
danger = danger_condition@shustryi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Теперь сошлемся на наш трад-в секцию &amp;quot;[logic@esc_lager_volk]&amp;quot; добавим строки:&lt;br /&gt;
&amp;lt;code&amp;gt;trade = misc\trade_wolf.ltx&lt;br /&gt;
inv_max_weight = 10000&amp;lt;/ini&amp;gt;&lt;br /&gt;
То есть должно получится следующее:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
;-- ESCAPE LAGER&lt;br /&gt;
;-------------------------------------------------------------------------------------------------&lt;br /&gt;
; Волк&lt;br /&gt;
[logic@esc_lager_volk]&lt;br /&gt;
active = walker@esc_lager_volk_walker1&lt;br /&gt;
on_death = death@wolf&lt;br /&gt;
trade = misc\trade_wolf.ltx&lt;br /&gt;
inv_max_weight = 10000&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
Традом мы ссылаемся на наш &amp;quot;торговый файл&amp;quot;, а вот следующей строкой увеличиваем переносимый вес, поскольку он и у неписей ограничен. Осталось только дать нашему &amp;quot;новорождённому&amp;quot; торговцу-Волку побольше денег. Делаем это точно также как описано, но различие в том, что мы редактируем секцию Волка в '''&amp;quot;character_desc_escape.xml&amp;quot;'''. Я еще и удалил строку ''&amp;quot;#include &amp;quot;gameplay\character_criticals_4.xml&amp;quot;&amp;quot;'' с ограничением по весу, но правда на всякий случай, поскольку не проверял, работает ли с ним.&lt;br /&gt;
&lt;br /&gt;
На этом все, заходим в игру и наслаждаемся собственным творением.&lt;br /&gt;
&lt;br /&gt;
P.S.-Упс, работает, но как-то неправильно, у торговца оказывается нет поддержки перемещения. Поэтому ГСЦ всех торгошей и биндят не сталкером, а монстром заработало только когда я в бинде сталкера прописал:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:reinit()&lt;br /&gt;
	object_binder.reinit(self)&lt;br /&gt;
	&lt;br /&gt;
	local npc_id = self.object:id()&lt;br /&gt;
&lt;br /&gt;
	db.storage[npc_id] = { }&lt;br /&gt;
&lt;br /&gt;
	self.st = db.storage[npc_id]&lt;br /&gt;
	self.st.pstor = nil&lt;br /&gt;
&lt;br /&gt;
	self.next_restrictors_update_time = -10000&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.inventory_info, self.info_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.article_info, self.article_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.on_item_take, self.on_item_take, self)&lt;br /&gt;
	self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)&lt;br /&gt;
	self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats&lt;br /&gt;
	--self.object:set_callback(callback.actor_sleep, self.sleep_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.task_state, self.task_callback, self)&lt;br /&gt;
	--self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)&lt;br /&gt;
	self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)&lt;br /&gt;
	self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)&lt;br /&gt;
;вот мои строки&lt;br /&gt;
	if self.object:clsid() ~= clsid.script_trader then&lt;br /&gt;
		self.object:set_patrol_extrapolate_callback(bind_monster.generic_object_binder.extrapolate_callback, self)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	db.storage[self.object:id()] = { }&lt;br /&gt;
&lt;br /&gt;
	self.st = db.storage[self.object:id()]&lt;br /&gt;
&lt;br /&gt;
	self.object:set_callback(callback.patrol_path_in_point, self.waypoint_callback, self)&lt;br /&gt;
	self.object:set_callback(callback.hit,					self.hit_callback,		self)&lt;br /&gt;
	self.object:set_callback(callback.death,				self.death_callback,	self)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Все будет работать на УРА, с одним огрехом - Волк не будет отмечатся как цель при задании поговорить с Волком перед АТП, но думаю это не столь важно. Ну и еще без ствола будет ходить, но если будет атакован, то пушка появится &amp;quot;из широких штанин&amp;quot; Волка и он будет из нее пытаться вас нашпиговать свинцом.&lt;br /&gt;
&lt;br /&gt;
Пост скриптум, дубль два... Теоретически, если строки с калбеками из обычной секции сталкера прописать в мою, то наш традер (в данном случае Волк) будет неким гибридом, сочетающим свойства как и НПС, так и уникальных торговцев, попробуйте, должно работать.&lt;br /&gt;
&lt;br /&gt;
'''ВНИМАНИЕ!!! ЭТА СТАТЬЯ БУДЕТ РАБОТАТЬ ТОЛЬКО С SPR MOD ОТ SPR MOD TEAM!!!'''&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья [[Участник:Орион|Орион]].&amp;lt;br&amp;gt;&lt;br /&gt;
При помощи (косвенной) [[Участник:Arhet|Arhet]].&amp;lt;br&amp;gt;&lt;br /&gt;
Дополнение [[Участник:Костя.н.ы.ч|Костя.н.ы.ч]].&lt;br /&gt;
Доп.инфо CRAZY_STALKER&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%90%D0%BB%D1%8C%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B0</id>
		<title>Альтернативный способ создания торговца</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%90%D0%BB%D1%8C%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D1%86%D0%B0"/>
				<updated>2013-07-23T10:03:22Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Здравствуйте! Сейчас я расскажу вам как создать торговца не создавая новых файлов(как '''trade_trader''')&lt;br /&gt;
для этого нам понадобятся : '''gamedata\config\misc\trade_generic.ltx''' , и '''gamedata\config\gameplay\сharacter_desc_уровень.xml''' (смотря на каком у нас будет торговец)&lt;br /&gt;
&lt;br /&gt;
Начало&lt;br /&gt;
&lt;br /&gt;
Берем Волка с Кордона, к примеру. Открываем файл '''gamedata\config\gameplay\сharacter_desc_escape.xml''' и ищем там секцию Волка под названием ''esc_wolf''. &lt;br /&gt;
Ищем в секции ''esc_wolf'' строки лута:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;supplies&amp;gt;&lt;br /&gt;
[spawn] \n&lt;br /&gt;
wpn_pm \n&lt;br /&gt;
ammo_9x18_fmj = 1 \n&lt;br /&gt;
device_torch \n&lt;br /&gt;
hand_radio \n&lt;br /&gt;
&amp;lt;/supplies&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Меняем к примеру на это: &lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;supplies&amp;gt;&lt;br /&gt;
[spawn] \n&lt;br /&gt;
wpn_addon_scope	 = 2\n&lt;br /&gt;
wpn_addon_silencer = 2\n&lt;br /&gt;
soldier_outfit\n			&lt;br /&gt;
specops_outfit\n		&lt;br /&gt;
military_outfit = 2\n&lt;br /&gt;
medkit_army = 10 \n &lt;br /&gt;
&amp;lt;/supplies&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
Теперь открываем  '''trade_generic.ltx''' и меняем везде '';NO TRADE'' на ''= 1,1''&lt;br /&gt;
&lt;br /&gt;
Пример &lt;br /&gt;
&lt;br /&gt;
Было:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ammo_9x18_fmj			;NO TRADE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Стало:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ammo_9x18_fmj		=	1,1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем игру. Теперь у Волка можно купить: 2 прицела,  2 глушителя, скат, берилл, кожанку, и армейские аптечки :)&lt;br /&gt;
&lt;br /&gt;
Статью Сделал Versus(][eLLx@uND,Kit)&lt;br /&gt;
&lt;br /&gt;
Немного подредактировал: Исправил ошибки, поставил html теги. Бродяга&lt;br /&gt;
&lt;br /&gt;
[[Категория: Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP:_%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D0%9D%D0%9F%D0%A1_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_smart_terrain</id>
		<title>CoP: Спавн НПС через smart terrain</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP:_%D0%A1%D0%BF%D0%B0%D0%B2%D0%BD_%D0%9D%D0%9F%D0%A1_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_smart_terrain"/>
				<updated>2013-07-23T09:54:01Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: оформление, стилевые правки&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В ЗП существует множество вариантов спавна НПС: разные скриптовые способы, all.spawn, через логику, вызов действия через диалог, спавн через smart_terrain. Сегодня я вам расскажу как спавнить НПС через смарт. Внимание, спавн с начала игры. Способ этот в ЗП один из самых распространенных (минимум половину НПС GSC спванили именно так).&lt;br /&gt;
Итак:&lt;br /&gt;
&lt;br /&gt;
Для того чтобы заспавнить НПС необходимо сначала заспавнить смарт_террейн. Создадим секцию нового смарта в алл.спавне:&lt;br /&gt;
&amp;lt;ini&amp;gt;[9045] ; Уникальный номер секции&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = smart_terrain  ; не менять&lt;br /&gt;
name = predbannik_blokpost_sniper1_smart  ;Название смарта. Лучше всего называть смарты так: локация_место_чей_смарт_smart. Тогда вы точно не запутаетесь&lt;br /&gt;
position = -540.07904052734,28.130836486816,280.31533813477 ;позиция&lt;br /&gt;
direction = -0.991485774517059,0,-0.130215004086494&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 1190 ;game_vertex&lt;br /&gt;
distance = 9.80000019073486&lt;br /&gt;
level_vertex_id = 120156 ;level_vertex&lt;br /&gt;
object_flags = 0xffffff3e ;не менять&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[smart_terrain]&lt;br /&gt;
cfg = scripts\predbannik\smart\predbannik_blokpost_sniper1.ltx  ;путь до файла с логикой&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_shape properties&lt;br /&gt;
shapes = shape0  ; здесь задается количество зон и их имена где будет работать смарт&lt;br /&gt;
shape0:type = sphere ;тип. Здесь - круг. Еще есть тип box&lt;br /&gt;
shape0:offset = 0,0,0 ;смещение&lt;br /&gt;
shape0:radius = 20 ;радиус&lt;br /&gt;
&lt;br /&gt;
; cse_alife_space_restrictor properties&lt;br /&gt;
restrictor_type = 3 ;не менять&lt;br /&gt;
&lt;br /&gt;
; se_smart_terrain properties&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Дальше идем по пути '''configs\scripts\predbannik\smart\''' и создаем файл '''predbannik_blokpost_sniper1.ltx''' (если папки нет, то создаем)&lt;br /&gt;
Про настройку смартов можно почитать [[CoP:_Разбор_smart|&lt;br /&gt;
тут]]:&lt;br /&gt;
&amp;lt;ini&amp;gt;[smart_terrain]&lt;br /&gt;
max_population = 1&lt;br /&gt;
&lt;br /&gt;
[exclusive]&lt;br /&gt;
;predbannik_blokpost_sniper1 = predbannik\blokpost_logic.ltx ;Здесь указываются эксклюзивные работы.&amp;lt;/ini&amp;gt; &lt;br /&gt;
Если вам нужно чтобы НПС выполнял какую-то работу, то создайте файл '''predbannik\blokpost_logic.ltx''' с логикой ''[logic@predbannik_blokpost_sniper1]''&lt;br /&gt;
&lt;br /&gt;
Дальше создаем нужный нам сквад (для этого вам нужно создать секцию в файле '''configs\misc\squad_descr_локация.ltx'''. Почитать про настройку сквадов можно почитать [[CoP:_Разбор_squad_descr|тут]]) и идем в файл '''configs\misc\simulation.ltx'''&lt;br /&gt;
Там находим секцию ''[start_position_имя_локации]'' и после вставляем текст:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Имя_сквада = имя_вашего_смарта&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого заходим в игру и... О чудо, наш сталкер появился! Правда так как мы ему не прописали логику то он уходит из смарта в смарт, где есть работа.&lt;br /&gt;
&lt;br /&gt;
--[[Участник:Призрак|Призрак]] 11:36, 30 января 2011 (UTC)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%BE%D1%81%D1%82%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F</id>
		<title>CoP. Создание нового достижения</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%BE%D1%81%D1%82%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F"/>
				<updated>2013-07-23T09:41:06Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Для начала нужно распаковать игру анпакером.'''&lt;br /&gt;
&lt;br /&gt;
После распаковки идём в следующие директории и ищем следующие файлы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''info_x.xml''' ---&amp;gt; '''configs\gameplay\'''  (где &amp;quot;x&amp;quot; название локации на которой хотим получить достижение например jupiter) этот файл нужен для просмотра списка квестов на локации, зачем нам это вы узнаете позже.&lt;br /&gt;
&amp;lt;br&amp;gt;'''achievements.ltx''' ---&amp;gt; '''configs\misc\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''st_achievement.xml''' ---&amp;gt; '''configs\text\rus\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''ui_actor_achivments.xml''' ---&amp;gt; '''configs\ui\textures_descr\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''xr_statistic.script''' ---&amp;gt; '''scripts\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''ui_actor_achivments.dds''' ---&amp;gt; '''textures\ui\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''xr_conditions.script''' ---&amp;gt; '''scripts\'''&lt;br /&gt;
&lt;br /&gt;
'''И так, приступаем к работе.'''&lt;br /&gt;
&lt;br /&gt;
Откроем файл '''achievements.ltx''' и ищем такую вот запись:&lt;br /&gt;
&amp;lt;ini&amp;gt;[achievements]&lt;br /&gt;
pioneer&lt;br /&gt;
mutant_hunter&lt;br /&gt;
detective&lt;br /&gt;
one_of_the_lads&lt;br /&gt;
kingpin&lt;br /&gt;
herald_of_justice&lt;br /&gt;
seeker&lt;br /&gt;
battle_systems_master&lt;br /&gt;
high_tech_master&lt;br /&gt;
skilled_stalker&lt;br /&gt;
leader&lt;br /&gt;
diplomat&lt;br /&gt;
research_man&lt;br /&gt;
friend_of_duty&lt;br /&gt;
friend_of_freedom&lt;br /&gt;
balance_advocate&lt;br /&gt;
wealthy&lt;br /&gt;
keeper_of_secrets&lt;br /&gt;
marked_by_zone&lt;br /&gt;
information_dealer&lt;br /&gt;
friend_of_stalkers&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
добавим в конце название_достижения_на_английском. Пример:&lt;br /&gt;
&amp;lt;ini&amp;gt;[achievements]&lt;br /&gt;
pioneer&lt;br /&gt;
mutant_hunter&lt;br /&gt;
detective&lt;br /&gt;
one_of_the_lads&lt;br /&gt;
kingpin&lt;br /&gt;
herald_of_justice&lt;br /&gt;
seeker&lt;br /&gt;
battle_systems_master&lt;br /&gt;
high_tech_master&lt;br /&gt;
skilled_stalker&lt;br /&gt;
leader&lt;br /&gt;
diplomat&lt;br /&gt;
research_man&lt;br /&gt;
friend_of_duty&lt;br /&gt;
friend_of_freedom&lt;br /&gt;
balance_advocate&lt;br /&gt;
wealthy&lt;br /&gt;
keeper_of_secrets&lt;br /&gt;
marked_by_zone&lt;br /&gt;
information_dealer&lt;br /&gt;
friend_of_stalkers&lt;br /&gt;
all_stalkers_your_friend&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Идём в конец файла и добавляем следующее:&lt;br /&gt;
&amp;lt;ini&amp;gt;[&amp;quot;Название_достижения_на_английском_без_кавычек&amp;quot;]&lt;br /&gt;
icon        = ui_inGame2_имя_иконки_на_английском&lt;br /&gt;
hint        = st_sp_achievement_22_hint &amp;lt;--- То, что будет выводиться в КПК при наведении на иконку достижения (надо оставлять так же меняя только числа, чтоб они шли по порядку)&lt;br /&gt;
name        = st_sp_achievement_22_name &amp;lt;--- Имя достижения&lt;br /&gt;
desc        = st_sp_achievement_22_descr &amp;lt;--- Описание достижения&lt;br /&gt;
functor        = xr_statistic.название_достижения_на_английском_functor &amp;lt;--- функция для получения нашего достижения&amp;lt;/ini&amp;gt;&lt;br /&gt;
закрываем сохраняя изменения в файле&lt;br /&gt;
&lt;br /&gt;
Далее откроем файл '''st_achievement.xml''' и добавим между:&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_21_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Друг сталкеров&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
и&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_1_hint&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Совокупность новых данных позволила профессорам Герману и Озёрскому синтезировать в условиях Зоны экспериментальный анабиотик.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Следующее:&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_22_hint&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Ваш текст который будет высвечиваться в КПК при наведении мышки на иконку достижения.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_sp_achievement_22_descr&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Полное описание достижения.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_sp_achievement_22_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Имя достижения&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений&lt;br /&gt;
&lt;br /&gt;
Открываем '''xr_statistic.script''' идём в самый конец и добавляем следующее:&lt;br /&gt;
&amp;lt;lua&amp;gt;function название_вашей_функции()&lt;br /&gt;
	if not has_alife_info(&amp;quot;пишем_что_хотим_на_английсокм&amp;quot;) then  --- проверка на раннее получение этого достижения&lt;br /&gt;
		if has_alife_info(&amp;quot;название_квеста_или_действия&amp;quot;)  --- квест или действие после которого будет получено достижение. Для этого нам как раз и понадобится info_x.xml о котором я писал в начале.&lt;br /&gt;
				and has_alife_info(&amp;quot;название_квеста_или_действия&amp;quot;)  --- эта функция если квестов несколько&lt;br /&gt;
			db.actor:give_info_portion(&amp;quot;пишем_что_писали_в_проверке_на_получение_ранее_достижения&amp;quot;)&lt;br /&gt;
			news_manager.send_tip(db.actor, &amp;quot;st_ach_название_вашего_достижения_на_английском&amp;quot;, nil, &amp;quot;название_вашего_достижения_на_английском&amp;quot;, nil, nil)&lt;br /&gt;
			xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {&amp;quot;stalker&amp;quot;, 100})  --- прибавление репутации сталкеров при получении данного достижения (если - то убавление), можно вписать любую другую группировку (использовать несколько команд если хотите прибавить или убавить репутацию у нескольких группировок)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return has_alife_info(&amp;quot;пишем_что_писали_в_проверке_на_получение_ранее_достижения&amp;quot;)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений.&lt;br /&gt;
&lt;br /&gt;
Откроем '''xr_conditions.script''' найдём:&lt;br /&gt;
&amp;lt;lua&amp;gt;friend_of_stalkers_functor = xr_statistic.friend_of_stalkers_functor&amp;lt;/lua&amp;gt;&lt;br /&gt;
и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;название_вашей_функции = xr_statistic.название_вашей_функции&amp;lt;/lua&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений.&lt;br /&gt;
&lt;br /&gt;
Рисуем в '''ui_actor_achivments.dds''' иконку для нашего достижения (можно взять и старую).&lt;br /&gt;
&lt;br /&gt;
Открываем файл '''ui_actor_achivments.xml''' и добавляем там:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;texture id=&amp;quot;ui_inGame2_название_вашей_иконки&amp;quot; x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;121&amp;quot; height=&amp;quot;121&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Если рисовали собственную иконку то вписываем её координаты (по x и y осям), если решили взять уже имеющуюся то вписывайте её координаты (координаты определяются по левому верхнему углу иконки достижения) координаты можно посмотреть через WTV (Windows Texture Viewer), или, например, известную программу дял редактирования иконок &amp;quot;Сталкера&amp;quot; - &amp;lt;span style=&amp;quot;color: DodgerBlue&amp;quot;&amp;gt;Stalker Icon Editor&amp;lt;/span&amp;gt;. &lt;br /&gt;
Удачной игры&lt;br /&gt;
&lt;br /&gt;
'''Автор:''' ''WillsherT''&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%BE%D1%81%D1%82%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F</id>
		<title>CoP. Создание нового достижения</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%BE%D1%81%D1%82%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F"/>
				<updated>2013-07-23T09:39:39Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Для начала нужно распаковать игру анпакером.'''&lt;br /&gt;
&lt;br /&gt;
После распаковки идём в следующие директории и ищем следующие файлы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;'''info_x.xml''' ---&amp;gt; '''configs\gameplay\'''  (где &amp;quot;x&amp;quot; название локации на которой хотим получить достижение например jupiter) этот файл нужен для просмотра списка квестов на локации, зачем нам это вы узнаете позже.&lt;br /&gt;
&amp;lt;br&amp;gt;'''achievements.ltx''' ---&amp;gt; '''configs\misc\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''st_achievement.xml''' ---&amp;gt; '''configs\text\rus\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''ui_actor_achivments.xml''' ---&amp;gt; '''configs\ui\textures_descr\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''xr_statistic.script''' ---&amp;gt; '''scripts\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''ui_actor_achivments.dds''' ---&amp;gt; '''textures\ui\'''&lt;br /&gt;
&amp;lt;br&amp;gt;'''xr_conditions.script''' ---&amp;gt; '''scripts\'''&lt;br /&gt;
&lt;br /&gt;
'''И так, приступаем к работе.'''&lt;br /&gt;
&lt;br /&gt;
Откроем файл '''achievements.ltx''' и ищем такую вот запись:&lt;br /&gt;
&amp;lt;ini&amp;gt;[achievements]&lt;br /&gt;
pioneer&lt;br /&gt;
mutant_hunter&lt;br /&gt;
detective&lt;br /&gt;
one_of_the_lads&lt;br /&gt;
kingpin&lt;br /&gt;
herald_of_justice&lt;br /&gt;
seeker&lt;br /&gt;
battle_systems_master&lt;br /&gt;
high_tech_master&lt;br /&gt;
skilled_stalker&lt;br /&gt;
leader&lt;br /&gt;
diplomat&lt;br /&gt;
research_man&lt;br /&gt;
friend_of_duty&lt;br /&gt;
friend_of_freedom&lt;br /&gt;
balance_advocate&lt;br /&gt;
wealthy&lt;br /&gt;
keeper_of_secrets&lt;br /&gt;
marked_by_zone&lt;br /&gt;
information_dealer&lt;br /&gt;
friend_of_stalkers&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
добавим в конце название_достижения_на_английском. Пример:&lt;br /&gt;
&amp;lt;ini&amp;gt;[achievements]&lt;br /&gt;
pioneer&lt;br /&gt;
mutant_hunter&lt;br /&gt;
detective&lt;br /&gt;
one_of_the_lads&lt;br /&gt;
kingpin&lt;br /&gt;
herald_of_justice&lt;br /&gt;
seeker&lt;br /&gt;
battle_systems_master&lt;br /&gt;
high_tech_master&lt;br /&gt;
skilled_stalker&lt;br /&gt;
leader&lt;br /&gt;
diplomat&lt;br /&gt;
research_man&lt;br /&gt;
friend_of_duty&lt;br /&gt;
friend_of_freedom&lt;br /&gt;
balance_advocate&lt;br /&gt;
wealthy&lt;br /&gt;
keeper_of_secrets&lt;br /&gt;
marked_by_zone&lt;br /&gt;
information_dealer&lt;br /&gt;
friend_of_stalkers&lt;br /&gt;
all_stalkers_your_friend&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Идём в конец файла и добавляем следующее:&lt;br /&gt;
&amp;lt;ini&amp;gt;[&amp;quot;Название_достижения_на_английском_без_кавычек&amp;quot;]&lt;br /&gt;
icon        = ui_inGame2_имя_иконки_на_английском&lt;br /&gt;
hint        = st_sp_achievement_22_hint &amp;lt;--- То, что будет выводиться в КПК при наведении на иконку достижения (надо оставлять так же меняя только числа, чтоб они шли по порядку)&lt;br /&gt;
name        = st_sp_achievement_22_name &amp;lt;--- Имя достижения&lt;br /&gt;
desc        = st_sp_achievement_22_descr &amp;lt;--- Описание достижения&lt;br /&gt;
functor        = xr_statistic.название_достижения_на_английском_functor &amp;lt;--- функция для получения нашего достижения&amp;lt;/ini&amp;gt;&lt;br /&gt;
закрываем сохраняя изменения в файле&lt;br /&gt;
&lt;br /&gt;
Далее откроем файл '''st_achievement.xml''' и добавим между:&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_21_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Друг сталкеров&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
и&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_1_hint&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Совокупность новых данных позволила профессорам Герману и Озёрскому синтезировать в условиях Зоны экспериментальный анабиотик.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Следующее:&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_22_hint&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Ваш текст который будет высвечиваться в КПК при наведении мышки на иконку достижения.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_sp_achievement_22_descr&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Полное описание достижения.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_sp_achievement_22_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Имя достижения&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений&lt;br /&gt;
&lt;br /&gt;
Открываем '''xr_statistic.script''' идём в самый конец и добавляем следующее:&lt;br /&gt;
&amp;lt;lua&amp;gt;function название_вашей_функции()&lt;br /&gt;
	if not has_alife_info(&amp;quot;пишем_что_хотим_на_английсокм&amp;quot;) then &amp;lt;--- проверка на раннее получение этого достижения&lt;br /&gt;
		if has_alife_info(&amp;quot;название_квеста_или_действия&amp;quot;) &amp;lt;--- квест или действие после которого будет получено достижение. Для этого нам как раз и понадобится info_x.xml о котором я писал в начале.&lt;br /&gt;
				and has_alife_info(&amp;quot;название_квеста_или_действия&amp;quot;) &amp;lt;--- эта функция если квестов несколько&lt;br /&gt;
			db.actor:give_info_portion(&amp;quot;пишем_что_писали_в_проверке_на_получение_ранее_достижения&amp;quot;)&lt;br /&gt;
			news_manager.send_tip(db.actor, &amp;quot;st_ach_название_вашего_достижения_на_английском&amp;quot;, nil, &amp;quot;название_вашего_достижения_на_английском&amp;quot;, nil, nil)&lt;br /&gt;
			xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {&amp;quot;stalker&amp;quot;, 100}) &amp;lt;--- прибавление репутации сталкеров при получении данного достижения (если - то убавление), можно вписать любую другую группировку (использовать несколько команд если хотите прибавить или убавить репутацию у нескольких группировок)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return has_alife_info(&amp;quot;пишем_что_писали_в_проверке_на_получение_ранее_достижения&amp;quot;)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений.&lt;br /&gt;
&lt;br /&gt;
Откроем '''xr_conditions.script''' найдём:&lt;br /&gt;
&amp;lt;lua&amp;gt;friend_of_stalkers_functor = xr_statistic.friend_of_stalkers_functor&amp;lt;/lua&amp;gt;&lt;br /&gt;
и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;название_вашей_функции = xr_statistic.название_вашей_функции&amp;lt;/lua&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений.&lt;br /&gt;
&lt;br /&gt;
Рисуем в '''ui_actor_achivments.dds''' иконку для нашего достижения (можно взять и старую).&lt;br /&gt;
&lt;br /&gt;
Открываем файл '''ui_actor_achivments.xml''' и добавляем там:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;texture id=&amp;quot;ui_inGame2_название_вашей_иконки&amp;quot; x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;121&amp;quot; height=&amp;quot;121&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Если рисовали собственную иконку то вписываем её координаты (по x и y осям), если решили взять уже имеющуюся то вписывайте её координаты (координаты определяются по левому верхнему углу иконки достижения) координаты можно посмотреть через WTV (Windows Texture Viewer), или, например, известную программу дял редактирования иконок &amp;quot;Сталкера&amp;quot; - &amp;lt;span style=&amp;quot;color: DodgerBlue&amp;quot;&amp;gt;Stalker Icon Editor&amp;lt;/span&amp;gt;. &lt;br /&gt;
Удачной игры&lt;br /&gt;
&lt;br /&gt;
'''Автор:''' ''WillsherT''&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%BE%D1%81%D1%82%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F</id>
		<title>CoP. Создание нового достижения</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%B4%D0%BE%D1%81%D1%82%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F"/>
				<updated>2013-07-23T09:36:40Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Для начала нужно распаковать игру анпакером.'''&lt;br /&gt;
&lt;br /&gt;
После распаковки идём в следующие директории и ищем следующие файлы:&lt;br /&gt;
&lt;br /&gt;
'''info_x.xml''' ---&amp;gt; '''configs\gameplay\'''  (где &amp;quot;x&amp;quot; название локации на которой хотим получить достижение например jupiter) этот файл нужен для просмотра списка квестов на локации, зачем нам это вы узнаете позже.&lt;br /&gt;
'''achievements.ltx''' ---&amp;gt; '''configs\misc\'''&lt;br /&gt;
'''st_achievement.xml''' ---&amp;gt; '''configs\text\rus\'''&lt;br /&gt;
'''ui_actor_achivments.xml''' ---&amp;gt; '''configs\ui\textures_descr\'''&lt;br /&gt;
'''xr_statistic.script''' ---&amp;gt; '''scripts\'''&lt;br /&gt;
'''ui_actor_achivments.dds''' ---&amp;gt; '''textures\ui\'''&lt;br /&gt;
'''xr_conditions.script''' ---&amp;gt; '''scripts\'''&lt;br /&gt;
&lt;br /&gt;
'''И так, приступаем к работе.'''&lt;br /&gt;
&lt;br /&gt;
Откроем файл '''achievements.ltx''' и ищем такую вот запись:&lt;br /&gt;
&amp;lt;ini&amp;gt;[achievements]&lt;br /&gt;
pioneer&lt;br /&gt;
mutant_hunter&lt;br /&gt;
detective&lt;br /&gt;
one_of_the_lads&lt;br /&gt;
kingpin&lt;br /&gt;
herald_of_justice&lt;br /&gt;
seeker&lt;br /&gt;
battle_systems_master&lt;br /&gt;
high_tech_master&lt;br /&gt;
skilled_stalker&lt;br /&gt;
leader&lt;br /&gt;
diplomat&lt;br /&gt;
research_man&lt;br /&gt;
friend_of_duty&lt;br /&gt;
friend_of_freedom&lt;br /&gt;
balance_advocate&lt;br /&gt;
wealthy&lt;br /&gt;
keeper_of_secrets&lt;br /&gt;
marked_by_zone&lt;br /&gt;
information_dealer&lt;br /&gt;
friend_of_stalkers&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
добавим в конце название_достижения_на_английском. Пример:&lt;br /&gt;
&amp;lt;ini&amp;gt;[achievements]&lt;br /&gt;
pioneer&lt;br /&gt;
mutant_hunter&lt;br /&gt;
detective&lt;br /&gt;
one_of_the_lads&lt;br /&gt;
kingpin&lt;br /&gt;
herald_of_justice&lt;br /&gt;
seeker&lt;br /&gt;
battle_systems_master&lt;br /&gt;
high_tech_master&lt;br /&gt;
skilled_stalker&lt;br /&gt;
leader&lt;br /&gt;
diplomat&lt;br /&gt;
research_man&lt;br /&gt;
friend_of_duty&lt;br /&gt;
friend_of_freedom&lt;br /&gt;
balance_advocate&lt;br /&gt;
wealthy&lt;br /&gt;
keeper_of_secrets&lt;br /&gt;
marked_by_zone&lt;br /&gt;
information_dealer&lt;br /&gt;
friend_of_stalkers&lt;br /&gt;
all_stalkers_your_friend&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Идём в конец файла и добавляем следующее:&lt;br /&gt;
&amp;lt;ini&amp;gt;[&amp;quot;Название_достижения_на_английском_без_кавычек&amp;quot;]&lt;br /&gt;
icon        = ui_inGame2_имя_иконки_на_английском&lt;br /&gt;
hint        = st_sp_achievement_22_hint &amp;lt;--- То, что будет выводиться в КПК при наведении на иконку достижения (надо оставлять так же меняя только числа, чтоб они шли по порядку)&lt;br /&gt;
name        = st_sp_achievement_22_name &amp;lt;--- Имя достижения&lt;br /&gt;
desc        = st_sp_achievement_22_descr &amp;lt;--- Описание достижения&lt;br /&gt;
functor        = xr_statistic.название_достижения_на_английском_functor &amp;lt;--- функция для получения нашего достижения&amp;lt;/ini&amp;gt;&lt;br /&gt;
закрываем сохраняя изменения в файле&lt;br /&gt;
&lt;br /&gt;
Далее откроем файл '''st_achievement.xml''' и добавим между:&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_21_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Друг сталкеров&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
и&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_1_hint&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Совокупность новых данных позволила профессорам Герману и Озёрскому синтезировать в условиях Зоны экспериментальный анабиотик.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Следующее:&lt;br /&gt;
&amp;lt;xml&amp;gt;	&amp;lt;string id=&amp;quot;st_sp_achievement_22_hint&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Ваш текст который будет высвечиваться в КПК при наведении мышки на иконку достижения.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_sp_achievement_22_descr&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Полное описание достижения.&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;st_sp_achievement_22_name&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Имя достижения&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений&lt;br /&gt;
&lt;br /&gt;
Открываем '''xr_statistic.script''' идём в самый конец и добавляем следующее:&lt;br /&gt;
&amp;lt;lua&amp;gt;function название_вашей_функции()&lt;br /&gt;
	if not has_alife_info(&amp;quot;пишем_что_хотим_на_английсокм&amp;quot;) then &amp;lt;--- проверка на раннее получение этого достижения&lt;br /&gt;
		if has_alife_info(&amp;quot;название_квеста_или_действия&amp;quot;) &amp;lt;--- квест или действие после которого будет получено достижение. Для этого нам как раз и понадобится info_x.xml о котором я писал в начале.&lt;br /&gt;
				and has_alife_info(&amp;quot;название_квеста_или_действия&amp;quot;) &amp;lt;--- эта функция если квестов несколько&lt;br /&gt;
			db.actor:give_info_portion(&amp;quot;пишем_что_писали_в_проверке_на_получение_ранее_достижения&amp;quot;)&lt;br /&gt;
			news_manager.send_tip(db.actor, &amp;quot;st_ach_название_вашего_достижения_на_английском&amp;quot;, nil, &amp;quot;название_вашего_достижения_на_английском&amp;quot;, nil, nil)&lt;br /&gt;
			xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {&amp;quot;stalker&amp;quot;, 100}) &amp;lt;--- прибавление репутации сталкеров при получении данного достижения (если - то убавление), можно вписать любую другую группировку (использовать несколько команд если хотите прибавить или убавить репутацию у нескольких группировок)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return has_alife_info(&amp;quot;пишем_что_писали_в_проверке_на_получение_ранее_достижения&amp;quot;)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений.&lt;br /&gt;
&lt;br /&gt;
Откроем '''xr_conditions.script''' найдём:&lt;br /&gt;
&amp;lt;lua&amp;gt;friend_of_stalkers_functor = xr_statistic.friend_of_stalkers_functor&amp;lt;/lua&amp;gt;&lt;br /&gt;
и после пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;название_вашей_функции = xr_statistic.название_вашей_функции&amp;lt;/lua&amp;gt;&lt;br /&gt;
Закрываем с подтверждением на сохранение изменений.&lt;br /&gt;
&lt;br /&gt;
Рисуем в '''ui_actor_achivments.dds''' иконку для нашего достижения (можно взять и старую).&lt;br /&gt;
&lt;br /&gt;
Открываем файл '''ui_actor_achivments.xml''' и добавляем там:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;texture id=&amp;quot;ui_inGame2_название_вашей_иконки&amp;quot; x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;121&amp;quot; height=&amp;quot;121&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Если рисовали собственную иконку то вписываем её координаты (по x и y осям), если решили взять уже имеющуюся то вписывайте её координаты (координаты определяются по левому верхнему углу иконки достижения) координаты можно посмотреть через WTV (Windows Texture Viewer), или, например, известную программу дял редактирования иконок &amp;quot;Сталкера&amp;quot; - &amp;lt;span style=&amp;quot;color: DodgerBlue&amp;quot;&amp;gt;Stalker Icon Editor&amp;lt;/span&amp;gt;. &lt;br /&gt;
Удачной игры&lt;br /&gt;
&lt;br /&gt;
'''Автор:''' ''WillsherT''&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D1%81%D0%BF%D0%B0%D0%B2%D0%BD%D0%B8%D1%82%D1%8C_%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%B5%D1%86%D0%B0</id>
		<title>Как заспавнить мертвеца</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D1%81%D0%BF%D0%B0%D0%B2%D0%BD%D0%B8%D1%82%D1%8C_%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%B5%D1%86%D0%B0"/>
				<updated>2013-07-23T09:20:24Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: /* Универсальный способ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== в ТЧ ====&lt;br /&gt;
Делаем всё так как написано в [[All.spawn. Создание NPC|этой]] статье.&amp;lt;br /&amp;gt;&lt;br /&gt;
только вместо ''health = 1'' и ''upd:health = 1''&amp;lt;br /&amp;gt;&lt;br /&gt;
ставим ''health = 0'' и ''upd:health = 0''&lt;br /&gt;
==== Прим. от Erlik====&lt;br /&gt;
''В ТЧ тоже есть метод для спавна трупа:''&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
local obj= alife():create(&amp;quot;stalker&amp;quot;, pos, lvid, gvid)  -- позиция и вертексы&lt;br /&gt;
obj:on_death()&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== в ЧН ====&lt;br /&gt;
Можно так же как и в ТЧ. Или без редактирования '''all.spawn''':&amp;lt;br /&amp;gt;&lt;br /&gt;
Создать НПС, добавить его в '''character_desc_*****.xml''', '''npc_profile.xml''' и '''spawn_sections.ltx'''&amp;lt;br /&amp;gt;&lt;br /&gt;
В последнем файле ('''spawn_sections.ltx''') добавить НПС свою логику.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[ID_непися]:stalker&lt;br /&gt;
$spawn = &amp;quot;respawn\ID_непися&amp;quot;&lt;br /&gt;
character_profile = ID_непися ;из character_desc_*****.xml&lt;br /&gt;
custom_data = scripts\скриптовая_логика_нпс.ltx ;из gamedata\configs\scripts\&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в '''gamedata\configs\scripts\''' создать логику для нашего мертвеца:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = walker@1&lt;br /&gt;
&lt;br /&gt;
[walker@1]&lt;br /&gt;
path_walk = где_стоит&lt;br /&gt;
path_look = куда_смотрит&lt;br /&gt;
combat_ignore_cond = true&lt;br /&gt;
on_info = %=kill_npc()%&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно также сделать, чтобы НПС помер после выдачи инфопорции:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = walker@1&lt;br /&gt;
&lt;br /&gt;
[walker@1]&lt;br /&gt;
path_walk = где_стоит&lt;br /&gt;
path_look = куда_смотрит&lt;br /&gt;
combat_ignore_cond = true&lt;br /&gt;
on_info = {+инфопорция} %=kill_npc()%&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== в ЗП ====&lt;br /&gt;
В ЗП для этого даже есть специальная функция. Находится она в '''xr_effects.script''':&lt;br /&gt;
&amp;lt;lua&amp;gt;function spawn_corpse(actor, obj, p)&lt;br /&gt;
		--' p[1] - секция кого спаунить&lt;br /&gt;
		--' p[2] - имя патрульного пути где спаунить.&lt;br /&gt;
	local spawn_sect = p[1]&lt;br /&gt;
	if spawn_sect == nil then&lt;br /&gt;
		abort(&amp;quot;Wrong spawn section for 'spawn_corpse' function %s. For object %s&amp;quot;, tostring(spawn_sect), obj:name())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local path_name = p[2]&lt;br /&gt;
	if path_name == nil then&lt;br /&gt;
		abort(&amp;quot;Wrong path_name for 'spawn_corpse' function %s. For object %s&amp;quot;, tostring(path_name), obj:name())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not level.patrol_path_exists(path_name) then&lt;br /&gt;
		abort(&amp;quot;Path %s doesnt exist. Function 'spawn_corpse' for object %s &amp;quot;, tostring(path_name), obj:name())&lt;br /&gt;
	end&lt;br /&gt;
	local ptr = patrol(path_name)&lt;br /&gt;
	local index = p[3] or 0&lt;br /&gt;
&lt;br /&gt;
	local se_obj = alife():create(spawn_sect,&lt;br /&gt;
									ptr:point(index),&lt;br /&gt;
									ptr:level_vertex_id(0),&lt;br /&gt;
									ptr:game_vertex_id(0))&lt;br /&gt;
	se_obj:kill()&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Если вызывать через логику, то имеет такую структуру: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=spawn_corpse(ID_непися:walk_поинт_для_спавна)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На примере рестриктора:&amp;lt;br /&amp;gt;&lt;br /&gt;
Спавн с самого начала игры&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_info = sr_idle@end %=spawn_corpse(ID_непися:walk_поинт_для_спавна)%&lt;br /&gt;
&lt;br /&gt;
[sr_idle@end]&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Или спавн после выдачи определённой инфопорции&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_info = {+инфопорция} sr_idle@end %=spawn_corpse(ID_непися:walk_поинт_для_спавна)%&lt;br /&gt;
&lt;br /&gt;
[sr_idle@end]&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Универсальный способ ====&lt;br /&gt;
Все очень просто. Создаем стандартную функцию спавна:&lt;br /&gt;
&amp;lt;lua&amp;gt;function test_corpse_spawn()&lt;br /&gt;
alife():create(&amp;quot;ID_НПС&amp;quot;,vector():set(x,y,z),lvid,gvid)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
'''x, y, z, lvid, gvid''' - координаты&lt;br /&gt;
И дописываем к строке спавна значение ''':on_death()''':&lt;br /&gt;
&amp;lt;lua&amp;gt;function test_corpse_spawn&lt;br /&gt;
alife():create(&amp;quot;ID_НПС&amp;quot;,vector():set(x,y,z),lvid,gvid):on_death()&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Автор:''' [[Участник:THE_ATLAS|THE_ATLAS]]&lt;br /&gt;
&amp;lt;br&amp;gt;'''Подкорректировал некоторые утверждения, оформление и добавил универсальный способ:''' [[Участник:FantomICW|FantomICW]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигураци&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D1%81%D0%BF%D0%B0%D0%B2%D0%BD%D0%B8%D1%82%D1%8C_%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%B5%D1%86%D0%B0</id>
		<title>Как заспавнить мертвеца</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D1%81%D0%BF%D0%B0%D0%B2%D0%BD%D0%B8%D1%82%D1%8C_%D0%BC%D0%B5%D1%80%D1%82%D0%B2%D0%B5%D1%86%D0%B0"/>
				<updated>2013-07-23T09:19:30Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== в ТЧ ====&lt;br /&gt;
Делаем всё так как написано в [[All.spawn. Создание NPC|этой]] статье.&amp;lt;br /&amp;gt;&lt;br /&gt;
только вместо ''health = 1'' и ''upd:health = 1''&amp;lt;br /&amp;gt;&lt;br /&gt;
ставим ''health = 0'' и ''upd:health = 0''&lt;br /&gt;
==== Прим. от Erlik====&lt;br /&gt;
''В ТЧ тоже есть метод для спавна трупа:''&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
local obj= alife():create(&amp;quot;stalker&amp;quot;, pos, lvid, gvid)  -- позиция и вертексы&lt;br /&gt;
obj:on_death()&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== в ЧН ====&lt;br /&gt;
Можно так же как и в ТЧ. Или без редактирования '''all.spawn''':&amp;lt;br /&amp;gt;&lt;br /&gt;
Создать НПС, добавить его в '''character_desc_*****.xml''', '''npc_profile.xml''' и '''spawn_sections.ltx'''&amp;lt;br /&amp;gt;&lt;br /&gt;
В последнем файле ('''spawn_sections.ltx''') добавить НПС свою логику.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[ID_непися]:stalker&lt;br /&gt;
$spawn = &amp;quot;respawn\ID_непися&amp;quot;&lt;br /&gt;
character_profile = ID_непися ;из character_desc_*****.xml&lt;br /&gt;
custom_data = scripts\скриптовая_логика_нпс.ltx ;из gamedata\configs\scripts\&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в '''gamedata\configs\scripts\''' создать логику для нашего мертвеца:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = walker@1&lt;br /&gt;
&lt;br /&gt;
[walker@1]&lt;br /&gt;
path_walk = где_стоит&lt;br /&gt;
path_look = куда_смотрит&lt;br /&gt;
combat_ignore_cond = true&lt;br /&gt;
on_info = %=kill_npc()%&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно также сделать, чтобы НПС помер после выдачи инфопорции:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = walker@1&lt;br /&gt;
&lt;br /&gt;
[walker@1]&lt;br /&gt;
path_walk = где_стоит&lt;br /&gt;
path_look = куда_смотрит&lt;br /&gt;
combat_ignore_cond = true&lt;br /&gt;
on_info = {+инфопорция} %=kill_npc()%&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== в ЗП ====&lt;br /&gt;
В ЗП для этого даже есть специальная функция. Находится она в '''xr_effects.script''':&lt;br /&gt;
&amp;lt;lua&amp;gt;function spawn_corpse(actor, obj, p)&lt;br /&gt;
		--' p[1] - секция кого спаунить&lt;br /&gt;
		--' p[2] - имя патрульного пути где спаунить.&lt;br /&gt;
	local spawn_sect = p[1]&lt;br /&gt;
	if spawn_sect == nil then&lt;br /&gt;
		abort(&amp;quot;Wrong spawn section for 'spawn_corpse' function %s. For object %s&amp;quot;, tostring(spawn_sect), obj:name())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local path_name = p[2]&lt;br /&gt;
	if path_name == nil then&lt;br /&gt;
		abort(&amp;quot;Wrong path_name for 'spawn_corpse' function %s. For object %s&amp;quot;, tostring(path_name), obj:name())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not level.patrol_path_exists(path_name) then&lt;br /&gt;
		abort(&amp;quot;Path %s doesnt exist. Function 'spawn_corpse' for object %s &amp;quot;, tostring(path_name), obj:name())&lt;br /&gt;
	end&lt;br /&gt;
	local ptr = patrol(path_name)&lt;br /&gt;
	local index = p[3] or 0&lt;br /&gt;
&lt;br /&gt;
	local se_obj = alife():create(spawn_sect,&lt;br /&gt;
									ptr:point(index),&lt;br /&gt;
									ptr:level_vertex_id(0),&lt;br /&gt;
									ptr:game_vertex_id(0))&lt;br /&gt;
	se_obj:kill()&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Если вызывать через логику, то имеет такую структуру: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=spawn_corpse(ID_непися:walk_поинт_для_спавна)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На примере рестриктора:&amp;lt;br /&amp;gt;&lt;br /&gt;
Спавн с самого начала игры&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_info = sr_idle@end %=spawn_corpse(ID_непися:walk_поинт_для_спавна)%&lt;br /&gt;
&lt;br /&gt;
[sr_idle@end]&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Или спавн после выдачи определённой инфопорции&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_idle&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
on_info = {+инфопорция} sr_idle@end %=spawn_corpse(ID_непися:walk_поинт_для_спавна)%&lt;br /&gt;
&lt;br /&gt;
[sr_idle@end]&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Универсальный способ ====&lt;br /&gt;
Все очень просто. Создаем стандартную функцию спавна:&lt;br /&gt;
&amp;lt;lua&amp;gt;function test_corpse_spawn&lt;br /&gt;
alife():create(&amp;quot;ID_НПС&amp;quot;,vector():set(x,y,z),lvid,gvid)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
'''x, y, z, lvid, gvid''' - координаты&lt;br /&gt;
И дописываем к строке спавна значение ''':on_death()''':&lt;br /&gt;
&amp;lt;lua&amp;gt;function test_corpse_spawn&lt;br /&gt;
alife():create(&amp;quot;ID_НПС&amp;quot;,vector():set(x,y,z),lvid,gvid):on_death()&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Автор:''' [[Участник:THE_ATLAS|THE_ATLAS]]&lt;br /&gt;
&amp;lt;br&amp;gt;'''Подкорректировал некоторые утверждения, оформление и добавил универсальный способ:''' [[Участник:FantomICW|FantomICW]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D1%8B_%D0%B8_%D0%BE%D1%81%D0%B2%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D1%8F</id>
		<title>Настройка погоды и освещения</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D1%8B_%D0%B8_%D0%BE%D1%81%D0%B2%D0%B5%D1%89%D0%B5%D0%BD%D0%B8%D1%8F"/>
				<updated>2013-07-23T08:59:23Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Значение параметров погодных и относящихся к ним конфигов==&lt;br /&gt;
&lt;br /&gt;
===Параметры погоды===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[sect_default_weather]&lt;br /&gt;
&lt;br /&gt;
01:00:00 = default_weather_01&lt;br /&gt;
02:00:00 = default_weather_02&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь указывается время смены секций погоды, каждая секция включает в себя свой скайбокс и индивидуальные параметры освещения, дождя, грозы, и звука окружения. Переход между секциями осуществляется не скачкообразно, а плавно, практически не заметно. Имена секций можно ставить произвольные, используя латиницу, время так же можно выставить любое, но не рекомендуется.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[default_weather_01] ; имя секции погоды, описание которой ведется в этом блоке.&lt;br /&gt;
&lt;br /&gt;
flares = flares_gradient1 ; здесь указывается имя заготовки блика&lt;br /&gt;
от солнца (заготовки прописаны в файле flares.ltx).&lt;br /&gt;
&lt;br /&gt;
sky_texture = sky\sky_14_cube ; это имя используемого скайбокса. cкайбокс - это куб,&lt;br /&gt;
окружающий всю локацию, на 6 граней которого натянуты 6 текстур из файла, указанного &lt;br /&gt;
в этой строке. нужно обратить внимание, что строка содержит еще и путь к файлу.&lt;br /&gt;
&lt;br /&gt;
sky_rotation = 0 ; определяет положение (азимут) скайбокса на описываемый час.  &lt;br /&gt;
Если выставить в соседних секциях разные значения азимута, то в переходах между секциями &lt;br /&gt;
скайбокс будет плавно совершать вращение от одного значения к другому.&lt;br /&gt;
&lt;br /&gt;
sky_color = 1.0, 1.0, 1.0 ; это цвет неба, или, точнее, цвет рассеянного света, &lt;br /&gt;
формат из 3 цифр, как и в параметрах ниже, подразумевает цветовую модель RGB, &lt;br /&gt;
учитывая то, что здесь максимальная интенсивность цвета (255), здесь равна 1.0. &lt;br /&gt;
например, цвет неба, равный [1.0, 0.0, 0.0] - зальет окрестность ярко красным светом. &lt;br /&gt;
стоит учитывать, что здесь описывается не цвет, а свет, поэтому параметр,&lt;br /&gt;
например, [0,0,0] - даст не черный цвет, а отсутствие вообще какого либо света. &lt;br /&gt;
аналогично эффекту смешивания в фотошопе (screen). НО! Опытным путем установлено, что &lt;br /&gt;
движок может работать со значениями больше единицы.&lt;br /&gt;
&lt;br /&gt;
clouds_texture = sky\sky_oblaka ; это - имя тектуры облаков. не путать со скайбоксом.&lt;br /&gt;
&lt;br /&gt;
clouds_color = 0.333, 0.341, 0.431, 0.7, 1.7 ; это цвет облаков, первые 3 цифры - &lt;br /&gt;
это RGB (см.выше), четвертая - это видимость (непрозрачность) текстуры облаков, &lt;br /&gt;
т.е 0 - облаков не видно, а 1 - полная видимость. пятая цифра - скорость движения&lt;br /&gt;
облаков.&lt;br /&gt;
&lt;br /&gt;
far_plane = 350 ; это, судя по всему, дальность видимости (расстояние, на котором &lt;br /&gt;
&amp;quot;обрезается&amp;quot; карта).&lt;br /&gt;
&lt;br /&gt;
fog_distance = 350 ; в DX9 это расстояние, на котором туман фактически &amp;quot;прекращает&amp;quot; &lt;br /&gt;
действовать. непосредственно дымка, интенсивность которой задаётся fog_density, &lt;br /&gt;
&amp;quot;висит&amp;quot; в радиусе fog_distance. за пределами этого радиуса часть геометрии &amp;quot;съедается&amp;quot; &lt;br /&gt;
и вместо неё отображается небо (скайбокс). правильно подобранная текстура неба &lt;br /&gt;
имитирует вдали клубы тумана. а уже дальше снова проявляется геометрия уровня (холмы &lt;br /&gt;
и т.д.). в DX8-режиме туман рудиментарен и обсуждать его нет особого смысла.&lt;br /&gt;
&lt;br /&gt;
fog_color = 0.043, 0.043, 0.055 ; непосредственно сам цвет тумана. При слишком высоких &lt;br /&gt;
значениях параметра объекты вдали будут светлее неба, поэтому если вдали видим &amp;quot;белые сосны&amp;quot;, &lt;br /&gt;
то проблема именно в этом параметре.&lt;br /&gt;
&lt;br /&gt;
fog_density = 0.9 ; это плотность тумана, выставив значение в 0, можно увидеть &lt;br /&gt;
четкие края карты, а если поставить значение больше единицы, то туман будет виден прямо перед носом.&lt;br /&gt;
&lt;br /&gt;
rain_density = 0.2 ; это плотность дождя, действует, видимо, как и туман. Примечательно, что &lt;br /&gt;
зависимость от параметра нелинейна, и значение 0.2 практически не отличается от единицы. Чтобы сделать &lt;br /&gt;
действительно слабый дождь, надо экспериментировать с очень маленькими значениями.&lt;br /&gt;
&lt;br /&gt;
rain_color = 0.21, 0.21, 0.27 ; цвет (непосредственно капель) падающего дождя.&lt;br /&gt;
&lt;br /&gt;
thunderbolt = thunderbolt_collection_default ; это имя заготовки грозы, если грозы &lt;br /&gt;
не предусмотрено, значение можно оставить пустым.&lt;br /&gt;
&lt;br /&gt;
bolt_period = 4.5f ; это время между вспышками молний. значение прописано не в &lt;br /&gt;
секундах. В принципе, эмпирически установлено, что в грозовую погоду желательно &lt;br /&gt;
ставить значения около 20f, в дождливую - в районе 50f.&lt;br /&gt;
&lt;br /&gt;
bolt_duration = 0.35f ; это собственно продолжительность фазы вспышки молнии. &lt;br /&gt;
выставив высокое значение, можно вовсе получить не молнию, а некое плавно &lt;br /&gt;
нарастающее свечение.&lt;br /&gt;
&lt;br /&gt;
wind_velocity = 0.0 ; сила ветра. влияет на подъем пыли в воздух.&lt;br /&gt;
&lt;br /&gt;
wind_direction = 0.0 ; направление ветра. На что влияет - не понятно.&lt;br /&gt;
&lt;br /&gt;
ambient_color = 0.0425, 0.045, 0.0475 ; общее освещение локации, те тона, в которые она&lt;br /&gt;
будет окрашена (цвет и интенсивность света фонового освещения там, где не светит солнце - &lt;br /&gt;
выставив значения в [0,0,0] - получим кромешную тьму в зданиях и под навесами. &lt;br /&gt;
работает только на R2.&lt;br /&gt;
&lt;br /&gt;
lmap_color = 1.0, 1.0, 1.0 ; видимо, цвет лайтмапа.&lt;br /&gt;
&lt;br /&gt;
hemi_color = 0.0425, 0.045, 0.0475, 0.1 ;по слухам, параметр, идентичный амбиенту, &lt;br /&gt;
только предназначенный для статичного освещения. насчет четвертой цифры - не в курсе.&lt;br /&gt;
&lt;br /&gt;
sun_longitude = -3.000000 ; положение светила (&amp;quot;-3&amp;quot; дефалтовое значение в ЗП,&lt;br /&gt;
 в таком положении оно находится на Востоке, если увеличить до ~&amp;quot;-170&amp;quot;&lt;br /&gt;
 оно перейдет на Запад).&lt;br /&gt;
&lt;br /&gt;
sun_color = 0.0, 0.0, 0.0 ; свет солнца, его интенсивность также влияет на тени, &lt;br /&gt;
если солнце не светит, теней от него не будет. Зависимость глубины тени от значений света не линейна.&lt;br /&gt;
&lt;br /&gt;
sun_dir = -18.0, 291 ; положение солнца, первая цифра - это высота, знак минус означает, &lt;br /&gt;
что солнце выше горизонта. от горизонта до горизонта солнце описывает полукруг, значения &lt;br /&gt;
в игре соотносятся с градусами, то есть от -0 до -180, зенит -90, вторая цифра определяет &lt;br /&gt;
положение солнца относительно сторон горизонта, нулевое значение вроде соответствует югу.&lt;br /&gt;
&lt;br /&gt;
env_ambient = ambient_env_rain ; это набор звуков окружения.&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Параметры эффектов светила===&lt;br /&gt;
&lt;br /&gt;
Находятся в файле '''flares.ltx'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[flares_sun_rise] ; название cекции, параметры которой описываются ниже&lt;br /&gt;
&lt;br /&gt;
flare_opacity = 0.340, 0.260, 0.500, 0.420, 0.260, 0.260 ; непрозрачность &lt;br /&gt;
каждого отражения, в порядке от дальнего к ближнему.&lt;br /&gt;
&lt;br /&gt;
flare_position = 1.300, 1.000, 0.500, -0.300, -0.600, -1.000 ; позиция каждого &lt;br /&gt;
отражения на оси, порядок соотв. верхнему.&lt;br /&gt;
&lt;br /&gt;
flare_radius = 0.080, 0.120, 0.040, 0.080, 0.120, 0.300 ; радиус каждого &lt;br /&gt;
отражения, порядок соотв. верхнему.&lt;br /&gt;
&lt;br /&gt;
flare_textures = fxfx_flare1.tga, fxfx_flare2.tga, &lt;br /&gt;
fxfx_flare2.tga, fxfx_flare2.tga, fxfx_flare3.tga, &lt;br /&gt;
fxfx_flare1.tga&lt;br /&gt;
&lt;br /&gt;
; имена текстур, использованных на каждое отражение, порядок аналогичен. &lt;br /&gt;
можно заметить, что прописан формат *.tga, в действительности используются, &lt;br /&gt;
как и везде, текстуры *.dds, а вообще - поддержка формата *.tga под вопросом.&lt;br /&gt;
&lt;br /&gt;
flare_shader = effectsflare ; шейдер.&lt;br /&gt;
&lt;br /&gt;
flares = on ; параметр включает или выключает блики, например, для луны - &lt;br /&gt;
они не уместны.&lt;br /&gt;
&lt;br /&gt;
gradient = on ; параметр, включающий/выключающий ореол вокруг светила, &lt;br /&gt;
дающий эффект ослепления.&lt;br /&gt;
&lt;br /&gt;
gradient_opacity = 1.0 ; непрозрачность ореола.&lt;br /&gt;
&lt;br /&gt;
gradient_radius = 0.7 ; радиус ореола.&lt;br /&gt;
&lt;br /&gt;
gradient_texture = fxfx_gradient.tga ;имя текстуры ореола.&lt;br /&gt;
&lt;br /&gt;
gradient_shader = effectsflare ; аналогично [flare_shader].&lt;br /&gt;
&lt;br /&gt;
source = on ;параметр, включающий/выключающий отображение источника, то есть &lt;br /&gt;
самого солнца или луны.&lt;br /&gt;
&lt;br /&gt;
source_radius = 0.03 ; радиус источника.&lt;br /&gt;
&lt;br /&gt;
source_texture = fxfx_sun_rise.tga ;имя используемой для источника текстуры.&lt;br /&gt;
&lt;br /&gt;
source_shader = effectssun ; аналогично [flare_shader].&lt;br /&gt;
&lt;br /&gt;
source_ignore_color = false ; игнорирование цвета источника.&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Параметры фонарика===&lt;br /&gt;
&lt;br /&gt;
Файл находится по следующему пути:&amp;lt;br&amp;gt;&lt;br /&gt;
'''config\models\objects\light_night.ltx'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[torch_definition]&lt;br /&gt;
&lt;br /&gt;
range = 30 ; дистанция в метрах.&lt;br /&gt;
&lt;br /&gt;
range_r2 = 30 ; дистанция в метрах (для динамического освещения).&lt;br /&gt;
&lt;br /&gt;
color = 0.22,0.22,0.22,0.2 ; цвет, из 4 компонентов &amp;lt;r,g,b,a&amp;gt; значением от 0 до 3.&lt;br /&gt;
&lt;br /&gt;
color_r2 = 1.1,1.1,1.1,0.0 ; цвет, из 4 компонентов &amp;lt;r,g,b,a&amp;gt; значением от 0 до 3 &lt;br /&gt;
(для динамического освещения).&lt;br /&gt;
&lt;br /&gt;
omni_range = 3 ; дистанция освещения от фонариков неписей в метрах.&lt;br /&gt;
&lt;br /&gt;
omni_range_r2 = 3 ; дистанция освещения от фонариков неписей в метрах (для динамического &lt;br /&gt;
освещения).&lt;br /&gt;
&lt;br /&gt;
omni_color = 1.0,1.0,1.0,0.1 ; цвет фонариков неписей, из 4 компонентов &amp;lt;r,g,b,a&amp;gt; &lt;br /&gt;
значением от 0 до 3.&lt;br /&gt;
&lt;br /&gt;
omni_color_r2 = 1.0,1.0,1.0,0.1 ; цвет фонариков неписей, из 4 компонентов &amp;lt;r,g,b,a&amp;gt; &lt;br /&gt;
значением от 0 до 3  (для динамического освещения).&lt;br /&gt;
&lt;br /&gt;
color_animator = empty ; цвет аниматора (empty - аниматор не используется).&lt;br /&gt;
&lt;br /&gt;
spot_texture = internalinternal_light_torch_r2 ; текстура яркой точки (для динамического &lt;br /&gt;
освещения).&lt;br /&gt;
&lt;br /&gt;
spot_angle = 45 ; угол освещения в градусах.&lt;br /&gt;
&lt;br /&gt;
glow_texture = glowglow_torch_r2 ; текстура свечения фонарика, когда он направлен в глаза &lt;br /&gt;
(обязательный параметр).&lt;br /&gt;
&lt;br /&gt;
glow_radius = 0.3 ; радиус свечения в метрах.&lt;br /&gt;
&lt;br /&gt;
guide_bone = lights_bone ; кость, к направлению которой привязывается фонарик (изменять&lt;br /&gt;
строго не рекомендуется).&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана по материалам, предоставленным:&lt;br /&gt;
&lt;br /&gt;
* [[Участник:Argus|Argus]]&lt;br /&gt;
* [[Участник:Saharov|Saharov]]&lt;br /&gt;
* [[Участник:sergy172|sergy172]]&lt;br /&gt;
* [[Участник:Xarvius|Xarvius]]&lt;br /&gt;
* [[Участник:NightVz|NightVz]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;br /&gt;
Мелкое дополнение от KV38&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B9_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8</id>
		<title>Создание новой группировки</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B9_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8"/>
				<updated>2013-07-23T08:56:02Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Новая группировка==&lt;br /&gt;
&lt;br /&gt;
Сегодня мы создадим новую группировку. Назовем её, скажем, &amp;quot;Ветер&amp;quot;. Не суть важно.&lt;br /&gt;
&lt;br /&gt;
==Практика==&lt;br /&gt;
&lt;br /&gt;
===Базовый уровень===&lt;br /&gt;
&lt;br /&gt;
'''1.''' Для начала в '''game_relations.ltx''' и в таблицу отношений группировок в конце и в заголовке добавляем название своей группировки и коэффициенты отношений к ней у других группировок. Также, не забываем прописать её собственное отношение к другим группировкам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[communities_relations]&lt;br /&gt;
;|actor  |act_dol|act_fre|stalker|monolit|militar|killer |ecolog |dolg   |freedom|bandit |zombied|strange|trader|arena_enemy|wind|&lt;br /&gt;
;=================================================================================================================================&lt;br /&gt;
actor = 0,	   0,	   0,	   0,  -5000,  -5000,  -5000,      0,	   0,	   0,  -5000,  -5000,	   0,	  0,  -5000, 0&lt;br /&gt;
actor_dolg = 0,	   0,	   0,      0,  -5000,   -500,  -5000,   5000,    600,  -5000,  -5000,  -5000,	   0,	  0,  -5000&lt;br /&gt;
actor_freedom = 0,	   0,	   0,	   0,  -5000,  -5000,  -5000,  -1500,  -5000,   5000,	   0,  -5000,	   0,	 0,  -5000, 0&lt;br /&gt;
&lt;br /&gt;
stalker	= 0,	   0,	   0,	   0,  -5000,  -5000,  -5000,      0,	   0,	   0,  -5000,  -5000,	   0,	  0,  -5000, 0&lt;br /&gt;
monolith = -5000,  -5000,  -5000,  -5000,   5000,  -5000,  -5000,  -5000,  -5000,  -5000,   5000,   5000,  -5000,	 0,  -5000, 0&lt;br /&gt;
military = -5000,  -5000,  -5000,  -5000,  -5000,   5000,  -5000,      0,  -5000,  -5000,  -5000,  -5000, 	   0,	 0,  -5000, 0&lt;br /&gt;
killer = -5000,  -5000,      0,  -5000,  -5000,  -5000,   5000,  -5000,  -5000,  -5000,	   0,  -5000,  -5000,	  0,  -5000, 0&lt;br /&gt;
ecolog = 0,	 600,  -5000,      0,  -5000,   1000,  -5000,   5000,    500,  -5000,   -500,  -5000,	   0,	  0,      0, 0&lt;br /&gt;
dolg = 0,    600,  -5000,      0,  -5000,   -500,  -5000,   5000,   5000,  -5000,  -5000,  -5000,	   0,	  0,      0, 0&lt;br /&gt;
freedom = 0,  -5000,	 600,	   0,  -5000,  -5000,  -5000,  -1500,  -5000,   5000,	   0,  -5000,	   0,	  0,      0, 0&lt;br /&gt;
bandit = -5000,  -5000,	   0,  -5000,  -5000,   -500,      0,  -5000,  -5000,	   0,	   0,  -5000,  -5000,	  0,  -5000, 0&lt;br /&gt;
zombied	= -5000,  -5000,  -5000,  -5000,   5000,  -5000,  -5000,  -5000,  -5000,  -5000,  -5000,   5000,  -5000,	 0,  -5000, 0&lt;br /&gt;
stranger = 0,	   0,	   0,      0,  -5000,  -5000,  -5000,      0,	   0,	   0,   -500,  -5000,	   0,	  0,      0, 0&lt;br /&gt;
trader = 0,	   0,	   0,	   0,	   0, 	   0,	   0,	   0,	   0,	   0,	   0,	   0,      0,	  0,      0&lt;br /&gt;
arena_enemy = -5000,  -5000,  -5000,  -5000,  -5000,  -5000,      0,      0,      0,  -5000,  -5000,      0,      0,	  0,     0, 0&lt;br /&gt;
&lt;br /&gt;
wind = 0,	   0,	   0,	   0,  -5000,  -5000,  -5000,      0,	   0,	   0,  -5000,  -5000,	   0,	  0,  -5000, 0&amp;lt;/ini&amp;gt;  &lt;br /&gt;
Также, изменим эту строку, добавив туда имя и номер группировки:&lt;br /&gt;
&lt;br /&gt;
;названия группировок&lt;br /&gt;
communities = actor, 0, actor_dolg, 1, actor_freedom, 2, stalker, 5, monolith, 6, military, 7, killer, 8, ecolog, 9, dolg, 10, &lt;br /&gt;
freedom, 11, bandit, 12, zombied, 13, stranger, 14, trader, 15, arena_enemy, 16, wind, 18 &lt;br /&gt;
&lt;br /&gt;
Отсчет идет построчно начиная сверху. Хотя есть небольшой нюанс. У первых трех строк - нумерация начинается с нуля, с остальных группировок она идет как надо. Для wind выставили 18, так как мы эту группировку отделили от других.&lt;br /&gt;
&lt;br /&gt;
Далее, в разделе ''[communities_sympathy]'' в конце добавляем свою группировку и коэффициент &amp;quot;впечатлительности&amp;quot; - чем он меньше, тем меньше отношение группировки будет меняться к вам в целом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[communities_sympathy]&lt;br /&gt;
actor		=		0.0&lt;br /&gt;
actor_dolg	=		0.0&lt;br /&gt;
actor_freedom	=		0.0&lt;br /&gt;
stalker		=		0.0&lt;br /&gt;
monolith	=		0.0&lt;br /&gt;
military	=		0.0&lt;br /&gt;
killer		=		0.0&lt;br /&gt;
ecolog		=		0.0&lt;br /&gt;
dolg		=		0.1&lt;br /&gt;
freedom		=		0.1&lt;br /&gt;
bandit		=		0.0&lt;br /&gt;
zombied		=		0.0&lt;br /&gt;
trader		=		0.0&lt;br /&gt;
stranger	=		0.0&lt;br /&gt;
arena_enemy	=	    	0.0&lt;br /&gt;
wind 		= 		0.0&amp;lt;/ini&amp;gt;&lt;br /&gt;
'''2.''' После этого в файле '''death_manager.script''' ищем строку ''local community_list'' и в скобках добавляем название своей группировки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function init_drop_settings()&lt;br /&gt;
	local community_list = { &amp;quot;stalker&amp;quot;, &amp;quot;dolg&amp;quot;, &amp;quot;freedom&amp;quot;, &amp;quot;bandit&amp;quot;, &amp;quot;military&amp;quot;, &amp;quot;zombied&amp;quot;, &amp;quot;ecolog&amp;quot;, &amp;quot;killer&amp;quot;, &amp;quot;monolith&amp;quot;, &lt;br /&gt;
&amp;quot;arena_enemy&amp;quot;, &amp;quot;actor_dolg&amp;quot;, &amp;quot;wind&amp;quot; }&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''3.''' В файле '''death_items_by_communities.ltx''' пишем ''[x]:stalker'' (вместо ''x'' - название вашей группировки):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[...]&lt;br /&gt;
af_dummy_spring			= 0&lt;br /&gt;
af_fuzz_kolobok			= 0&lt;br /&gt;
&lt;br /&gt;
;Еда&lt;br /&gt;
vodka					= 0&lt;br /&gt;
&lt;br /&gt;
[arena_enemy]&lt;br /&gt;
[actor_dolg]&lt;br /&gt;
&lt;br /&gt;
[wind]: stalker&lt;br /&gt;
bread					= 0&lt;br /&gt;
kolbasa					= 0&lt;br /&gt;
vodka					= 0&lt;br /&gt;
energy_drink			= 0.3&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
'''4.''' Если предусматривается респавн бойцов новой группировки, в '''se_respawn.script''' прописываем в '''local simMaxCount = {''' после строчек с зомбированными сталкерами строку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wind_novice = 20, wind_regular = 20, wind_veteran = 20, wind_master = 6,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И в файле '''misc\smart_terrain_presets.ltx''', в секциях требуемых уровней, на которых предусматривается респаун бойцов новой группировки, добавляем строки с названием своей группировки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[l02_garbage]&lt;br /&gt;
wind = novice, experienced, veteran, master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''5.''' Чтобы при убийстве непися новой группировки игра не вылетала в '''xr_statistic.script''',&lt;br /&gt;
&lt;br /&gt;
после строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;zombied_novice = 1, zombied_experienced = 2, zombied_veteran = 3, zombied_master = 4,&amp;lt;/lua&amp;gt;&lt;br /&gt;
пишем&lt;br /&gt;
&amp;lt;lua&amp;gt;wind_novice = 1, wind_experienced = 2, wind_veteran = 3, wind_master = 4,&amp;lt;/lua&amp;gt;&lt;br /&gt;
и ниже в '''function getNpcType(npc)''' добавим:&lt;br /&gt;
&amp;lt;lua&amp;gt;		elseif npc:character_community() == &amp;quot;wind&amp;quot; then&lt;br /&gt;
			community = &amp;quot;wind&amp;quot;&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6.''' Ну а в '''character_desk_x.xml''' выбираем любого NPC (или группу) и меняем группировку на свою:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;!---esc_wolf---&amp;gt;&lt;br /&gt;
	&amp;lt;specific_character id=&amp;quot;esc_wolf&amp;quot; team_default = &amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;name&amp;gt;esc_wolf_name&amp;lt;/name&amp;gt;&lt;br /&gt;
		&amp;lt;icon&amp;gt;ui_npc_u_stalker_neytral_balon_1&amp;lt;/icon&amp;gt;&lt;br /&gt;
		&amp;lt;bio&amp;gt;esc_wolf_bio&amp;lt;/bio&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;class&amp;gt;esc_wolf&amp;lt;/class&amp;gt;&lt;br /&gt;
		&amp;lt;community&amp;gt;wind&amp;lt;/community&amp;gt;&lt;br /&gt;
		[...]&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''7.''' Чтобы у персонажа в графе &amp;quot;Группировка&amp;quot; отображалось не &amp;quot;wind&amp;quot;, а &amp;quot;Ветер&amp;quot;, зарегистрируем соответствующую строку в файле string_table_general.xml:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;windows-1251&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;string_table&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;wind&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Ветер&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;string id=&amp;quot;actor&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Одиночка&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&lt;br /&gt;
	[...]&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''8.''' Существует возможность создать для нашей новой группировки места, где они будут ходить (''*_terrain'' брать из '''m_stalker.ltx'''):&lt;br /&gt;
&lt;br /&gt;
То есть, к примеру, существует секция:&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[stalker_terrain]&lt;br /&gt;
	255,000,255,255&lt;br /&gt;
	008,001,255,255 ;Разрешено ходить по опасным местам на баре&lt;br /&gt;
	012,001,255,255 ;Разрешено ходить по опасным местам на Милитари&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда можно создать новую, по аналогии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[wind_terrain]&lt;br /&gt;
	255,000,255,255&lt;br /&gt;
	008,001,255,255 ;Разрешено ходить по опасным местам на баре&lt;br /&gt;
	012,001,255,255 ;Разрешено ходить по опасным местам на Милитари&lt;br /&gt;
	010,001,255,255	;Разрешено ходить по опасным местам на янтаре&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Здесь, очевидно, указаны координаты самого уровня. Для каждого уровня существует своя начальная координата.&lt;br /&gt;
&lt;br /&gt;
===Продвинутый уровень===&lt;br /&gt;
&lt;br /&gt;
Такой метод достаточно примитивен. Это не полноценная группировка. Нам нужны соответствующие диалоги, возможность получения квестов и вступления в группировку, уникальные NPC.&lt;br /&gt;
&lt;br /&gt;
====Квесты====&lt;br /&gt;
&lt;br /&gt;
Добавим квесты, которые нужно выполнить для группировки. Пока - простые поручения распространенных типов.&lt;br /&gt;
&lt;br /&gt;
Во-первых, пропишите в список диалогов персонажа следующие строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;		&amp;lt;actor_dialog&amp;gt;[tm_trader_diolog]_dialog&amp;lt;/actor_dialog&amp;gt;&lt;br /&gt;
		&amp;lt;actor_dialog&amp;gt;[tm_wolf_diolog]_reward&amp;lt;/actor_dialog&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры названий: ''tm_trader_dialog'', ''tm_wolf_dialog''...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: gray&amp;quot;&amp;gt;Внимание! Метод не проверен.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этим мы добавили ему ветку диалога &amp;quot;Есть работа?&amp;quot;, а также ветку для награды за квест/отказа от него. Теперь зарегистрируем в '''task_manager.ltx''' набор новых заданий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[list]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
;--------Wind------------------------&lt;br /&gt;
;----------Kill Stalker----&lt;br /&gt;
wind_kill_stalker&lt;br /&gt;
;----------Find Item----	&lt;br /&gt;
wind_find_item&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
;tasks for Wind	&lt;br /&gt;
&lt;br /&gt;
[wind_find_item]&lt;br /&gt;
type = find_item&lt;br /&gt;
community = actor&lt;br /&gt;
text = [ссылка на текст с рассказом заказчика о задании]&lt;br /&gt;
description = [ссылка на текст с описанием задания]&lt;br /&gt;
parent = [имя NPC-заказчика]&lt;br /&gt;
target = scientific_outfit&lt;br /&gt;
reward_money = 5000&lt;br /&gt;
reward_reputation = +5&lt;br /&gt;
reward_rank = 4&lt;br /&gt;
reward_item = wpn_sig_m1&lt;br /&gt;
time = 86400&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[wind_kill_stalker]&lt;br /&gt;
type = kill_stalker&lt;br /&gt;
community = actor&lt;br /&gt;
text = [ссылка на текст с рассказом заказчика о задании]&lt;br /&gt;
description = [ссылка на текст с описанием задания]&lt;br /&gt;
parent = [имя NPC-заказчика]&lt;br /&gt;
target = sim_stalker_master_master&lt;br /&gt;
reward_money = 4000&lt;br /&gt;
reward_reputation = +5&lt;br /&gt;
reward_rank = 9&lt;br /&gt;
reward_item = ammo_5.56x45_ap, ammo_5.56x45_ap, ammo_5.56x45_ap&lt;br /&gt;
time = 86400&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Не забудьте прописать описания заданий в текстовые массивы. Подробнее о редактировании '''task_manager.ltx''' читайте в [[Однотипные квесты|уроке]], посвященном однотипным квестам.&lt;br /&gt;
&lt;br /&gt;
Да, и зарегистрируйте сами ветки диалогов в файле '''dialogs.xml'''. Вот пример того, как это сделано для заданий &amp;quot;Долга&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xml&amp;gt;    &amp;lt;dialog id=&amp;quot;tm_dolg_dialog&amp;quot; priority=&amp;quot;-1&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;init_func&amp;gt;task_manager.init_dolg_task_dialog&amp;lt;/init_func&amp;gt;&lt;br /&gt;
    &amp;lt;/dialog&amp;gt;&lt;br /&gt;
    &amp;lt;dialog id=&amp;quot;tm_dolg_reward&amp;quot; priority=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;init_func&amp;gt;task_manager.init_dolg_reward_dialog&amp;lt;/init_func&amp;gt;&lt;br /&gt;
		&amp;lt;precondition&amp;gt;task_manager.has_active_vendor_task&amp;lt;/precondition&amp;gt;&lt;br /&gt;
    &amp;lt;/dialog&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Соответственно, пройдем туда, куда указывает строка ''task_manager.init_dolg_task_dialog'' - в '''task_manager.script''':	 &lt;br /&gt;
	 &lt;br /&gt;
&amp;lt;lua&amp;gt;function init_dolg_task_dialog(dlg)	 &lt;br /&gt;
	get_random_task():init_task_dialog(dlg, &amp;quot;dolg&amp;quot;)	 --('эта функция для взятия квеста)&lt;br /&gt;
		 &lt;br /&gt;
function init_dolg_reward_dialog(dlg)&lt;br /&gt;
	get_random_task():init_reward_dialog(dlg, &amp;quot;dolg&amp;quot;) --(а эта функция для отказа от квеста)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По аналогии делаем и с нашим &amp;quot;Ветром&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Вступление в группировку====&lt;br /&gt;
&lt;br /&gt;
Реализуем возможность вступления в группировку.&lt;br /&gt;
&lt;br /&gt;
Прописываем в '''dialogs.script''' такие action'ы:&lt;br /&gt;
&amp;lt;lua&amp;gt;-----------------------------------------------------------------------------------&lt;br /&gt;
-- Community&lt;br /&gt;
-----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
function actor_set_wind(actor, npc)&lt;br /&gt;
	printf(&amp;quot;ACTOR NOW IN [WIND] COMMUNITY&amp;quot;)&lt;br /&gt;
	if db.actor then&lt;br /&gt;
		db.actor:set_character_community(&amp;quot;wind&amp;quot;, 0, 0)&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
После чего создадим диалог, и сделаем в нем фразу с action'ом вида ''&amp;lt;action&amp;gt;dialogs.actor_set_wind&amp;lt;/action&amp;gt;''. Советую изучить [[Создание диалогов|урок]], посвященный диалогам.&lt;br /&gt;
&lt;br /&gt;
====Новые NPC====&lt;br /&gt;
&lt;br /&gt;
Лучше всего всё вышеприведенное повесить на нового, уникального персонажа. Способ его спавна описан [[Cпавн через скрипт#Спавн NPC|здесь]].&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья [[Участник:BAC9-FLCL|BAC9-FLCL]].&amp;lt;br&amp;gt;&lt;br /&gt;
Способ открыт [[Участник:Arhet|Arhet]] ([[Team:SRP Team|SRP Team]])&lt;br /&gt;
Статью поправил: [[Участник:Vikman|Vikman]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Альтернатива - статья [[Участник:SenseyVit|SenseyVit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Скрипты]][[Категория:Конфигурационные_файлы]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%92%D1%81%D1%82%D1%83%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8</id>
		<title>SoC. Вступление в группировки</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%92%D1%81%D1%82%D1%83%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8"/>
				<updated>2013-07-23T08:33:49Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Сегодня мы попытаемся реализовать вступление в группировки. Создаете диалоги к: Воронину, Лукашу типа вот-таких: &amp;quot;Я хочу вступить в &amp;quot;Долг&amp;quot;&amp;quot; или &amp;quot;Я хочу в &amp;quot;Свободу&amp;quot;&amp;quot;. Это вы уже я так думаю сделали.&lt;br /&gt;
&lt;br /&gt;
== Теория ==&lt;br /&gt;
За вступление в группировки отвечает вот такая функция:&lt;br /&gt;
&amp;lt;code&amp;gt;db.actor:set_character_community(&amp;quot;группировка&amp;quot;, 0, 0)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
Создаем файл '''community.script''' в gamedata/scripts. И туда пишем:&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function dolg(npc, actor)&lt;br /&gt;
npc:stop_talk()&lt;br /&gt;
actor:stop_talk()&lt;br /&gt;
db.actor:set_character_community(&amp;quot;actor_dolg&amp;quot;, 0, 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function freedom(npc, actor)&lt;br /&gt;
npc:stop_talk()&lt;br /&gt;
actor:stop_talk()&lt;br /&gt;
db.actor:set_character_community(&amp;quot;actor_freedom&amp;quot;, 0, 0)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
Теперь в созданные нами диалоги пишем:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;community.dolg&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;community.freedom&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
С уважением, vllzl.&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D1%8B%D1%85_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D1%86%D0%B8%D0%B9</id>
		<title>Добавление новых графических опций</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D1%8B%D1%85_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BE%D0%BF%D1%86%D0%B8%D0%B9"/>
				<updated>2013-07-23T08:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.119.236: оформление&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Будем учиться добавлять новые опции в меню графики. &lt;br /&gt;
&amp;lt;br /&amp;gt;Нам понадобятся файлы:&lt;br /&gt;
&amp;lt;br /&amp;gt;'''user.ltx'''&lt;br /&gt;
&amp;lt;br /&amp;gt;'''ui_mm_opt_video.script'''&lt;br /&gt;
&amp;lt;br /&amp;gt;'''ui_mm_opt_video_adv.script'''&lt;br /&gt;
&amp;lt;br /&amp;gt;'''ui_mm_opt.xml'''&lt;br /&gt;
&amp;lt;br /&amp;gt;'''ui_st_mm.xml'''&lt;br /&gt;
&lt;br /&gt;
Для начала, идём в '''user.ltx''' и ищем там графические параметры. &lt;br /&gt;
&amp;lt;pre&amp;gt;_preset Extreme&lt;br /&gt;
ai_use_torch_dynamic_lights on&lt;br /&gt;
unbindall&lt;br /&gt;
bind left kLEFT&lt;br /&gt;
bind right kRIGHT&lt;br /&gt;
bind up kUP&lt;br /&gt;
bind down kDOWN&lt;br /&gt;
bind jump kSPACE&lt;br /&gt;
bind crouch kLCONTROL&lt;br /&gt;
bind accel kLSHIFT&lt;br /&gt;
bind sprint_toggle kX&lt;br /&gt;
bind forward kW&lt;br /&gt;
bind back kS&lt;br /&gt;
bind lstrafe kA&lt;br /&gt;
bind rstrafe kD&lt;br /&gt;
bind llookout kQ&lt;br /&gt;
bind rlookout kE&lt;br /&gt;
bind cam_zoom_in kADD&lt;br /&gt;
bind cam_zoom_out kSUBTRACT&lt;br /&gt;
bind torch kL&lt;br /&gt;
bind night_vision kN&lt;br /&gt;
bind wpn_1 k1&lt;br /&gt;
bind wpn_2 k2&lt;br /&gt;
bind wpn_3 k3&lt;br /&gt;
bind wpn_4 k4&lt;br /&gt;
bind wpn_5 k5&lt;br /&gt;
bind wpn_6 k6&lt;br /&gt;
bind artefact k7&lt;br /&gt;
bind wpn_next kY&lt;br /&gt;
bind wpn_fire mouse1&lt;br /&gt;
bind wpn_zoom mouse2&lt;br /&gt;
bind wpn_reload kR&lt;br /&gt;
bind wpn_func kV&lt;br /&gt;
bind wpn_firemode_prev k9&lt;br /&gt;
bind wpn_firemode_next k0&lt;br /&gt;
bind pause kPAUSE&lt;br /&gt;
bind drop kG&lt;br /&gt;
bind use kF&lt;br /&gt;
bind scores kTAB&lt;br /&gt;
bind chat kCOMMA&lt;br /&gt;
bind chat_team kPERIOD&lt;br /&gt;
bind screenshot kF12&lt;br /&gt;
bind quit kESCAPE&lt;br /&gt;
bind console kGRAVE&lt;br /&gt;
bind inventory kI&lt;br /&gt;
bind buy_menu kB&lt;br /&gt;
bind skin_menu kO&lt;br /&gt;
bind team_menu kU&lt;br /&gt;
bind active_jobs kP&lt;br /&gt;
bind map kM&lt;br /&gt;
bind contacts kH&lt;br /&gt;
bind vote_begin kF5&lt;br /&gt;
bind vote kF6&lt;br /&gt;
bind vote_yes kF7&lt;br /&gt;
bind vote_no kF8&lt;br /&gt;
bind speech_menu_0 kC&lt;br /&gt;
bind speech_menu_1 kZ&lt;br /&gt;
bind use_bandage kRBRACKET&lt;br /&gt;
bind use_medkit kLBRACKET&lt;br /&gt;
bind quick_save kF6&lt;br /&gt;
bind quick_load kF7&lt;br /&gt;
cam_inert 0.&lt;br /&gt;
cam_slide_inert 0.25&lt;br /&gt;
cl_cod_pickup_mode 1&lt;br /&gt;
cl_dynamiccrosshair on&lt;br /&gt;
g_always_run on&lt;br /&gt;
g_autopickup on&lt;br /&gt;
g_backrun on&lt;br /&gt;
g_corpsenum 10&lt;br /&gt;
g_eventdelay 0&lt;br /&gt;
g_game_difficulty gd_novice&lt;br /&gt;
hud_crosshair on&lt;br /&gt;
hud_crosshair_dist off&lt;br /&gt;
hud_info on&lt;br /&gt;
hud_weapon on&lt;br /&gt;
load_last_save all&lt;br /&gt;
mm_mm_net_srv_dedicated off&lt;br /&gt;
mm_net_con_publicserver off&lt;br /&gt;
mm_net_con_spectator 20&lt;br /&gt;
mm_net_con_spectator_on off&lt;br /&gt;
mm_net_filter_empty on&lt;br /&gt;
mm_net_filter_full on&lt;br /&gt;
mm_net_filter_listen on&lt;br /&gt;
mm_net_filter_pass on&lt;br /&gt;
mm_net_filter_wo_ff on&lt;br /&gt;
mm_net_filter_wo_pass on&lt;br /&gt;
mm_net_srv_gamemode st_deathmatch&lt;br /&gt;
mm_net_srv_maxplayers 32&lt;br /&gt;
mm_net_srv_name MICROSOF-80B663&lt;br /&gt;
mm_net_srv_reinforcement_type 1&lt;br /&gt;
mm_net_weather_rateofchange 1.&lt;br /&gt;
mouse_invert off&lt;br /&gt;
mouse_sens 0.12&lt;br /&gt;
net_cl_icurvesize 0&lt;br /&gt;
net_cl_icurvetype 0&lt;br /&gt;
net_cl_interpolation 0.&lt;br /&gt;
net_cl_log_data off&lt;br /&gt;
net_dbg_dump_export_obj 0&lt;br /&gt;
net_dbg_dump_import_obj 0&lt;br /&gt;
net_dbg_dump_update_read 0&lt;br /&gt;
net_dbg_dump_update_write 0&lt;br /&gt;
net_dedicated_sleep 5&lt;br /&gt;
net_sv_gpmode 0&lt;br /&gt;
net_sv_log_data off&lt;br /&gt;
net_sv_pending_lim 3&lt;br /&gt;
net_sv_update_rate 30&lt;br /&gt;
ph_frequency 100.00000&lt;br /&gt;
ph_iterations 38&lt;br /&gt;
r1_dlights on&lt;br /&gt;
r1_dlights_clip 75.&lt;br /&gt;
r1_glows_per_frame 16&lt;br /&gt;
r1_lmodel_lerp 0.1&lt;br /&gt;
r1_pps_u 0.&lt;br /&gt;
r1_pps_v 0.&lt;br /&gt;
r1_ssa_lod_a 64.&lt;br /&gt;
r1_ssa_lod_b 48.&lt;br /&gt;
r1_tf_mipbias 0.&lt;br /&gt;
r2_aa off&lt;br /&gt;
r2_aa_break 0.800000,0.500000,0.000000&lt;br /&gt;
r2_aa_kernel 0.5&lt;br /&gt;
r2_aa_weight 0.250000,0.250000,0.000000&lt;br /&gt;
r2_allow_r1_lights off&lt;br /&gt;
r2_gi off&lt;br /&gt;
r2_gi_clip 0.001&lt;br /&gt;
r2_gi_depth 1&lt;br /&gt;
r2_gi_photons 16&lt;br /&gt;
r2_gi_refl 0.9&lt;br /&gt;
r2_gloss_factor 1.5&lt;br /&gt;
r2_ls_bloom_fast off&lt;br /&gt;
r2_ls_bloom_kernel_b 0.7&lt;br /&gt;
r2_ls_bloom_kernel_g 3.&lt;br /&gt;
r2_ls_bloom_kernel_scale 0.7&lt;br /&gt;
r2_ls_bloom_speed 100.&lt;br /&gt;
r2_ls_bloom_threshold 0.001&lt;br /&gt;
r2_ls_depth_bias -0.0003&lt;br /&gt;
r2_ls_depth_scale 1.00001&lt;br /&gt;
r2_ls_dsm_kernel 0.7&lt;br /&gt;
r2_ls_psm_kernel 0.7&lt;br /&gt;
r2_ls_squality 1.&lt;br /&gt;
r2_ls_ssm_kernel 0.7&lt;br /&gt;
r2_mblur 0.&lt;br /&gt;
r2_parallax_h 0.02&lt;br /&gt;
r2_slight_fade 0.3333&lt;br /&gt;
r2_ssa_lod_a 64.&lt;br /&gt;
r2_ssa_lod_b 48.&lt;br /&gt;
r2_sun on&lt;br /&gt;
r2_sun_depth_far_bias -0.00001&lt;br /&gt;
r2_sun_depth_far_scale 1.&lt;br /&gt;
r2_sun_depth_near_bias 0.00001&lt;br /&gt;
r2_sun_depth_near_scale 1.&lt;br /&gt;
r2_sun_details off&lt;br /&gt;
r2_sun_focus on&lt;br /&gt;
r2_sun_lumscale 1.&lt;br /&gt;
r2_sun_lumscale_amb 0.5&lt;br /&gt;
r2_sun_lumscale_hemi 1.&lt;br /&gt;
r2_sun_near 12.&lt;br /&gt;
r2_sun_near_border 0.75&lt;br /&gt;
r2_sun_tsm on&lt;br /&gt;
r2_sun_tsm_bias -0.01&lt;br /&gt;
r2_sun_tsm_proj 0.3&lt;br /&gt;
r2_tf_mipbias 0.&lt;br /&gt;
r2_tonemap on&lt;br /&gt;
r2_tonemap_adaptation 1.&lt;br /&gt;
r2_tonemap_amount 0.7&lt;br /&gt;
r2_tonemap_lowlum 0.0001&lt;br /&gt;
r2_tonemap_middlegray 0.6&lt;br /&gt;
r2_wait_sleep 0&lt;br /&gt;
r2_zfill off&lt;br /&gt;
r2_zfill_depth 0.5&lt;br /&gt;
r2em 2.2&lt;br /&gt;
r__detail_density 0.2&lt;br /&gt;
r__geometry_lod 1.&lt;br /&gt;
r__supersample 2&lt;br /&gt;
r__tf_aniso 16&lt;br /&gt;
renderer renderer_r2&lt;br /&gt;
rs_c_brightness 1.&lt;br /&gt;
rs_c_contrast 1.&lt;br /&gt;
rs_c_gamma 1.&lt;br /&gt;
rs_fullscreen on&lt;br /&gt;
rs_refresh_60hz on&lt;br /&gt;
rs_stats off&lt;br /&gt;
rs_v_sync off&lt;br /&gt;
rs_vis_distance 1.&lt;br /&gt;
snd_acceleration on&lt;br /&gt;
snd_cache_size 16&lt;br /&gt;
snd_efx on&lt;br /&gt;
snd_targets 24&lt;br /&gt;
snd_volume_eff 1.&lt;br /&gt;
snd_volume_music 1.&lt;br /&gt;
sv_anomalies_enabled 1&lt;br /&gt;
sv_anomalies_length 3&lt;br /&gt;
sv_artefact_respawn_delta 30&lt;br /&gt;
sv_artefact_spawn_force 0&lt;br /&gt;
sv_artefact_stay_time 3&lt;br /&gt;
sv_artefacts_count 10&lt;br /&gt;
sv_auto_team_balance 0&lt;br /&gt;
sv_auto_team_swap 1&lt;br /&gt;
sv_bearercantsprint 1&lt;br /&gt;
sv_client_reconnect_time 60&lt;br /&gt;
sv_console_update_rate 1&lt;br /&gt;
sv_dedicated_server_update_rate 100&lt;br /&gt;
sv_dmgblockindicator 1&lt;br /&gt;
sv_dmgblocktime 0&lt;br /&gt;
sv_forcerespawn 0&lt;br /&gt;
sv_fraglimit 10&lt;br /&gt;
sv_friendly_indicators 0&lt;br /&gt;
sv_friendly_names 0&lt;br /&gt;
sv_friendlyfire 1.&lt;br /&gt;
sv_hail_to_winner_time 7&lt;br /&gt;
sv_max_ping_limit 2000&lt;br /&gt;
sv_pda_hunt 1&lt;br /&gt;
sv_reinforcement_time 0&lt;br /&gt;
sv_remove_corpse 1&lt;br /&gt;
sv_remove_weapon 1&lt;br /&gt;
sv_returnplayers 1&lt;br /&gt;
sv_rpoint_freeze_time 0&lt;br /&gt;
sv_shieldedbases 1&lt;br /&gt;
sv_spectr_firsteye 1&lt;br /&gt;
sv_spectr_freefly 0&lt;br /&gt;
sv_spectr_freelook 1&lt;br /&gt;
sv_spectr_lookat 1&lt;br /&gt;
sv_spectr_teamcamera 1&lt;br /&gt;
sv_statistic_collect 1&lt;br /&gt;
sv_statistic_save_auto 0&lt;br /&gt;
sv_teamkill_limit 3&lt;br /&gt;
sv_teamkill_punish 1&lt;br /&gt;
sv_timelimit 0&lt;br /&gt;
sv_vote_enabled 255&lt;br /&gt;
sv_vote_participants 0&lt;br /&gt;
sv_vote_quota 0.51&lt;br /&gt;
sv_vote_time 1.&lt;br /&gt;
sv_warm_up 0&lt;br /&gt;
texture_lod 0&lt;br /&gt;
vid_mode 1280x1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;Это мой полный. &lt;br /&gt;
&amp;lt;br /&amp;gt;Возмём к примеру графический параметр '''r2_gi'''&lt;br /&gt;
&amp;lt;br /&amp;gt;Префикс r2 означает что он будет работать только на полном динамическом освещении.&lt;br /&gt;
&amp;lt;br /&amp;gt;Далее идём в файл '''ui_mm_opt_video_adv.script &lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;lua&amp;gt;class &amp;quot;opt_video_adv&amp;quot; (CUIWindow)&lt;br /&gt;
&lt;br /&gt;
function opt_video_adv:__init() super()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function opt_video_adv:__finalize()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function only_2_mode(ctrl, _id)&lt;br /&gt;
	local bEnabled	= _id==2&lt;br /&gt;
	ctrl:Enable		(bEnabled)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function only_12_mode(ctrl, _id)&lt;br /&gt;
	local bEnabled	= _id==1 or _id==2&lt;br /&gt;
	ctrl:Enable		(bEnabled)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function opt_video_adv:InitControls(x, y, xml, handler)&lt;br /&gt;
	local ctl&lt;br /&gt;
	self:Init									(x,y, 738, 416)&lt;br /&gt;
	self:SetAutoDelete							(true)&lt;br /&gt;
	&lt;br /&gt;
	self.bk			= xml:InitFrame				(&amp;quot;frame_videoadv&amp;quot;, self)&lt;br /&gt;
	self.scroll_v	= xml:InitScrollView		(&amp;quot;video_adv:scroll_v&amp;quot;, self)&lt;br /&gt;
&lt;br /&gt;
	local _st		= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_vis_dist&amp;quot;,				_st)&lt;br /&gt;
	xml:InitTrackBar							(&amp;quot;video_adv:track_vis_dist&amp;quot;,			_st)&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_geometry_lod&amp;quot;,			_st)&lt;br /&gt;
	xml:InitTrackBar							(&amp;quot;video_adv:track_geometry_lod&amp;quot;,		_st)&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_detail_density&amp;quot;,		_st)&lt;br /&gt;
	xml:InitTrackBar							(&amp;quot;video_adv:track_detail_density&amp;quot;,		_st)&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_texture_lod&amp;quot;,			_st)&lt;br /&gt;
	xml:InitTrackBar							(&amp;quot;video_adv:track_texture_lod&amp;quot;,			_st)&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_aniso&amp;quot;,					_st)&lt;br /&gt;
	xml:InitTrackBar							(&amp;quot;video_adv:track_aniso&amp;quot;,				_st)&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_ssample&amp;quot;,				_st)&lt;br /&gt;
	xml:InitTrackBar							(&amp;quot;video_adv:track_ssample&amp;quot;,				_st)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_r2_sun&amp;quot;,				_st)&lt;br /&gt;
	ctl			= xml:InitCheck					(&amp;quot;video_adv:check_r2_sun&amp;quot;,				_st)&lt;br /&gt;
	handler.m_preconditions[ctl]		= only_2_mode&lt;br /&gt;
	&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_r2_sun_details&amp;quot;,		_st)&lt;br /&gt;
	ctl			= xml:InitCheck		(&amp;quot;video_adv:check_r2_sun_details&amp;quot;,		_st)&lt;br /&gt;
	handler.m_preconditions[ctl]		= only_2_mode&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_light_distance&amp;quot;,		_st)&lt;br /&gt;
	ctl				= xml:InitTrackBar			(&amp;quot;video_adv:track_light_distance&amp;quot;,		_st)&lt;br /&gt;
	handler.m_preconditions[ctl]		= only_12_mode&lt;br /&gt;
&lt;br /&gt;
	_st											= xml:InitStatic						(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_npc_torch&amp;quot;,				_st)&lt;br /&gt;
	xml:InitCheck								(&amp;quot;video_adv:check_npc_torch&amp;quot;,			_st)&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_particles_distance&amp;quot;,	_st)&lt;br /&gt;
	ctl				= xml:InitTrackBar			(&amp;quot;video_adv:track_particles_distance&amp;quot;,	_st)&lt;br /&gt;
	handler.m_preconditions[ctl]		= only_12_mode&lt;br /&gt;
&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_vsync&amp;quot;,					_st)&lt;br /&gt;
	xml:InitCheck								(&amp;quot;video_adv:check_vsync&amp;quot;,				_st)&lt;br /&gt;
	&lt;br /&gt;
	_st				= xml:InitStatic			(&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
	xml:InitStatic								(&amp;quot;video_adv:cap_60hz&amp;quot;,					_st)&lt;br /&gt;
	xml:InitCheck								(&amp;quot;video_adv:check_60hz&amp;quot;,				_st)&lt;br /&gt;
&lt;br /&gt;
	btn		= xml:Init3tButton					(&amp;quot;video_adv:btn_to_simply&amp;quot;,	self)	&lt;br /&gt;
	handler:Register							(btn, &amp;quot;btn_simply_graphic&amp;quot;)	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;Как нам хорошо видно, тут выписаны функции всех параметров в видео опциях игры. Обратите внимание, что существует два вида опции. Ползунок и кнопка. Ползунок используется для опций, где необходимо числовое вычисление. А кнопка, где функция работает &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Копируем, вставляем с новым именем перед концом скрипта. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&amp;lt;br /&amp;gt; _st				= xml:InitStatic&lt;br /&gt;
&amp;lt;br /&amp;gt; (&amp;quot;video_adv:templ_item&amp;quot;,				self.scroll_v)&lt;br /&gt;
&amp;lt;br /&amp;gt; xml:InitStatic&lt;br /&gt;
&amp;lt;br /&amp;gt;	(&amp;quot;video_adv:cap_r2gi&amp;quot;,					_st)&lt;br /&gt;
&amp;lt;br /&amp;gt; xml:InitCheck&lt;br /&gt;
&amp;lt;br /&amp;gt; (&amp;quot;video_adv:check_r2gi&amp;quot;,				_st)&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Переписываем вот так и вставляем перед&lt;br /&gt;
&amp;lt;lua&amp;gt;	btn		= xml:Init3tButton					(&amp;quot;video_adv:btn_to_simply&amp;quot;,	self)	&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сохраняем и закрываем.&lt;br /&gt;
&amp;lt;br /&amp;gt; Идём в''' ui_mm_opt.xml'''  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Вписываем в любое место каркас &lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;cap_r2gi x=&amp;quot;20&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;143&amp;quot; height=&amp;quot;21&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text font=&amp;quot;letterica16&amp;quot; r=&amp;quot;215&amp;quot; g=&amp;quot;195&amp;quot; b=&amp;quot;170&amp;quot;&amp;gt;ui_mm_r2gi&amp;lt;/text&amp;gt;&lt;br /&gt;
		&amp;lt;/cap_r2gi&amp;gt;&lt;br /&gt;
		&amp;lt;check_r2gi x=&amp;quot;194&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;21&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;options_item entry=&amp;quot;r2_gi&amp;quot; group=&amp;quot;mm_opt_video_adv&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;/check_r2gi&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; Разберём подробно&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; '''&amp;lt;cap_r2gi x=&amp;quot;20&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;143&amp;quot; height=&amp;quot;21&amp;quot;&amp;gt;'''&lt;br /&gt;
&amp;lt;br /&amp;gt; Название нашей кнопки, и кординаты её расположения&lt;br /&gt;
&amp;lt;br /&amp;gt; '''*вторая строчка*'''&lt;br /&gt;
&amp;lt;br /&amp;gt; Тут всё просто. Шрифт, и URL на текст&lt;br /&gt;
&amp;lt;br /&amp;gt; '''&amp;lt;check_r2gi x=&amp;quot;194&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;21&amp;quot;&amp;gt;'''&lt;br /&gt;
&amp;lt;br /&amp;gt; Плохо знаю зачем нужна, но всегда нужно заполнять. Связана с проверкой&lt;br /&gt;
&amp;lt;br /&amp;gt; 	'''&amp;lt;options_item entry=&amp;quot;r2_gi&amp;quot; group=&amp;quot;mm_opt_video_adv&amp;quot;/&amp;gt;'''&lt;br /&gt;
&amp;lt;br /&amp;gt; А вот тут всё очень интересно. Первое, указан изменяемый параметр(из user.ltx) и группа(класс) скрипта, в котором записана обрабатывающая функция&lt;br /&gt;
&amp;lt;br /&amp;gt; Вот и всё. Теперь идём в '''ui_st_mm.xml'''&lt;br /&gt;
	&amp;lt;xml&amp;gt;&amp;lt;string id=&amp;quot;ui_mm_r2gi&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;text&amp;gt;Продать все&amp;lt;/text&amp;gt;&lt;br /&gt;
	&amp;lt;/string&amp;gt;&amp;lt;/xml&amp;gt; &lt;br /&gt;
&amp;lt;br /&amp;gt; Записываем в самый конец эту тему, и всё. Функция добавлена.&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>95.135.119.236</name></author>	</entry>

	</feed>