<?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=Palladium</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=Palladium"/>
		<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/Palladium"/>
		<updated>2026-04-29T15:07:30Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<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_%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D1%8F</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_%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D1%8F"/>
				<updated>2011-05-20T22:58:17Z</updated>
		
		<summary type="html">&lt;p&gt;Palladium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Создание нового оружия &lt;br /&gt;
В этой статье мы научимся создавать новые образцы вооружения. Для начала, мы будем использовать модели из оригинальной игры. Если вы хотите создать оружие, имеющее уникальный внешний вид, ознакомьтесь с уроком по созданию моделей. &lt;br /&gt;
Добавим в игру АК101. &lt;br /&gt;
Внешний вид &lt;br /&gt;
Позаботимся о том, чтобы наше оружие отличалось внешне от того же АК74. &lt;br /&gt;
Текстуры &lt;br /&gt;
Нарисуем для оружия новую текстуру.&lt;br /&gt;
Файлы текстур мы назвали: &lt;br /&gt;
wpn_ak10.dds &lt;br /&gt;
wpn_ak10_bump#.dds &lt;br /&gt;
wpn_ak10_bump.dds &lt;br /&gt;
Модели &lt;br /&gt;
Новых моделей мы пока делать не станем, просто воспользуемся дублированными моделями от АК74. Скопируем папку: &lt;br /&gt;
gamedata\meshes\weapons\ak47\ &lt;br /&gt;
И назовем её ak-101. Содержимое, соответственно, переименуем в: &lt;br /&gt;
wpn_ak101.ogf &lt;br /&gt;
wpn_ak101_hud.ogf. &lt;br /&gt;
Теперь пропишем в эти модели созданные нами текстуры. &lt;br /&gt;
Иконки &lt;br /&gt;
Добавим в игру иконки, которыми оружие будет отображаться в инвентаре.&lt;br /&gt;
&lt;br /&gt;
Конфиги &lt;br /&gt;
Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Создадим АК101 на базе конфигов АК74. &lt;br /&gt;
Свойства оружия &lt;br /&gt;
Скопируем файл из папки: &lt;br /&gt;
gamedata\config\ak74.ltx &lt;br /&gt;
Назовем его ak101.ltx.&lt;br /&gt;
&lt;br /&gt;
Отредактируем свойства по своему усмотрению (но лучше - в соответствии с достоверной информацией о характеристиках оружия, т.к. АК101 - всё-таки оружие реально существующее). Редактирование конфигов оружия подробно описано в отдельном уроке. В данном случае конфиг был составлен таким образом: &lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; &lt;br /&gt;
&amp;lt;code&amp;gt;[wpn_ak101]:identity_immunities &lt;br /&gt;
GroupControlSection	 = spawn_group &lt;br /&gt;
discovery_dependency	= &lt;br /&gt;
$spawn = &amp;quot;weapons\ak-101&amp;quot;	; name and section in level editor &lt;br /&gt;
$npc	 = on	&lt;br /&gt;
$prefetch = 8 &lt;br /&gt;
scheduled	 = off  ;[] option for ALife Simulator &lt;br /&gt;
cform = skeleton &lt;br /&gt;
class = WP_AK74	 ; class of the weapon that corresponding to CPP class &lt;br /&gt;
min_radius = 30	 ; [] for AI &lt;br /&gt;
max_radius = 100	 ; [] for AI &lt;br /&gt;
description	 = enc_weapons1_wpn-ak101 &lt;br /&gt;
&lt;br /&gt;
ef_main_weapon_type	 = 2 &lt;br /&gt;
ef_weapon_type	 = 6&lt;br /&gt;
&lt;br /&gt;
;----------------------------------------------------------------------------------- &lt;br /&gt;
holder_range_modifier	= 1.0	  ; во сколько раз увеличивается eye_range &lt;br /&gt;
holder_fov_modifier	 = 0.7  ; во сколько раз увеличивается eye_fov &lt;br /&gt;
;-----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cost	 = 2;4000	&lt;br /&gt;
weapon_class	 = assault_rifle	&lt;br /&gt;
&lt;br /&gt;
ammo_limit	 = 210	&lt;br /&gt;
ammo_elapsed	 = 30	&lt;br /&gt;
&lt;br /&gt;
ammo_mag_size	 = 30	&lt;br /&gt;
fire_modes	 = 1, -1&lt;br /&gt;
&lt;br /&gt;
ammo_class	 = ammo_5.56x45_ss190, ammo_5.56x45_ap	&lt;br /&gt;
grenade_class	 = ammo_vog-25, ammo_vog-25p	&lt;br /&gt;
launch_speed	 = 0&lt;br /&gt;
&lt;br /&gt;
hand_dependence	 = 1	&lt;br /&gt;
single_handed	 = 0 &lt;br /&gt;
&lt;br /&gt;
slot = 2	&lt;br /&gt;
animation_slot	 = 2	&lt;br /&gt;
inv_name	 = wpn-ak101	&lt;br /&gt;
inv_name_short	 = wpn-ak101 &lt;br /&gt;
inv_weight	 = 3.3&lt;br /&gt;
&lt;br /&gt;
inv_grid_width	 = 5	&lt;br /&gt;
inv_grid_height	 = 2	&lt;br /&gt;
inv_grid_x	 = 11 &lt;br /&gt;
inv_grid_y	 = 29&lt;br /&gt;
&lt;br /&gt;
kill_msg_x	 = 0 &lt;br /&gt;
kill_msg_y	 = 28 &lt;br /&gt;
kill_msg_width	 = 84 &lt;br /&gt;
kill_msg_height	 = 28&lt;br /&gt;
&lt;br /&gt;
;----------------------------------------------------------------------------------- &lt;br /&gt;
;params of weapon recoil&lt;br /&gt;
&lt;br /&gt;
fire_dispersion_base	 = 0.15;0.2	&lt;br /&gt;
control_inertion_factor	 = 1.1f;1.25f&lt;br /&gt;
&lt;br /&gt;
;отдача &lt;br /&gt;
cam_relax_speed =6;5;3.5; 0.15	&lt;br /&gt;
cam_dispersion = 0.1;0.15	&lt;br /&gt;
cam_dispersion_inc	 = 0.2;0.3	&lt;br /&gt;
cam_dispertion_frac	 = 0.8;0.9	&lt;br /&gt;
cam_max_angle	 = 10.0	&lt;br /&gt;
cam_max_angle_horz	 = 20.0	&lt;br /&gt;
cam_step_angle_horz	 = 1.1;1&lt;br /&gt;
&lt;br /&gt;
fire_dispersion_condition_factor = 5.7;5	&lt;br /&gt;
misfire_probability = 0.0055;0.003	&lt;br /&gt;
misfire_condition_k	 = 0.06;0.05 &lt;br /&gt;
condition_shot_dec = 0.00035;0.0001	&lt;br /&gt;
;-----------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
fire_point = 0,0.216,0.638	&lt;br /&gt;
fire_point2 = 0,0.216,0.730&lt;br /&gt;
&lt;br /&gt;
flame_particles	 = weapons\generic_weapon05	&lt;br /&gt;
smoke_particles	 = weapons\generic_shoot_00 &lt;br /&gt;
grenade_flame_particles	 = weapons\generic_weapon01 &lt;br /&gt;
&lt;br /&gt;
shell_point	 = 0,0.216,0.174	&lt;br /&gt;
shell_particles	 = weapons\generic_shells&lt;br /&gt;
&lt;br /&gt;
PDM_disp_base = 1.0 &lt;br /&gt;
PDM_disp_vel_factor = 1.3 &lt;br /&gt;
PDM_disp_accel_factor = 1.3 &lt;br /&gt;
PDM_crouch	 = 1.0 &lt;br /&gt;
PDM_crouch_no_acc = 1.0&lt;br /&gt;
&lt;br /&gt;
; ttc &lt;br /&gt;
hit_power = 0.36, 0.4, 0.43, 0.46	&lt;br /&gt;
hit_impulse	 = 140	&lt;br /&gt;
hit_type = fire_wound &lt;br /&gt;
fire_distance = 1700	&lt;br /&gt;
bullet_speed	 = 1000	&lt;br /&gt;
rpm = 750&lt;br /&gt;
&lt;br /&gt;
use_aim_bullet	 = true	&lt;br /&gt;
time_to_aim	 = 1.0&lt;br /&gt;
&lt;br /&gt;
;params when silencer is attached &lt;br /&gt;
;similar to corresponding params without prefix silencer_&lt;br /&gt;
&lt;br /&gt;
silencer_hit_power = 0.38 &lt;br /&gt;
silencer_hit_impulse	 = 120 &lt;br /&gt;
silencer_fire_distance = 250 &lt;br /&gt;
silencer_bullet_speed	 = 600&lt;br /&gt;
&lt;br /&gt;
hud = wpn_ak101_hud&lt;br /&gt;
&lt;br /&gt;
position = -0.026,-0.172,0	&lt;br /&gt;
orientation = 0,0,0&lt;br /&gt;
&lt;br /&gt;
;--STRAP PARAMETERS----------------------------------------------------------------- &lt;br /&gt;
strap_position = -0.16,-0.40,0.15	&lt;br /&gt;
strap_orientation = -10,-5,10	&lt;br /&gt;
strap_bone0	 = bip01_spine2 &lt;br /&gt;
strap_bone1	 = bip01_spine1&lt;br /&gt;
&lt;br /&gt;
visual = weapons\ak-101\wpn_ak101&lt;br /&gt;
&lt;br /&gt;
light_color	 = 0.6,0.5,0.3	&lt;br /&gt;
light_range	 = 5	&lt;br /&gt;
light_var_color	 = 0.05	&lt;br /&gt;
light_var_range	 = 0.5 &lt;br /&gt;
light_time = 0.2&lt;br /&gt;
&lt;br /&gt;
ph_mass	 = 5&lt;br /&gt;
&lt;br /&gt;
;addons &lt;br /&gt;
scope_status	 = 2	&lt;br /&gt;
silencer_status	 = 2	&lt;br /&gt;
grenade_launcher_status	 = 0;2&lt;br /&gt;
&lt;br /&gt;
zoom_enabled	 = true	&lt;br /&gt;
scope_zoom_factor	 = 50&lt;br /&gt;
&lt;br /&gt;
scope_name = wpn_addon_scope	&lt;br /&gt;
scope_x = 42	&lt;br /&gt;
scope_y = 3 &lt;br /&gt;
silencer_name = wpn_addon_silencer	&lt;br /&gt;
silencer_x = 218	&lt;br /&gt;
silencer_y = 13	&lt;br /&gt;
grenade_launcher_name = wpn_addon_grenade_launcher &lt;br /&gt;
grenade_launcher_x = 116	&lt;br /&gt;
grenade_launcher_y = 23&lt;br /&gt;
&lt;br /&gt;
;sounds (name of the sound, volume (0.0 - 1.0), delay (sec)) &lt;br /&gt;
snd_draw	 = weapons\ak74_draw &lt;br /&gt;
snd_holster	 = weapons\generic_holster &lt;br /&gt;
snd_shoot	 = weapons\ak74_shot_0 &lt;br /&gt;
snd_shoot1	 = weapons\ak74_shot_1 &lt;br /&gt;
snd_shoot2	 = weapons\ak74_shot_2 &lt;br /&gt;
snd_shoot3	 = weapons\ak74_shot_3	&lt;br /&gt;
snd_empty	 = weapons\gen_empty, 0.5 &lt;br /&gt;
snd_reload	 = weapons\ak74_reload, 0.7, 0.35 &lt;br /&gt;
snd_shoot_grenade	 = weapons\gen_grenshoot &lt;br /&gt;
snd_reload_grenade	 = weapons\gen_grenload, 1.0, 0.8 &lt;br /&gt;
snd_switch	 = weapons\groza_switch, 1.0, 0.5&lt;br /&gt;
&lt;br /&gt;
;params when silencer is attached &lt;br /&gt;
;similar to corresponding params without prefix silencer_&lt;br /&gt;
&lt;br /&gt;
;silencer_flame_particles = weapons\generic_weapon01 &lt;br /&gt;
silencer_smoke_particles = weapons\generic_shoot_00&lt;br /&gt;
&lt;br /&gt;
snd_silncer_shot	 = weapons\w_ak74_shot1&lt;br /&gt;
&lt;br /&gt;
silencer_light_color	 = 0.6,0.5,0.3 &lt;br /&gt;
silencer_light_range	 = 0.01 &lt;br /&gt;
silencer_light_var_color	= 0.05 &lt;br /&gt;
silencer_light_var_range	= 0.5 &lt;br /&gt;
silencer_light_time = 0.2&lt;br /&gt;
&lt;br /&gt;
;----------------------------------------------------------------------------- &lt;br /&gt;
;-- HUD DESCRIPTION &lt;br /&gt;
;----------------------------------------------------------------------------- &lt;br /&gt;
&lt;br /&gt;
[wpn_ak101_hud] &lt;br /&gt;
allow_inertion	 = true&lt;br /&gt;
&lt;br /&gt;
;similar to corresponding params in weapon section but for 1st person view&lt;br /&gt;
&lt;br /&gt;
shell_point	 = -0.065000,0.000000,-0.045000 &lt;br /&gt;
shell_dir	 = 0.0, 1.0, 0.0&lt;br /&gt;
&lt;br /&gt;
fire_point = 0.09,0.020,-0.06 &lt;br /&gt;
fire_point2 = 0.30, 0.00, 0.05 &lt;br /&gt;
fire_bone = wpn_body&lt;br /&gt;
&lt;br /&gt;
orientation = 0, 0, 0	&lt;br /&gt;
position = 0, 0, 0.05 &lt;br /&gt;
visual = weapons\ak-101\wpn_ak101_hud&lt;br /&gt;
&lt;br /&gt;
grenade_bone = wpn_grenade&lt;br /&gt;
&lt;br /&gt;
; animation names&lt;br /&gt;
&lt;br /&gt;
anim_idle	 = idle &lt;br /&gt;
anim_idle_aim	 = idle_aim &lt;br /&gt;
anim_reload	 = reload &lt;br /&gt;
anim_draw	 = draw_wo_gl &lt;br /&gt;
anim_holster	 = holster_wo_gl &lt;br /&gt;
anim_shoot	 = shoot &lt;br /&gt;
&lt;br /&gt;
; animation names &lt;br /&gt;
; attached grenade launcher [GRENADE fire mode] &lt;br /&gt;
anim_idle_g	 = idle_grenade &lt;br /&gt;
anim_idle_g_aim	 = idle_g_aim &lt;br /&gt;
anim_reload_g	 = reload_grenade &lt;br /&gt;
anim_shoot_g	 = shoot_grenade &lt;br /&gt;
anim_switch_grenade_on	 = switch_grenade &lt;br /&gt;
anim_switch_grenade_off	 = switch_grenade_off &lt;br /&gt;
anim_draw_g	 = draw_grenade_mode &lt;br /&gt;
anim_holster_g	 = holster_grenade_mode&lt;br /&gt;
&lt;br /&gt;
; attached grenade launcher [NORMAL fire mode] &lt;br /&gt;
anim_idle_gl	 = idle_w_gl &lt;br /&gt;
anim_idle_gl_aim	 = idle_w_gl_aim &lt;br /&gt;
anim_reload_gl	 = reload_w_gl &lt;br /&gt;
anim_draw_gl	 = draw_w_gl &lt;br /&gt;
anim_holster_gl	 = holster_w_gl &lt;br /&gt;
anim_shoot_gl	 = shoot_w_gl &lt;br /&gt;
anim_idle_sprint	 = idle_sprint&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; &lt;br /&gt;
;HUD offset in zoom mode (to all) &lt;br /&gt;
;(use CONSOLE: hud_adjust_mode 0,1,2, then keys WSADQE and P to show current value in console)&lt;br /&gt;
&lt;br /&gt;
zoom_offset	 = -0.112400,0.016800,-0.115000 &lt;br /&gt;
zoom_rotate_x	 = 0.000200 &lt;br /&gt;
zoom_rotate_y	 = 0.017500&lt;br /&gt;
&lt;br /&gt;
zoom_hide_crosshair	= true&lt;br /&gt;
&lt;br /&gt;
; same as above, but for attached grenade launcher for &lt;br /&gt;
; in NORMAL shoot mode&lt;br /&gt;
&lt;br /&gt;
grenade_normal_zoom_offset	 = -0.112500,0.014000,0.000000 &lt;br /&gt;
grenade_normal_zoom_rotate_x	 = -0.000900 &lt;br /&gt;
grenade_normal_zoom_rotate_y	 = 0.017200&lt;br /&gt;
&lt;br /&gt;
; same as above, but for attached grenade launcher for &lt;br /&gt;
; in GRENADE mode&lt;br /&gt;
&lt;br /&gt;
grenade_zoom_offset	 = -0.039600,-0.433100,0.000000 &lt;br /&gt;
grenade_zoom_rotate_x	 = -0.538700 &lt;br /&gt;
grenade_zoom_rotate_y	 = -0.03380&amp;lt;/code&amp;gt; &lt;br /&gt;
Регистрация &lt;br /&gt;
Итак, с характеристиками разобрались. Теперь зарегистрируем оружие в файле weapons.ltx. Для этого пропишем в него строку следующего вида: &lt;br /&gt;
#include &amp;quot;w_ak101.ltx&amp;quot; &lt;br /&gt;
Также, необходимо прописать модели, используемые для отображения оружия, в prefetch.ltx: &lt;br /&gt;
[...] &lt;br /&gt;
weapons\abakan\wpn_abakan &lt;br /&gt;
weapons\abakan\wpn_abakan_hud &lt;br /&gt;
weapons\ak-101\wpn_ak101 &lt;br /&gt;
weapons\ak-101\wpn_ak101_hud &lt;br /&gt;
weapons\ak74\wpn_ak74 &lt;br /&gt;
w eapons\ak74\wpn_ak74_hud &lt;br /&gt;
[...] &lt;br /&gt;
Так же не забудте в файле mp_ranks.ltx прописать после available_items (которое внизу) прописать название своего оружия. Это предотвратит вылет при убийстве ГГ. &lt;br /&gt;
Добавление в игру &lt;br /&gt;
Осталось добавить оружие в игру. &lt;br /&gt;
Выдайте его некоторым NPC, расширьте ассортимент торговцев&lt;br /&gt;
                                                         &lt;br /&gt;
Восстановил:Palladium (хоть как-то восстановил))&lt;br /&gt;
==Авторы==&lt;br /&gt;
&lt;br /&gt;
Статья создана: &lt;br /&gt;
*[[Участник:BAC9-FLCL|BAC9-FLCL]]&lt;br /&gt;
&lt;br /&gt;
Статья подправлена:&lt;br /&gt;
*[[Участник:Хемуль04|Хемуль04]]&lt;br /&gt;
&lt;br /&gt;
По материалам мода [[Mod:Russian Guns|Russian Guns]] за авторством: &lt;br /&gt;
*[[Участник:Tony|Tony]]&lt;br /&gt;
*[[Участник:lez0|lez0]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Конфигурационные_файлы]]&lt;br /&gt;
&lt;br /&gt;
Когда будете прописыватьв конфиге значения &amp;quot;inv_grid_y&amp;quot; и &amp;quot;inv_grid_x&amp;quot; имейте в виду, что отсчет по сетке идет с верхнего левого угла и указывать нужно верхний левый угол картинки, которая должна отображатся в инвентаре. То есть координаты самого первого угла будут 0;0. Самая первая винтовка в файле ...\S.T.A.L.K.E.R\gamedata\textures\ui\ui_icon_equipment.dds это - СВД. И если вы посмотрите ее конфигурационный файл то увидете, что там указаны значения inv_grid_x = 0   inv_grid_y = 0.  Отсчет по оси X идет по горизонтали с лева на право, а по оси Y - сверху вниз по возрастающей. Но считать с начала сетки - очень не удобно, поэтому вычисляйте координаты вашего обьекта по известным координатам уже существующего и реально правильно отображаемого файла в игре. Например мы имеем inv_grid_x= 5 inv_grid_y= 9 для fn2000(координаты верхнего левого угла) и мы хотим узнать координаты гранатф ф1, которая находится рядом. Для этого удобно использовать фотошоп с сеткой 50 на 50 пикселей. (как ее сделать описано по ссылке в статье к которой написана эта поправка.) И так мы видим что граната находится сразу справа порсле винтовки. То есть на 4-й клетке после квадрата угла винтовки без его учета. Она находится спраа, а значит нужно по оси X к 5 прибавить 4, и получится 9. По оси Y координтаы не изменились так как они находятся на одной линии с винтовкой. Таким образом получает коордитаны гранаты 9 по Х и 9 по Y. Если мы посмотрим конфиг гранаты то увидим там &amp;quot;inv_grid_x= 9&amp;quot; &amp;quot;inv_grid_y= 9&amp;quot;. То что и соответствует тому, что мы высчитали. :) Удачи.&lt;br /&gt;
До правки статья получше выглядела...&lt;/div&gt;</summary>
		<author><name>Palladium</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-05-05T17:16:34Z</updated>
		
		<summary type="html">&lt;p&gt;Palladium: /* Внимание!!! */&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;/div&gt;</summary>
		<author><name>Palladium</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-04-19T07:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Palladium: /* Внимание!!! */&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;
[[Категория:Скрипты]][[Категория:FAQ]]&lt;/div&gt;</summary>
		<author><name>Palladium</name></author>	</entry>

	</feed>