Uyman358, что-то писал и даже внимания не обратил... У тебя в скрипте две одинаковые функции, точнее две функции с одинаковым именем - predmety_yazhik_complete1, поменяй, ту, которая вторая на вот эту:
Code
function check_itemp_needed() return give_have_out_in.predmety_yazhik_complete1(need_item) end
Uyman358, что-то я сегодня не выспался... Вместо элемента таблицы передаю значение счётчика. Вот рабочий вариант:
Code
function take_need_item (actor, npc) for twain = 1, #need_item, 2 do for i = 1, need_item[twain+1] do db.actor:transfer_item(need_item[twain], npc) end end end
ColR_iT, опять косяк с передачей. Активацию ставил как на фразе ГГ, так и на Сидоре(
local need_item = {"bread",8,"kolbasa",6,"conserva",10,"medkit",3,"energy_drink",4,"vodka",10,"medkit_army",1,"antirad" ,2,"bandage",7}
function predmety_yazhik_complete1(item_table) for twain = 1, #item_table, 2 do if not predmety_yazhik_complete (item_table[twain], item_table[twain+1]) then return false end end return true end
function predmety_yazhik_complete(section,number) local actor = db.actor if actor then local cnt = 0 actor:iterate_inventory( function (dummy, item) if item:section() == section then cnt = cnt + 1 end end ,nil) return cnt >= number end return false end
function check_itemp_needed() return give_have_out_in.predmety_yazhik_complete1(need_item) end
function take_need_item (actor, npc) for twain = 1, #need_item, 2 do for i = 1, need_item[twain+1] do db.actor:transfer_item(need_item[twain], npc) end end end
Сообщение отредактировал Uyman358 - Воскресенье, 07.10.2012, 13:33
Uyman358, здесь уже извиняй - у меня работает... А как ты в диалоге вызвал функцию?Kail, а у тебя часом вылета при такой логике не было? Вообще, вот эти две строки:
малость не корректно. Ты переводишь схему в nil, т.е. отключаешь логику, но при этом задаёшь другую схему. Так делать нельзя.Бессмертный, не однократно об этом спрашивалось и так же неоднократно об этом говорилось - это не двух минутное дело. Хорошо понимающему человеку, причём ОЧЕНЬ внимательному для этого понадобится по меньшей мере часа три-четыре (при условии, что он этого не делал раньше). Нужно убирать диалоги у двух десятков НПС, убирать выдачи инфопоршенов, убирать рестрикторы в all.spawn и т.д. и т.п. Полного описания, на сколько мне известно - нет.
<dialog id="sidor_ammo_done_dialog"> <precondition>give_have_out_in.check_itemp_needed</precondition> --Проверка предметов <has_info>sidor_ammo_done</has_info> --Проверка наличия инфопоршня <dont_has_info>sidor_ammo_complete</dont_has_info> --Проверка отсутствия инфопоршня <phrase_list> <phrase id="0"> <text>sidor_ammo_done_0</text> --Вот твоя еда и патроны. Столько же, сколько было в ящике. <action>give_have_out_in.take_need_item</action> --Должна быть передача предметов Сидору <next>1</next> </phrase> <phrase id="1"> <text>sidor_ammo_done_1</text> --И правда, всё. Удивил меня. Таких честных в Зоне очень-очень мало. <next>2</next> </phrase> <phrase id="2"> <text>sidor_ammo_done_2</text> --Я чуть на минах не подорвался, а ты о честности тут говоришь!? <give_info>sidor_ammo_complete</give_info> --Выполняется всё задание </phrase> </phrase_list> </dialog>
Добавлено (08.10.2012, 15:38) --------------------------------------------- Это логика рестриктора, при попадании актора в зону рестриктора, должен выдаваться инфопоршень, но он не хочет этого делать: