<?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=31.25.31.121&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=31.25.31.121&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/31.25.31.121"/>
		<updated>2026-04-29T21:01:48Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=Milkshape._%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B5%D0%B9_%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D1%8F_CS_%D0%B2_ST._%D1%87%D0%B0%D1%81%D1%82%D1%8C_1</id>
		<title>Milkshape. Перенос моделей оружия CS в ST. часть 1</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=Milkshape._%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B5%D0%B9_%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D1%8F_CS_%D0%B2_ST._%D1%87%D0%B0%D1%81%D1%82%D1%8C_1"/>
				<updated>2011-12-13T10:19:12Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* ЧАСТЬ 1(ver. 1.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Перенос модели оружия (без новой анимации) из игры Counter-Strike Source в S.T.A.L.K.E.R.==&lt;br /&gt;
&lt;br /&gt;
===ЧАСТЬ 1(ver. 1.1)===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для этого понадобится:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. '''REVOLUTiON CSM SourceSDK with Service Pack 3 ''' или более новый для''' '''конвертирования моделей из Counter-Strike Source в формат, который понимает 3D редактор. &lt;br /&gt;
&lt;br /&gt;
2. '''Milkshape 3D '''(на данный момент доступна версия 1.8.4) 3D редактор низкополигональных сцен и''' '''моделей (как я понял «низкополигональных» означает до 10.000 полигонов, для сравнения в модели S.T.A.L.K.E.R их около 4.000). &lt;br /&gt;
&lt;br /&gt;
ссылка на офсайт: [http://chumbalum.swissquake.ch/ ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. '''X-ray asset tools pack FINAL '''пак утилит от bardak'а. В их составе есть плагин для импорта и экспорта''' '''моделей формата S.T.A.L.K.E.R для программы '''Milkshape 3D'''&lt;br /&gt;
&lt;br /&gt;
ссылка: [http://stalkerin.gameru.net/modules.php?name=Downloads&amp;amp;d_op=viewtheoned&amp;amp;lid=288 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. '''XRAY SDK 0.4 '''с установленным''' SDK Update 0.3 ''' или выше&lt;br /&gt;
&lt;br /&gt;
скачать можно здесь: [http://stalkerin.gameru.net/ ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. '''Paint.NET ''' Бесплатный мощный графический редактор с''' '''нативной поддержкой формата '''DDS''' (формат текстур в S.T.A.L.K.E.R.) с установленным плагином '''VTF''' '''Plug-In (1.0.4) '''для поддержки''' VTF '''(формат текстур в Counter-Strike Source).''' '''&lt;br /&gt;
&lt;br /&gt;
ссылка на офсайт: [http://www.getpaint.net/index.html ]&lt;br /&gt;
&lt;br /&gt;
ссылка на раздел сайта с плагинами [http://web.archive.org/web/20080229061712/http://paintdotnet.forumer.com/viewforum.php?f=16 ] непосредственно на плугин для работы с '''VTF''': [http://nemesis.thewavelength.net/index.php?p=50 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Лучший интернет ресурс, где можно найти просто огромное количество хороших моделей [http://www.fpsbanana.com/ ] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После того, как всё установили и настроили, приступаем непосредственно к работе с моделью. Для удобства работы с будущими файлами создадим отдельную папку (например C:\Test)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для примера возьмем нож '''USMC Kabar''' и заменим им стандартную модель ножа ссылка на модель: [http://rs316.rapidshare.com/files/228560004/Kabar_release.rar ]&lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic1.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
1. Распаковываем db-архивы S.T.A.L.K.E.R и находим в папке gamedata/meshes/weapons/knife файлы: wpn_knife.ogf — модель ножа если его выкинуть на землю &lt;br /&gt;
&lt;br /&gt;
wpn_knife_hud.ogf — модель ножа в руках главного героя и копируем их в папку test &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Из скаченного архива с ножом Кабар из папки required/models/weapons/ в папку test копируем все файлы начинающиеся с v_ &lt;br /&gt;
&lt;br /&gt;
3. Для конвертации модели ножа в формат понимаемым ЗD редактором, запускаем '''SourceSDK''' (ярлыком на рабочем столе) &lt;br /&gt;
&lt;br /&gt;
4. Из списка утилит выбираем '''Studio Compiler.''' &lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic2.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
5. В нем выбираем вкладку '''Model Decompile'''&lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic3.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
6. Там указываем папку и модель которую хотим конвертировать и куда хотим сохранить получившийся результат (в нашем случае пака test и модель v_knife_t.mdl) &lt;br /&gt;
&lt;br /&gt;
7. Галочки оставляем так ка на рисунке. &lt;br /&gt;
&lt;br /&gt;
8. Нажимаем '''Extract'''. &lt;br /&gt;
&lt;br /&gt;
9. Во время процесса один раз нажимаем ОК. &lt;br /&gt;
&lt;br /&gt;
10. Если все прошло нормально, то в папке test появилось несколько файлов с расширением '''SMD''' &lt;br /&gt;
&lt;br /&gt;
11. Находим самый большой (knife.smd) и оставляем его, остальные файлы и исходные можно смело удалить, что-бы потом в них не путаться. &lt;br /&gt;
&lt;br /&gt;
12. Можем проверить, что у нас получилось: запускаем '''Milkshape 3D.''' В меню '''Файл''' выбираем '''Импорт'''. В нем первый пункт '''Half-Life SMD''' &lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic4.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
13. Указываем путь к модели. В появившемся окошечке оставляем только один пункт '''Triangles''' &lt;br /&gt;
&lt;br /&gt;
14. Мы должны увидеть нашу модель в трех проекциях и общий вид. Вроде всё в порядке :) &lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic5.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
15. Приступаем к работе с моделями. Очищаем сцену нажав '''Файл — Новый'''. На вопрос сохранить старую сцену отвечаем '''Нет.''' &lt;br /&gt;
&lt;br /&gt;
16. Опять идем в меню '''Файл''' выбираем '''Импорт'''. Теперь выбираем пункт '''S.T.A.L.K.E.R (sep 10 2008)''' и открываем файл '''C:\test\wpn_knife_hud.ogf''' Сначала будем делать нож в руках главного героя. &lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic6.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
17. Ничего непонятно, поэтому идем в левый край редактора. Там расположены основные действия которые можно выполнять с моделью. Идем во вкладку '''Joints''' (типа кости) и ставим галочку на пункте '''Draw vertex''' '''weights'''. И, вуаля, мы можем видеть какая кость модели к чему привязана.''' '''&lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic7.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
18. Не закрывая эту сцену повторяем пункты 12-14. Отмечаем поразительную особенность, что модель из Сурса почти в 100 раз больше модели из Сталкера &lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic8.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
19. Теперь надо удалить руки от модели из Сурса. Идем в пункт '''Groups''' (Группы) и находим группу v_hands.bmp. Выбираем её, нажимаем на клавишу '''Hide''' (Скрыть) и смотрим как пропадают руки и остается только нож. Нажимаем опять Скрыть и руки возвращаются на место. В этом же меню (Группы) мы можем увидеть какие текстуры привязаны к какой части модели (фраза в треугольных скобках, начинающаяся с Мат.: ) &lt;br /&gt;
&lt;br /&gt;
20. Удаляем руки командой '''Delete''' (Удалить) в меню Группы. Всё, больше рук в нашей сцене нет. Так же в меню '''Materials''' (Материалы или Шкура) удаляем отсылку к текстуре v_hands (такой же командой '''Delete''' (Удалить)) &lt;br /&gt;
&lt;br /&gt;
21. У нас остается только гигантский нож и маленькие ручки с ножиком :)&lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic9.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
22. Теперь надо привести нож из Сурса в масштаб Сталкера. Выбрать нужную модель или часть модели можно двумя способами. Первый: выбрав нужную группу в Группах. Второй: через вкладку '''Model''' (Модель или моделирование) пункт '''Select''' (Выбрать). &lt;br /&gt;
&lt;br /&gt;
'''Внимание в этом пункте дополнительные параметры должны быть такими '''&lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic11.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
23. Нужная область выбирается обычной рамкой с помощью мышки на полях проекций.&lt;br /&gt;
&lt;br /&gt;
24. Выбираем модель ножа и щелкаем по пункту '''Scale''' (типа Размер). Для удобства в опциях отмечаем пункт Origin. Насколько будет увеличиваться или уменьшаться модель выставляется в трех полях с единичками и осями координат в которых будет происходить увеличение или уменьшение модели. Естественно, что для сохранения пропорций надо во всех трех окошечках выставлять одинаковые параметры. Если уменьшаем модель, то вносим параметр меньше единицы например 0.95. Нажимаем клавишу '''Scale''', каждое нажатие будет немного уменьшать модель. Доводим её до приблизительных масштабов Сталкера. &lt;br /&gt;
&lt;br /&gt;
[[Изображение:cs_part1_pic10.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
25. Пояснение '''«как работать с полями в Milkshape 3D»''' Щелкая левой клавишей по полю, мы делаем это поле активным. Перемещаем поле зажав клавишу Ctrl и левую клавишу мыши. Приближаем или отдаляем зажав клавишу Shift и левую клавишу мыши (или просто вращая колесико мыши).&lt;br /&gt;
&lt;br /&gt;
'''Автор:'''&lt;br /&gt;
&lt;br /&gt;
Логинов Георгий '''DEATHDOOR''' (OGSE Team) &lt;br /&gt;
&lt;br /&gt;
Артем Ширман '''QWERTY111''' (OGSE Team)&lt;br /&gt;
&lt;br /&gt;
'''11.05.2009'''&lt;br /&gt;
&lt;br /&gt;
Перенос из pdf в wiki - '''loxotron'''&lt;br /&gt;
&lt;br /&gt;
[[Категория:Wireframe]]&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B</id>
		<title>Новые монстры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B"/>
				<updated>2011-12-12T15:30:18Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Внимание!!! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
&lt;br /&gt;
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.&lt;br /&gt;
&lt;br /&gt;
Для примера возьму кошек (уж очень они мне нравятся)&lt;br /&gt;
&lt;br /&gt;
Добавить их можно отредактировать файл '''all.spawn''', либо динамически создать в игре через функцию '''alife:create()'''.&lt;br /&gt;
&lt;br /&gt;
== Вылет при появлении ==&lt;br /&gt;
&lt;br /&gt;
Обычно сопровождается сообщением в логе:&lt;br /&gt;
&lt;br /&gt;
 Arguments     : Can't open section 'cat_weak'&lt;br /&gt;
&lt;br /&gt;
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция&lt;br /&gt;
 [m_cat_e]:monster_base&lt;br /&gt;
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида&lt;br /&gt;
 [cat_weak]:m_cat_e&lt;br /&gt;
то есть ссылка на основную конфигурацию (иными словами это называется наследованием), а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле '''config\creatures\m_cat.ltx''' в конце допишем '''[cat_weak]:m_cat_e'''.&lt;br /&gt;
 Запускаем, добавляем кошку, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable smart_terrain_choose_interval in [cat_weak]&lt;br /&gt;
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:&lt;br /&gt;
 smart_terrain_choose_interval	= 00:15:00&lt;br /&gt;
Запускаем, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable satiety_threshold in [cat_weak]&lt;br /&gt;
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.&lt;br /&gt;
&lt;br /&gt;
Ну, на всякий случай, нужно добавить еще две строчки:&lt;br /&gt;
 critical_wound_threshold	= 0.4&lt;br /&gt;
 critical_wound_decrease_quant	= 0.&lt;br /&gt;
&lt;br /&gt;
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит&lt;br /&gt;
&lt;br /&gt;
== Вылет при убийстве ==&lt;br /&gt;
&lt;br /&gt;
Это знаменитая ошибка:&lt;br /&gt;
 Arguments     : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........&lt;br /&gt;
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.&lt;br /&gt;
&lt;br /&gt;
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом &amp;quot;что происходит после смерти?&amp;quot; А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт '''xr_statistic.script'''. В самом начале видим объявление переменной&lt;br /&gt;
 local killCountProps = {...}&lt;br /&gt;
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:&lt;br /&gt;
 cat_weak = 1, cat_normal = 2, cat_strong = 3,&lt;br /&gt;
Хотя мы сделали только '''cat_weak''', но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:&lt;br /&gt;
 monster_classes = {&lt;br /&gt;
кошек нет и здесь, добавляем:&lt;br /&gt;
 [clsid.cat_s] = &amp;quot;cat&amp;quot;,&lt;br /&gt;
Смотрим дальше, видим функцию '''addKillCount(npc)''', которая определяет сообщество (community) убитого. Функция вызывает '''getNpcType(npc)''', которая находится в этом же скрипте. А там идет обращение к функции '''IsStalker(npc)''', и возвращает сообщество и ранг убиенного.&lt;br /&gt;
&lt;br /&gt;
Но тут про мостров ни слова, а значит идем дальше. Функция '''IsStalker(npc)''' обнаруживается в скрипте '''_g.script'''. Просматривая его обнаруживаем следующие интересующие нас функции:&lt;br /&gt;
*is_object_monster(obj)&lt;br /&gt;
кошек нет, добавляем рядом с собаками:&lt;br /&gt;
 otype == clsid.cat or&lt;br /&gt;
*IsMonster (object, class_id)&lt;br /&gt;
кошки есть, ничего не трогаем.&lt;br /&gt;
&lt;br /&gt;
Для страховки проверим еще одни файл, '''class_registrator.script'''. Находим в нем строку&lt;br /&gt;
 cs_register (object_factory, &amp;quot;CCat&amp;quot;, &amp;quot;se_monster.se_monster&amp;quot;, &amp;quot;SM_CAT_S&amp;quot;, &amp;quot;cat_s&amp;quot;)&lt;br /&gt;
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился&lt;br /&gt;
&lt;br /&gt;
== Вылет при обыске ==&lt;br /&gt;
&lt;br /&gt;
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем '''m_cat.ltx''' - действительно, параметр '''icon''' отсутствует. Тут появляется два пути.&lt;br /&gt;
&lt;br /&gt;
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель '''ui_npc_monster.xml'''. И так для каждого нового монстра.&lt;br /&gt;
&lt;br /&gt;
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод &amp;quot;15 кошек&amp;quot;, то помнят тот ужас вместо иконки кошки :) )&lt;br /&gt;
&lt;br /&gt;
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция '''monster_base''', общая для всех монстров. Открываем, ищем секцию, и вставляем&lt;br /&gt;
 icon = ui_frame_error_sign_red&lt;br /&gt;
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.&lt;br /&gt;
&lt;br /&gt;
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.&lt;br /&gt;
&lt;br /&gt;
== Внимание!!! ==&lt;br /&gt;
&lt;br /&gt;
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет :)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;br /&gt;
&lt;br /&gt;
Еще нужно подправить соунд кошки, потому что по дефолту она почему-то издаёт рёв кабана=)&lt;br /&gt;
&lt;br /&gt;
Для тестов я выбрал холм недалеко от деревни новичков. Через xrSpawner задал себе координаты -172,3     -2,11     -61,54 (вектор не важен). Чтобы заспавнить котЭ, в xrSpawner'e идём в секцию справа &amp;quot;Добавить объект&amp;quot;, там должен быть транспорт и бюрер, но если ничего нет, сверху &amp;quot;добавить объект в базу данных&amp;quot; и пишем любое название отдела и объекта (как удобнее).В общем, выбираем что-нибудь, жмем &amp;quot;добавить&amp;quot; - внизу слева будет добавленный объект. В пути к файлу пишем: &amp;quot;monsters\cat\cat&amp;quot; (без кавычек), в Entity пишем &amp;quot;cat_weak&amp;quot; а название объекта - &amp;quot;cat_00&amp;quot; - дальше принять изм. и сохранить.  Координаты я выбрал рядом со своим спавном:&lt;br /&gt;
-155,29     -3,2     -65,66.&lt;br /&gt;
Добавляя монстров в другие места и локи, названия объектов не должны совпадать, а координаты вы должны найти сами (команда rs_stats on в консоли игры)&lt;br /&gt;
&lt;br /&gt;
Также у некоторых новых монстров нужно увеличить distance_to_corpse   и  as_min_dist, иначе враги этих монстров будут стрелять в них только на расстоянии вытянутой руки.&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B</id>
		<title>Новые монстры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B"/>
				<updated>2011-12-11T11:47:07Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Внимание!!! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
&lt;br /&gt;
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.&lt;br /&gt;
&lt;br /&gt;
Для примера возьму кошек (уж очень они мне нравятся)&lt;br /&gt;
&lt;br /&gt;
Добавить их можно отредактировать файл '''all.spawn''', либо динамически создать в игре через функцию '''alife:create()'''.&lt;br /&gt;
&lt;br /&gt;
== Вылет при появлении ==&lt;br /&gt;
&lt;br /&gt;
Обычно сопровождается сообщением в логе:&lt;br /&gt;
&lt;br /&gt;
 Arguments     : Can't open section 'cat_weak'&lt;br /&gt;
&lt;br /&gt;
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция&lt;br /&gt;
 [m_cat_e]:monster_base&lt;br /&gt;
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида&lt;br /&gt;
 [cat_weak]:m_cat_e&lt;br /&gt;
то есть ссылка на основную конфигурацию (иными словами это называется наследованием), а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле '''config\creatures\m_cat.ltx''' в конце допишем '''[cat_weak]:m_cat_e'''.&lt;br /&gt;
 Запускаем, добавляем кошку, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable smart_terrain_choose_interval in [cat_weak]&lt;br /&gt;
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:&lt;br /&gt;
 smart_terrain_choose_interval	= 00:15:00&lt;br /&gt;
Запускаем, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable satiety_threshold in [cat_weak]&lt;br /&gt;
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.&lt;br /&gt;
&lt;br /&gt;
Ну, на всякий случай, нужно добавить еще две строчки:&lt;br /&gt;
 critical_wound_threshold	= 0.4&lt;br /&gt;
 critical_wound_decrease_quant	= 0.&lt;br /&gt;
&lt;br /&gt;
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит&lt;br /&gt;
&lt;br /&gt;
== Вылет при убийстве ==&lt;br /&gt;
&lt;br /&gt;
Это знаменитая ошибка:&lt;br /&gt;
 Arguments     : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........&lt;br /&gt;
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.&lt;br /&gt;
&lt;br /&gt;
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом &amp;quot;что происходит после смерти?&amp;quot; А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт '''xr_statistic.script'''. В самом начале видим объявление переменной&lt;br /&gt;
 local killCountProps = {...}&lt;br /&gt;
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:&lt;br /&gt;
 cat_weak = 1, cat_normal = 2, cat_strong = 3,&lt;br /&gt;
Хотя мы сделали только '''cat_weak''', но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:&lt;br /&gt;
 monster_classes = {&lt;br /&gt;
кошек нет и здесь, добавляем:&lt;br /&gt;
 [clsid.cat_s] = &amp;quot;cat&amp;quot;,&lt;br /&gt;
Смотрим дальше, видим функцию '''addKillCount(npc)''', которая определяет сообщество (community) убитого. Функция вызывает '''getNpcType(npc)''', которая находится в этом же скрипте. А там идет обращение к функции '''IsStalker(npc)''', и возвращает сообщество и ранг убиенного.&lt;br /&gt;
&lt;br /&gt;
Но тут про мостров ни слова, а значит идем дальше. Функция '''IsStalker(npc)''' обнаруживается в скрипте '''_g.script'''. Просматривая его обнаруживаем следующие интересующие нас функции:&lt;br /&gt;
*is_object_monster(obj)&lt;br /&gt;
кошек нет, добавляем рядом с собаками:&lt;br /&gt;
 otype == clsid.cat or&lt;br /&gt;
*IsMonster (object, class_id)&lt;br /&gt;
кошки есть, ничего не трогаем.&lt;br /&gt;
&lt;br /&gt;
Для страховки проверим еще одни файл, '''class_registrator.script'''. Находим в нем строку&lt;br /&gt;
 cs_register (object_factory, &amp;quot;CCat&amp;quot;, &amp;quot;se_monster.se_monster&amp;quot;, &amp;quot;SM_CAT_S&amp;quot;, &amp;quot;cat_s&amp;quot;)&lt;br /&gt;
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился&lt;br /&gt;
&lt;br /&gt;
== Вылет при обыске ==&lt;br /&gt;
&lt;br /&gt;
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем '''m_cat.ltx''' - действительно, параметр '''icon''' отсутствует. Тут появляется два пути.&lt;br /&gt;
&lt;br /&gt;
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель '''ui_npc_monster.xml'''. И так для каждого нового монстра.&lt;br /&gt;
&lt;br /&gt;
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод &amp;quot;15 кошек&amp;quot;, то помнят тот ужас вместо иконки кошки :) )&lt;br /&gt;
&lt;br /&gt;
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция '''monster_base''', общая для всех монстров. Открываем, ищем секцию, и вставляем&lt;br /&gt;
 icon = ui_frame_error_sign_red&lt;br /&gt;
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.&lt;br /&gt;
&lt;br /&gt;
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.&lt;br /&gt;
&lt;br /&gt;
== Внимание!!! ==&lt;br /&gt;
&lt;br /&gt;
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет :)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;br /&gt;
&lt;br /&gt;
Еще нужно подправить соунд кошки, потому что по дефолту она почему-то издаёт рёв кабана=)&lt;br /&gt;
&lt;br /&gt;
Для тестов я выбрал холм недалеко от деревни новичков. Через xrSpawner задал себе координаты -172,3     -2,11     -61,54 (вектор не важен). Чтобы заспавнить котЭ, в xrSpawner'e идём в секцию справа &amp;quot;Добавить объект&amp;quot;, там должен быть транспорт и бюрер, но если ничего нет, сверху &amp;quot;добавить объект в базу данных&amp;quot; и пишем любое название отдела и объекта (как удобнее).В общем, выбираем что-нибудь, жмем &amp;quot;добавить&amp;quot; - внизу слева будет добавленный объект. В пути к файлу пишем: &amp;quot;monsters\cat\cat&amp;quot; (без кавычек), в Entity пишем &amp;quot;cat_weak&amp;quot; а название объекта - &amp;quot;cat_00&amp;quot; - дальше принять изм. и сохранить.  Координаты я выбрал рядом со своим спавном:&lt;br /&gt;
-155,29     -3,2     -65,66.&lt;br /&gt;
Добавляя монстров в другие места и локи, названия объектов не должны совпадать, а координаты вы должны найти сами (команда rs_stats on в консоли игры)&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B</id>
		<title>Новые монстры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B"/>
				<updated>2011-12-11T11:44:48Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Внимание!!! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
&lt;br /&gt;
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.&lt;br /&gt;
&lt;br /&gt;
Для примера возьму кошек (уж очень они мне нравятся)&lt;br /&gt;
&lt;br /&gt;
Добавить их можно отредактировать файл '''all.spawn''', либо динамически создать в игре через функцию '''alife:create()'''.&lt;br /&gt;
&lt;br /&gt;
== Вылет при появлении ==&lt;br /&gt;
&lt;br /&gt;
Обычно сопровождается сообщением в логе:&lt;br /&gt;
&lt;br /&gt;
 Arguments     : Can't open section 'cat_weak'&lt;br /&gt;
&lt;br /&gt;
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция&lt;br /&gt;
 [m_cat_e]:monster_base&lt;br /&gt;
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида&lt;br /&gt;
 [cat_weak]:m_cat_e&lt;br /&gt;
то есть ссылка на основную конфигурацию (иными словами это называется наследованием), а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле '''config\creatures\m_cat.ltx''' в конце допишем '''[cat_weak]:m_cat_e'''.&lt;br /&gt;
 Запускаем, добавляем кошку, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable smart_terrain_choose_interval in [cat_weak]&lt;br /&gt;
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:&lt;br /&gt;
 smart_terrain_choose_interval	= 00:15:00&lt;br /&gt;
Запускаем, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable satiety_threshold in [cat_weak]&lt;br /&gt;
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.&lt;br /&gt;
&lt;br /&gt;
Ну, на всякий случай, нужно добавить еще две строчки:&lt;br /&gt;
 critical_wound_threshold	= 0.4&lt;br /&gt;
 critical_wound_decrease_quant	= 0.&lt;br /&gt;
&lt;br /&gt;
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит&lt;br /&gt;
&lt;br /&gt;
== Вылет при убийстве ==&lt;br /&gt;
&lt;br /&gt;
Это знаменитая ошибка:&lt;br /&gt;
 Arguments     : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........&lt;br /&gt;
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.&lt;br /&gt;
&lt;br /&gt;
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом &amp;quot;что происходит после смерти?&amp;quot; А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт '''xr_statistic.script'''. В самом начале видим объявление переменной&lt;br /&gt;
 local killCountProps = {...}&lt;br /&gt;
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:&lt;br /&gt;
 cat_weak = 1, cat_normal = 2, cat_strong = 3,&lt;br /&gt;
Хотя мы сделали только '''cat_weak''', но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:&lt;br /&gt;
 monster_classes = {&lt;br /&gt;
кошек нет и здесь, добавляем:&lt;br /&gt;
 [clsid.cat_s] = &amp;quot;cat&amp;quot;,&lt;br /&gt;
Смотрим дальше, видим функцию '''addKillCount(npc)''', которая определяет сообщество (community) убитого. Функция вызывает '''getNpcType(npc)''', которая находится в этом же скрипте. А там идет обращение к функции '''IsStalker(npc)''', и возвращает сообщество и ранг убиенного.&lt;br /&gt;
&lt;br /&gt;
Но тут про мостров ни слова, а значит идем дальше. Функция '''IsStalker(npc)''' обнаруживается в скрипте '''_g.script'''. Просматривая его обнаруживаем следующие интересующие нас функции:&lt;br /&gt;
*is_object_monster(obj)&lt;br /&gt;
кошек нет, добавляем рядом с собаками:&lt;br /&gt;
 otype == clsid.cat or&lt;br /&gt;
*IsMonster (object, class_id)&lt;br /&gt;
кошки есть, ничего не трогаем.&lt;br /&gt;
&lt;br /&gt;
Для страховки проверим еще одни файл, '''class_registrator.script'''. Находим в нем строку&lt;br /&gt;
 cs_register (object_factory, &amp;quot;CCat&amp;quot;, &amp;quot;se_monster.se_monster&amp;quot;, &amp;quot;SM_CAT_S&amp;quot;, &amp;quot;cat_s&amp;quot;)&lt;br /&gt;
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился&lt;br /&gt;
&lt;br /&gt;
== Вылет при обыске ==&lt;br /&gt;
&lt;br /&gt;
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем '''m_cat.ltx''' - действительно, параметр '''icon''' отсутствует. Тут появляется два пути.&lt;br /&gt;
&lt;br /&gt;
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель '''ui_npc_monster.xml'''. И так для каждого нового монстра.&lt;br /&gt;
&lt;br /&gt;
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод &amp;quot;15 кошек&amp;quot;, то помнят тот ужас вместо иконки кошки :) )&lt;br /&gt;
&lt;br /&gt;
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция '''monster_base''', общая для всех монстров. Открываем, ищем секцию, и вставляем&lt;br /&gt;
 icon = ui_frame_error_sign_red&lt;br /&gt;
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.&lt;br /&gt;
&lt;br /&gt;
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.&lt;br /&gt;
&lt;br /&gt;
== Внимание!!! ==&lt;br /&gt;
&lt;br /&gt;
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет :)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;br /&gt;
&lt;br /&gt;
Еще нужно подправить соунд кошки, потому что по дефолту она почему-то издаёт рёв кабана=)&lt;br /&gt;
&lt;br /&gt;
Для тестов я выбрал холм недалеко от деревни новичков. Через xrSpawner задал себе координаты -172,3     -2,11     -61,54 (вектор не важен). Чтобы заспавнить котЭ, в xrSpawner'e идём в секцию справа &amp;quot;Добавить объект&amp;quot;, там должен быть транспорт и бюрер, но если ничего нет, сверху &amp;quot;добавить объект в базу данных&amp;quot; и пишем любое название отдела и объекта (как удобнее).В пути к файлу пишем: &amp;quot;monsters\cat\cat&amp;quot; (без кавычек), в Entity пишем &amp;quot;cat_weak&amp;quot; а название объекта - &amp;quot;cat_00&amp;quot;.  Координаты я выбрал рядом со своим спавном:&lt;br /&gt;
-155,29     -3,2     -65,66.&lt;br /&gt;
Добавляя монстров в другие места и локи, названия объектов не должны совпадать, а координаты вы должны найти сами (команда rs_stats on в консоли игры)&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B</id>
		<title>Новые монстры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B"/>
				<updated>2011-12-11T11:43:36Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Внимание!!! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
&lt;br /&gt;
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.&lt;br /&gt;
&lt;br /&gt;
Для примера возьму кошек (уж очень они мне нравятся)&lt;br /&gt;
&lt;br /&gt;
Добавить их можно отредактировать файл '''all.spawn''', либо динамически создать в игре через функцию '''alife:create()'''.&lt;br /&gt;
&lt;br /&gt;
== Вылет при появлении ==&lt;br /&gt;
&lt;br /&gt;
Обычно сопровождается сообщением в логе:&lt;br /&gt;
&lt;br /&gt;
 Arguments     : Can't open section 'cat_weak'&lt;br /&gt;
&lt;br /&gt;
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция&lt;br /&gt;
 [m_cat_e]:monster_base&lt;br /&gt;
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида&lt;br /&gt;
 [cat_weak]:m_cat_e&lt;br /&gt;
то есть ссылка на основную конфигурацию (иными словами это называется наследованием), а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле '''config\creatures\m_cat.ltx''' в конце допишем '''[cat_weak]:m_cat_e'''.&lt;br /&gt;
 Запускаем, добавляем кошку, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable smart_terrain_choose_interval in [cat_weak]&lt;br /&gt;
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:&lt;br /&gt;
 smart_terrain_choose_interval	= 00:15:00&lt;br /&gt;
Запускаем, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable satiety_threshold in [cat_weak]&lt;br /&gt;
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.&lt;br /&gt;
&lt;br /&gt;
Ну, на всякий случай, нужно добавить еще две строчки:&lt;br /&gt;
 critical_wound_threshold	= 0.4&lt;br /&gt;
 critical_wound_decrease_quant	= 0.&lt;br /&gt;
&lt;br /&gt;
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит&lt;br /&gt;
&lt;br /&gt;
== Вылет при убийстве ==&lt;br /&gt;
&lt;br /&gt;
Это знаменитая ошибка:&lt;br /&gt;
 Arguments     : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........&lt;br /&gt;
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.&lt;br /&gt;
&lt;br /&gt;
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом &amp;quot;что происходит после смерти?&amp;quot; А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт '''xr_statistic.script'''. В самом начале видим объявление переменной&lt;br /&gt;
 local killCountProps = {...}&lt;br /&gt;
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:&lt;br /&gt;
 cat_weak = 1, cat_normal = 2, cat_strong = 3,&lt;br /&gt;
Хотя мы сделали только '''cat_weak''', но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:&lt;br /&gt;
 monster_classes = {&lt;br /&gt;
кошек нет и здесь, добавляем:&lt;br /&gt;
 [clsid.cat_s] = &amp;quot;cat&amp;quot;,&lt;br /&gt;
Смотрим дальше, видим функцию '''addKillCount(npc)''', которая определяет сообщество (community) убитого. Функция вызывает '''getNpcType(npc)''', которая находится в этом же скрипте. А там идет обращение к функции '''IsStalker(npc)''', и возвращает сообщество и ранг убиенного.&lt;br /&gt;
&lt;br /&gt;
Но тут про мостров ни слова, а значит идем дальше. Функция '''IsStalker(npc)''' обнаруживается в скрипте '''_g.script'''. Просматривая его обнаруживаем следующие интересующие нас функции:&lt;br /&gt;
*is_object_monster(obj)&lt;br /&gt;
кошек нет, добавляем рядом с собаками:&lt;br /&gt;
 otype == clsid.cat or&lt;br /&gt;
*IsMonster (object, class_id)&lt;br /&gt;
кошки есть, ничего не трогаем.&lt;br /&gt;
&lt;br /&gt;
Для страховки проверим еще одни файл, '''class_registrator.script'''. Находим в нем строку&lt;br /&gt;
 cs_register (object_factory, &amp;quot;CCat&amp;quot;, &amp;quot;se_monster.se_monster&amp;quot;, &amp;quot;SM_CAT_S&amp;quot;, &amp;quot;cat_s&amp;quot;)&lt;br /&gt;
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился&lt;br /&gt;
&lt;br /&gt;
== Вылет при обыске ==&lt;br /&gt;
&lt;br /&gt;
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем '''m_cat.ltx''' - действительно, параметр '''icon''' отсутствует. Тут появляется два пути.&lt;br /&gt;
&lt;br /&gt;
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель '''ui_npc_monster.xml'''. И так для каждого нового монстра.&lt;br /&gt;
&lt;br /&gt;
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод &amp;quot;15 кошек&amp;quot;, то помнят тот ужас вместо иконки кошки :) )&lt;br /&gt;
&lt;br /&gt;
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция '''monster_base''', общая для всех монстров. Открываем, ищем секцию, и вставляем&lt;br /&gt;
 icon = ui_frame_error_sign_red&lt;br /&gt;
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.&lt;br /&gt;
&lt;br /&gt;
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.&lt;br /&gt;
&lt;br /&gt;
== Внимание!!! ==&lt;br /&gt;
&lt;br /&gt;
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет :)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;br /&gt;
&lt;br /&gt;
Еще нужно подправить соунд кошки, потому что по дефолту она почему-то издаёт рёв кабана=)&lt;br /&gt;
&lt;br /&gt;
Для тестов я выбрал холм недалеко от деревни новичков. Через xrSpawner задал себе координаты -172,3     -2,11     -61,54 (вектор не важен). Чтобы заспавнить котЭ, в xrSpawnere идём в секцию справа &amp;quot;Добавить объект&amp;quot;, там должен быть транспорт и бюрер, но если ничего нет, сверху &amp;quot;добавить объект в базу данных&amp;quot; и пишем любое название отдела и объекта (как удобнее).В пути к файлу пишем: &amp;quot;monsters\cat\cat&amp;quot; (без кавычек), в Entity пишем &amp;quot;cat_weak&amp;quot; а название объекта - &amp;quot;cat_00&amp;quot;.  Координаты я выбрал рядом со своим спавном:&lt;br /&gt;
-155,29     -3,2     -65,66.&lt;br /&gt;
Добавляя монстров в другие места и локи, названия объектов не должны совпадать, а координаты вы должны найти сами (команда rs_stats on в консоли игры)&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B</id>
		<title>Новые монстры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B"/>
				<updated>2011-12-11T11:42:41Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Вылет при появлении */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
&lt;br /&gt;
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.&lt;br /&gt;
&lt;br /&gt;
Для примера возьму кошек (уж очень они мне нравятся)&lt;br /&gt;
&lt;br /&gt;
Добавить их можно отредактировать файл '''all.spawn''', либо динамически создать в игре через функцию '''alife:create()'''.&lt;br /&gt;
&lt;br /&gt;
== Вылет при появлении ==&lt;br /&gt;
&lt;br /&gt;
Обычно сопровождается сообщением в логе:&lt;br /&gt;
&lt;br /&gt;
 Arguments     : Can't open section 'cat_weak'&lt;br /&gt;
&lt;br /&gt;
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция&lt;br /&gt;
 [m_cat_e]:monster_base&lt;br /&gt;
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида&lt;br /&gt;
 [cat_weak]:m_cat_e&lt;br /&gt;
то есть ссылка на основную конфигурацию (иными словами это называется наследованием), а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле '''config\creatures\m_cat.ltx''' в конце допишем '''[cat_weak]:m_cat_e'''.&lt;br /&gt;
 Запускаем, добавляем кошку, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable smart_terrain_choose_interval in [cat_weak]&lt;br /&gt;
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:&lt;br /&gt;
 smart_terrain_choose_interval	= 00:15:00&lt;br /&gt;
Запускаем, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable satiety_threshold in [cat_weak]&lt;br /&gt;
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.&lt;br /&gt;
&lt;br /&gt;
Ну, на всякий случай, нужно добавить еще две строчки:&lt;br /&gt;
 critical_wound_threshold	= 0.4&lt;br /&gt;
 critical_wound_decrease_quant	= 0.&lt;br /&gt;
&lt;br /&gt;
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит&lt;br /&gt;
&lt;br /&gt;
== Вылет при убийстве ==&lt;br /&gt;
&lt;br /&gt;
Это знаменитая ошибка:&lt;br /&gt;
 Arguments     : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........&lt;br /&gt;
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.&lt;br /&gt;
&lt;br /&gt;
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом &amp;quot;что происходит после смерти?&amp;quot; А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт '''xr_statistic.script'''. В самом начале видим объявление переменной&lt;br /&gt;
 local killCountProps = {...}&lt;br /&gt;
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:&lt;br /&gt;
 cat_weak = 1, cat_normal = 2, cat_strong = 3,&lt;br /&gt;
Хотя мы сделали только '''cat_weak''', но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:&lt;br /&gt;
 monster_classes = {&lt;br /&gt;
кошек нет и здесь, добавляем:&lt;br /&gt;
 [clsid.cat_s] = &amp;quot;cat&amp;quot;,&lt;br /&gt;
Смотрим дальше, видим функцию '''addKillCount(npc)''', которая определяет сообщество (community) убитого. Функция вызывает '''getNpcType(npc)''', которая находится в этом же скрипте. А там идет обращение к функции '''IsStalker(npc)''', и возвращает сообщество и ранг убиенного.&lt;br /&gt;
&lt;br /&gt;
Но тут про мостров ни слова, а значит идем дальше. Функция '''IsStalker(npc)''' обнаруживается в скрипте '''_g.script'''. Просматривая его обнаруживаем следующие интересующие нас функции:&lt;br /&gt;
*is_object_monster(obj)&lt;br /&gt;
кошек нет, добавляем рядом с собаками:&lt;br /&gt;
 otype == clsid.cat or&lt;br /&gt;
*IsMonster (object, class_id)&lt;br /&gt;
кошки есть, ничего не трогаем.&lt;br /&gt;
&lt;br /&gt;
Для страховки проверим еще одни файл, '''class_registrator.script'''. Находим в нем строку&lt;br /&gt;
 cs_register (object_factory, &amp;quot;CCat&amp;quot;, &amp;quot;se_monster.se_monster&amp;quot;, &amp;quot;SM_CAT_S&amp;quot;, &amp;quot;cat_s&amp;quot;)&lt;br /&gt;
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился&lt;br /&gt;
&lt;br /&gt;
== Вылет при обыске ==&lt;br /&gt;
&lt;br /&gt;
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем '''m_cat.ltx''' - действительно, параметр '''icon''' отсутствует. Тут появляется два пути.&lt;br /&gt;
&lt;br /&gt;
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель '''ui_npc_monster.xml'''. И так для каждого нового монстра.&lt;br /&gt;
&lt;br /&gt;
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод &amp;quot;15 кошек&amp;quot;, то помнят тот ужас вместо иконки кошки :) )&lt;br /&gt;
&lt;br /&gt;
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция '''monster_base''', общая для всех монстров. Открываем, ищем секцию, и вставляем&lt;br /&gt;
 icon = ui_frame_error_sign_red&lt;br /&gt;
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.&lt;br /&gt;
&lt;br /&gt;
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.&lt;br /&gt;
&lt;br /&gt;
== Внимание!!! ==&lt;br /&gt;
&lt;br /&gt;
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет :)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;br /&gt;
&lt;br /&gt;
Еще нужно подправить соунд кошки, потому что по дефолту она почему-то издаёт рёв кабана=)&lt;br /&gt;
&lt;br /&gt;
Для тестов я выбрал холм недалеко от деревни новичков. Через xrSpawner задал себе координаты -172,3     -2,11     -61,54 (вектор не важен). Чтобы заспавнить котЭ, в xrSpawnere идём в секцию справа &amp;quot;Добавить объект&amp;quot;, там должен быть транспорт и бюрер, но если ничего нет, сверху &amp;quot;добавить объект в базу данных&amp;quot; и пишем любое название отдела и объекта (как удобнее).В пути к файлу пишем: &amp;quot;monsters\cat\cat&amp;quot; (без кавычек), в Entity пишем &amp;quot;m_cat&amp;quot; а название объекта - &amp;quot;cat_00&amp;quot;.  Координаты я выбрал рядом со своим спавном:&lt;br /&gt;
-155,29     -3,2     -65,66.&lt;br /&gt;
Добавляя монстров в другие места и локи, названия объектов не должны совпадать, а координаты вы должны найти сами (команда rs_stats on в консоли игры)&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B</id>
		<title>Новые монстры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B"/>
				<updated>2011-12-10T15:03:55Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Вылет при появлении */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
&lt;br /&gt;
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.&lt;br /&gt;
&lt;br /&gt;
Для примера возьму кошек (уж очень они мне нравятся)&lt;br /&gt;
&lt;br /&gt;
Добавить их можно отредактировать файл '''all.spawn''', либо динамически создать в игре через функцию '''alife:create()'''.&lt;br /&gt;
&lt;br /&gt;
== Вылет при появлении ==&lt;br /&gt;
&lt;br /&gt;
Обычно сопровождается сообщением в логе:&lt;br /&gt;
&lt;br /&gt;
 Arguments     : Can't open section 'cat_weak'&lt;br /&gt;
&lt;br /&gt;
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция&lt;br /&gt;
 [m_cat_e]:monster_base&lt;br /&gt;
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида&lt;br /&gt;
 [cat_weak]:m_cat_e&lt;br /&gt;
то есть ссылка на основную конфигурацию (иными словами это называется наследованием), а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле '''config\creatures\m_cat.ltx''' в конце допишем '''[cat_weak]:m_cat_e'''.&lt;br /&gt;
!!! Если к концу добавления монстра всё же вылетает, попробуйте указать вместо cat_weak  это: m_cat !!!&lt;br /&gt;
 Запускаем, добавляем кошку, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable smart_terrain_choose_interval in [cat_weak]&lt;br /&gt;
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:&lt;br /&gt;
 smart_terrain_choose_interval	= 00:15:00&lt;br /&gt;
Запускаем, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable satiety_threshold in [cat_weak]&lt;br /&gt;
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.&lt;br /&gt;
&lt;br /&gt;
Ну, на всякий случай, нужно добавить еще две строчки:&lt;br /&gt;
 critical_wound_threshold	= 0.4&lt;br /&gt;
 critical_wound_decrease_quant	= 0.&lt;br /&gt;
&lt;br /&gt;
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит&lt;br /&gt;
&lt;br /&gt;
== Вылет при убийстве ==&lt;br /&gt;
&lt;br /&gt;
Это знаменитая ошибка:&lt;br /&gt;
 Arguments     : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........&lt;br /&gt;
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.&lt;br /&gt;
&lt;br /&gt;
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом &amp;quot;что происходит после смерти?&amp;quot; А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт '''xr_statistic.script'''. В самом начале видим объявление переменной&lt;br /&gt;
 local killCountProps = {...}&lt;br /&gt;
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:&lt;br /&gt;
 cat_weak = 1, cat_normal = 2, cat_strong = 3,&lt;br /&gt;
Хотя мы сделали только '''cat_weak''', но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:&lt;br /&gt;
 monster_classes = {&lt;br /&gt;
кошек нет и здесь, добавляем:&lt;br /&gt;
 [clsid.cat_s] = &amp;quot;cat&amp;quot;,&lt;br /&gt;
Смотрим дальше, видим функцию '''addKillCount(npc)''', которая определяет сообщество (community) убитого. Функция вызывает '''getNpcType(npc)''', которая находится в этом же скрипте. А там идет обращение к функции '''IsStalker(npc)''', и возвращает сообщество и ранг убиенного.&lt;br /&gt;
&lt;br /&gt;
Но тут про мостров ни слова, а значит идем дальше. Функция '''IsStalker(npc)''' обнаруживается в скрипте '''_g.script'''. Просматривая его обнаруживаем следующие интересующие нас функции:&lt;br /&gt;
*is_object_monster(obj)&lt;br /&gt;
кошек нет, добавляем рядом с собаками:&lt;br /&gt;
 otype == clsid.cat or&lt;br /&gt;
*IsMonster (object, class_id)&lt;br /&gt;
кошки есть, ничего не трогаем.&lt;br /&gt;
&lt;br /&gt;
Для страховки проверим еще одни файл, '''class_registrator.script'''. Находим в нем строку&lt;br /&gt;
 cs_register (object_factory, &amp;quot;CCat&amp;quot;, &amp;quot;se_monster.se_monster&amp;quot;, &amp;quot;SM_CAT_S&amp;quot;, &amp;quot;cat_s&amp;quot;)&lt;br /&gt;
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился&lt;br /&gt;
&lt;br /&gt;
== Вылет при обыске ==&lt;br /&gt;
&lt;br /&gt;
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем '''m_cat.ltx''' - действительно, параметр '''icon''' отсутствует. Тут появляется два пути.&lt;br /&gt;
&lt;br /&gt;
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель '''ui_npc_monster.xml'''. И так для каждого нового монстра.&lt;br /&gt;
&lt;br /&gt;
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод &amp;quot;15 кошек&amp;quot;, то помнят тот ужас вместо иконки кошки :) )&lt;br /&gt;
&lt;br /&gt;
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция '''monster_base''', общая для всех монстров. Открываем, ищем секцию, и вставляем&lt;br /&gt;
 icon = ui_frame_error_sign_red&lt;br /&gt;
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.&lt;br /&gt;
&lt;br /&gt;
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.&lt;br /&gt;
&lt;br /&gt;
== Внимание!!! ==&lt;br /&gt;
&lt;br /&gt;
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет :)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;br /&gt;
&lt;br /&gt;
Еще нужно подправить соунд кошки, потому что по дефолту она почему-то издаёт рёв кабана=)&lt;br /&gt;
&lt;br /&gt;
Для тестов я выбрал холм недалеко от деревни новичков. Через xrSpawner задал себе координаты -172,3     -2,11     -61,54 (вектор не важен). Чтобы заспавнить котЭ, в xrSpawnere идём в секцию справа &amp;quot;Добавить объект&amp;quot;, там должен быть транспорт и бюрер, но если ничего нет, сверху &amp;quot;добавить объект в базу данных&amp;quot; и пишем любое название отдела и объекта (как удобнее).В пути к файлу пишем: &amp;quot;monsters\cat\cat&amp;quot; (без кавычек), в Entity пишем &amp;quot;m_cat&amp;quot; а название объекта - &amp;quot;cat_00&amp;quot;.  Координаты я выбрал рядом со своим спавном:&lt;br /&gt;
-155,29     -3,2     -65,66.&lt;br /&gt;
Добавляя монстров в другие места и локи, названия объектов не должны совпадать, а координаты вы должны найти сами (команда rs_stats on в консоли игры)&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B</id>
		<title>Новые монстры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B"/>
				<updated>2011-12-10T15:00:13Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Внимание!!! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
&lt;br /&gt;
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.&lt;br /&gt;
&lt;br /&gt;
Для примера возьму кошек (уж очень они мне нравятся)&lt;br /&gt;
&lt;br /&gt;
Добавить их можно отредактировать файл '''all.spawn''', либо динамически создать в игре через функцию '''alife:create()'''.&lt;br /&gt;
&lt;br /&gt;
== Вылет при появлении ==&lt;br /&gt;
&lt;br /&gt;
Обычно сопровождается сообщением в логе:&lt;br /&gt;
&lt;br /&gt;
 Arguments     : Can't open section 'cat_weak'&lt;br /&gt;
&lt;br /&gt;
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция&lt;br /&gt;
 [m_cat_e]:monster_base&lt;br /&gt;
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида&lt;br /&gt;
 [cat_weak]:m_cat_e&lt;br /&gt;
то есть ссылка на основную конфигурацию (иными словами это называется наследованием), а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле '''config\creatures\m_cat.ltx''' в конце допишем '''[cat_weak]:m_cat_e'''. Запускаем, добавляем кошку, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable smart_terrain_choose_interval in [cat_weak]&lt;br /&gt;
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:&lt;br /&gt;
 smart_terrain_choose_interval	= 00:15:00&lt;br /&gt;
Запускаем, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable satiety_threshold in [cat_weak]&lt;br /&gt;
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.&lt;br /&gt;
&lt;br /&gt;
Ну, на всякий случай, нужно добавить еще две строчки:&lt;br /&gt;
 critical_wound_threshold	= 0.4&lt;br /&gt;
 critical_wound_decrease_quant	= 0.&lt;br /&gt;
&lt;br /&gt;
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит&lt;br /&gt;
&lt;br /&gt;
== Вылет при убийстве ==&lt;br /&gt;
&lt;br /&gt;
Это знаменитая ошибка:&lt;br /&gt;
 Arguments     : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........&lt;br /&gt;
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.&lt;br /&gt;
&lt;br /&gt;
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом &amp;quot;что происходит после смерти?&amp;quot; А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт '''xr_statistic.script'''. В самом начале видим объявление переменной&lt;br /&gt;
 local killCountProps = {...}&lt;br /&gt;
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:&lt;br /&gt;
 cat_weak = 1, cat_normal = 2, cat_strong = 3,&lt;br /&gt;
Хотя мы сделали только '''cat_weak''', но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:&lt;br /&gt;
 monster_classes = {&lt;br /&gt;
кошек нет и здесь, добавляем:&lt;br /&gt;
 [clsid.cat_s] = &amp;quot;cat&amp;quot;,&lt;br /&gt;
Смотрим дальше, видим функцию '''addKillCount(npc)''', которая определяет сообщество (community) убитого. Функция вызывает '''getNpcType(npc)''', которая находится в этом же скрипте. А там идет обращение к функции '''IsStalker(npc)''', и возвращает сообщество и ранг убиенного.&lt;br /&gt;
&lt;br /&gt;
Но тут про мостров ни слова, а значит идем дальше. Функция '''IsStalker(npc)''' обнаруживается в скрипте '''_g.script'''. Просматривая его обнаруживаем следующие интересующие нас функции:&lt;br /&gt;
*is_object_monster(obj)&lt;br /&gt;
кошек нет, добавляем рядом с собаками:&lt;br /&gt;
 otype == clsid.cat or&lt;br /&gt;
*IsMonster (object, class_id)&lt;br /&gt;
кошки есть, ничего не трогаем.&lt;br /&gt;
&lt;br /&gt;
Для страховки проверим еще одни файл, '''class_registrator.script'''. Находим в нем строку&lt;br /&gt;
 cs_register (object_factory, &amp;quot;CCat&amp;quot;, &amp;quot;se_monster.se_monster&amp;quot;, &amp;quot;SM_CAT_S&amp;quot;, &amp;quot;cat_s&amp;quot;)&lt;br /&gt;
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился&lt;br /&gt;
&lt;br /&gt;
== Вылет при обыске ==&lt;br /&gt;
&lt;br /&gt;
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем '''m_cat.ltx''' - действительно, параметр '''icon''' отсутствует. Тут появляется два пути.&lt;br /&gt;
&lt;br /&gt;
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель '''ui_npc_monster.xml'''. И так для каждого нового монстра.&lt;br /&gt;
&lt;br /&gt;
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод &amp;quot;15 кошек&amp;quot;, то помнят тот ужас вместо иконки кошки :) )&lt;br /&gt;
&lt;br /&gt;
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция '''monster_base''', общая для всех монстров. Открываем, ищем секцию, и вставляем&lt;br /&gt;
 icon = ui_frame_error_sign_red&lt;br /&gt;
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.&lt;br /&gt;
&lt;br /&gt;
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.&lt;br /&gt;
&lt;br /&gt;
== Внимание!!! ==&lt;br /&gt;
&lt;br /&gt;
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет :)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;br /&gt;
&lt;br /&gt;
Еще нужно подправить соунд кошки, потому что по дефолту она почему-то издаёт рёв кабана=)&lt;br /&gt;
&lt;br /&gt;
Для тестов я выбрал холм недалеко от деревни новичков. Через xrSpawner задал себе координаты -172,3     -2,11     -61,54 (вектор не важен). Чтобы заспавнить котЭ, в xrSpawnere идём в секцию справа &amp;quot;Добавить объект&amp;quot;, там должен быть транспорт и бюрер, но если ничего нет, сверху &amp;quot;добавить объект в базу данных&amp;quot; и пишем любое название отдела и объекта (как удобнее).В пути к файлу пишем: &amp;quot;monsters\cat\cat&amp;quot; (без кавычек), в Entity пишем &amp;quot;m_cat&amp;quot; а название объекта - &amp;quot;cat_00&amp;quot;.  Координаты я выбрал рядом со своим спавном:&lt;br /&gt;
-155,29     -3,2     -65,66.&lt;br /&gt;
Добавляя монстров в другие места и локи, названия объектов не должны совпадать, а координаты вы должны найти сами (команда rs_stats on в консоли игры)&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B</id>
		<title>Новые монстры</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%8B"/>
				<updated>2011-12-10T14:49:55Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Внимание!!! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
&lt;br /&gt;
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.&lt;br /&gt;
&lt;br /&gt;
Для примера возьму кошек (уж очень они мне нравятся)&lt;br /&gt;
&lt;br /&gt;
Добавить их можно отредактировать файл '''all.spawn''', либо динамически создать в игре через функцию '''alife:create()'''.&lt;br /&gt;
&lt;br /&gt;
== Вылет при появлении ==&lt;br /&gt;
&lt;br /&gt;
Обычно сопровождается сообщением в логе:&lt;br /&gt;
&lt;br /&gt;
 Arguments     : Can't open section 'cat_weak'&lt;br /&gt;
&lt;br /&gt;
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция&lt;br /&gt;
 [m_cat_e]:monster_base&lt;br /&gt;
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида&lt;br /&gt;
 [cat_weak]:m_cat_e&lt;br /&gt;
то есть ссылка на основную конфигурацию (иными словами это называется наследованием), а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле '''config\creatures\m_cat.ltx''' в конце допишем '''[cat_weak]:m_cat_e'''. Запускаем, добавляем кошку, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable smart_terrain_choose_interval in [cat_weak]&lt;br /&gt;
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:&lt;br /&gt;
 smart_terrain_choose_interval	= 00:15:00&lt;br /&gt;
Запускаем, вылетаем с ошибкой:&lt;br /&gt;
 Arguments     : Can't find variable satiety_threshold in [cat_weak]&lt;br /&gt;
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.&lt;br /&gt;
&lt;br /&gt;
Ну, на всякий случай, нужно добавить еще две строчки:&lt;br /&gt;
 critical_wound_threshold	= 0.4&lt;br /&gt;
 critical_wound_decrease_quant	= 0.&lt;br /&gt;
&lt;br /&gt;
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит&lt;br /&gt;
&lt;br /&gt;
== Вылет при убийстве ==&lt;br /&gt;
&lt;br /&gt;
Это знаменитая ошибка:&lt;br /&gt;
 Arguments     : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........&lt;br /&gt;
Самое просто и неправильное решение - закоментировать 20-ю строку скрипта _g.script, вылет исчезнет, но ошибка никуда не денется. Я не могу сказать с уверенностью, к чему игнорирование этого факта может привести, так как исправлял причину, а не следствие.&lt;br /&gt;
&lt;br /&gt;
Путем нехитрых логических размышлений решение было найдено. Вернее тупым перебором всего, что относилось к делу, криками на форумах, битьем головой о стенку... Потом пришло озарение, вместе с сакраментальным вопросом &amp;quot;что происходит после смерти?&amp;quot; А происходит добавление в статистику убитого объекта (монстра, нпс-а). Поэтому лезем в скрипт '''xr_statistic.script'''. В самом начале видим объявление переменной&lt;br /&gt;
 local killCountProps = {...}&lt;br /&gt;
в которой кошек нет. Поэтому добавляем их туда (например, в конец), для начисления очков опыта:&lt;br /&gt;
 cat_weak = 1, cat_normal = 2, cat_strong = 3,&lt;br /&gt;
Хотя мы сделали только '''cat_weak''', но на будущее добавим и остальных. Затем идет перечисление используемых классов монстров:&lt;br /&gt;
 monster_classes = {&lt;br /&gt;
кошек нет и здесь, добавляем:&lt;br /&gt;
 [clsid.cat_s] = &amp;quot;cat&amp;quot;,&lt;br /&gt;
Смотрим дальше, видим функцию '''addKillCount(npc)''', которая определяет сообщество (community) убитого. Функция вызывает '''getNpcType(npc)''', которая находится в этом же скрипте. А там идет обращение к функции '''IsStalker(npc)''', и возвращает сообщество и ранг убиенного.&lt;br /&gt;
&lt;br /&gt;
Но тут про мостров ни слова, а значит идем дальше. Функция '''IsStalker(npc)''' обнаруживается в скрипте '''_g.script'''. Просматривая его обнаруживаем следующие интересующие нас функции:&lt;br /&gt;
*is_object_monster(obj)&lt;br /&gt;
кошек нет, добавляем рядом с собаками:&lt;br /&gt;
 otype == clsid.cat or&lt;br /&gt;
*IsMonster (object, class_id)&lt;br /&gt;
кошки есть, ничего не трогаем.&lt;br /&gt;
&lt;br /&gt;
Для страховки проверим еще одни файл, '''class_registrator.script'''. Находим в нем строку&lt;br /&gt;
 cs_register (object_factory, &amp;quot;CCat&amp;quot;, &amp;quot;se_monster.se_monster&amp;quot;, &amp;quot;SM_CAT_S&amp;quot;, &amp;quot;cat_s&amp;quot;)&lt;br /&gt;
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился&lt;br /&gt;
&lt;br /&gt;
== Вылет при обыске ==&lt;br /&gt;
&lt;br /&gt;
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем '''m_cat.ltx''' - действительно, параметр '''icon''' отсутствует. Тут появляется два пути.&lt;br /&gt;
&lt;br /&gt;
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель '''ui_npc_monster.xml'''. И так для каждого нового монстра.&lt;br /&gt;
&lt;br /&gt;
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод &amp;quot;15 кошек&amp;quot;, то помнят тот ужас вместо иконки кошки :) )&lt;br /&gt;
&lt;br /&gt;
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция '''monster_base''', общая для всех монстров. Открываем, ищем секцию, и вставляем&lt;br /&gt;
 icon = ui_frame_error_sign_red&lt;br /&gt;
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.&lt;br /&gt;
&lt;br /&gt;
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.&lt;br /&gt;
&lt;br /&gt;
== Внимание!!! ==&lt;br /&gt;
&lt;br /&gt;
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет :)&lt;br /&gt;
[[Категория:Конфигурационные файлы]]&lt;br /&gt;
&lt;br /&gt;
Еще нужно подправить соунд кошки, потому что по дефолту она почему-то издаёт рёв кабана=)&lt;/div&gt;</summary>
		<author><name>31.25.31.121</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%B4%D0%B2%D0%B5%D1%80%D0%B5%D0%B9</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%B4%D0%B2%D0%B5%D1%80%D0%B5%D0%B9"/>
				<updated>2011-12-05T09:17:19Z</updated>
		
		<summary type="html">&lt;p&gt;31.25.31.121: /* Настраиваем меш */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Настраиваем меш==&lt;br /&gt;
&lt;br /&gt;
Меш двери должен содержать 3 кости: link - door -lock&lt;br /&gt;
&lt;br /&gt;
link - нужно в ЛЕ зафиксировать(пункт в свойствах fixed bones - выбрать из списка кость link) это чтоб дверь не упала))&lt;br /&gt;
&lt;br /&gt;
door - при настройках в АЕ выбираем сперва тип баундинг бокса(ББ) - box и в глобал нажимаеш generate shape - selected. после того как ББ сгенерится, указываем тип соединения(джоинт) - как joint, затем настраиваем его(дверь открывается по оси Z, и по ней ставим максимальный лимит(в градусах), у меня 90.&lt;br /&gt;
&lt;br /&gt;
lock - это замок, ему по идее тоже нужен ББ, но его лучше настроить вручную. ну и осталось понять как его заставить работать)&lt;br /&gt;
&lt;br /&gt;
Затем спавним в ЛЕ свою дверь(spawn element - physics - object), в свойствах, как писал выше, указываем fixed bones. всё, можно компилить и глядеть.&lt;br /&gt;
&lt;br /&gt;
'''Внимание! двери не работают нормально в МП, нужно собирать уровень в сингле'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Блин...!!!! Кто нибудь, когда нибудь делал дверь по этой инструкции ???&amp;lt;br&amp;gt;&lt;br /&gt;
Кроме того что надо в ЛЭ закреплять кость link, больше нечего умного не сказано.&amp;lt;br&amp;gt;&lt;br /&gt;
Автору:&amp;lt;br&amp;gt;&lt;br /&gt;
Распиши все действия в MAYA&amp;lt;br&amp;gt;&lt;br /&gt;
Сделай по этой инструкции дверь!!! И посмотри заработает она у тебя или нет!!!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Пример из финалки==&lt;br /&gt;
&lt;br /&gt;
Параметры двери в all.spawn:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[80]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = physic_object&lt;br /&gt;
name = door0001&lt;br /&gt;
position = -247.011154174805,-24.7180595397949,-133.298416137695&lt;br /&gt;
direction = 0,-2.61068344116211e-005,0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 0&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 594270&lt;br /&gt;
object_flags = 0xfffffffa&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[collide]&lt;br /&gt;
ignore_static&lt;br /&gt;
&lt;br /&gt;
[logic]&lt;br /&gt;
cfg = scripts\door_metal_small.ltx&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = physics\door\door_traders_box&lt;br /&gt;
&lt;br /&gt;
; cse_ph_skeleton properties&lt;br /&gt;
skeleton_name = &lt;br /&gt;
&lt;br /&gt;
; cse_alife_object_physic properties&lt;br /&gt;
physic_type = 0x3&lt;br /&gt;
mass = 10&lt;br /&gt;
fixed_bones = link&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Настройки в LE==&lt;br /&gt;
&lt;br /&gt;
[[Изображение:doors01.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
В '''custom_data''' нужно прописать логику двери, таким макаром:&amp;lt;br&amp;gt;&lt;br /&gt;
[logic]cfg = &amp;quot;имя логиги&amp;quot; , вот и всё &lt;br /&gt;
 &lt;br /&gt;
Скрин с настройками из ЛЕ:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:doors02.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
==Авторы==&lt;br /&gt;
Статья создана: [[Участник:Сахаров|Сахаров]]&amp;lt;br&amp;gt;&lt;br /&gt;
Коррекция: [[Участник:Loxotron|Loxotron]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:SDK]]&lt;/div&gt;</summary>
		<author><name>31.25.31.121</name></author>	</entry>

	</feed>