Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
AndrewMor 527 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 В 24.12.2018 в 10:48, Charsi сказал: В ТЧ нет set_gravity даже в lua_help. Возможно, что мой lua_help не из чистой, а из какого-то мода. Сталкер - наше всё! Ссылка на комментарий
Dead_Land 4 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 (изменено) В 24.12.2018 в 11:20, Houdini_one сказал: @Dead_Land, мы совершенно не знаем, что ты делал. Возможно, твой мод на версию 1.0006, в следствии несовместимости вылетает. Мод поддерживает версии 1.0004-5, вот код с мотиватора проблемный on_npc_hit понятия не имею почему он ругает может я его как-то нетуда прописал ?! --[[------------------------------------------------------------------------------------------------------------------ автор: Диденко Руслан (Stohe) порядок вызова методов биндера: reload reinit load net_spawn --------------------------------------------------------------------------------------------------------------------]] memtsg = {} --' временная таблица lasthealth = 0 lastime = nil ---------------------------------------------------------------------------------------------------------------------- function look_to_shot(object, who) if object and who then if IsStalker(object) and (object:alive() and who:alive()) and not xr_wounded.is_wounded(object) and ((IsStalker(who) and object:relation(who) ~= game_object.friend) or IsMonster(who)) then if object:best_enemy() then local be = object:best_enemy() local enemy_dist = object:position():distance_to_sqr(be:position()) local who_dist = object:position():distance_to_sqr(who:position()) if who_dist < enemy_dist then object:set_sight(look.danger,who:bone_position("bip01_head")) end else object:set_sight(look.danger,who:bone_position("bip01_head")) end end end end function recognize_sound(sound_type) -- Выясняем тип звука local sn_t = "NIL" if bit_and(sound_type, snd_type.weapon) == snd_type.weapon then sn_t = "WPN" if bit_and(sound_type, snd_type.weapon_shoot) == snd_type.weapon_shoot then sn_t = "WPN_shoot" elseif bit_and(sound_type, snd_type.weapon_empty) == snd_type.weapon_empty then sn_t = "WPN_empty" elseif bit_and(sound_type, snd_type.weapon_bullet_hit) == snd_type.weapon_bullet_hit then sn_t = "WPN_hit" elseif bit_and(sound_type, snd_type.weapon_reload) == snd_type.weapon_reload then sn_t = "WPN_reload" end elseif bit_and(sound_type, snd_type.item) == snd_type.item then sn_t = "ITM" if bit_and(sound_type, snd_type.item_pick_up) == snd_type.item_pick_up then sn_t = "ITM_pckup" elseif bit_and(sound_type, snd_type.item_drop) == snd_type.item_drop then sn_t = "ITM_drop" elseif bit_and(sound_type, snd_type.item_hide) == snd_type.item_hide then sn_t = "ITM_hide" elseif bit_and(sound_type, snd_type.item_take) == snd_type.item_take then sn_t = "ITM_take" elseif bit_and(sound_type, snd_type.item_use) == snd_type.item_use then sn_t = "ITM_use" end elseif bit_and(sound_type, snd_type.monster) == snd_type.monster then sn_t = "MST" if bit_and(sound_type, snd_type.monster_die) == snd_type.monster_die then sn_t = "MST_die" elseif bit_and(sound_type, snd_type.monster_injure) == snd_type.monster_injure then sn_t = "MST_damage" elseif bit_and(sound_type, snd_type.monster_step) == snd_type.monster_step then sn_t = "MST_step" elseif bit_and(sound_type, snd_type.monster_talk) == snd_type.monster_talk then sn_t = "MST_talk" elseif bit_and(sound_type, snd_type.monster_attack) == snd_type.monster_attack then sn_t = "MST_attack" elseif bit_and(sound_type, snd_type.monster_eat) == snd_type.monster_eat then sn_t = "MST_eat" end end return sn_t end function check_sound(self, who, sound_type, sound_position, sound_power) -- secure and optimize if not self or not who or not sound_type or not sound_position or not sound_power then return end local actsch = nil if db.storage[self:id()] and db.storage[self:id()].active_scheme then actsch = db.storage[self:id()].active_scheme end if actsch and (actsch == "remark" or actsch == "wounded" or actsch == "actor_dialogs") then return end -- Реакция на звуки -- -- Расстояния проверки local who_dist = 1000 local check_dist = 25*sound_power -- Отсеиваем свои звуки и звуки друзей if (IsMonster(who) or IsStalker(who)) and (who:alive() and self:alive()) and self:id() ~= db.actor:id() and who:id() ~= db.actor:id() then who_dist = self:position():distance_to(who:position()) if who_dist > check_dist or who:id() == self:id() or who:id() == db.actor:id() or db.cars[who:id()] or self:relation(who) == game_object.friend or self:relation(who) == game_object.neutral or xr_wounded.is_wounded(self) then return end else return end local snd_t = recognize_sound(sound_type) local self_hit = hit() self_hit.type = hit.strike self_hit.power = 0 self_hit.impulse = 0.01 self_hit.draftsman = self self_hit.direction = vector():set(0,0,0) local hit = hit() hit.type = hit.strike hit.power = 0 hit.impulse = 0.01 hit.draftsman = self hit.direction = vector():set(0,0,0) -- Если тип задан проверим реакцию на него if snd_t and snd_t ~= "NIL" and not self:best_enemy() then self:set_sight(look.point,sound_position) if IsStalker(who) and (self:relation(who) == game_object.enemy) then if snd_t == "WPN_empty" or snd_t == "WPN_reload" or snd_t == "ITM_drop" or snd_t == "ITM_use" then check_dist = 10*sound_power who_dist = self:position():distance_to(who:position()) if who_dist > check_dist then return else self:set_mental_state(anim.danger) end elseif snd_t == "WPN_shoot" then self:hit(self_hit) self:set_mental_state(anim.danger) end elseif IsMonster(who) then if snd_t == "MST_step" or snd_t == "MST_talk" then if string.find(who:name(), "gigant") then self:hit(hit) self:set_mental_state(anim.panic) else self:set_mental_state(anim.danger) end elseif snd_t == "MST_attack" then self:hit(self_hit) self:set_mental_state(anim.danger) end end end end function check_art_weapon(npc) ------------------------------ --' Изредка движок сглюкивает, --' назначая неписю в слот артефакт --' этого следует избежать, --' так как такие неписи --' застревают на попытке --' применения арта как оружия ------------------------------ local item_in_slot = npc:item_in_slot(1) local act_item = npc:active_item() if act_item and item_in_slot and act_item:id() == item_in_slot:id() then local item_in_slot_sec = act_item:section() local item_in_slot_id = act_item:id() if item_in_slot_sec and item_in_slot_id and (string.find(item_in_slot_sec, "caps_") or string.find(item_in_slot_sec, "af_")) then --' Если непись получил арт в слот по ошибке при загрузке игры, мы просто --' обновим ему оружие в руках и всё. Иначе, если он взял арт в руки и отказывается --' его убирать, а лучшее оружие получить не удаётся, придётся арт выбросить, отрелизить и вернуть ему в рюкзак. -- amk.logf("WARNING! Engine error - art in NPC weapon slot! "..tostring(item_in_slot_sec).." ID "..tostring(item_in_slot_id)) -- local s_obj = alife():object(item_in_slot_id) local bw = npc:best_weapon() local be = npc:best_enemy() local rem_id = npc:active_item():id() npc:drop_item(npc:active_item()) local s_obj = alife():object(rem_id) if s_obj then -- amk.logf("ITEM RESET "..tostring(item_in_slot_sec)) alife():release(s_obj, true) alife():create(item_in_slot_sec,npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id()) end if bw and string.find(bw:section(), "wpn_") then -- amk.logf("TOSS WEAPON TO "..bw:section().." FROM "..tostring(rem_id)) if be then npc:set_item(object.fire1, bw) return else npc:set_item(object.idle, bw) return end end end end end --------------------------------------------------------------------------------------------------------------------- class "motivator_binder" (object_binder) function motivator_binder:__init (obj) super(obj) self.loaded = false self.last_update = 0 ----memusage.collect_info(self.object, "__init") self.first_update = false self.treasure_processed = false end function motivator_binder:extrapolate_callback(cur_pt) if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "extrapolate_callback") self.st.move_mgr:extrapolate_callback(self.object) end if patrol(self.object:patrol()):flags(cur_pt):get() == 0 then return true end return false end function motivator_binder:reinit() object_binder.reinit(self) --memusage.collect_info(self.object, "reinit_start") --printf("motivator_binder:reinit(): self.object:name()='%s'", self.object:name()) -- КОЛЛБЕКИ ЗДЕСЬ СТАВИТЬ НЕЛЬЗЯ! Здесь еще неизвестна активная схема. -- Ставьте коллбеки в методе update в отмеченном комментарием месте. local char_ini = self.object:spawn_ini() or ini_file("scripts\\dummy.ltx") ---------------------------------------------------------------------------------------------------------------------- -- Общие скрипты ---------------------------------------------------------------------------------------------------------------------- db.storage[self.object:id()] = { followers = {} } self.st = db.storage[self.object:id()] --' Создание менеджера контроля положений тела --memusage.collect_info(self.object, "before_statemgr") self.st.state_mgr = state_mgr.bind_manager(self.object) self.st.move_mgr = move_mgr.move_mgr(self.object) self.st.move_mgr:initialize() --memusage.collect_info(self.object, "after_statemgr") --memusage.collect_info(self.object, "reinit_end") end ---------------------------------------------------------------------------------------------------------------------- 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 -- ----------------------------------------------------- ARENA_EXTENSION_MOD-------------------------------------------------------- --if self.object: profile_name() == "arena_military_1on1" then if string.find(self.object:section(),"arena_military_") then self.object:add_restrictions("bar_arena_restrictor","") end if string.find(self.object:section(),"arena_killer_") then self.object:add_restrictions("bar_arena_restrictor","") end if string.find(self.object:section(),"arena_freedom_") then self.object:add_restrictions("bar_arena_restrictor","") end if string.find(self.object:section(),"arena_dolg_") then self.object:add_restrictions("bar_arena_restrictor","") end -- ----------------------------------------------------- ARENA_EXTENSION_MOD-------------------------------------------------------- -- 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-и ставить здесь: self.object:set_patrol_extrapolate_callback(motivator_binder.extrapolate_callback, self) self.object:set_callback(callback.hit, motivator_binder.hit_callback, self) self.object:set_callback(callback.death, motivator_binder.death_callback, self) self.object:set_callback(callback.use_object, motivator_binder.use_callback, self) --memusage.collect_info(self.object, "after__callback") --self.object:set_callback(callback.sound, motivator_binder.hear_callback, self) --' Загрузка историй для лагеря. if self.loaded == false then local char_ini = self.object:spawn_ini() or ini_file("scripts\\dummy.ltx") xr_info.loadInfo(self.object, char_ini) end if not self.object:alive() then return true end --' Для зомбированных чуваков говорим что аномалий не существует if self.object:character_community() == "zombied" then local manager = self.object:motivation_action_manager() manager:remove_evaluator (stalker_ids.property_anomaly) manager:add_evaluator (stalker_ids.property_anomaly, property_evaluator_const(false)) if outfit_evaluator then manager:add_evaluator(1101, property_evaluator_const(false)) end else local manager = self.object:motivation_action_manager() manager:remove_evaluator (stalker_ids.property_anomaly) manager:add_evaluator (stalker_ids.property_anomaly, property_evaluator_const(false)) if outfit_evaluator then manager:add_evaluator(1101, outfit_evaluator.evaluator_outfit(self.object,"evaluator_outfit")) local action = manager:action (xr_actions_id.alife) action:add_precondition (world_property(1101, false)) end end if ogsm_hideout then local manager = self.object:motivation_action_manager() manager:add_evaluator(ogsm_hideout.property_blowout, property_evaluator_const(false)) manager:add_evaluator(ogsm_hideout.property_hideout_lost, property_evaluator_const(false)) manager:add_evaluator(ogsm_hideout.property_inhide, property_evaluator_const(false)) end --' загрузка озвучки --memusage.collect_info(self.object, "before_soundmgr") xr_sound.load_sound(self.object) --memusage.collect_info(self.object, "after_soundmgr_netspawn_end") xr_gulag.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_stalker, self.loaded ) return true end function motivator_binder:net_destroy() if xrs_ai then xrs_ai.npc_net_destroy(self.object) end -- if rx_ai then rx_ai.npc_switch_offline(self.object) end --printf("motivator_binder:net_destroy(): self.object:name()='%s'", self.object:name()) local st = db.storage[self.object:id()] if st.active_scheme then xr_logic.issue_event(self.object, st[st.active_scheme], "net_destroy", self.object) end db.del_obj(self.object) db.storage[self.object:id()] = nil self:clear_callbacks() self.object:set_callback(callback.use_object, nil) object_binder.net_destroy(self) end function motivator_binder:clear_callbacks() self.object:set_patrol_extrapolate_callback(nil) self.object:set_callback(callback.hit, nil) self.object:set_callback(callback.death, nil) end function motivator_binder:hit_callback(obj, amount, local_direction, who, bone_index) -- FIXME: коллбеки неплохо было бы регистрировать в общем storage, а не посхемно... -- просто всегда ставить их при включении схемы и снимать при отключении. if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "hit_callback", obj, amount, local_direction, who, bone_index) end if self.st.combat_ignore then xr_logic.issue_event(self.object, self.st.combat_ignore, "hit_callback", obj, amount, local_direction, who, bone_index) end if self.st.combat then xr_logic.issue_event(self.object, self.st.combat, "hit_callback", obj, amount, local_direction, who, bone_index) end if self.st.hit then xr_logic.issue_event(self.object, self.st.hit, "hit_callback", obj, amount, local_direction, who, bone_index) end if amount > 0 then printf("HIT_CALLBACK: %s amount=%s bone=%s", obj:name(), amount, tostring(bone_index)) sr_territory.issue_event(self.object, "hit_callback", obj, amount, local_direction, who, bone_index) xr_wounded.hit_callback(self.object:id()) end amk.on_npc_hit(obj, amount, local_direction, who, bone_index) if rx_ai then rx_ai.npc_hit(obj,amount,local_direction,who,bone_index,self.object) end end function motivator_binder:death_callback(victim, who) if xrs_ai then xrs_ai.npc_death_callback(self.object,who) end if rx_ai then rx_ai.npc_death(self.object,who) end if who:id() == db.actor:id() then xr_statistic.addKillCount(self.object) end if self.st.death then xr_logic.issue_event(self.object, self.st.death, "death_callback", victim, who) end if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "death_callback", victim, who) end sr_territory.issue_event(self.object, "death_callback", victim, who) sr_light.check_light(self.object) smart_terrain.on_death( self.object:id() ) death_manager.drop_manager(self.object):create_release_item() self:clear_callbacks() --' Наносим небольшой импульс вперед. local h = hit() h.draftsman = self.object h.type = hit.fire_wound h.direction = db.actor:position():sub(self.object:position()) h:bone("pelvis") h.power = 1 h.impulse = 10 self.object:hit(h) if(actor_stats.remove_from_ranking~=nil)then local community = self.object:character_community() if community == "zombied" or community == "monolith" or community == "arena_enemy" then return end actor_stats.remove_from_ranking(self.object:id()) end end function motivator_binder:use_callback(obj, who) if self.object:alive() then xr_use.notify_on_use(obj, who) if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who) end else if self.treasure_processed == false then treasure_manager:get_treasure_manager():use(self.object) self.treasure_processed = true end end end function motivator_binder:update(delta) object_binder.update(self, delta) -- self.prev_action_id = debug_helper.print_action(self.object, self.prev_action_id) if self.first_update == false then if self.object:alive() == false then death_manager.drop_manager(self.object):create_release_item() end self.first_update = true end if time_global() - self.last_update > 1000 then if amk.get_npc_relation(self.object,db.actor)=="enemy" and self.object:alive() and self.object.health>0.01 then if self.object:see(db.actor) then amk.enemy_see_actor(self.object,"npc") end if db.actor:see(self.object) then amk.actor_see_enemy(self.object,"npc") end end sr_light.check_light(self.object) self.last_update = time_global() end local wpn = utils.wpn_info_get(self.object) if wpn["ammo"]~=nil then local enemy = self.object:best_enemy() if enemy and enemy:id()==db.actor:id() and self.object:see(db.actor) and self.prev_ammo>wpn["ammo"] then amk.npc_shot_actor(self.object) end end self.prev_ammo = wpn["ammo"] or 0 --' Апдейт менеджера состояний тела if self.st.state_mgr then if self.object:alive() then self.st.state_mgr:update() -- Апдейт торговли if self.st.state_mgr.combat == false and self.st.state_mgr.alife == false then trade_manager.update(self.object) end else self.st.state_mgr = nil end end --' Апдейт саундменеджера if self.object:alive() then xr_sound.update(self.object) end if self.object:alive() then if self.object:is_talk_enabled() then self.object:set_tip_text("character_use") else self.object:set_tip_text("") end else self.object:set_tip_text_default() end self.object:info_clear() local best_enemy = self.object:best_enemy() if best_enemy then self.object:info_add('enemy -- ' .. best_enemy:name()) end local active_section = db.storage[self.object:id()].active_section if active_section then self.object:info_add('section -- ' .. active_section) end self.object:info_add('name -- ' .. self.object:name()) --' Проверка потери жизни --[[ if lasttime == nil or game.get_game_time():diffSec(lasttime) > 1 then printf("%f * %f", self.object.health, self.object.health - lasthealth) lasthealth = self.object.health lasttime = game.get_game_time() end ]] --[[ if not self.debug_smrt then for k, v in pairs( db.smart_terrain_by_id ) do self.debug_smrt = true local o = alife():object( self.object:id() ) if v:enabled(o) then v:register(o) end break end end]] if xrs_ai then xrs_ai.npc_update(self) end if rx_ai then rx_ai.npc_update(self.object,self.st) end end function motivator_binder:reload(section) --memusage.collect_info(self.object, "reload_start") object_binder.reload(self, section) --printf("motivator_binder:reload(): self.object:name()='%s'", self.object:name()) --self.object:set_pda_callback(pda_callback) --memusage.collect_info(self.object, "reload_end") end function motivator_binder:net_save_relevant() --printf("motivator_binder:net_save_relevant(): self.object:name()='%s'", self.object:name()) return true end function motivator_binder:save(packet) printf("motivator_binder:save(): self.object:name()='%s'", self.object:name()) object_binder.save(self, packet) packet:w_bool(self.treasure_processed) xr_logic.save_obj(self.object, packet) dialog_manager.save(self.object, packet) trade_manager.save(self.object, packet) end function motivator_binder:load(reader) self.loaded = true printf("motivator_binder:load(): self.object:name()='%s'", self.object:name()) object_binder.load(self, reader) printf("motivator_binder:object_binder.load(): self.object:name()='%s'", self.object:name()) if reader:r_eof() then abort("SAVE FILE IS CORRUPT") end local unused = reader:r_bool() self.treasure_processed = reader:r_bool() xr_logic.load_obj(self.object, reader) self.npc_script_version = alife():object(self.object:id()).script_version dialog_manager.load(self.object, reader, self.npc_script_version) trade_manager.load(self.object, reader) end function motivator_binder:hear_callback(self, who, sound_type, sound_position, sound_power) if who:id() == self:id() then return end local type = "NIL" if bit_and(sound_type, snd_type.weapon) == snd_type.weapon then type = "WPN" if bit_and(sound_type, snd_type.weapon_shoot) == snd_type.weapon_shoot then type = "WPN_shoot" elseif bit_and(sound_type, snd_type.weapon_empty) == snd_type.weapon_empty then type = "WPN_empty" elseif bit_and(sound_type, snd_type.weapon_bullet_hit) == snd_type.weapon_bullet_hit then type = "WPN_hit" elseif bit_and(sound_type, snd_type.weapon_reload) == snd_type.weapon_reload then type = "WPN_reload" end elseif bit_and(sound_type, snd_type.item) == snd_type.item then type = "ITM" if bit_and(sound_type, snd_type.item_pick_up) == snd_type.item_pick_up then type = "ITM_pckup" elseif bit_and(sound_type, snd_type.item_drop) == snd_type.item_drop then type = "ITM_drop" elseif bit_and(sound_type, snd_type.item_hide) == snd_type.item_hide then type = "ITM_hide" elseif bit_and(sound_type, snd_type.item_take) == snd_type.item_take then type = "ITM_take" elseif bit_and(sound_type, snd_type.item_use) == snd_type.item_use then type = "ITM_use" end elseif bit_and(sound_type, snd_type.monster) == snd_type.monster then type = "MST" if bit_and(sound_type, snd_type.monster_die) == snd_type.monster_die then type = "MST_die" elseif bit_and(sound_type, snd_type.monster_injure) == snd_type.monster_injure then type = "MST_damage" elseif bit_and(sound_type, snd_type.monster_step) == snd_type.monster_step then type = "MST_step" elseif bit_and(sound_type, snd_type.monster_talk) == snd_type.monster_talk then type = "MST_talk" elseif bit_and(sound_type, snd_type.monster_attack) == snd_type.monster_attack then type = "MST_attack" elseif bit_and(sound_type, snd_type.monster_eat) == snd_type.monster_eat then type = "MST_eat" end end if type ~= "NIL" then printf("SND *%s* dist: %d [%f], %s -> %s", type, self:position():distance_to(who:position()), sound_power, who:name(), self:name()) end end function AddToMotivator(npc) if alife() then npc:bind_object(this.motivator_binder(npc)) end end -- Эвалюаторы, которые имеют высший приоритет, и, соответственно, перебивают остальные скрипты собой function addCommonPrecondition(action) --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)) if ogsm_hideout then action:add_precondition(world_property(ogsm_hideout.property_blowout, false)) action:add_precondition(world_property(ogsm_hideout.property_hideout_lost, false)) action:add_precondition(world_property(ogsm_hideout.property_inhide, false)) end if anomaly_evader then action:add_precondition (world_property(1099,false)) end if watcher_act then action:add_precondition(world_property(watcher_act.evid_see_stuff, false)) end if outfit_evaluator then action:add_precondition (world_property(1101,false)) end if xrs_ai then xrs_ai.addCommonPrecondition(action) end if rx_ai then rx_ai.addCommonPrecondition(action) end end Изменено 25 Декабря 2018 пользователем Dead_Land Q Ссылка на комментарий
Cagorich 0 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 (изменено) Доброго времени суток. Столкнулся с непонятной для меня проблемой, решил перенести артефакты из ЗП в ТЧ. Перенес модели все прекрасно работают, но есть одна проблема. Если взять артефакт, а затем выбросить его то происходить вылет такого вида: Скрытый текст * MEMORY USAGE: 281047 K stack trace: 0023:008B000D xrCore.dll 0023:0077CDD8 xrCore.dll, xrDebug::fail() 0023:03A892EB xrGame.dll И это не только с артефактами, любыми простыми предметами из ЗП. Артефакты прогонял через SDK 0.4. На отсутствие шейдеров или еще чего то лог не жаловался. Подскажите может кто-то по курсу где я допустил ошибку? Изменено 25 Декабря 2018 пользователем Cagorich Ссылка на комментарий
Jekyll 92 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 (изменено) 3 часа назад, Dead_Land сказал: проблемный on_npc_hit 409 строка: amk.on_npc_hit(obj, amount, local_direction, who, bone_index) Проверь для начала наличие у себя в скриптах файла amk.script, и если таков есть, проверь в нем наличие функции on_npc_hit. И на будущее - скидывай сюда лучше сам файл, а не все его содержимое, пусть даже под спойлером. Изменено 25 Декабря 2018 пользователем Jekyll New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
Dead_Land 4 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 @Jekyll, Там есть всё и функция есть проблема только что огрызается вылетами при выстрелах нпс. Добавлено BFG, 25 Декабря 2018 Запрещено цитировать предыдущий пост полностью. Исправил. Ссылка на комментарий
Jekyll 92 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 (изменено) Можешь выложить сюда свой текущий amk.script, а заодно этот Interactive_Music_Mod? На какую базу ты его устанавливал? АМК 1.4.1? Вылеты в боевке начались именно после установки Interactive_Music_Mod? Изменено 25 Декабря 2018 пользователем Jekyll New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
AndrewMor 527 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 17 часов назад, Cagorich сказал: Если взять артефакт, а затем выбросить его то происходить вылет такого вида: Я все арты из ЧН и ЗП в ТЧ переносил. Модели перегонял конвертером в object, потом в АЕ конвертировал обратно в ogf. Все прекрасно работает, берется-выбрасывается. Сталкер - наше всё! Ссылка на комментарий
Cagorich 0 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 (изменено) 3 минуты назад, AndrewMor сказал: Я все арты из ЧН и ЗП в ТЧ переносил. Модели перегонял конвертером в object, потом в АЕ конвертировал обратно в ogf. Все прекрасно работает, берется-выбрасывается. В object я перегонял с помощью MilkShape 3D. Затем в SDK 0.4. Хм.. Попробую конвертером. С моделями НПС проблем никаких не было. Кстати, не только с артефактами, с любыми предметами из ЗП и ЧН. Изменено 26 Декабря 2018 пользователем Cagorich Ссылка на комментарий
AndrewMor 527 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 2 минуты назад, Cagorich сказал: С моделями НПС проблем никаких не было. С моделями НПС - да, нужна Милка, там две косточки для ТЧ лишние. Ну и файл настройки костей. Далее все стандартно. 1 Сталкер - наше всё! Ссылка на комментарий
Cagorich 0 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 31 минуту назад, AndrewMor сказал: С моделями НПС - да, нужна Милка, там две косточки для ТЧ лишние. Ну и файл настройки костей. Далее все стандартно. И вправду, проблема оказалась в Милке. Прогнал через обычный конвертер, затем в SDK и все работает. Ссылка на комментарий
Dead_Land 4 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 12 часов назад, Jekyll сказал: Можешь выложить сюда свой текущий amk.script, а заодно этот Interactive_Music_Mod? На какую базу ты его устанавливал? АМК 1.4.1? Вылеты в боевке начались именно после установки Interactive_Music_Mod? У меня там сборка её кидать или нет? Просто весит многовато не у всех есть инет безлимитный. Ссылка на комментарий
Dead_Land 4 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 (изменено) 12 часов назад, Jekyll сказал: Можешь выложить сюда свой текущий amk.script, а заодно этот Interactive_Music_Mod? На какую базу ты его устанавливал? АМК 1.4.1? Вылеты в боевке начались именно после установки Interactive_Music_Mod? У меня там сборка может её кинуть или нет? Просто весит многовато не у всех есть инет безлимитный. База мода OGSM Ultimate он использует амк скрипт. Изменено 26 Декабря 2018 пользователем Dead_Land Ссылка на комментарий
Dead_Land 4 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 1.gamedata это оригинал Interactive_Music_Mod. http://mega.dp.ua/file?source=18122611031733205819 2.Новая папка это мои уже. http://mega.dp.ua/file?source=18122611082467510180 3. Администрации сверху багнулось что-то я не знаю почему оно профлудило 2 раза я просто отредактировал старое. Ссылка на комментарий
dPlayer 470 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 Что происходит при подборе предметов из х18? Выдаётся какой инфопоршень? Ссылка на комментарий
Akello 175 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 32 минуты назад, dPlayer сказал: Что происходит при подборе предметов из х18? Выдаётся какой инфопоршень? Так смотря каких именно предметов, ты бы уточнил, если квестовых, то в самом квесте и смотри, что там выдается. 1 Ссылка на комментарий
AndrewMor 527 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 23 часа назад, Cagorich сказал: Прогнал через обычный конвертер, затем в SDK и все работает. Что и требовалось доказать Сталкер - наше всё! Ссылка на комментарий
dPlayer 470 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 @Akello, не то написал. Документов из х18 а не предметов 1 Ссылка на комментарий
Змея 240 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 (изменено) @dPlayer darkvalley_tasks.script function proceed() local actor = db.actor if not has_alife_info("dar_document1") and actor:object("dar_document1") then actor:give_info_portion("dar_document1") end То есть - выдаются поршни. Элементарный поиск по файлам)) ЗЫ. Кстати нет разницы, предмет или документ. Всяко с квест_итемс нужно начинать... Изменено 27 Декабря 2018 пользователем Змея 1 Ссылка на комментарий
dPlayer 470 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 @Змея, в целом, ф-ция которую ты привел, в оригинале не используется 1 Ссылка на комментарий
lordmuzer 743 Опубликовано 27 Декабря 2018 Поделиться Опубликовано 27 Декабря 2018 (изменено) Почему не используется? через level_tasks.script вызываются такие скрипты(*_tasks.script) при получении любого инфо поршня. Изменено 27 Декабря 2018 пользователем lordmuzer 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти