Сделаем для ствола AUG дерево апгрейдов с одной веткой:
1 этап, 1 элемент ---> 2 этап, 1 элемент/2 этап, 2 элемент ---> 3 этап, 1 элемент
На первом этапе один апгрейд, на втором два взаимоисключающих апгрейда и на третьем опять один.
В файле
gamedata\configs\weapons\w_aug.ltx пропишем этапы первой ветки аплейтов:
Код
upgrades = up_gr_firstab_aug, up_gr_firstcd_aug, up_gr_firstef_aug
Также пропишем схему апгрейда, тоесть таблицу в которой будут размещаться иконки элементов апгрейда:
Код
upgrade_scheme = upgrade_scheme_aug
В файлы
gamedata\configs\ui\inventory_upgrade.xml, gamedata\configs\ui\inventory_upgrade_16.xml вставим описание таблицы схемы апгрейдов:
gamedata\configs\ui\inventory_upgrade.xml Код
<!--Схема апгрейда AUG--> <template name="upgrade_scheme_aug">
<column>
<cell x="0" y="24" point_x="114" point_y="196"/>
</column>
<column>
<cell x="100" y="0" point_x="193" point_y="207"/>
<cell x="100" y="49" point_x="170" point_y="193"/>
</column>
<column>
<cell x="200" y="24" point_x="139" point_y="199"/>
</column>
</template>
gamedata\configs\ui\inventory_upgrade_16.xmlКод
<!--Схема апгрейда AUG--> <template name="upgrade_scheme_aug">
<column>
<cell x="0" y="24" point_x="114" point_y="196"/>
</column>
<column>
<cell x="80" y="0" point_x="193" point_y="207"/>
<cell x="80" y="49" point_x="170" point_y="193"/>
</column>
<column>
<cell x="160" y="24" point_x="139" point_y="199"/>
</column>
</template>
Как и договаривались в первой колонке одна ячейка, во второй две, в трктьей опять одна.
В секции ячейки (
cell)
x,y - координаты левого верхнего угла иконки,
point_x, point_y - координаты точки-указателя места апгрейда
на картинке с оружем.
В файл
gamedata\configs\weapons\weapons.ltx добавим ссылку на файл описания апгрейдов AUG:
Код
#include "upgrades\w_walther_up.ltx" #include "upgrades\w_wincheaster1300_up.ltx"
;--Добавлен конфиг апгрейдов AUG
#include "upgrades\w_aug_up.ltx"
В файл
gamedata\configs\misc\inventory_upgrades.ltx добавим указатель на ствол:
Код
wpn_ak74u_snag wpn_fort_snag
;--Добавлена возможность апгрейдов AUG
wpn_aug
В файл
gamedata\configs\item_upgrades.ltx добавим ссылку на файл описания апгрейдов AUG:
Код
#include "weapons\upgrades\w_wincheaster1300_up.ltx" #include "weapons\upgrades\w_protecta_up.ltx"
;--Добавлен конфиг апгрейдов AUG
#include "weapons\upgrades\w_aug_up.ltx"
Теперь займемся самим файлом
gamedata\configs\weapons\upgrades\w_aug_up.ltx в котором будут содержаться описания апгрейдов оружия. Сначала пропишем этапы апгрейда с указанием содержащихся в них элементов апгрейда:
Код
[up_gr_firstab_aug] elements = up_firsta_aug
[up_gr_firstcd_aug]
elements = up_firstc_aug, up_firstd_aug
[up_gr_firstef_aug]
elements = up_firste_aug
Выше этих строк нужно прописать конфигурации самих элементов:
Код
[up_firsta_aug] scheme_index = 0, 0
known = 1
effects = up_gr_firstcd_aug
section = up_sect_firsta_aug
property = prop_reliability
precondition_functor = inventory_upgrades.precondition_functor_a
precondition_parameter = a & b
effect_functor = inventory_upgrades.effect_functor_a
effect_parameter = on_weapon_upgrade_something_here
; ui
prereq_functor = inventory_upgrades.prereq_functor_a
prereq_tooltip_functor = inventory_upgrades.prereq_tooltip_functor_a
prereq_params =
name = st_up_zat_a1_name
description = st_up_zat_a1_descr
icon = ui_inGame2_upgrade_TRs_301_1
;;...
[up_firstc_aug]
scheme_index = 1, 0
known = 1
effects = up_gr_firstef_aug
section = up_sect_firstc_aug
property = prop_bullet_speed
precondition_functor = inventory_upgrades.precondition_functor_a
precondition_parameter = a & b
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 =
name = st_up_zat_b5_name
description = st_up_zat_b5_descr
icon = ui_inGame2_upgrade_TRs_301_2
;;...
[up_firstd_aug]
scheme_index = 1, 1
known = 1
effects = up_gr_firstef_aug
section = up_sect_firstd_aug
property = prop_rpm
precondition_functor = inventory_upgrades.precondition_functor_a
precondition_parameter = a & b
effect_functor = inventory_upgrades.effect_functor_a
effect_parameter = something_here
prereq_functor = inventory_upgrades.prereq_functor_a
prereq_tooltip_functor = inventory_upgrades.prereq_tooltip_functor_a
prereq_params =
name = st_up_zat_b6_name
description = st_up_zat_b6_descr
icon = ui_inGame2_upgrade_TRs_301_3
;;...
[up_firste_aug]
scheme_index = 2, 0
known = 1
effects =
section = up_sect_firste_aug
property = prop_reliability
precondition_functor = inventory_upgrades.precondition_functor_a
precondition_parameter = a & b
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 =
name = st_up_zat_c2_name
description = st_up_zat_c2_descr
icon = ui_inGame2_upgrade_TRs_301_4
где,
scheme_index - колонка, ячейка (счет с нуля!) для иконки в схеме апгрейда
known - извстен или нет апгрейд механикам
effects - следующий апгрейд в линейке апгрейдов (апгрейд может содержать несколько элементов)
section - секция описывающяя изменения параметров оружия при установке апгрейда
property - секция описывающая в файле upgrades_properties.ltx свойство апгрейда.
precondition_functor - функция проверки возможности апгрейда (делает его механик, хватает ли денег, нет доп условий и т.п.)
precondition_parameter - логическое выражение разрешающее апгрейд? (возможно параметр не анализируется)
effect_functor - функция оплаты выполненного апгрейда
prereq_functor - функция отображения нужных сдедств для апгрейда
prereq_tooltip_functor - функция не используется (отображение нужного инструмента?)
name - имя элемента апгрейда
description - описание элемента апгрейда
icon - иконка элемента апгрейда
Еще выше вставим секции параметров апгрейда:
Код
[up_sect_firsta_aug] ;Надежность(1)10%
;---------------
cost = 700
value = +10
;увеличение дисперсии в процентах при максимальном износе
fire_dispersion_condition_factor = -1 ;15
;шанс осечки при изношености больше чем misfireStartCondition
misfire_start_prob = -0.0007
;шанс осечки при изношености больше чем misfireEndCondition
misfire_end_prob = -0.012 ;0.03.03
[up_sect_firstc_aug]
;Настильность(2)20%
;------------------
cost = 1050
value = +20
bullet_speed = +85
fire_dispersion_base = -0.02
[up_sect_firstd_aug]
;Скорострельность(2)15%
;----------------------
cost = 1050
value = +15
rpm = 100
[up_sect_firste_aug]
;Надежность(3)30%
;---------------
cost = 1300
value = +30
;увеличение дисперсии в процентах при максимальном износе
fire_dispersion_condition_factor = -1 ;15
;увеличение изношености при выстреле очередью
condition_queue_shot_dec = -0.0003 ;0.0013
;увеличение изношености при одиночном выстреле
condition_shot_dec = -0.0003 ;0.0011
;шанс осечки при изношености больше чем misfireStartCondition
misfire_start_prob = -0.0025
;шанс осечки при изношености больше чем misfireEndCondition
misfire_end_prob = -0.025 ;0.03
В которых собственно указыватся их стоимость
cost, влияние на интегрированный
параметр (скорострельность, точность и т.п.)
value и собственно сами параметры оружия
которые меняються на указанную величину.
Теперь можно прописать возможность апгрейда механнику, на пример Кардану:
Код
;--Добавлена возможность апгрейдов AUG wpn_aug
...
[zat_a2_stalker_mechanic_upgr]
;--Кардан делает все апгрейды AUG
up_sect_firsta_aug = true
up_sect_firstc_aug = true
up_sect_firstd_aug = true
up_sect_firste_aug = true
Теперь оружие можно апгрейдить и ремонтировать.