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

 Удачи.