Ідея звичайно пахне маренням. Хоча в моді над яким зараз працюю я її реалізував.
Суть такого нововведення в тому, щоб підствольник міг стріляти реактивними гранатами-пострілами (аля ОГ-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 і ці гранати він зможе легко розправитися з будь-яким ворогом =)