Сповіщення
Очистити все

Створення нової зброї


Ранг:
Майстер
Роль:
Гість
Записи:
750
Приєднався:
2 роки тому
 

У цій статті ми навчимося створювати нові зразки озброєння. Для початку ми будемо використовувати моделі з оригінальної гри.

Додамо в гру АК101 .

 

Зовнішній вигляд

Подбаємо про те, щоб наша зброя відрізнялася зовні від того ж АК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 .

Тепер пропишемо у ці моделі створені нами текстури. .

PS від Кепа: Взагалі, якщо ви створюєте нову зброю на основі старої моделі, то зручніше прописуватиме її через файл gamedata\config\misc\unique_items.ltx (у Тіні чорнобиля). У Чистому небі унікальні стволи лежать у файлах зброї. Сенс у тому, що вам не потрібно переписувати всі значення зброї в новий файл, а просто треба додати посилання на нові текстури та описи, і перерахувати властивості, які Ви хочете замінити. Крім того, створюючи окремий файл моделі для нової зброї Ви тупо завантажуєте одну і ту ж інформацію в пам'ять по другому колу (це погано, так). Все інше треба робити як написано далі.

Якщо створюєте зброю з новою моделлю, то обов'язково не залишайте її без змін. Чомусь у грі не може бути двох зброї з однаковими моделями. ЧН і ЗП це файл зі зброєю-прототипом, а в ТЧ unique_items) інакше при завантаженні гра вилітатиме, приблизно так: argument:can not find section 'назва вашої зброї'

Іконки

Додамо до гри іконки, якими зброя відображатиметься в інвентарі.

Ось, що вийшло зрештою:

Конфігі

Нову зброю ми робитимемо на базі оригінальних конфігураційних файлів. Створимо АК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 .		 
 
 
 	    	
 		
 
 
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_la 			 _ _ _ 			 _ _ 						
 

 						
 					

 						
 
 

;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 pons 
\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. _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 granada 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_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_hol_g				 w_gl 
anim_idle_sprint = idle_sprint

 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;; 
;HUD offset в режимі zoom (всі) 
;(use CONSOLE: hud_adjust_mode 0,1,2;
 
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, Розширте асортимент торговців.

А ось як воно виглядатиме у грі:

PS При створенні нової зброї можна припуститися деяких помилок у конфізі, що призведе до вильоту гри. При такому випадку відразу після вильоту гри заходимо в будь-який текстовий редактор і натискаємо клавіші 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 : Чи не find model files's ogf'.

У цьому прикладі видно, що або ви не створили папку з необхідною моделлю зброї, або неправильно прописаний шлях до файлу.

 

 



   
Цитата