Создание нового оружия

Материал из Mod Wiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 14:17, 31 июля 2007 (править)
BAC9-FLCL (Обсуждение | вклад)
(Практика)
← К предыдущему изменению
Версия 14:21, 31 июля 2007 (править) (отменить)
BAC9-FLCL (Обсуждение | вклад)

К следующему изменению →
Строка 33: Строка 33:
;----------------------------------------------------------------------------------- ;-----------------------------------------------------------------------------------
-cost = 2;4000 ; the price of the item+cost = 2;4000
-weapon_class = assault_rifle ; the type of the box that will be used in buy-menu in multiplayer mode +weapon_class = assault_rifle
-ammo_limit = 210 ; obsolete+ammo_limit = 210
-ammo_elapsed = 30 ; obsolete+ammo_elapsed = 30
-ammo_mag_size = 30 ; clip (magazine) size+ammo_mag_size = 30
fire_modes = 1, -1 fire_modes = 1, -1
-ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap ; name of the ltx-section of used ammo +ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap
-grenade_class = ammo_vog-25, ammo_vog-25p ; name of the ltx-section of used grenades +grenade_class = ammo_vog-25, ammo_vog-25p
launch_speed = 0 launch_speed = 0
-hand_dependence = 1 ; how many hands (1 or 2) we used to hold weapon in+hand_dependence = 1
single_handed = 0 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)+slot = 2
-animation_slot = 2 ; type of the animation that will be used+animation_slot = 2
- +inv_name = wpn-ak101
-inv_name = wpn-ak101 ; name in inventory +
inv_name_short = wpn-ak101 inv_name_short = wpn-ak101
-inv_weight = 3.3 ; weight in inventory+inv_weight = 3.3
-inv_grid_width = 5 ; position and size of the icon that will be used to display weapon in the inventory menu+inv_grid_width = 5
-inv_grid_height = 2 ; all icons are on the texture ui_icon_equipment.dds, +inv_grid_height = 2
-inv_grid_x = 11 ; position and size are in terms of 64x64 squares+inv_grid_x = 11
inv_grid_y = 29 inv_grid_y = 29
Строка 66: Строка 65:
kill_msg_height = 28 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 &laquo switches to;» sight swinging (created be effector). +
-;Weapon recoil in the game also created by recoil effector. +
-;+
;----------------------------------------------------------------------------------- ;-----------------------------------------------------------------------------------
;params of weapon recoil ;params of weapon recoil
-fire_dispersion_base = 0.15;0.2 ;угол (в градусах) базовой дисперсии оружия (оружия зажатого в тисках)+ 
 +fire_dispersion_base = 0.15;0.2
control_inertion_factor = 1.1f;1.25f control_inertion_factor = 1.1f;1.25f
;отдача ;отдача
-cam_relax_speed =6;5;3.5; 0.15 ;скорость возврата в исходное положение+cam_relax_speed =6;5;3.5; 0.15
-cam_dispersion = 0.1;0.15 ;увеличения угла (в градусах) с каждым выстрелом+cam_dispersion = 0.1;0.15
-cam_dispersion_inc = 0.2;0.3 ;увеличениe cam_dispersion с каждым выстрелом+cam_dispersion_inc = 0.2;0.3
-cam_dispertion_frac = 0.8;0.9 ;ствол будет подыматься на cam_dispersion*cam_dispertion_frac +- cam_dispersion*(1-cam_dispertion_frac)+cam_dispertion_frac = 0.8;0.9
-cam_max_angle = 10.0 ;максимальный угол отдачи+cam_max_angle = 10.0
-cam_max_angle_horz = 20.0 ;(degree) maximum shot horizontal degree +cam_max_angle_horz = 20.0
-cam_step_angle_horz = 1.1;1 ;(degree) size of step camera moved in horizontal position while shooting+cam_step_angle_horz = 1.1;1
-fire_dispersion_condition_factor = 5.7;5 ;увеличение дисперсии в процентах при максимальном износе +fire_dispersion_condition_factor = 5.7;5
-misfire_probability = 0.0055;0.003 ;вероятность осечки при максимальном износе +misfire_probability = 0.0055;0.003
misfire_condition_k = 0.06;0.05 misfire_condition_k = 0.06;0.05
-condition_shot_dec = 0.00035;0.0001 ;увеличение износа при каждом выстреле+condition_shot_dec = 0.00035;0.0001
;----------------------------------------------------------------------------------- ;-----------------------------------------------------------------------------------
-fire_point = 0,0.216,0.638 ; position (3rd person view) for particles of fire +fire_point = 0,0.216,0.638
-fire_point2 = 0,0.216,0.730 ; position (3rd person view) for particles of fire (when shooting with secondary fire)+fire_point2 = 0,0.216,0.730
-flame_particles = weapons\generic_weapon05 ; particles for shooting effects+flame_particles = weapons\generic_weapon05
smoke_particles = weapons\generic_shoot_00 smoke_particles = weapons\generic_shoot_00
grenade_flame_particles = weapons\generic_weapon01 grenade_flame_particles = weapons\generic_weapon01
-shell_point = 0,0.216,0.174 ; position (3rd person view) for shell to throw out+shell_point = 0,0.216,0.174
-shell_particles = weapons\generic_shells ; name of the particles for shells+shell_particles = weapons\generic_shells
PDM_disp_base = 1.0 PDM_disp_base = 1.0
Строка 115: Строка 104:
; ttc ; ttc
-hit_power = 0.36, 0.4, 0.43, 0.46 ; size of damage by bullet+hit_power = 0.36, 0.4, 0.43, 0.46
-hit_impulse = 140 ; size of physic impulse by bullet +hit_impulse = 140
-hit_type = fire_wound ; [] type of the wound+hit_type = fire_wound
-fire_distance = 1700 ; maximum fire distance that bullet can fly+fire_distance = 1700
-bullet_speed = 1000 ; starting bullet speed+bullet_speed = 1000
-rpm = 750 ; max round per minute+rpm = 750
-use_aim_bullet = true ;Поддерживается ли первая суппер пуля+use_aim_bullet = true
time_to_aim = 1.0 time_to_aim = 1.0
Строка 133: Строка 122:
silencer_bullet_speed = 600 silencer_bullet_speed = 600
-hud = wpn_ak101_hud ; name of the section of the hud+hud = wpn_ak101_hud
-position = -0.026,-0.172,0 ; position (offset) and orientation of the weapon in the hands of character+position = -0.026,-0.172,0
-orientation = 0,0,0 ; (3rd person view)+orientation = 0,0,0
;--STRAP PARAMETERS----------------------------------------------------------------- ;--STRAP PARAMETERS-----------------------------------------------------------------
-strap_position = -0.16,-0.40,0.15 ; position (offset) and orientation of the weapon when it is strapped+strap_position = -0.16,-0.40,0.15
-strap_orientation = -10,-5,10 ; (3rd person view in degrees)+strap_orientation = -10,-5,10
strap_bone0 = bip01_spine2 strap_bone0 = bip01_spine2
strap_bone1 = bip01_spine1 strap_bone1 = bip01_spine1
-visual = weapons\ak-101\wpn_ak101 ; name of the model for 3rd person view+visual = weapons\ak-101\wpn_ak101
-light_color = 0.6,0.5,0.3 ; params for light during the fire+light_color = 0.6,0.5,0.3
-light_range = 5 ; radius+light_range = 5
light_var_color = 0.05 light_var_color = 0.05
light_var_range = 0.5 light_var_range = 0.5
light_time = 0.2 light_time = 0.2
-ph_mass = 5 ; physic mass (kg)+ph_mass = 5
;addons ;addons
-scope_status = 2 ; 0 - no addon+scope_status = 2
-silencer_status = 2 ; 1 - permanent+silencer_status = 2
-grenade_launcher_status = 0;2 ; 2 - attachable+grenade_launcher_status = 0;2
-zoom_enabled = true ; (on,off)zoom mode (right mouse button)+zoom_enabled = true
-scope_zoom_factor = 50 ; fov for zoom mode+scope_zoom_factor = 50
-scope_name = wpn_addon_scope ; section name for the attachable scope+scope_name = wpn_addon_scope
-scope_x = 42 ; offset in inventory icon+scope_x = 42
scope_y = 3 scope_y = 3
-silencer_name = wpn_addon_silencer ; section name for the attachable silencer+silencer_name = wpn_addon_silencer
-silencer_x = 218 ; offset in inventory icon+silencer_x = 218
silencer_y = 13 silencer_y = 13
-grenade_launcher_name = wpn_addon_grenade_launcher; section name for the attachable grenade launcher+grenade_launcher_name = wpn_addon_grenade_launcher
-grenade_launcher_x = 116 ; offset in inventory icon+grenade_launcher_x = 116
grenade_launcher_y = 23 grenade_launcher_y = 23
Строка 221: Строка 210:
visual = weapons\ak-101\wpn_ak101_hud visual = weapons\ak-101\wpn_ak101_hud
-grenade_bone = wpn_grenade ; name of the bone in the model for grenade launcher+grenade_bone = wpn_grenade
; animation names ; animation names
Строка 260: Строка 249:
zoom_rotate_y = 0.017500 zoom_rotate_y = 0.017500
-zoom_hide_crosshair = true ;to hide crosshair in zoom +zoom_hide_crosshair = true

Версия 14:21, 31 июля 2007

В этой статье мы научимся создавать новые образцы вооружения. Для начала, мы будем использовать модели из оригинальной игры. Если вы хотите создать оружие, имеющее уникальный внешний вид, ознакомьтесь с уроком по созданию моделей.

Практика

Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Сделаем, скажем, АК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				
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"

Авторы

Статья создана:

По материалам мода Russian Guns за авторством:

Личные инструменты