Меню
Расширенное меню


Энциклопедия SW


Партнеры
MYSTALKER - лучший портал по сталкеру! STALKER-FUNS

Опрос
Кто лучше?
Всего ответов: 5488

Статистика

Всего в Баре 1
Новичков 1
Опытных 0

Никого нету

Главная » Статьи » Статьи на сайте

Создание новых апгрейдов.
Нам необходимо иметь 7 файлов:
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\ui\inventory_upgrade_16.xml (для широкоформатных)
5. configs\weapons\w_ak74.ltx
6. configs\ui\textures_descr\ui_ingame2_common.xml
7. scripts\inventory_upgrades.script
Перед прочтением текста ниже рекомендуется прочитать содержание первого спойлера.

Итак, начнём по порядку:
1. Создадим главную секцию (секцию типа №2) нового апгрейда, скопировав любую другую и поменяв параметры и само название секции:

Code
[up_pack_a_ak74]
scheme_index            = 3, 0
known                   = 1
effects                 =  
section                 = up_sect_pack_a_ak74
property                = prop_pack

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_pack_a_ak74
name                    = st_upg_pack_a_ak74
description             = st_upg_pack_a_ak74_descr
icon                    = ui_wp_upgrade_30

Как видим, в параметре property "prop_pack", мы указали не сущствующий тип. Мы его создадим самостоятельно чуть позже.

2. Теперь создадим секцию типа №1, которую мы указали в параметре section "up_sect_pack_a_ak74":

Code
[up_sect_pack_a_ak74]
cost                      = 5120
value                    = desc_value_pack_a
rpm                     = 100
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
grenade_launcher_status = 2
grenade_launcher_name   = wpn_addon_grenade_launcher
grenade_launcher_x      = 126
grenade_launcher_y      = 24
control_inertion_factor    = -0.2
inv_weight                = -0.3
PDM_disp_vel_factor     = -0.3;1.7
PDM_disp_accel_factor   = -0.3;1.7

Здесь я собрал все улучшения четырёх апгрейдов, суммировав цену и делая скидку 20% (1600*4*0.8 = 5120) Отсюда и название апгрейда - st_upg_pack_a_ak74. В значении value я поставил "desc_value_pack_a". В данном случае в value присутствует ссылка на текстовый блок, а не кол-во процентов.

3. Теперь вернёмся в главную секцию. Т.к. апгрейд является пакетом апгрейдов up_sect_a_ak74,up_sect_c_ak74,up_sect_e_ak74,up_sect_g_ak74, то после проведения нашего апгрейда, четыре выше упомянутые должны выключиться. Для этого запишем наш апгрейд одновременно в несколько секций типов №3:

Code
[up_gr_ab_ak74]
elements                = up_a_ak74, up_b_ak74, up_pack_a_ak74

[up_gr_cd_ak74]
elements                = up_c_ak74, up_d_ak74, up_pack_a_ak74

[up_gr_ef_ak74]
elements                = up_e_ak74, up_f_ak74, up_pack_a_ak74

[up_gr_gh_ak74]
elements                = up_g_ak74, up_h_ak74, up_pack_a_ak74

Т.к. из одной группы апгрейдов можно провести только один, то при проведении нашего апгрейда остальные "соседи" по группе апгрейдов выключатся.

4. Теперь, пользуясь файлом №2 запишем текстовые блоки, упомянутые в секциях типов №1 и №2.

Code
  <string id="st_upg_pack_a_ak74">
         <text>Пакет апгрейдов №1</text>
     </string>
     <string id="st_upg_pack_a_ak74_descr">
         <text>Пакет апгрейдов №1, включающий в себя увеличение темпа стрельбы, уменьшение отдачи, установку крепежа для подствольного гранатомёта, уменьшение веса оружия</text>
     </string>
     <string id="st_upg_pack_a_ak74">
         <text>Пакет апгрейдов №1 Убийца</text>
     </string>

5. Теперь создадим ui для нашего апгрейда для того, чтобы кнопка апгрейда была видна в дереве апгрейдов. В парамре scheme_index мы указали "3,0". Это значит, что в дереве апгрейдов этот апгрейд будет в 3-ем столбце и 0-ой строке. К каждому оружию предлагается своя схема дерева апгрейдов. Чтобы узнать схему АК74 откроем его конфиг (файл №5) и найдём параметр upgrade_scheme. Его значение - upgrade_scheme_u17b. Откроем файл №4 со схемами апгрейдов. Вот его общая структура:

Code
<template name="[название схемы]">

       [нулевой столбец]<column>
         [нулевая строка нулевого столбца. [b]Соответствует индексу 0,0[/b]]<cell x="[координата x]" y="[координата y]"   />
         [первая строка нулевого столбца. [b]Соответствует индексу 0,1[/b]]<cell x="[координата x]" y="[координата y]"  />
         ...
       [конец нулевого столбца]</column>

       [начало первого столбца]<column>
         [нулевая строка первого столбца. [b]Соответствует индексу 1,0[/b]]<cell x="[координата x]" y="[координата y]"  />
         ...
       [конец первого столбца]</column>
       ...
     [конец схемы]</template>

Найдём интересующую нас схему и добавим столбец и строку:

Code
  <template name="upgrade_scheme_u17b">

       <column>
         <cell x="17" y="5"   />
         <cell x="17" y="50"  />
         <cell x="17" y="100" />
         <cell x="17" y="145" />
         <cell x="17" y="195" />
         <cell x="17" y="240" />
         <cell x="17" y="290" />
         <cell x="17" y="335" />
         <cell x="17" y="385" />
       </column>

       <column>
         <cell x="100" y="50"  />
         <cell x="100" y="100" />
         <cell x="100" y="240" />
         <cell x="100" y="290" />
         <cell x="100" y="385" />
        </column>

       <column>
         <cell x="183" y="145" />
         <cell x="183" y="195" />
         <cell x="183" y="385" />
       </column>
        
       <column>
         <cell x="183" y="5" />
       </column>

     </template>

6. Создадим новый тип апгрейдов: prop_pack. Для этого воспользуемся файлом №3.
Для начала добавим наш тип в начало файла:

Code
[upgrades_properties]
prop_pack
prop_weight    ;; Вес
prop_silencer        ;; Глушитель
prop_underbarrel_slot;; Крепление подствольника
...

Теперь создадим новую секцию:

Code
[prop_pack]
name     = st_prop_weight
icon     = ui_wp_propery_11
functor  = inventory_upgrades.property_functor_d
params   = hit_power, rpm, cost

В нашем случае важен только один параметр:

Code
functor  = inventory_upgrades.property_functor_d

Он указывает, какая скриптовая функция будет составлять описание. Вы можете сами рассмотреть остальные параметры: name - название типа апгрейда (даётся ссылка на текстовый блок), icon - ссылка на указатель иконок из файла №6.

7. Составим функцию описания апгрейда inventory_upgrades.property_functor_d. Для этого откроем файл №7 и впишем туда маленькую функцию:

Code
function property_functor_d( param1, name )
     local prorerty_name = char_ini:r_string(name, "name")
     local value_table = utils.parse_names(param1)
     local section = value_table[1]
     if section then
         local value = char_ini:r_string(section, "value")
         if value then
             return game.translate_string(value)
         end
     end
     return game.translate_string(prorerty_name)
end
Категория: Статьи на сайте | Добавил: Стрел{ОК} (03.03.2011)
Просмотров: 1040 | Комментарии: 1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]