|
|
Строка 1: |
Строка 1: |
− | ===Создание ремонт комплекта===
| + | Отбросы |
− | | + | |
− | Я опишу пример создания ремонт комплекта для костюмов, а для оружия в конце статьи сделаю пару заметок. Дело в том, что различия в создании ремонт комплектов почти нет.
| + | |
− | | + | |
− | '''1'''. Для начала нам нужно '''создать''' сам ремонт комплект, то есть предмет, а уже '''потом''' вешать на него функцию при использование. Для этого в '''config\misc\items.ltx''' в конец добавляем конфиг нашего предмета:
| + | |
− | | + | |
− | <pre>[repair_kit_outfit]:identity_immunities
| + | |
− | GroupControlSection = spawn_group
| + | |
− | discovery_dependency =
| + | |
− | $spawn = "food and drugs\repair kit outfit"
| + | |
− | $prefetch = 32
| + | |
− | class = II_ANTIR ;класс не трогаем!
| + | |
− | cform = skeleton
| + | |
− | visual = equipments\item_merger.ogf ;модель
| + | |
− | description = enc_equipment_repair_kit_outfit ;ссылка на описание в config\text\rus\....xml
| + | |
− | | + | |
− | inv_name = repair_kit_outfit_name ;ссылка на название в config\text\rus\....xml
| + | |
− | inv_name_short = repair_kit_outfit_name ;тоже самое, что и inv_name
| + | |
− | inv_weight = 6.0 ;вес
| + | |
− | | + | |
− | inv_grid_width = 2 ;ширина иконки
| + | |
− | inv_grid_height = 1 ;высота иконки
| + | |
− | inv_grid_x = 8 ;координата x иконки
| + | |
− | inv_grid_y = 18 ;координата y иконки
| + | |
− | cost = 10000 ;цена
| + | |
− | ;всё ниже написанное не трогаем, оно нам и не нужно
| + | |
− | eat_health = 0
| + | |
− | eat_satiety = 0
| + | |
− | eat_power = 0
| + | |
− | eat_radiation = 0
| + | |
− | wounds_heal_perc = 0
| + | |
− | eat_portions_num = 1
| + | |
− | animation_slot = 4
| + | |
− | hud = wpn_vodka_hud</pre>
| + | |
− | | + | |
− | '''2'''. Теперь добавим название и описание. Для этого в файле '''config\text\rus\string_table_enc_equipment.xml''' в конец между '''</string>''' и '''</string_table>''' добавляем строки по аналогии с уже написсанными:
| + | |
− | <pre> <string id="repair_kit_outfit_name">
| + | |
− | <text>Ремонт комплект ДПК</text>
| + | |
− | </string>
| + | |
− | <string id="enc_equipment_repair_kit_outfit">
| + | |
− | <text>Новинка от Вани Болта - ремонт комплект ДПК для быстрой и эффективной починки костюмов. При его создании были учтены все недочёты и, следовательно, удалены. Благодаря улучшенным инструментам и деталям, а также облегченному весу весьма ценен. С его помощью можно увеличить состояние костюма до 100%, если он повреждён не больше 30%. Незаменимая вещь во время вылазки.</text>
| + | |
− | </string></pre>
| + | |
− | | + | |
− | Отлично, с предметом закончили. Теперь приступим к самому главному - '''скриптам'''.
| + | |
− | | + | |
− | ===Работа со скриптами===
| + | |
− | | + | |
− | '''1'''. Вешаем функцию починки при использовании нашего ремонт комплекта. Для этого в файле '''scripts\bind_stalker.script''' находим функцию '''function actor_binder:reinit()''' и после строки '''self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)''' пишем:
| + | |
− | <lua>self.object:set_callback(callback.use_object, self.repair_outfit_start, self)</lua>
| + | |
− | Теперь в папке '''scripts''' создаёте свой скриптовой фаил '''ваше_название_скрипта.script'''. Но! Название должно быть написано на '''английском языке''' и вместо пробелов должен стоять знак "_".
| + | |
− | Опять открываем '''bind_stalker.script''' и в '''function actor_binder:on_item_drop (obj)''' после '''end''' добавляем эту функцию:
| + | |
− | <lua>function actor_binder:repair_outfit_start(obj, who)
| + | |
− | if obj then
| + | |
− | if obj:section() == "repair_kit_outfit" then --здесь указываем предмет, при использование которого будет срабатывать функция ниже
| + | |
− | ваше_название_скрипта.repair_outfit() --здесь указываем ссылку на функцию. Сначала скрипт, в котором она написана, потом название самой функции
| + | |
− | end
| + | |
− | end
| + | |
− | end</lua>
| + | |
− | | + | |
− | '''2'''. Добавляем саму функцию ремонта. Для этого в файле '''ваше_название_скрипта.script''' пишем:
| + | |
− | | + | |
− | <lua>-- Ремонт комплект для костюмов
| + | |
− | function repair_outfit()
| + | |
− | local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6)
| + | |
− | if item_s6 ~= nil and item_s6:condition() >=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%)
| + | |
− | | + | |
− | item_s6:set_condition(1)
| + | |
− | local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]])
| + | |
− | snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
| + | |
− | local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен."
| + | |
− | db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000)
| + | |
− | alife():create("repair_kit_outfit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
| + | |
− | elseif item_s6 == nil then --когда костюма нет
| + | |
− | local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм."
| + | |
− | db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000)
| + | |
− | alife():create("repair_kit_outfit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
| + | |
− | elseif item_s6:condition() <0.30 then --когда костюм нельзя чинить (состояние меньше 30%)
| + | |
− | local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён."
| + | |
− | db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000)
| + | |
− | alife():create("repair_kit_outfit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
| + | |
− | elseif item_s6:condition() ==1 then --когда костюм в отличном состояние
| + | |
− | local news_text = "%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние."
| + | |
− | db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(83,470,83,47), 1000, 5000)
| + | |
− | alife():create("repair_kit_outfit", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
| + | |
− | end
| + | |
− | end</lua>
| + | |
− | | + | |
− | '''Всё'''! Теперь заходим в игру и наслаждаемся.
| + | |
− | | + | |
− | ===Небольшая заметка===
| + | |
− | | + | |
− | <pre>1. Чтобы сделать ремонт комплект для оружия проделываем тоже самое, только переименовываем всё вместо outfit на weapon и в функцие починки ставим слот 1 или 2 (оружейные слота) вместо 6 (слот костюмов).
| + | |
− | Ещё нужно заменить переменную item_s6 например на item_s1 или item_s2.
| + | |
− | | + | |
− | 2. Число 0.30 - минимальное состояние костюма, следовательно его можно менять на любое вам угодное.</pre>
| + | |
− | | + | |
− | Простите за такое оформление, это моя вторая статья. В будущем, если будет больше свободного времени, постораюсь расписать все моменты подробно.<br>
| + | |
− | Автор: '''Бага'''.
| + | |
− | | + | |
− | [[Категория: Скрипты]]
| + | |