Создание костюма с автоматическим приёмом медикаментов — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Создание костюма с автоматическим приёмом медикаментов — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Новая страница: «Нам понадобится: '''bind_stalker.script''' Для начала создадим свой скрипт (у меня будет '''kfs.script'''). И в...»)
 
(статьи объединены)
 
(не показаны 5 промежуточные версии 3 участников)
Строка 1: Строка 1:
 +
==Создание костюма с автоматическим приёмом медикаментов==
 +
 
Нам понадобится: '''bind_stalker.script'''
 
Нам понадобится: '''bind_stalker.script'''
 
Для начала создадим свой скрипт (у меня будет '''kfs.script'''). И вставим туда вот такой код:
 
Для начала создадим свой скрипт (у меня будет '''kfs.script'''). И вставим туда вот такой код:
  
<code>--[[
+
<lua>
 +
--[[
 
Authors: $T@RT$
 
Authors: $T@RT$
 
Copyright: © KFS Team 2011
 
Copyright: © KFS Team 2011
 
]]--
 
]]--
local kFlag=0
+
local kFlag = 0
 
function vvod_medkit()
 
function vvod_medkit()
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)
 
       db.actor:eat(db.actor:object("medkit_army"))
 
       db.actor:eat(db.actor:object("medkit_army"))
  if kFlag==1 then kFlag=0 end
+
  if kFlag == 1 then kFlag = 0 end
     elseif db.actor.health <= 0.6 and act_it:section()=="novice_outfit" then
+
     elseif db.actor.health <= 0.6 and act_it:section() == "novice_outfit" then
  if kFlag==0 then
+
  if kFlag == 0 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)
kFlag=1
+
kFlag = 1
 
  end
 
  end
 
end
 
end
 
   end
 
   end
end</code>
+
end
 
+
</lua>
  
 
Теперь разберём подробно каждую строчку.
 
Теперь разберём подробно каждую строчку.
<code>local kFlag=0 — Создаём локальную переменную (у нас будет флаг)</code>
+
<lua>local kFlag=0 — Создаём локальную переменную (у нас будет флаг)</lua>
 +
<lua>local act_it=db.actor:item_in_slot(6) — создаём локальную переменную act_it которая проверяет что в 6 слоте (В ТЧ это костюм</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>      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
 +
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 % и надет костюм новичка
 +
  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
 +
kFlag=1 — флаг присвоить 1</lua>
  
<code>local act_it=db.actor:item_in_slot(6) — создаём локальную переменную act_it которая проверяет что в 6 слоте (В ТЧ это костюм)</code>
+
Теперь откроем '''bind_stalker.script''' и найдём ''function actor_binder:update(delta)'' сразу после неё ставим '''kfs.vvod_medkit()''' Теперь у нас каждый раз будет идти проверка этой функции.
  
<code>if act_it≈nil then — Если act_it существует</code>
+
Вот и всё, можно идти тестить.
 +
Статья by '''$T@RT$''' © '''KFS Team'''
  
<code>      if db.actor.health <= 0.6 and db.actor:object"medkit_army" and act_it:section()=="novice_outfit" then – Если у ГГ хп < 60% и есть армейская аптечка и надет костюм новичка</code>
+
--[[Участник:STARTS|$T@RT$]] 08:50, 13 марта 2011 (UTC)
  
<code>      local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,230,0,0]Ввожу в организм препарат Армейская аптечка%c[default]"  -- Создаём локальную переменную news_text с текстом</code>
 
  
<code>      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»)) — съесть армейскую аптечку</code>
+
  
  <code>if kFlag==1 then  kFlag=0 end – если флаг == 1 то флаг присвоить 0</code>
+
На основе доработанного скрипта $T@RT$.
  
<code>elseif db.actor.health <= 0.6 and act_it:section()=="novice_outfit" then — Иначе если у ГГ хп <60 % и надет костюм новичка
+
1. Итак, для начала в '''gamedata/scripts''' создаем скрипт - файл с название '''имя_вашего_файла.script'''. В нем пишем такую конструкцию:
  if kFlag==0 then – Если флаг == 0</code>
+
<lua>
 +
function medkit_automatic()
 +
  if db.actor.health <= 0.3 then
 +
      check_medkits()
 +
  end
 +
end
  
  <code>local news_text = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Внимание:%c[255,230,0,0]Минимальное количество препаратов...Отказ%c[default]" – Создаём локальную переменную с текстом news_text</code>
+
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
  
    <code>db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) – Получаем сообщение с текстом news_text
+
function eat_automat_medkits()
kFlag=1 — флаг пристоить 1</code>
+
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>
  
 +
Теперь с пояснениями:
  
Теперь откроем '''bind_stalker.script''' и найдём ''function actor_binder:update(delta)'' сразу после неё ставим '''kfs.vvod_medkit()''' Теперь у нас каждый раз будет идти проверка этой функции.
+
<lua>
 +
function medkit_automatic() -- указываем функцию
 +
  if db.actor.health <= 0.3 then -- если хп меньше 3, то активируем функцию ниже
 +
      check_medkits()
 +
  end
 +
end
  
Вот и всё, можно идти тестить.
+
function check_medkits() -- как раз вот эту функцию и активируем
Статья написана by '''$T@RT$''' © '''KFS Team'''
+
if db.actor:object("medkit") ~= nil or
Ссылки: http://kfs-team.ru/ http://www.stalker-rfs.ru/
+
    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)
 

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

Другие места
LANGUAGE