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

Створення реактивних підствольних гранат


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

Ідея звичайно пахне маренням. Хоча в моді над яким зараз працюю я її реалізував.

Суть такого нововведення в тому, щоб підствольник міг стріляти реактивними гранатами-пострілами (аля ОГ-7В).

Приступимо!

1) Відкриваємо configs/weapons/weapons.ltx та копіюємо секцію опису пострілу M-203:

[ammo_m209]:ammo_base
 GroupControlSection	= spawn_group
 discovery_dependency =
 $spawn			= "weapons\ammo\ammo_m209" ; option for Level Editor
 class			= S_M209
 cform           = skeleton
 visual          = dynamics\weapons\wpn_ammo\ammo_m209.ogf
 description		= ammo-m209_descr
 slot = -1
 $prefetch 		= 64
 
 cost			= 3500
 
 box_size		= 1
 
 inv_name		= ammo-m209
 inv_name_short	= ammo-m209_s
 inv_weight		= 0.1
 
 inv_grid_width		= 1
 inv_grid_height		= 1
 inv_grid_x			= 5
 inv_grid_y			= 13
 
 kill_msg_x			= 61
 kill_msg_y			= 232
 kill_msg_width		= 19
 kill_msg_height		= 22
 
 
 k_dist			= 1
 k_disp			= 1
 k_hit			= 1
 k_impulse		= 1
 k_pierce		= 0.25
 k_ap			= 0.25
 impair			= 1
 buck_shot		= 0
 tracer			= off
 wm_size         = 0.05
 
 fake_grenade_name = wpn_fake_missile2
 
 ;могут ли боеприпасы быть неограниченными : 1 - могут, 0 - не могут
 can_be_unlimited = true ;false

І перепишемо її:

[ammo_m209rocket]:ammo_base
 GroupControlSection	= spawn_group
 discovery_dependency =
 $spawn			= "weapons\ammo\ammo_m209rocket" ; option for Level Editor
 class			= S_M209
 cform           = skeleton
 visual          = dynamics\weapons\wpn_ammo\ammo_m209.ogf
 description		= ammo-m209rocket_descr
 slot = -1
 $prefetch 		= 64
 
 cost			= 7500
 
 box_size		= 1
 
 inv_name		= ammo-m209rocket
 inv_name_short	= ammo-m209rocket_s
 inv_weight		= 0.15
 
 inv_grid_width		= 1
 inv_grid_height		= 1
 inv_grid_x			= 5
 inv_grid_y			= 13
 
 kill_msg_x			= 61
 kill_msg_y			= 232
 kill_msg_width		= 19
 kill_msg_height		= 22
 
 
 k_dist			= 1
 k_disp			= 1
 k_hit			= 1
 k_impulse		= 1
 k_pierce		= 0.25
 k_ap			= 0.25
 impair			= 1
 buck_shot		= 0
 tracer			= off
 wm_size         = 0.05
 
 fake_grenade_name = wpn_fake_missile13
 
 ;могут ли боеприпасы быть неограниченными : 1 - могут, 0 - не могут
 can_be_unlimited = true ;false

Як бачите, тут ми поміняли лише системне ім'я, посилання на опис, вага, вартість та посилання на fake_missile. А ось це і є основа всього =)

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

Отже, у цьому файлі трохи нижче ми бачимо описи конкретних fake'ов. Так ось, після всіх рідних fake'ів ми вставимо ось такий:

[wpn_fake_missile13]:identity_immunities,default_weapon_params
 $prefetch 			= 32
 visual              = dynamics\weapons\wpn_ammo\ammo_m209.ogf
 cform               = skeleton
 class               = G_FAKE
 
 inv_weight			= 0
 
 cost				= 150
 
 blast				= 2.00 ;Взрывная волна(значение влияет на эффект размазанности если ГГ попал в радиус)
 blast_r				= 15 ;Радиус взрывной волны
 blast_impulse		= 350 ;Сила с которой волна раскидывает физические объекты
 ;delete
 blast_impulse_factor = 1 ;Судя по всему наличие самой волны (типа 1=true 0=false)
 
 
 frags				= 30 ;Осколки(тут прописано количество онных)
 frags_r				= 20 ;На какое растояние полетят осколки(желательно делать больше blast_r)
 frag_hit			= 0.50 ;Повреждение наносимое одним осколком
 frag_hit_impulse	= 50 ;Сила с которой осколок толкнет физический объект
 
 hit_type_blast		= explosion ;Тип урона взрывной волны
 hit_type_frag		= fire_wound ;Тип урона осколков
 
 up_throw_factor		= 0.7 ;Х.з.
 
 ;trail				= weapons\rpg_trail_01, weapons\rpg_trail_02
 
 explode_particles	= explosions\explosion_01 ;Визуал взрыва
 
 
 light_color		    = 1.9,1.4,0.5 ;Цвет вспышки при взрыве
 light_range		    = 14.0 ;Яркость вспышки
 light_time 		    = 0.85 ;Время свечения(60.0 = 10сек)
 
 
 ph_mass			 = 5 ;Физическая масса
 ;engine_f			= 530
 ;engine_u			= 90
 
 jump_height = 1 ;Подпрыгивание гранаты перед взрывом
 
 ;трассы от осколков
 fragment_speed		= 100 ;Скорость полёта осколков
 
 wm_size         	= 0.05 ;Размер отверстия от осколка(на стенах и т.д.)
 ;wallmarks
 wallmark_section		 = explosion_marks
 explode_duration		 = 5		;подолжительность взрыва (с)
 
 ;звуки
 snd_explode = weapons\f1_explode ;Звук взрыва
 snd_fly_sound	= weapons\rocket_fly ;Звук полета(работы двигателя)
 
 ;свойства которые читаются, но не используются
 inv_name		= ammo-vog-25p
 inv_name_short	= ammo-vog-25p
 inv_weight		= .2
 
 inv_grid_width		= 1
 inv_grid_height		= 1
 inv_grid_x			= 19
 inv_grid_y			= 9
 
 kill_msg_x			= 38
 kill_msg_y			= 233
 kill_msg_width		= 21
 kill_msg_height		= 22
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Свойства CustomRocket
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 engine_present				= true		;присутствует ли в ракете двигатель
 engine_work_time			= 3000		;время работы двигателя (в милисекундах)
 engine_impulse				= 300		;разгонная сила двигателя
 engine_impulse_up			= 133,906	;подъёмная сила двигателя( установлена сила при которой снаряд немного опускается)
 engine_particles 			= weapons\rpg_trail_00 ;визуал работы двигателя
 lights_enabled 		= true			;свет вокруг ракеты, во время полета
 trail_light_color 	= 0.6,0.5,0.3 ;цвет освещения во время полёта
 trail_light_range 	= 8.0 ;яркость освещения во время полета
 force_explode_time  = 10000 ;время в милисекундах через которое снаряд взорвется не достигнув цели(типа если пальнуть вверх)

Зберігаємо weapons.ltx

2) Додавання до зброї. Відкриємо для прикладу w_fn2000.ltx і знайдемо рядок:

grenade_class = ammo_m209

І поміняємо на:

grenade_class = ammo_m209, ammo_m209rocket

Зберігаємо w_fn2000.ltx

3) Ідемо в gamedata \ configs \ text \ rus і відкриваємо st_items_weapons.xml

У ньому з анології створюємо секції, що містять:

ammo-m209rocket_descr ;Опис 
ammo-m209rocket ;Ім'я в інвентарі
ammo-m209rocket_s ;Ім'я в слоті

От і все. Тепер якщо дати ГГ ФН-2000 і ці гранати він зможе легко розправитися з будь-яким ворогом =)


   
Цитата