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

Створення костюму з системою автоматичного використання медикаментів


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

Нам знадобиться: bind_stalker.script Для початку створимо свій скрипт (у мене буде kfs.script). І вставимо туди ось такий код:

 
--[[
Authors: $T@RT$
Copyright: © KFS Team 2011
]]--
local kFlag = 0
function vvod_medkit()
	local act_it = db.actor:item_in_slot(6)
  if act_it ~= nil then
      if db.actor.health <= 0.6 and db.actor:object("medkit_army") and act_it:section() == "novice_outfit" then
      local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,230,0,0]Ввожу в организм препарат Армейская аптечка %c[default]" 
      db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)
      db.actor:eat(db.actor:object("medkit_army"))
	  if kFlag == 1 then kFlag =  0 end
     elseif db.actor.health <= 0.6 and act_it:section() == "novice_outfit" then
		  if kFlag == 0 then
        local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Внимание:%c[255,230,0,0]Минимальное количество препаратов...Отказ%c[default]" 
        db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)
		kFlag = 1
		  end
	 end
  end
end
 

Тепер докладно розберемо кожний рядок.

local kFlag= 0  - Створюємо локальну змінну ( у нас буде прапор )
local act_it=db.actor:item_in_slot ( 6 )  — створюємо локальну змінну act_it яка перевіряє що у 6 слоті ( У ТЧ це костюм
if act_it≈ nil  then  — Якщо act_it існує
      if db.actor.health <= 0.6  and db.actor:object "medkit_army"  and act_it:section ( ) == "novice_outfit"  then – Якщо ГГ хп < 60 % і є армійська аптечка і одягнений костюм новачка
      local news_text = "%c[255,160,160,160]Автоматична система введення медичних препаратів \\ n%c[default]Виконую:%c[255,230,0,0]Вводжу в організм препарат Армійська аптечка%c[default]"   -- Створюємо локальну news_text з текстом
      db.actor:give_game_news ( news_text , " ui \ ui_iconsTotal " _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
db.actor:eat ( db.actor:object ( «medkit_army» ) )  - з'їсти армійську аптечку
if kFlag== 1  then   kFlag= 0  end – якщо прапор == 1 то прапор привласнити 0
elseif db.actor.health <= 0.6  and act_it:section ( ) == "novice_outfit"  then  — Інакше якщо у РР хп < 60  % і одягнений костюм новачка
   if kFlag== 0  then – Якщо прапор == 0
local news_text = "%c[255,160,160,160]Автоматична система введення медичних препаратів \ n%c[default]Увага:%c[255,230,0,0]Мінімальна кількість препаратів...Відмова%c[default]” – Створюємо локальну змінну з текстом news_text
db.actor:give_game_news ( news_text , " ui \\ ui_iconsTotal " _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
kFlag = 1  - прапор присвоїти 1

Тепер відкриємо bind_stalker.script і знайдемо function actor_binder:update(delta) відразу після неї ставимо kfs.vvod_medkit() Тепер у нас щоразу йтиме перевірка цієї функції.

 

Автоматическое применение медикаментов

1. Отже, для початку в gamedata/scripts створюємо скрипт - файл з ім'ям_вашого_файлу.script . У ньому пишемо таку конструкцію:

 
function medkit_automatic()
  if db.actor.health <= 0.3 then
      check_medkits()
   end
end
 
function check_medkits()
 if db.actor:object("medkit") ~= nil or
    db.actor:object("medkit_army") ~= nil or
    db.actor:object("medkit_scientic") ~= nil then
  local news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю медицинский препарат. %c[default]"
      db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)
    eat_automat_medkits()
   end
end
 
function eat_automat_medkits()
if db.actor:eat(db.actor:object("medkit")) ~= nil or
   db.actor:eat(db.actor:object("medkit_army")) ~= nil or
   db.actor:eat(db.actor:object("medkit_scientic")) ~= nil then
   end
end
 

Тепер с поясненнями:

 
function medkit_automatic() -- указываем функцию
  if db.actor.health <= 0.3 then -- если хп меньше 3, то активируем функцию ниже
      check_medkits()
   end
end
 
function check_medkits() -- как раз вот эту функцию и активируем
 if db.actor:object("medkit") ~= nil or
    db.actor:object("medkit_army") ~= nil or
    db.actor:object("medkit_scientic") ~= nil then -- эти строки проверяют наличие аптечек.
  local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю медицинский препарат. %c[default]"
      db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) -- если аптечки есть то выводим игровое сообщение и активируем функцию ниже
    eat_automat_medkits()
   end
end
 
function eat_automat_medkits() -- эту функцию мы активируем второй функцией
if db.actor:eat(db.actor:object("medkit")) ~= nil or 
   db.actor:eat(db.actor:object("medkit_army")) ~= nil or
   db.actor:eat(db.actor:object("medkit_scientic")) ~= nil then -- здесь используем аптечки, а затем всплывает сообщение
   end
end
 

2. Отже далі заходимо в bind_stalker.script який знаходиться в директорії gamedata/scripts і шукаємо там функцію: function actor_binder:update() і за нею пишемо: имя_вашего_файла.medkit_automatic() в результаті:

 
function actor_binder:update(delta)
        имя_вашего_файла.medkit_automatic()
 object_binder.update(self, delta)
        local time = time_global()
        game_stats.update (delta, self.object)
 

Тепер заходимо в гру та насолоджуємося!


   
Цитата