Нам знадобиться: 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)
Тепер заходимо в гру та насолоджуємося!