Uyman358, В смарте может НПСей и не хватать. Из лагеря новичков я у себя вырезал и Шустрого(логику в отдельный скрипт) и Фаната(вообще удалил). Просто удаляешь секцию и всё.
function OnUseObject(obj, who) if obj then if obj:section() =="fluaga_1" then -- здесь делаем проверку на секцию нужного предмета db.actor:disable_info_portion("doctor_one_start") end end end
В бинд_сталкер добавил:
function actor_binder:reinit() self.object:set_callback(callback.use_object, OnUseObject, self) self.object:set_callback(callback.use_object, self.use_object, self) --******************************************* end
function actor_binder:use_object(obj) ins_poisk_new.OnUseObject(obj, who) end
В игре випиваю водки, и поршень не удаляется. Может я в бинде, что-то не дописал?
Kail, я кодовые замки по тутору ColR_iT давно поставил и вроде у меня немного по другому. Вот в файле ph_code.script
function codepad:OnNumberReceive(text) if self.st.code then if tonumber(text) == self.st.code then if self.st.on_code then printf("ph_code <OnNumberReceive>: on_code [%s]", text) if xr_logic.switch_to_section(self.object, self.st, xr_logic.pick_section_from_condlist(db.actor, self.object, self.st.on_code.condlist))then return true end end end else local condlist = self.st.on_check_code[text] if condlist then printf("ph_code <OnNumberReceive>: on_check_code [%s]", text) xr_logic.pick_section_from_condlist(db.actor, self.object, condlist) end end end
function actor_binder:OnUseObject(obj, who) if obj then if obj:section() =="repair_kit_outfit" then my_spawn.repair_outfit() end end end
Вместо repair_kit_outfit ставь свою водку, вместо my_spawn.repair_outfit() название своего скрипта.своей функции. Только не проще ли через диалог удалить поршень? <disable>doctor_one_start</disable>
Arist, Проще, но тогда концовка квеста не интересной будет.
sedmoy23,
Code
function Delete_ak74u_from_Actor() local oItem = db.actor:object("предмет") --/ определяем предмет у ГГ if oItem then --/ у ГГ есть предмет db.actor:drop_item(oItem) --/ выбрасываем предмет (опционально) alife():release(alife():object(oItem:id()), true) --/ удаляем из игры end end
Как хочешь. Можно через диалог, можно просто где-то в скрипте.
Quote (Arist)
...предварительно в game_relations.ltx изменив...
Ни чего про это не знаю. Я использовал функцию set_relation и все. Пример:
Code
local npc = level_object_by_sid(32) --возьмем, например, кузнецова if npc ~= nil then npc:set_relation(game_object.neutral, db.actor) --сделать нейтралом npc:set_relation(game_object.friend, db.actor) --сделать другом npc:set_relation(game_object.enemy, db.actor) --сделать врагом end
ins33, Зачем два раза коллбек добавляешь? Там же было написано:
Quote
можно добавить данную функцию в виде метода в bind_stalker сделав так: function actor_binder:OnUseObject(obj, who) сюда ставим проверки end тогда каллбек нужно прописать так self.object:set_callback(callback.use_object, self.OnUseObject, self)
function actor_friend() local npc = level_object_by_sid(32) if npc ~= nil then npc:set_relation(game_object.neutral,db.actor) end end
Делал и function actor_friend(npc,actor) и function actor_friend(actor,npc) Вызывал из диалога. не работает.
Добавлено (22.08.2012, 17:07) --------------------------------------------- prohodchik, в файле system.ltx есть ссылка(типа #include "misc\costs.ltx "), а самого файла costs.ltx нет.