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

Материал из 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				
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"

Внешний вид

Теперь позаботимся о том, чтобы наше оружие отличалось внешне от того же АК74.

Текстуры

Нарисуем для оружия новую текстуру. Подробно останавливаться на этом процессе не буду, смотрите урок, посвященный текстурам.

Основываясь на текстуре АК74, мы нарисовали вот такую текстуру:

Файлы текстур мы назвали:

  • wpn_ak10.dds
  • wpn_ak10_bump#.dds
  • wpn_ak10_bump.dds

Модели

Скопируем папку:

gamedata\meshes\weapons\ak47\

И назовем её ak-101. Содержимое, соответственно, переименуем в:

  • wpn_ak101.ogf
  • wpn_ak101_hud.ogf.

Теперь пропишем в эти модели

Авторы

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

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

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