CoP. Создание реактивных выстрелов
Материал из S.T.A.L.K.E.R. Inside Wiki
Идея конечно попахивает бредом. Хотя в моде над которым сейчас тружусь я её реализовал.
Суть такого нововведения в том что бы подстволшьник мог стрелять реактивными гранатами-выстрелами (аля ОГ-7В)
Приступим!!!
1) Открываем 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 c определенными парраметрами.
Следовательно, в этом же файле чуть ниже мы видим описания конкретных 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 и эти гранаты он сможет с лёгкостью разделаться с любым врагом =)
Автор: WincentDark69