Как добавить своё оружие?
Нужно:
1. Нужен HEX-редактор или другой, но главное, что бы редактировал OGF модели (проверял: стандартный блокнот не работает)
2. Блокнот или другая прога
3. Умение создавать моды
Итак, делаем мод АК47:
1. Скопировать папку ak74 (gamedata\meshes\weapons) и назвать её ak47 и в ней wpn_ak74.ogf и wpn_ak74_hud.ogf переименовать на wpn_ak47.ogf и wpn_ak47_hud.ogf.
2. Нужно в 3D - шке (gamedata\meshes\weapons\ak47\wpn_ak47_hud.ogf и gamedata\meshes\weapons\ak47\wpn_ak47.ogf) с помощью HEX - редактора поменять все 74 на 47
3. Скопировать конфиг АК74 (gamedata\config\weapons\w_ak74.ltx) и назвать его w_ak47.ltx
4. В gamedata\config\weapons\w_ak47.ltx все "74" поменять на "47"
5. В gamedata\config\weapons\weapons.ltx после:
#include "w_ak74.ltx"
добавить
#include "w_ak47.ltx"
6. В gamedata\config\text\rus\string_table_enc_weapons.xml добавить своё оружие. Я сделал так:
...
</string>
<string id="enc_weapons1_wpn-addon-silencer">
<text>Эффективный глушитель, собранный в Зоне какими-то умельцами. С ним в комплекте идёт набор переходников под оружие любого калибра.</text>
</string>
<string id="enc_weapons1_wpn-ak74">
<text>Автомат складной образца 1974 года под патрон 5,45x39 мм. Представляет собой простое и надёжное оружие, хотя дешёвизна в производстве несколько сказалась на удобстве использования и точности боя. В Зоне это основное оружие военных сталкеров и многих одиночек.\n Боеприпасы:\n обычный 5,45x39 мм,\n бронебойный 5,45x39 мм БП.</text>
</string>
...теперь идёт моё...
<string id="enc_weapons1_wpn-ak47">
<text>Автомат образца 1947 года под патрон 7,62x39 мм. Представляет собой простое, надёжное и мощное оружие. В Зоне это оружие найти очень тяжело.\n Боеприпасы:\n обычный 7,62x39 мм,\n бронебойный 7,62x39 мм БП.</text>
</string>
...мой текст закончился...
<string id="enc_weapons1_wpn-ak74_m1">
<text>Модифицированный затворный механизм увеличивает скорость стрельбы.</text>
</string>
<string id="enc_weapons1_wpn-ak74u">
<text>По своим габаритам и массе Акм 74/2у (укороченный) близок к пистолетам-пулеметам, однако принцип действия механизма данного оружия и применяемый в нём патрон делают его представителем класса автоматов. К достоинствам относятся малые габариты, что крайне полезно при ведении боя в городских условиях, и довольно высокая пробивающая способность патрона. Главные недостатки - малая прицельная дальность и склонность к быстрому перегреву при стрельбе очередями.\n Боеприпасы:\n обычный 5,45x39 мм,\n бронебойный 5,45x39 мм БП.</text>
</string>
7. В gamedata\sounds\weapons скопировать:
ak74_draw.ogg
ak74_reload.ogg
ak74_shoot.ogg
ak74_shot_1.ogg
ak74_shot_3.ogg
ak74_shot_0.ogg
ak74_shot_2.ogg
и назвать:
ak47_draw.ogg
ak47_reload.ogg
ak47_shoot.ogg
ak47_shot_1.ogg
ak47_shot_3.ogg
ak47_shot_0.ogg
ak47_shot_2.ogg
(можно поставить свои звуки оружия)
8. В gamedata\textures\wpn:
wpn_ak74.dds
wpn_ak74_bump#.dds
wpn_ak74_bump.dds
и заменить:
wpn_ak47.dds
wpn_ak47_bump#.dds
wpn_ak47_bump.dds
(можно поставить свои текстуры)
9. В gamedata\textures\ui открываем ui_icon_equipment.dds и редактируем. Нужно поставить значок на оружие (появлиется при купле/продаже и просмотре описания). Можно скопировать на свободное место иконку АК74, а можно добавить свою.
10. Открываем gamedata\config\weapons\w_ak47.ltx
И найдем такие строки:
inv_grid_width = 4
inv_grid_height = 2
inv_grid_x = ...
inv_grid_y = ...
Где:
inv_grid_width - ширина в сетке 50х50
inv_grid_height - высота в сетке 50х50
inv_grid_x - местонахождение по х
inv_grid_y - местонахождение по y
(если не поняли, я про значок для оружия)
В принципе мод готов, но при убийстве ГГ, игра вылетает. Дополняем мод.
10. В gamedata\config\mp\mp_ranks.ltx, все фразы, содержащие "ak74", копируем и называем "ak47"
11. В gamedata\config\mp\artefacthunt_game.ltx, фразу "mp_wpn_ak74" копируем и называем "mp_wpn_ak47"
12. В gamedata\config\mp\weapons_mp\weapons_mp.ltx, копируем:
...
[mp_wpn_ak74]:wpn_ak74
$spawn = ""
class = W_AK74 ; class of the weapon that corresponding to CPP class
scope_name = mp_wpn_addon_scope
silencer_name = mp_wpn_addon_silencer
grenade_launcher_name = mp_wpn_addon_grenade_launcher
ammo_class = mp_ammo_5.45x39_fmj, mp_ammo_5.45x39_ap ; name of the ltx-section of used ammo
grenade_class = mp_ammo_vog-25, mp_ammo_vog-25p
tracers = on
tracers_color_ID = 0
;params of weapon recoil
fire_dispersion_base = 0.125;0.14;0.18;0.2 ;угол (в градусах) базовой дисперсии оружия (оружия зажатого в тисках)
control_inertion_factor = 1.25f
;отдача
cam_relax_speed = 0.75;0.6;0.15 ;скорость возврата в исходное положение
cam_dispersion = 0.15 ;увеличения угла (в градусах) с каждым выстрелом
cam_dispersion_inc = 0.3 ;увеличениe cam_dispersion с каждым выстрелом
cam_dispertion_frac = 0.9 ;ствол будет подыматься на cam_dispersion*cam_dispertion_frac +- cam_dispersion*(1-cam_dispertion_frac)
cam_max_angle = 30.0 ;максимальный угол отдачи
cam_max_angle_horz = 20.0 ;(degree) maximum shot horizontal degree
cam_step_angle_horz = 1.0 ;(degree) size of step camera moved in horizontal position while shooting
fire_dispersion_condition_factor = 5 ;увеличение дисперсии в процентах при максимальном износе
misfire_probability = 0.0003 ;вероятность осечки при максимальном износе
condition_shot_dec = 0.00003 ;увеличение износа при каждом выстреле
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.81;0.825;90 ; size of damage by bullet
hit_impulse = 140 ; size of physic impulse by bullet
hit_type = fire_wound ; [] type of the wound
fire_distance = 1000 ; maximum fire distance that bullet can fly
bullet_speed = 900; starting bullet speed
rpm = 600 ; max round per minute
;params when silencer is attached
;similar to corresponding params without prefix silencer_
silencer_hit_power = 25
silencer_hit_impulse = 120
silencer_fire_distance = 250
silencer_bullet_speed = 600
;addons
scope_status = 2 ; 0 - no addon
silencer_status = 2 ; 1 - permanent
grenade_launcher_status = 2 ; 2 - attachable
;-----------------------------------------------------------------------------------
...
и называем:
...
[mp_wpn_ak47]:wpn_ak47
$spawn = ""
class = W_AK47 ; class of the weapon that corresponding to CPP class
scope_name = mp_wpn_addon_scope
silencer_name = mp_wpn_addon_silencer
grenade_launcher_name = mp_wpn_addon_grenade_launcher
ammo_class = mp_ammo_5.45x39_fmj, mp_ammo_5.45x39_ap ; name of the ltx-section of used ammo
grenade_class = mp_ammo_vog-25, mp_ammo_vog-25p
tracers = on
tracers_color_ID = 0
;params of weapon recoil
fire_dispersion_base = 0.125;0.14;0.18;0.2 ;угол (в градусах) базовой дисперсии оружия (оружия зажатого в тисках)
control_inertion_factor = 1.25f
;отдача
cam_relax_speed = 0.75;0.6;0.15 ;скорость возврата в исходное положение
cam_dispersion = 0.15 ;увеличения угла (в градусах) с каждым выстрелом
cam_dispersion_inc = 0.3 ;увеличениe cam_dispersion с каждым выстрелом
cam_dispertion_frac = 0.9 ;ствол будет подыматься на cam_dispersion*cam_dispertion_frac +- cam_dispersion*(1-cam_dispertion_frac)
cam_max_angle = 30.0 ;максимальный угол отдачи
cam_max_angle_horz = 20.0 ;(degree) maximum shot horizontal degree
cam_step_angle_horz = 1.0 ;(degree) size of step camera moved in horizontal position while shooting
fire_dispersion_condition_factor = 5 ;увеличение дисперсии в процентах при максимальном износе
misfire_probability = 0.0003 ;вероятность осечки при максимальном износе
condition_shot_dec = 0.00003 ;увеличение износа при каждом выстреле
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.81;0.825;90 ; size of damage by bullet
hit_impulse = 140 ; size of physic impulse by bullet
hit_type = fire_wound ; [] type of the wound
fire_distance = 1000 ; maximum fire distance that bullet can fly
bullet_speed = 900; starting bullet speed
rpm = 600 ; max round per minute
;params when silencer is attached
;similar to corresponding params without prefix silencer_
silencer_hit_power = 25
silencer_hit_impulse = 120
silencer_fire_distance = 250
silencer_bullet_speed = 600
;addons
scope_status = 2 ; 0 - no addon
silencer_status = 2 ; 1 - permanent
grenade_launcher_status = 2 ; 2 - attachable
;-----------------------------------------------------------------------------------
...
Всё! Мод готов! Теперь осталось прописать оружие торговцу или кинуть на карту.
Таким же способом можно добавить патроны 5,45x39 для этого оружия, но при желании можно играть и так.