Solditary 0 Опубликовано 8 Сентября 2023 Здравствуйте! В travel_manager.script нашел подобную функцию: function squad_action_description(actor, npc, dialog_id, phrase_id) local npc_squad = get_object_squad(npc) if npc_squad.current_action == nil or npc_squad.current_action.name == "stay_point" then return "dm_" .. "stalker" .."_doing_nothing_"..tostring(math.random(1,3)) --npc:character_community() end local target_id = npc_squad.assigned_target_id -- if target_id == nil then -- return "dm_" .. npc:character_community() .."_doing_nothing" -- end local target_obj = alife():object(target_id) if target_obj == nil then abort("SIM TARGET NOT EXIST %s, action_name %s", tostring(target_id), tostring(npc_squad.current_action.name)) end local target_clsid = target_obj:clsid() if target_clsid == clsid.script_actor then abort("Actor talking with squad, which chasing actor") elseif target_clsid == clsid.online_offline_group_s then return "dm_" .. "stalker" .."_chasing_squad_"..alife_character_community(target_obj) --npc:character_community() elseif target_clsid == clsid.smart_terrain then local smart_name = target_obj:name() local travel_class = get_travel_class() local desc = travel_class.smart_to_stringtables[smart_name] if desc == nil then abort("wrong smart name [%s] in travel_manager.ltx", tostring(smart_name)) end return desc end abort("wrong target clsid [%s]", tostring(target_clsid)) end Собстено меня заинтересовала строка: return "dm_" .. "stalker" .."_chasing_squad_"..alife_character_community(target_obj) --npc:character_community() Выдает нам ее НПС когда охотится з отрядом, например за бандитами. Игра обращается к функции "alife_character_community()" (_g.script) и должна вернуть значение "bandit" и выдать "dm_stalker_chasing_squad_bandit", однако игра не правильно определяет группировку отряда и возвращает всегда значение "monster" и на выходе всегда получается "dm_stalker_chasing_squad_monster" function alife_character_community (obj) if IsStalker(obj, obj:clsid()) then return obj:community() end return "monster" end Находил в _g.script подобное: function start_game_callback() aa = alife() squad_community_by_behaviour = { ["stalker"] = "stalker", ["bandit"] = "bandit", ["dolg"] = "dolg", ["freedom"] = "freedom", ["army"] = "army", ["ecolog"] = "ecolog", ["killer"] = "killer", ["zombied"] = "zombied", ["monolith"] = "monolith", ["monster"] = "monster", ["monster_predatory_day"] = "monster", ["monster_predatory_night"] = "monster", ["monster_vegetarian"] = "monster", ["monster_zombied_day"] = "monster", ["monster_zombied_night"] = "monster", ["monster_special"] = "monster" } ... Вот как раз эти группировки отряда должна определять игра. Так вот вопрос: как заставить игру определить группировку преследуемого отряда? Пробовал вместо "alife_character_community(target_obj)" вставить это: "npc_squad:get_squad_community(target_obj)", и игра в таком случае определяет группировку НПС, с которым говорит игрок, а не группировку преследуемого отряда. Поделиться этим сообщением Ссылка на сообщение