Создание костюма с автоматическим приёмом медикаментов — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
STARTS (обсуждение | вклад) |
(статьи объединены) |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 1: | Строка 1: | ||
+ | ==Создание костюма с автоматическим приёмом медикаментов== | ||
+ | |||
Нам понадобится: '''bind_stalker.script''' | Нам понадобится: '''bind_stalker.script''' | ||
Для начала создадим свой скрипт (у меня будет '''kfs.script'''). И вставим туда вот такой код: | Для начала создадим свой скрипт (у меня будет '''kfs.script'''). И вставим туда вот такой код: | ||
− | <lua>--[[ | + | <lua> |
+ | --[[ | ||
Authors: $T@RT$ | Authors: $T@RT$ | ||
Copyright: © KFS Team 2011 | Copyright: © KFS Team 2011 | ||
Строка 10: | Строка 13: | ||
local act_it = db.actor:item_in_slot(6) | local act_it = db.actor:item_in_slot(6) | ||
if act_it ~= nil then | if act_it ~= nil then | ||
− | if db.actor.health <= 0.6 and db.actor:object"medkit_army" and act_it:section() == "novice_outfit" 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]" | 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:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) | ||
Строка 23: | Строка 26: | ||
end | end | ||
end | end | ||
− | end</lua> | + | end |
− | + | </lua> | |
Теперь разберём подробно каждую строчку. | Теперь разберём подробно каждую строчку. | ||
<lua>local kFlag=0 — Создаём локальную переменную (у нас будет флаг)</lua> | <lua>local kFlag=0 — Создаём локальную переменную (у нас будет флаг)</lua> | ||
− | + | <lua>local act_it=db.actor:item_in_slot(6) — создаём локальную переменную act_it которая проверяет что в 6 слоте (В ТЧ это костюм</lua> | |
− | <lua>local act_it=db.actor:item_in_slot(6) — создаём локальную переменную act_it которая проверяет что в 6 слоте (В ТЧ это костюм | + | |
− | + | ||
<lua>if act_it≈nil then — Если act_it существует</lua> | <lua>if act_it≈nil then — Если act_it существует</lua> | ||
− | |||
<lua> if db.actor.health <= 0.6 and db.actor:object"medkit_army" and act_it:section()=="novice_outfit" then – Если у ГГ хп < 60% и есть армейская аптечка и надет костюм новичка</lua> | <lua> if db.actor.health <= 0.6 and db.actor:object"medkit_army" and act_it:section()=="novice_outfit" then – Если у ГГ хп < 60% и есть армейская аптечка и надет костюм новичка</lua> | ||
− | |||
<lua> local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,230,0,0]Ввожу в организм препарат Армейская аптечка%c[default]" -- Создаём локальную переменную news_text с текстом</lua> | <lua> local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,230,0,0]Ввожу в организм препарат Армейская аптечка%c[default]" -- Создаём локальную переменную news_text с текстом</lua> | ||
− | |||
<lua> db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) – получаем игровые новости с текстом news_text | <lua> db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) – получаем игровые новости с текстом news_text | ||
db.actor:eat(db.actor:object(«medkit_army»)) — съесть армейскую аптечку</lua> | db.actor:eat(db.actor:object(«medkit_army»)) — съесть армейскую аптечку</lua> | ||
− | + | <lua>if kFlag==1 then kFlag=0 end – если флаг == 1 то флаг присвоить 0</lua> | |
− | + | ||
− | + | ||
<lua>elseif db.actor.health <= 0.6 and act_it:section()=="novice_outfit" then — Иначе если у ГГ хп <60 % и надет костюм новичка | <lua>elseif db.actor.health <= 0.6 and act_it:section()=="novice_outfit" then — Иначе если у ГГ хп <60 % и надет костюм новичка | ||
if kFlag==0 then – Если флаг == 0</lua> | if kFlag==0 then – Если флаг == 0</lua> | ||
− | + | <lua>local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Внимание:%c[255,230,0,0]Минимальное количество препаратов...Отказ%c[default]" – Создаём локальную переменную с текстом news_text</lua> | |
− | + | ||
− | + | ||
<lua>db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) – Получаем сообщение с текстом news_text | <lua>db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) – Получаем сообщение с текстом news_text | ||
kFlag=1 — флаг присвоить 1</lua> | kFlag=1 — флаг присвоить 1</lua> | ||
− | |||
Теперь откроем '''bind_stalker.script''' и найдём ''function actor_binder:update(delta)'' сразу после неё ставим '''kfs.vvod_medkit()''' Теперь у нас каждый раз будет идти проверка этой функции. | Теперь откроем '''bind_stalker.script''' и найдём ''function actor_binder:update(delta)'' сразу после неё ставим '''kfs.vvod_medkit()''' Теперь у нас каждый раз будет идти проверка этой функции. | ||
Строка 57: | Строка 50: | ||
--[[Участник:STARTS|$T@RT$]] 08:50, 13 марта 2011 (UTC) | --[[Участник:STARTS|$T@RT$]] 08:50, 13 марта 2011 (UTC) | ||
+ | |||
+ | |||
+ | ==Автоматическое применение медикаментов== | ||
+ | |||
+ | На основе доработанного скрипта $T@RT$. | ||
+ | |||
+ | 1. Итак, для начала в '''gamedata/scripts''' создаем скрипт - файл с название '''имя_вашего_файла.script'''. В нем пишем такую конструкцию: | ||
+ | <lua> | ||
+ | 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 | ||
+ | </lua> | ||
+ | |||
+ | Теперь с пояснениями: | ||
+ | |||
+ | <lua> | ||
+ | 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 | ||
+ | </lua> | ||
+ | |||
+ | 2. Итак далее заходим в '''bind_stalker.script''' который находится в директории '''gamedata/scripts''' и ищем там функцию: | ||
+ | function actor_binder:update() и за ней пишем: | ||
+ | имя_вашего_файла.medkit_automatic() в итоге: | ||
+ | |||
+ | <lua> | ||
+ | function actor_binder:update(delta) | ||
+ | имя_вашего_файла.medkit_automatic() | ||
+ | object_binder.update(self, delta) | ||
+ | local time = time_global() | ||
+ | game_stats.update (delta, self.object) | ||
+ | </lua> | ||
+ | |||
+ | Теперь заходим в игру и '''наслаждаемся!''' | ||
+ | |||
+ | [[Категория:Скрипты]] |
Текущая версия на 08:26, 20 августа 2011
Создание костюма с автоматическим приёмом медикаментов
Нам понадобится: 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",Frect():set(0,188,83,47), 0, 5000) – получаем игровые новости с текстом news_text 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",Frect():set(0,188,83,47), 0, 5000) – Получаем сообщение с текстом news_text kFlag=1 — флаг присвоить 1
Теперь откроем bind_stalker.script и найдём function actor_binder:update(delta) сразу после неё ставим kfs.vvod_medkit() Теперь у нас каждый раз будет идти проверка этой функции.
Вот и всё, можно идти тестить. Статья by $T@RT$ © KFS Team
--$T@RT$ 08:50, 13 марта 2011 (UTC)
Автоматическое применение медикаментов
На основе доработанного скрипта $T@RT$.
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)
Теперь заходим в игру и наслаждаемся!