Создание нового оружия
Материал из Mod Wiki.
В этой статье мы научимся создавать новые образцы вооружения. Для начала, мы будем использовать модели из оригинальной игры. Если вы хотите создать оружие, имеющее уникальный внешний вид, ознакомьтесь с уроком по созданию моделей.
Практика
Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Сделаем, скажем, АК101 на базе конфигов АК74. Для этого скопируем файл из папки:
gamedata\config\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 ; the price of the item weapon_class = assault_rifle ; the type of the box that will be used in buy-menu in multiplayer mode ammo_limit = 210 ; obsolete ammo_elapsed = 30 ; obsolete ammo_mag_size = 30 ; clip (magazine) size fire_modes = 1, -1 ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap ; name of the ltx-section of used ammo grenade_class = ammo_vog-25, ammo_vog-25p ; name of the ltx-section of used grenades launch_speed = 0 hand_dependence = 1 ; how many hands (1 or 2) we used to hold weapon in single_handed = 0 slot = 2 ; number of slot in inventory we put weapon in (1 - knife slot, 2 - pistol, 3 - rifle, 4 - grenade, 5 - apparatus) animation_slot = 2 ; type of the animation that will be used inv_name = wpn-ak101 ; name in inventory inv_name_short = wpn-ak101 inv_weight = 3.3 ; weight in inventory inv_grid_width = 5 ; position and size of the icon that will be used to display weapon in the inventory menu inv_grid_height = 2 ; all icons are on the texture ui_icon_equipment.dds, inv_grid_x = 11 ; position and size are in terms of 64x64 squares inv_grid_y = 29 kill_msg_x = 0 kill_msg_y = 28 kill_msg_width = 84 kill_msg_height = 28 ;----------------------------------------------------------------------------------- ; base dispersion ; ; === Setting of the weapon shooting dispersal parameter === ;Dispersal consists from to basic constituents – dispersal of the weapon (relatively small). In fact, this is a dispersal of a weapon griped in a vice; - dispersal of the weapon behavior in the hands of the host (if he running, or walking or shoots in single shots or in a burst) is another, more significant factor of dispersal. ;Dispersal of the weapon depends only from basic dispersal, basket case factor ant time of the ammo. ;Dispersal of the way the host shooting (standing, running and etc.) ;Two types of shooting modes can be defined: - usual mode and zoomed mode. ;Usual mode: - depends from the position of the player while shooting (standing, sitting, walking and running) ;Zoomed mode – depends from the dispersal of the weapon and do NOT depends from the position of the shooter. In that mode, dispersal of the weapon « switches to;» sight swinging (created be effector). ;Weapon recoil in the game also created by recoil effector. ; ;----------------------------------------------------------------------------------- ;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 ;увеличениe cam_dispersion с каждым выстрелом cam_dispertion_frac = 0.8;0.9 ;ствол будет подыматься на cam_dispersion*cam_dispertion_frac +- cam_dispersion*(1-cam_dispertion_frac) cam_max_angle = 10.0 ;максимальный угол отдачи cam_max_angle_horz = 20.0 ;(degree) maximum shot horizontal degree cam_step_angle_horz = 1.1;1 ;(degree) size of step camera moved in horizontal position while shooting 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 ; position (3rd person view) for particles of fire fire_point2 = 0,0.216,0.730 ; position (3rd person view) for particles of fire (when shooting with secondary fire) flame_particles = weapons\generic_weapon05 ; particles for shooting effects smoke_particles = weapons\generic_shoot_00 grenade_flame_particles = weapons\generic_weapon01 shell_point = 0,0.216,0.174 ; position (3rd person view) for shell to throw out shell_particles = weapons\generic_shells ; name of the particles for 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 ; size of damage by bullet hit_impulse = 140 ; size of physic impulse by bullet hit_type = fire_wound ; [] type of the wound fire_distance = 1700 ; maximum fire distance that bullet can fly bullet_speed = 1000 ; starting bullet speed rpm = 750 ; max round per minute 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 ; name of the section of the hud position = -0.026,-0.172,0 ; position (offset) and orientation of the weapon in the hands of character orientation = 0,0,0 ; (3rd person view) ;--STRAP PARAMETERS----------------------------------------------------------------- strap_position = -0.16,-0.40,0.15 ; position (offset) and orientation of the weapon when it is strapped strap_orientation = -10,-5,10 ; (3rd person view in degrees) strap_bone0 = bip01_spine2 strap_bone1 = bip01_spine1 visual = weapons\ak-101\wpn_ak101 ; name of the model for 3rd person view light_color = 0.6,0.5,0.3 ; params for light during the fire light_range = 5 ; radius light_var_color = 0.05 light_var_range = 0.5 light_time = 0.2 ph_mass = 5 ; physic mass (kg) ;addons scope_status = 2 ; 0 - no addon silencer_status = 2 ; 1 - permanent grenade_launcher_status = 0;2 ; 2 - attachable zoom_enabled = true ; (on,off)zoom mode (right mouse button) scope_zoom_factor = 50 ; fov for zoom mode scope_name = wpn_addon_scope ; section name for the attachable scope scope_x = 42 ; offset in inventory icon scope_y = 3 silencer_name = wpn_addon_silencer ; section name for the attachable silencer silencer_x = 218 ; offset in inventory icon silencer_y = 13 grenade_launcher_name = wpn_addon_grenade_launcher; section name for the attachable grenade launcher grenade_launcher_x = 116 ; offset in inventory icon 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 ; name of the bone in the model for grenade launcher ; 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 ;to hide crosshair in zoom ; 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"
Авторы
Статья создана:
По материалам мода Russian Guns за авторством: