Cop. Урок по созданию нового оружия

Я не разу не находил урока по созданию нового оружия по ЗП и вот решил сам написать. Я добавлю снайперскую винтовку КСВК

Сначало идем в gamedata\configs\weapons и создаем файл под названием w_ksvk.ltx, и пишем в него секцию:

Код:
[wpn_ksvk]:identity_immunities,weapon_probability,default_weapon_params
GroupControlSection    = spawn_group
$spawn                  = "weapons\ksvk"      ; option for Level Editor
$npc    	     = on        ; option for Level Editor
$prefetch          = 8
scheduled               = off              	; option for ALife Simulator
cform                   = skeleton
class                   = WP_SVU
description             = st_wpn_ksvk_descr
ef_main_weapon_type    = 3
ef_weapon_type    	= 11

default_to_ruck         = false
sprint_allowed          = true 

;-------------------------------------------------------------------------------
cost                    = 200000
weapon_class    	= sniper_rifle
inv_weight              = 15.4

;----TTX------------------------------------------------------------------------
hit_power               = 350
hit_impulse             = 3525
hit_type         = fire_wound
fire_distance           = 2000
bullet_speed     	= 700 ;800	;начальная скорость пули
rpm                     = 40
rpm_empty_click         = 200 

use_aim_bullet        = false    ;Поддерживается ли первая суппер пуля
time_to_aim        	= 1.0

hud                     = wpn_ksvk_hud

misfire_probability        = 0.00000005 ;вероятность осечки при максимальном износе  !!!old - now not  working
;изношенность, при которой появляется шанс осечки
misfire_start_condition    = 0.000006
;изношеность при которой шанс осечки становится константным
misfire_end_condition    = 0.0000001
;шанс осечки при изношености больше чем misfireStartCondition
misfire_start_prob	     	= 0.0000065
;шанс осечки при изношености больше чем misfireEndCondition
misfire_end_prob	     	= 0.0000000065
;увеличение изношености при одиночном выстреле
condition_shot_dec      	= 0.000000065
;увеличение изношености при выстреле очередью
condition_queue_shot_dec	= 0.000000065 

ammo_elapsed    	= 10
ammo_mag_size    	= 5
fire_modes      = 1;, -1
ammo_class        =  ammo_7.62x54_7h1
hand_dependence         = 1
single_handed           = 0

;---дисперсия-------------------------------------------------------------------------
;базовая дисперсия
fire_dispersion_base    = 0.01   ;угол (в градусах) базовой дисперсии оружия (оружия зажатого в тисках)
control_inertion_factor = 1.7
crosshair_inertion    = 6.15

;отдача
cam_return        = 1
cam_relax_speed         = 3.0   ;скорость возврата в исходное положение
cam_relax_speed_ai      = 360	;скорость возврата в исходное положение
cam_dispersion          = 1.8 ;увеличения угла (в градусах) с каждым выстрелом
cam_dispersion_inc    = 1.8	;увеличениe cam_dispersion с каждым выстрелом
cam_dispersion_frac    = 1.0	;ствол будет подыматься на cam_dispersion*cam_dispersion_frac +- cam_dispersion*(1-cam_dispersion_frac)
cam_max_angle           = 12.0   ;максимальный угол отдачи
cam_max_angle_horz    = 3.0	;(degree) maximum shot horizontal degree
cam_step_angle_horz     = 1.5 ;(degree) size of step camera moved in horizontal position while shooting

;PDM_disp_base           = 0.85
;PDM_disp_vel_factor     = 3.4
;PDM_disp_accel_factor 	= 3.4
;PDM_disp_crouch	     = 1.0
;PDM_disp_crouch_no_acc 	= 1.0

PDM_disp_base     	= 2.0
PDM_disp_vel_factor 	= 4.0
PDM_disp_accel_factor 	= 4.0
PDM_disp_crouch	     = 1.0
PDM_disp_crouch_no_acc 	= 1.0


zoom_cam_relax_speed        = 0.7    ; scope & ironsight
zoom_cam_relax_speed_ai     = 120.75
zoom_cam_dispersion         = 0.65
zoom_cam_dispersion_inc     = 0.65
zoom_cam_dispersion_frac    = 1.0
zoom_cam_max_angle          = 10.0
zoom_cam_max_angle_horz     = 5.0
zoom_cam_step_angle_horz    = 0.5

fire_dispersion_condition_factor = 10	;увеличение дисперсии в процентах при максимальном износе

;---DOF-------------------------------------------------------------------------
;zoom_dof        = 0.5, 1.0, 350
reload_dof        = 0.0, 0.5, 5, 2

;-------------------------------------------------------------------------------
holder_range_modifier	= 2.15               ; во сколько раз увеличивается eye_range
holder_fov_modifier    = 1.0             ; во сколько раз увеличивается eye_fov 

min_radius              = 5
max_radius              = 250

hit_probability_gd_novice	= 1
hit_probability_gd_stalker	= 1
hit_probability_gd_veteran	= 1
hit_probability_gd_master	= 1

;-------------------------------------------------------------------------------
slot                    = 1                ; // secondary
animation_slot          = 2                ; type of the animation that will be used

inv_name                = st_wpn_ksvk
inv_name_short          = st_wpn_ksvk

inv_grid_width          = 6
inv_grid_height    	= 2
inv_grid_x        = 7
inv_grid_y              = 34

upgr_icon_x    	= 594
upgr_icon_y    	= 395
upgr_icon_width    = 294
upgr_icon_height   	= 80

kill_msg_x        = 0
kill_msg_y              = 59
kill_msg_width          = 80
kill_msg_height         = 26

;-------------------------------------------------------------------------------
position                = -0.026, 0.0, -0.02
orientation             = 0, 0, 0

fire_point              = 0.0, 0.128, 0.522
fire_point2             = 0.0, 0.128, 0.522

flame_particles         = weapons\generic_weapon05
smoke_particles    	= weapons\generic_shoot_00
rpm_empty_click     = 200 

shell_point             = 0.0, 0.128, 0.0
shell_dir         = 0.0, 0.0, 0.4
shell_particles	     = weapons\generic_shells

;--STRAP PARAMETERS-----------------------------------------------------------------
;под мишкой
strap_position          = -0.26,-0.11,0.25         ; position (offset) and orientation of the weapon when it is strapped
strap_orientation       = -15,-9,110            ; (3rd person view in degrees)
strap_bone0        	= bip01_spine2
strap_bone1        	= bip01_spine1

startup_ammo            = 10
visual                  = dynamics\weapons\wpn_ksvk\wpn_ksvk.ogf

light_disabled          = true
light_color         = 0.6,0.5,0.3
light_range         = 4.0
light_var_color     	= 0.05
light_var_range     	= 0.5
light_time          = 0.2

ph_mass    	     = 3

;addons
scope_status            = 1
silencer_status    	= 0
grenade_launcher_status	= 0

zoom_enabled    	= true
zoom_rotate_time    = 0.35
scope_zoom_factor       = 10     ;ПСО-1 4X

scope_texture    	= wpn_crosshair
scope_name         = wpn_addon_scope
scope_x         = 60
scope_y         = -2

;звуки
snd_draw                = weapons\svu_draw
snd_holster        	= weapons\generic_holster
snd_shoot               = weapons\n_svu_shot
snd_empty        	= weapons\gen_empty, 0.5
snd_reload              = weapons\svu_reload
snd_close        	= weapons\generic_close

[wpn_ksvk_hud]:hud_base
zoom_hide_crosshair    = true
attach_place_idx    = 0
item_visual             = dynamics\weapons\wpn_ksvk\wpn_ksvk_hud


hands_position        = -0.044500,-0.209998,0.273998
hands_orientation    	= 1.800001,-0.600001,0.200002

hands_position_16x9        = 0.005000,-0.227498,0.332498
hands_orientation_16x9    	= 3.649998,2.150000,-0.250000

item_position    	= 0,0,-0.02
item_orientation    = 0,0,0

shell_point        = 0.025,0.05,0.124
shell_dir               = 0.0, 1.0, 0.0
shell_bone        = wpn_body

fire_point              = 0.0,0.043,0.795
fire_bone               = wpn_body

aim_hud_offset_pos        = -0.071000,0.031999,-0.103000
aim_hud_offset_rot        = -0.002500,0.020000,0.000000

aim_hud_offset_pos_16x9        = -0.143500,0.024000,-0.120500
aim_hud_offset_rot_16x9        = -0.005000,-0.005000,0.000000

gl_hud_offset_pos    = 0,0,0
gl_hud_offset_rot    	= 0,0,0

lean_hud_offset_pos    = 0,0,0
lean_hud_offset_rot    = 0,0,0

anm_show            = svu_draw
anm_hide             	= svu_holster
anm_shots        	= svu_shoot
anm_reload        	= svu_reload
anm_bore            = svu_idle_bore
anm_idle             	= svu_idle
anm_idle_aim        = svu_idle_aim
anm_idle_moving     	= svu_idle_moving
anm_idle_sprint    	= svu_idle_moving

Без пояснения, это и так вы должны знать.

Потом сходим в файл gamedata\configs\weapons\weapons.ltx и добовляем вот это - #include "w_ksvk.ltx", вот так оно будет выглядеть там:

Код:
#include "w_g36.ltx"
#include "w_ksvk.ltx"
#include "w_pkm.ltx"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Огнестрельное оружие
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Теперь идем в файл mp_ranks.ltx, по адресу gamedata\configs\mp и пишем там вот это - wpn_ksvk, где то между ними:

Код:
wpn_wincheaster1300_trapper, wpn_ksvk, wpn_g36_nimble |(39)

Это что бы вылета не было когда вас убъют.

Теперь идем в gamedata\configs\text\rus\st_items_weapons.xml и пишем в самом низу:

Код:
<string id="st_wpn_ksvk">
<text>Свое название</text>
</string>
<string id="st_wpn_ksvk_descr">
<text>Свой текст.</text>
</string>

Все с конфигами покончено, теперь текстуры. Идем в папку gamedata\textures\wpn и создаем там паку с названием ksvk, внего кидаем 5 текстур, вот их названия:

Код:
1.dds, 1_bump.dds, 3.dds, 1_bump#.dds, 2.dds

Ну и конечно же иконка, ее здесь ставить gamedata\textures\ui\ui_icon_equipment.dds

Теперь модели, идем в папку gamedata\meshes\dynamics\weapons и создаем папку wpn_ksvk и кидаем две модели, с названием:

Код:
wpn_ksvk.ogf, wpn_ksvk_hud.ogf.

Надеюсь не впервом классе и знаете как добавить ГГ в начале игры.

Все, если все сделано правильно, то она у вас будет, очень меткая, и не изнашеваемая.

Автор: mmihaill