Створення ремонту комплекту
Я опишу приклад створення ремонту комплекту для костюмів, а для зброї в кінці статті зроблю пару нотаток. Справа в тому, що відмінності у створенні ремонту комплектів майже немає.
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\ukr\....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 ; = 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\ukr\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.script знаходимо функцію:
function actor_binder:net_destroy() та після рядка
self.object:set_callback(callback.take_item_from_box, nil)
пишемо:
self.object:set_callback(callback.use_object, nil)
І тепер знаходимо функцію
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 створюєте свій скриптовий файл ваша_назва_скрипта.script . Але! Назва має бути написана англійською мовою і замість прогалин має стояти знак "_". Знову відкриваємо bind_stalker.script і насамкінець додаємо цю функцію:
function actor_binder:repair_outfit_start ( obj, who ) if obj then if obj:section ( ) == "repair_kit_outfit" then --тут вказуємо предмет, при використанні якого буде спрацьовувати функція нижче ваша_назва_скрипта. --repair_outfit ( ) . Спочатку скрипт, в якому вона написана, потім назва самої функції end end end
2. Додаємо саму функцію ремонту. Для цього у файлі ваша_назва_скрипта.script пишемо:
-- Ремонт комплект для костюмів 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 : condi 1 then --коли костюм можна лагодити ( стан більше або дорівнює 30 % ) _ _ _ _ _ _ , 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 --коли костюм 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_ ) , 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_ ) , 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_ ) , 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 – мінімальний стан костюма, його можна міняти на будь-яке вам завгодне. Вибачте за таке оформлення, це моя друга стаття. У майбутньому, якщо більше вільного часу, постараюся розписати всі моменти докладно. Автор статті: Бага.
Даний спосіб створення ремонт комплектів не працює! (перевірено) ЗИ: StalkerNew2012 цей скрипт підправив тепер все працює 🙂 Ремонтний комплект без зайвих повідомлень просто з'їдається!: (Двоюю товариша, у якого ремкомплект просто з'ївся, не спрацювавши.
3.Ремонт зброї та броні:
-- bind_stalker.script |
4. Для багаторазового використання ремкомплекту можна не доспавнивать новий предмет при з'їданні, а його конфізі вказати для параметра eat_portions_num велике число.
eat_portions_num = 100500