Для редактирования уже существующих апгрейдов на примере АК74 нам обязательно понадобятся файлы:
1. configs\weapons\upgrades\w_ak74_up.ltx
2. configs\text\rus\st_items_weapons_upgrades.xml
3. configs\weapons\upgrades_properties.ltx
4. configs\weapons\w_ak74.ltx
5. configs\ui\textures_descr\ui_ingame2_common.xml
Итак, начнём, открыв файл №1. Видим уже привычную нам параметро-секционную структуру файла:
[секция1]
параметр1 = значение1
параметр2 = значение2
параметр3 = значение3
...
[секция2]
параметр1 = значение1
параметр2 = значение2
...
Все секции в файле №1 можно разбить на три типа:
1. Показывающие стоимость, изменения и значения описаний при апгрейде. Эти секции - не главные, на них идёт ссылка с секций вторых типов. Рассмотрим параметры на примере секции:
[up_sect_c_ak74]
cost = 1600
value = -30
cam_dispersion = -0.21;0.7
cam_dispersion_inc = -0.21;0.7
cam_step_angle_horz = -0.21;0.7
zoom_cam_dispersion = -0.2;0.6
zoom_cam_dispersion_inc = -0.2;0.6
zoom_cam_step_angle_horz = -0.2;0.6
Параметр cost означает цену, которую должен заплатить игрок для осуществления апгрейда.
Параметр value. Мы знаем, что во множестве апгрейдов есть такие, описания которых сводится к типу: [характеристика] [+ или -] [значение]%. Например: "Отдача -30%". Значение, которое показывается в данном случае берётся из параметра value (остальные случаи, в которых описание не подходит под эту схему, например, "не стреляет дробью" рассмотрим потом). ВНИМАНИЕ: это значение является словесным описанием и никак не влияет на характеристики оружия". Т.е. можно в нашей секции поставить value = -10000. Суть апгрейда не изменется, изменется только его описание.
Параметры изменения характеристик. Далее следуют изменения характеристик оружия. В значениях параметров указывается изменение, относительное по отношению к старым характеристикам. Допустим, перед апгрейдом было:
cam_dispersion = 0.7
Указав в параметрах в файле №1:
cam_dispersion = -0.21
в результате получаем:
cam_dispersion = 0.49
2. Главные секции апгрейда. Опять рассмотрим параметры:
[up_c_ak74]
scheme_index = 0, 2
known = 1
effects = up_gr_ac_ak74
section = up_sect_c_ak74
property = prop_recoil
precondition_functor = inventory_upgrades.precondition_functor_a
precondition_parameter = true
effect_functor = inventory_upgrades.effect_functor_a
effect_parameter = something_here
; ui
prereq_functor = inventory_upgrades.prereq_functor_a
prereq_tooltip_functor = inventory_upgrades.prereq_tooltip_functor_a
prereq_params = up_c_ak74
name = st_upg_porsh_recoil
description = st_upg_porsh_recoil_descr
icon = ui_wp_upgrade_41
Параметр scheme_index указывает положение иконки апгрейда в дереве апгрейдов (оно появляется при нажатии кнопки "улучшить") Подробнее на этом параметре остановимся во втором спойлере.
Параметр effects. Всем хорошо известно, что ап №1 во втором столбце дерева апов можно получить только тогда, когда проведены апы №1 и №3 в первом столбце. Для открытия апов после проведения других и служит параметр effects, включающий другие апгрейды. Он даёт ссылку на секцию №3. Подробнее на них остановимся чуть ниже.
Параметр section указывает ссылку на секцию №1. От этого значения зависит изменения при апе.
Параметр property указывает тип проводимого апа. Типы апов можно взять в начале файла №3. Подробнее об этом параметре в спойлере №3.
Типы апов:
prop_weight;; Вес
prop_silencer;; Глушитель
prop_underbarrel_slot;; Крепление подствольника
prop_reliability;; Надежность
prop_bullet_speed;; Настильность
prop_recoil;; Отдача
prop_ammo_size;; Патроны
prop_grenade_launcher;; Подствольник
prop_scope_4x;; Прицел 4
prop_scope_1.6x;; Прицел 1.6
prop_rpm;; Скорострельность
prop_calibre;; калибр (9x18, 5x45)
prop_dispersion;; Точность
prop_inertion;; Удобство
prop_armor;;Броня
prop_damage;;Повреждение
prop_durability;;Износостойкость (прочность)
prop_restore_bleeding;;Уменьшение кровотечения
prop_restore_health;;Восстанавление здоровья
prop_night_vision;;Прибор ночного виденья
prop_power;;Вост стамины
prop_tonnage;;Переноимый вес
prop_radio_chem;;Радио-хим защита
prop_thermo_electro;;Термо-электро защита
prop_psy;;Пси защита
prop_artefact;;Слот для артефактов
Параметр prereq_params. В значении параметра указывайте секцию, в которой находится параметр. Нужно для скриптовых целей.
Параметр name содержит ссылку на текстовый блок из файла №2. В нашем случае:
name = st_upg_porsh_recoil
<string id="st_upg_porsh_recoil">
<text>Модификация газового поршня</text>
</string>
Параметр description похож на параметр name, но касается описания апгрейда. Здесь:
description = st_upg_porsh_recoil_descr
<string id="st_upg_porsh_recoil_descr">
<text>Установка компенсатора газового поршня позволяет уменьшить отдачу</text>
</string>
Параметр icon содержит указатель на описание иконок в файле №5.
Вот структура файла:
<texture id="[указатель на иконку]" x="[координата x верхнего левого пикселя иконки]" y="[координата y верхнего левого пикселя иконки]" width="[ширина иконки]" height="[высота]" />
В нашем случае:
<texture id="ui_wp_upgrade_41" x="420" y="944" width="70" height="40" />
3. Секции, объединяющие апгрейды в группы апгрейдов. (в единственном параметре elements указываются апгрейды, входящие в группу, т.е. ссылки на секции вторых типов) Из группы апгрейдов может быть проведён только один апгрейд (в первом столбце может быть проведён только один из апгрейдов - №1 или №2). При включении группы апгрейдов включаются все апгрейды, входящие в группу. Для включения группы необходимо, чтобы все апгрейды с эффектом включения этой группы были проведены. (Для открытия группы апгрейдов up_gr_ac_ak74 необходимо, чтобы были проведены апгрейды up_gr_a_ak74 и up_gr_c_ak74. Названия тут ни при чём: в главных секциях (тип секции №2) этих двух апгрейдов параметр effects принимает значение up_gr_ac_ak74)
Таким образом, каждый апгрейд:
1. Имеет какие-то характеристики.
2. Имеет какое-то описание.
3. Принадлежит к какой-то группе апгрейдов.
Теперь несколько важных замечаний:
1. В файле №4 (конфиг самого АК74 и его уникальных модификаций) присутствует несколько параметров:
Параметр upgrades. В его значениях перечисляются группы апгрейдов, апгрейды которых могут быть проведены на чистом АК74. Перечисление идёт через запятую. После последней группы апгрейдов запятая не нужна.
Параметр installed_upgrades указывает апгрейды, которые уже проведены в этом оружии. Здесь указываются не группы апгрейдов, а сами апгрейды, т.е. секции второго типа.
Автор: IQDDD