Сповіщення
Очистити все

SoC. Створення ремонт комплектів


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Створення ремонту комплекту

Я опишу приклад створення ремонту комплекту для костюмів, а для зброї в кінці статті зроблю пару нотаток. Справа в тому, що відмінності у створенні ремонту комплектів майже немає.

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.Ремонт зброї та броні:

4. Для багаторазового використання ремкомплекту можна не доспавнивать новий предмет при з'їданні, а його конфізі вказати для параметра eat_portions_num велике число.

eat_portions_num = 100500

   
Цитата