Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

Вопрос не в по адресу. Загляни в шапку, чтобы определиться...

ColR_iT

Изменено пользователем ColR_iT

47.gif

LXTwrBW.png
ukgXKMe.png

Поделиться этим сообщением


Ссылка на сообщение

Дурацкий вопрос, но спрошу. Добавил в "Radiation mod of foods" для зп соответствующее сообщение при окончательной (сильной) порче еды.Так как со скриптованием у меня плохо первый раз вставил команду не туда и сообщение после первой отправки начинало отправятся игроку бесконечное количество раз. со второй попытки получилось - но беда, при порче, например, 6 единиц - приходит 6 раз и тд. Помогите исправить...

function spw_rad_high_food()



if interval < time_global() then
db.actor:iterate_inventory(function (dummy,item)
if items_rad_high[item:section()] then
this.del_item(item)
this.spawn_item(tostring(item:section().."_high"))
news_manager.send_tip(db.actor, game.translate_string("tag_bad_food_tip")) (!!!вот кусок который добавил)
end
end, nil)
interval = time_global() + 2000
end
end

 

47.gif

LXTwrBW.png
ukgXKMe.png

Поделиться этим сообщением


Ссылка на сообщение

@Serge!, не помогло. Оно ведь, судя по всему, работает циклично и заменяет предметы на порченые по одному. В конце функции заменяет одну "conserva_rad_average" на "conserva_rad_high", принимает "st = false", вроде сообщение уже не должно появится, переходит к следующей "conserva_rad_average" и снова - "local st = true" и по новой. По идее надо как то так:

1. Функция "Проверка условий(наличие продуктов и нужной радиации)" запуск 2.

2. Отдельная промежуточная функция на отправку одного сообщения, запуск 3.

3. Функция замены продукт_rad_average на продукт_rad_high.

вот весь файл.

-----------------------------------------------------------------------------------------------------------


-- Script: rad_items.
-- Description: Scripting system of food contamination by radiation.
-- Author: Tris.
-- Version: 0.1.
-- Date: 15.12.2011.
-- Recent changes: 17.12.2011***12:34.
-----------------------------------------------------------------------------------------------------------

local items = {
bread = true,
kolbasa = true,
conserva = true,
}

local items_rad_average = {
bread_rad = true,
kolbasa_rad = true,
conserva_rad = true,
}

local items_rad_high = {
bread_rad_average = true,
kolbasa_rad_average = true,
conserva_rad_average = true,
}

function rad_food()
if db.actor.radiation >= 0.2 then
spw_rad_food()
end
end

function rad_average_food()
if db.actor.radiation >= 0.4 then
spw_rad_average_food()
end
end

function rad_high_food()
if db.actor.radiation >= 0.6 then
spw_rad_high_food()
end
end

local interval = 0

function spw_rad_food()
if interval < time_global() then
db.actor:iterate_inventory(function (dummy,item)
if items[item:section()] then
this.del_item(item)
this.spawn_item(tostring(item:section().."_rad"))
end
end, nil)
interval = time_global() + 2000
end
end

local interval = 0

function spw_rad_average_food()
if interval < time_global() then
db.actor:iterate_inventory(function (dummy,item)
if items_rad_average[item:section()] then
this.del_item(item)
this.spawn_item(tostring(item:section().."_average"))
end
end, nil)
interval = time_global() + 2000
end
end

local interval = 0

function spw_rad_high_food()

if interval < time_global() then
db.actor:iterate_inventory(function (dummy,item)
local st = true
if items_rad_high[item:section()] then
this.del_item(item)
this.spawn_item(tostring(item:section().."_high"))
if st then
news_manager.send_tip(db.actor, game.translate_string("tag_bad_food_tip")) -- (!!!вот кусок который добавил)
st = false
end
end
end, nil)
interval = time_global() + 2000
end
end

function spawn_item(item)
alife():create(item, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end

function del_item(item)
local obj = alife():object(item:id())
alife():release(obj, true)
end

-----------------------------------------------------------------------------------------------------------
-- Не удаляйте копирайды, указывайте настоящего автора(ов)
-- и не выдавайте чужие идеи и их реализацию за свои. Ведь это элементарная
-- этика модостроителей! Спасибо за понимание.
-----------------------------------------------------------------------------------------------------------

 

47.gif

LXTwrBW.png
ukgXKMe.png

Поделиться этим сообщением


Ссылка на сообщение

@naxac, работает. :) Только не пойму как я строчки перепутал - вроде сразу все копировал... Мистика, однако... :blink: Хотя коментил свою фразу, чтобы не было вылета - может тогда и переставил случайно. Спасибо огромное. :D

47.gif

LXTwrBW.png
ukgXKMe.png

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...