[SoC ]Создание ремонт комплектов
☢ Я опишу пример создания ремонт комплекта
для костюмов, а для оружия в конце статьи
сделаю пару заметок. Дело в том, что различия
в создании ремонт комплектов почти нет.
1. Для начала нам нужно создать сам ремонт
комплект, то есть предмет, а уже потом вешать
на него функцию при использование. Для этого
в config\misc\items.ltx в конец добавляем
конфиг нашего предмета:
[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
2. Теперь добавим название и описание. Для
этого в файле config\text\rus
\string_table_enc_equipment.xml в конец между </
string> и </string_table> добавляем строки по
аналогии с уже написсанными:
<string id="repair_kit_outfit_name">
<text>Ремонт комплект ДПК</text>
</string>
<string id="enc_equipment_repair_kit_outfit">
<text>Новинка от Вани Болта - ремонт комплект
ДПК для быстрой и эффективной починки
костюмов. При его создании были учтены все
недочёты и, следовательно, удалены. Благодаря
улучшенным инструментам и деталям, а также
облегченному весу весьма ценен. С его
помощью можно увеличить состояние костюма
до 100%, если он повреждён не больше 30%.
Незаменимая вещь во время вылазки.</text>
</string>
Отлично, с предметом закончили. Теперь
приступим к самому главному - скриптам.
[править]
Работа со скриптами
1. Вешаем функцию починки при использовании
нашего ремонт комплекта. Для этого в файле
scripts\bind_stalker.sсript находим функцию
function actor_binder:reinit() и после строки
self.object:set_callback(callback.take_item_from_box,
self.take_item_from_box, self) пишем:
self.object:set_callback(callback.use_object,
self.repair_outfit_start, self)
Теперь в папке scripts создаёте свой скриптовой
фаил ваше_название_скрипта.sсript. Но! Название
должно быть написано на английском языке и
вместо пробелов должен стоять знак "_". Опять
открываем bind_stalker.sсript и в самый конец
добавляем эту функцию:
function actor_binder:repair_outfit_start(obj, who)
if obj then
if obj:section() == "repair_kit_outfit" then --здесь
указываем предмет, при использование
которого будет срабатывать функция ниже
ваше_название_скрипта.repair_outfit() --здесь
указываем ссылку на функцию. Сначала скрипт,
в котором она написана, потом название самой
функции
end
end
end
2. Добавляем саму функцию ремонта. Для этого
в файле ваше_название_скрипта.sсript пишем:
-- Ремонт комплект для костюмов
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)
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(), 1,
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(), 1,
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(), 1,
db.actor:game_vertex_id(), db.actor:id())
end
end
Всё! Теперь заходим в игру и наслаждаемся.
[править]
Небольшая заметка
1. Чтобы сделать ремонт комплект для оружия
проделываем тоже самое, только
переименовываем всё вместо outfit на weapon и
в функцие починки ставим слот 1 или 2
(оружейные слота) вместо 6 (слот костюмов).
Ещё нужно заменить переменную item_s6
например на item_s1 или item_s2.
2. Число 0.30 - минимальное состояние костюма,
следовательно его можно менять на любое вам
угодное.