Byurrer 0 Опубликовано 27 Декабря 2010 (изменено) gruber, спасибо конечно, но заспавнить это одно дело, но как заставить его работать? (т.е. воспроизводить звук). Возможно ли это осуществить без вмешательства в логику? Попробовал настроить проигрывание звуков в логике, получилось, добавил новые темы в sound_theme.script но почему то они тихо воспроизводятся, хотя громкость самих треков такая же как и у остальных, как добавить громкость воспроизведения? Изменено 27 Декабря 2010 пользователем Byurrer Поделиться этим сообщением Ссылка на сообщение
Byurrer 0 Опубликовано 27 Декабря 2010 Куфзук, спасибо, понял, не то чтобы критично но смотриться примитивно сам процесс создания,т.е. ресурсоемко, что в значительной степени помешает совместимости (ну это мне так кажется), есть идейка как реарганизовать под специальный приемник ... буду пробовать ... Поделиться этим сообщением Ссылка на сообщение
Byurrer 0 Опубликовано 27 Декабря 2010 (изменено) Куфзук, не буду спорить, а начну делать, кому будет интересно потом отпишусь по поводу применика. Вот по ходу дела возник вопрос: использую функцию воспроизведения такую: snd:play_at_pos(db.actor, vector():set(0,0,0),0, sound_object.s2d) snd - саунд, но этот звук воспроизводится всего несколько секунд, хотя на самом деле играет (в проигрывателе) более 1 минуты, и через метод: play_no_feedback воспроизводится нормально, то есть полностью ... подскажите пожалуйста как исправить это. Изменено 27 Декабря 2010 пользователем Byurrer Поделиться этим сообщением Ссылка на сообщение
Byurrer 0 Опубликовано 27 Декабря 2010 gruber, нет я не пытаюсь его изобрести ... я пытаюсь разобраться в методах воспроизведения звуков ... разобрал ПЫСовские скрипты, более менее ясно ... кроме одного: что это за метод? Как его использовать?(play_sound) примерную схему я понял и суть немного, но не могу сообразить суть аргументов которые принимает данная функция ... Мне это нужно не только для создания приемника ... с помощью этого можно сделать кучу чего нового ... разнообразного ... поэтому хочу разобраться! Поделиться этим сообщением Ссылка на сообщение
Byurrer 0 Опубликовано 28 Декабря 2010 Куфзук, я хочу понять как использовать методы:play_sound, то есть как воспроизвести звук через этот метод, вот что конкретно я хочу узнать! И еще косвенный вопрос, который я задавал ранее: Вот по ходу дела возник вопрос: использую функцию воспроизведения такую: snd:play_at_pos(db.actor, vector():set(0,0,0),0, sound_object.s2d) snd - саунд, но этот звук воспроизводится всего несколько секунд, хотя на самом деле играет (в проигрывателе) более 1 минуты, и через метод: play_no_feedback воспроизводится нормально, то есть полностью ... подскажите пожалуйста как исправить это. Поделиться этим сообщением Ссылка на сообщение
Byurrer 0 Опубликовано 3 Марта 2011 (изменено) Здравствуйте, возникла проблема, делаю схему поведения, суть в том что если возле НПС есть трупы то он их будет обыскивать, вроде бы логический все верно, но на самом деле нет, НПС тупо стоят не идут на места где трупы, а при стрельбе по ним или разговоре вылет: [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: ...:\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:209: attempt to index field 'object' (a nil value) Что значит эта ошибка знаю, но из-за чего возникла не могу сообразить. Алгоритм построения схемы усвоил из урока на вики, изучением скриптов сталкера (схем поведения) более глубже изучил, но при создании своей схемы столкнулся с такой вот проблемой. Вот сам скрипт схемы: priperty_base = 1777 property_object_for_shmon = priperty_base + 1 property_obj_base = 666 property_obj_item = property_obj_base + 1 time_run = 1000 * 5 dist = 30 tab_id_shmon = {} bad_id = {} local timer,last class "evaluator_object_for_shmon" (property_evaluator) function evaluator_object_for_shmon:__init(name, storage) super (nil, name) self.st = storage end function evaluator_object_for_shmon:evaluate() --fdb.how_table_in_table(tab_id_shmon) self.position = self.object:position() if timer == nil then timer = time_global() + time_run else last = timer - time_global() end if last == nil then last = timer - time_global() end if last <= 0 then timer = nil last = nil local npc for k=1, 65534 do npc = level.object_by_id(k) if npc and not npc:alive() and is_is_tab_id_shmon(k) and is_bad_id(k) and self.position:distance_to(npc:position()) < dist then tab_id_shmon[self.object:name()] = {} table.insert(tab_id_shmon[self.object:name()],k) fdb.logS(">>npc:id() = "..k) end end end --fdb.logS("flush") return is_chtonit(self.object) end class "action_go_to_shmon" (action_base) function action_go_to_shmon:__init(obj, storage) super (nil, obj) self.st = storage end function action_go_to_shmon:initialize() action_base.initialize(self) fdb.how_table_in_table(tab_id_shmon) fdb.logS("flush") self.obj.lv = self.object:level_vertex_id() self.obj_item = level.object_by_id(tab_id_shmon[self.object:name()]) self.obj_item.lv = self.obj_item:level_vertex_id() self.obj:set_dest_level_vertex_id(self.obj_item.lv) end function action_go_to_shmon:execute() action_base.execute(self) fdb.logS("function action_go_to_shmon:execute()") if self.obj_item.lv ~= self.obj:level_vertex_id() then self.obj_item.lv = self.obj_item:level_vertex_id() self.obj:set_dest_level_vertex_id(self.obj_item.lv) end end function action_go_to_shmon:finalize() action_base.finalize (self) end function add_to_binder(npc,ini,scheme,section,st) local manager = npc:motivation_action_manager() manager:add_evaluator(property_object_for_shmon, evaluator_object_for_shmon("evaluator_object_for_shmon",st)) fdb.logS("flush") local action = action_go_to_shmon(npc, st) action:add_precondition (world_property(stalker_ids.property_alive, true)) action:add_precondition (world_property(stalker_ids.property_danger,false)) action:add_precondition (world_property(stalker_ids.property_enemy, false)) action:add_precondition (world_property(stalker_ids.property_anomaly,false)) action:add_precondition (world_property(property_object_for_shmon), true) xr_motivator.addCommonPrecondition(action) action:add_effect (property_object_for_shmon, false) manager:add_action (property_obj_item, action) end --------------- function set_scheme(npc,ini,scheme,section) local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section) st.enabled=true end function disable_scheme(npc,scheme) local st = db.storage[npc:id()][scheme] if st then st.enabled = false end end --------------- function is_is_tab_id_shmon(id) local count = 0 local bool = true for k,v in pairs(tab_id_shmon) do for q=1,#v do if v[q] == id then count = count + 1 end end end if count == 0 then bool = true else bool = false end return bool end function is_bad_id(id) local bool = true for k=1, #bad_id do if bad_id[k] == id then bool = false break end end return bool end function is_chtonit(npc) local name = npc:name() local bool = false if tab_id_shmon[name] and #tab_id_shmon[name] > 0 and tab_id_shmon[name][1] ~= nil then bool = true end return bool end Вот как подключил: ... -- Загрузка модулей сталкеров: ---------------------------------------------------------------------- load_scheme("xr_danger", "danger", stype_stalker) load_scheme("xr_abuse", "abuse", stype_stalker) load_scheme("xr_walker", "walker", stype_stalker) load_scheme("xr_remark", "remark", stype_stalker) load_scheme("xr_sleeper", "sleeper", stype_stalker) load_scheme("xr_kamp", "kamp", stype_stalker) load_scheme("xr_camper", "camper", stype_stalker) load_scheme("xr_meet", "meet", stype_stalker) --load_scheme("xr_reactions", "reactions", stype_stalker) load_scheme("xr_test", "test", stype_stalker) load_scheme("xr_heli_hunter", "heli_hunter", stype_stalker) load_scheme("xr_attendant", "follower", stype_stalker) load_scheme("xr_combat", "combat", stype_stalker) load_scheme("xr_death", "death", stype_stalker) load_scheme("xr_use", "use", stype_stalker) load_scheme("xr_hit", "hit", stype_stalker) load_scheme("xr_wounded", "wounded", stype_stalker) load_scheme("xr_rest", "rest", stype_stalker) load_scheme("xr_meet", "actor_dialogs",stype_stalker) load_scheme("xr_combat_ignore", "combat_ignore", stype_stalker) load_scheme("xr_patrol", "patrol", stype_stalker) load_scheme("xr_shmon", "shmon", stype_stalker) ... function motivator_binder:net_spawn(sobject) printf("motivator_binder:net_spawn(): self.object:name()='%s'", self.object:name()) --memusage.collect_info(self.object, "netspawn_start") if not object_binder.net_spawn(self, sobject) then return false end -- if self.object:spawn_ini():section_exist("dont_spawn_online") then -- printf("!!!OFFLINE") -- alife():object(self.object:id()).dont_spawn_online = true -- end db.add_obj(self.object) -- Все CALLBACK-и ставить здесь: local manager = self.object:motivation_action_manager() manager:add_evaluator(xr_shmon.property_object_for_shmon, property_evaluator_const(false)) ... function addCommonPrecondition(action) action:add_precondition (world_property(xr_shmon.property_object_for_shmon,false)) --action:add_precondition (world_property(xr_evaluators_id.reaction,false)) action:add_precondition (world_property(xr_evaluators_id.stohe_meet_base + 1,false)) action:add_precondition (world_property(xr_evaluators_id.sidor_wounded_base + 0, false)) action:add_precondition (world_property(xr_evaluators_id.chugai_heli_hunter_base, false)) action:add_precondition (world_property(xr_evaluators_id.abuse_base, false)) end function disable_generic_schemes(npc, stype) if stype == modules.stype_stalker then xr_combat.disable_scheme(npc, "combat") xr_use.disable_scheme(npc, "use") xr_hit.disable_scheme(npc, "hit") xr_meet.disable_scheme(npc, "actor_dialogs") xr_heli_hunter.disable_scheme(npc, "heli_hunter") xr_combat_ignore.disable_scheme(npc, "combat_ignore") xr_shmon.disable_scheme(npc,"shmon") elseif stype == modules.stype_mobile then mob_combat.disable_scheme(npc, "mob_combat") mob_trade.disable_scheme(npc, "mob_trade") elseif stype == modules.stype_item then ph_on_hit.disable_scheme(npc, "ph_on_hit") elseif stype == modules.stype_heli then xr_hit.disable_scheme(npc, "hit") end end ... function enable_generic_schemes(ini, npc, stype, section) if stype == modules.stype_stalker then ... local heli_hunter_section = utils.cfg_get_string(ini, section, "heli_hunter", npc, false, "") xr_heli_hunter.set_scheme(npc, ini, "heli_hunter", heli_hunter_section) local shmoning = utils.cfg_get_string(ini, section, "shmon", npc, false, "") xr_shmon.set_scheme(npc,ini,"shmon",shmoning) ... Все скрипты валидны, помогите пожалуйста разобраться. Обычно при подобных ошибках сам разбираюсь, так как не люблю загружать своими проблемами других, но в данном случае чувствую что сам не смогу разобраться, опыта не хватит ... Если же отключить экшен типа так: function add_to_binder(npc,ini,scheme,section,st) local manager = npc:motivation_action_manager() manager:add_evaluator(property_object_for_shmon, evaluator_object_for_shmon("evaluator_object_for_shmon",st)) fdb.logS("flush") --[[local action = action_go_to_shmon(npc, st) action:add_precondition (world_property(stalker_ids.property_alive, true)) action:add_precondition (world_property(stalker_ids.property_danger,false)) action:add_precondition (world_property(stalker_ids.property_enemy, false)) action:add_precondition (world_property(stalker_ids.property_anomaly,false)) action:add_precondition (world_property(property_object_for_shmon), true) xr_motivator.addCommonPrecondition(action) action:add_effect (property_object_for_shmon, false) manager:add_action (property_obj_item, action)]] end Тогда НПС продолжают выполнять свою прежнюю работу, и работают только эвалуаторы, если же просто оставить так: function add_to_binder(npc,ini,scheme,section,st) local manager = npc:motivation_action_manager() manager:add_evaluator(property_object_for_shmon, evaluator_object_for_shmon("evaluator_object_for_shmon",st)) fdb.logS("flush") local action = action_go_to_shmon(npc, st) --[[action:add_precondition (world_property(stalker_ids.property_alive, true)) action:add_precondition (world_property(stalker_ids.property_danger,false)) action:add_precondition (world_property(stalker_ids.property_enemy, false)) action:add_precondition (world_property(stalker_ids.property_anomaly,false)) action:add_precondition (world_property(property_object_for_shmon), true) xr_motivator.addCommonPrecondition(action) action:add_effect (property_object_for_shmon, false) manager:add_action (property_obj_item, action)]] end То НПС опять начинают тупо стоять, и не идут к трупам ... Изменено 4 Марта 2011 пользователем Куфзук Поделиться этим сообщением Ссылка на сообщение