--# Таблица предметов, которые нужно раздобыть и в последствии отдать. local need_item = {"bread",8,"kolbasa",6,"conserva",10,"medkit",3,"energy_drink",4,"vodka",10,"medkit_army",1,"antir ad" ,2,"bandage",7}
--# Проверка всех предметов. --# Функция принимает в качестве аргумента таблицу вида: --# {"section_name", count, "section_name", count, ...} 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 predmety_yazhik_complete1() return give_have_out_in.predmety_yazhik_complete(need_item) end
--# Передача всех найденных предметов. function take_need_item (actor, npc) --# Перебираем всю таблиуц нужных предметов, через один элемент. --# twain - секция --# twain+1 - количество for twain = 1, #need_item, 2 do --# Передаём все предметы в нужном количестве. for i = 1, twain+1 do db.actor:transfer_item(twain, npc) end end end
Проверка твоя, только вынес таблицу за функцию, чтобы можно было её же повторно использовать. Чтобы передать предметы, то в диалогена фразе актора ставь вызов функции take_need_item.
Немогу устранить баг, поставил в сдк двери, в игре стоят как надо, но не окрываются, т.е подхожу кним юзаю звук открывание и закрывание двери идет ,а сам дверь неоткрывается в чем причина
Привет всем! Наконец то вернулся домой, можно продолжать работу........ И тут же первые трудности... Разрабатываю свою локацию....всё с ней норм идёт)))) Решил подключить к своему моду Генераторы, Болота, Кордон и Собачью Деревню из пака карт от Кости под ТЧ....
При декомпиляции локаций от Кости с помощью конвертёра Бардака локации не конвертируются, настроил вроде всё правильно. В консольке написано это...
Code
C:\Program Files\X-Ray CoP SDK\editors\converter>converter -level shoc:generator s -out generators -mode le -with_lods log started (console and converter.log) can't load shaders_xrlc.xr total time: 0.003s
can't load shaders_xrlc.xr - меня волнует именно вот эта строчка.
Засунул геймдату (весть Level Pack от KostyaV) полностью в SDK.....рав дату оставил родную.......
Так, разобрался.....помог поиск файла shaders_xrlc.xr в папке....засунул его в мою гейм дату всё норм за робило))
Возникла новая проблема....
Уровень Генераторы из билда 1935 декомпилировал, перевёл в формат SDK 0.7....при открытии левела в СДК он начинает грузиться, прогружает первые 100%, и вылетает с таким вот логом
ColR_iT, вот содержимое моего скрипта(другие функции - это "запасной выход"):
Quote
--# Таблица предметов, которые нужно раздобыть и в последствии отдать. local need_item = {"bread",8,"kolbasa",6,"conserva",10,"medkit",3,"energy_drink",4,"vodka",10,"medkit_army",1,"antirad" ,2,"bandage",7}
--# Проверка всех предметов. --# Функция принимает в качестве аргумента таблицу вида: --# {"section_name", count, "section_name", count, ...} 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 predmety_yazhik_complete1() return give_have_out_in.predmety_yazhik_complete(need_item) end
--# Передача всех найденных предметов. function take_need_item (actor, npc) --# Перебираем всю таблиуц нужных предметов, через один элемент. --# twain - секция --# twain+1 - количество for twain = 1, #need_item, 2 do --# Передаём все предметы в нужном количестве. for i = 1, twain+1 do db.actor:transfer_item(twain, npc) end end end
--Или это
function out_bread(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "bread", "out") end
function out_kolbasa(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "kolbasa", "out") end
function out_conserva(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "conserva", "out") end
function out_medkit(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "medkit", "out") end
function out_energy(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "energy_drink", "out") end
function out_vodka(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "vodka", "out") end
function out_army(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "medkit_army", "out") end
function out_antirad(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "antirad", "out") end
function out_bandage(first_speaker, second_speaker) dialogs.relocate_item_section(first_speaker, "bandage", "out") end
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 predmety_yazhik_complete1() return give_have_out_in.predmety_yazhik_complete(need_item) end
function take_need_item (actor, npc) for twain = 1, #need_item, 2 do for i = 1, twain+1 do db.actor:transfer_item(twain, npc) end end end
при взятии квеста на поиск предметов вылет:
Quote
FATAL ERROR
[error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...f chernobyl\gamedata\scripts\give_have_out_in.script:21: attempt to compare nil with number
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 predmety_yazhik_complete1() return give_have_out_in.predmety_yazhik_complete(need_item) end
function take_need_item (actor, npc) for twain = 1, #need_item, 2 do for i = 1, twain+1 do db.actor:transfer_item(twain, npc) end end end
Добавлено (06.10.2012, 19:57) --------------------------------------------- Потом последнюю строчку лога скинь. но думаю ...
Сообщение отредактировал ins33 - Суббота, 06.10.2012, 20:01