
派对AI全面革新与指令重建
本模组名为"派对AI大修与指令",适用于游戏版本v1.0.3。
查看大图派对AI大修与指令
这个模组名为"派对AI大修与指令",适用于游戏版本v1.0.3。 我修改了这段原始源代码。 https://gitlab.com/octaviusmods/bannerlord-party-ai-overhaul-and-commands 感谢作者。
所需模组
- 和谐
模组顺序
问:我禁用了这个模组后,存档在原版游戏中崩溃了。我该怎么办?
答: 你需要重置使用了该模组功能的元素。 例如: 如果你以雇佣兵身份加入王国并使用此模组的功能创建军队,在禁用此模组前必须解散军队。 因为在原版游戏中,雇佣兵不能成为军队领袖。
问:如何翻译成不同的语言?
答: 您可以使用"Localization_english.xml"作为翻译模板。 如何创建翻译文件:
- 本地化模板文件:PartyAIOverhaulCommands\ModuleData\Languages\English\Localization_english.xml
- 复制"English"文件夹并适当重命名。
- 将文件夹中的"Localization_english.xml"重命名为合适的名称。
- 请将xml文件中"tag language"的值更改为您想要翻译的语言。 (游戏选项中"游戏玩法-语言"部分显示的语言。)
- 游戏启动时会加载位于 ModuleData\Languages 文件夹下的文件。 如果您更改了翻译文件的内容,您需要重新启动启动器。
- 请注意,对英文文本的修改不会在游戏中生效。
问:如何同时使用《我的小小战团》和这个模组?
答: 请参考以下指南。 我确认同时使用《我的小小战团》(1.7版)和《部队AI大修指令重制版》(1.7版)确实能让你的部队专门招募自定义兵种。按照以下步骤操作,你的部队招募的任何兵种都会自动转换为你的自定义兵种*,无论他们从哪个阵营招募:
1.) 使用《我的小小战团》(默认设置),为你想要的征召兵和精锐兵种树创建自定义部队。 2.) 使用队伍AI大修(默认设置),组建好你想要的队伍后,与队长对话。 3.) 选择 > "让我们回顾一下你队伍的组成计划。" 4.) 选择 > "让我们来决定你应该招募哪些部队。" 5.) 在"可用兵种树"下点击全部转移按钮,直到右侧所有兵种都转移到左侧。 6.) 选择 > "让我们仔细看看。" 7.) 此处请勿进行任何更改。选择 > 完成。 8.) 最后,系统会询问你是否希望从俘虏中招募士兵。选择 > "否"。(选择"是"将允许他们招募劫掠者。但经测试发现,由队伍招募的劫掠者士兵会保持劫掠者身份,不会转变为你的自定义兵种。因此如果你不介意自定义部队中混入劫掠者,可以选择 > "是"。)
出于某种原因,我个人发现用其他任何方式都会导致队伍永远无法招募任何人。 *请注意,这将仅允许玩家阵营招募你的自定义兵种。如果你还希望其他AI领主也能招募你的自定义兵种,那么你需要在My Little Warband中更改xml设置。 本指南由arcwolf9创建。
关于选项"DEBUG:检测无领导英雄的领主队伍"
如果启用此选项,模组将检测到没有领导英雄的领主队伍的出现。 检测结果会被写入到桌面创建的harmony.log.txt文件中。
- 当设置了一个领袖英雄时,模组会记录下达设置指令的位置。
- 首次发出空设置命令的位置会以"**StackTrace (General type)"的形式写入日志文件。
- 如果发现队伍中的领袖英雄设置为空,游戏日期/队伍信息/领袖英雄设置历史将被记录到日志文件中。
如果发现一个队伍没有领袖英雄,设置历史中可能会提示涉及哪个模组。
问:为什么在General类型中,有时无法检测到领导者英雄设置为null的派对?
答: 由游戏系统管理的队伍不受检测影响。
以下是检测结果的示例。
- 在"1100年秋12日"检测到一支没有领袖英雄的队伍。
- 在"1100年秋11日",队伍的领导英雄被设定为"米特拉"。
- 在"1100年秋12日"执行的代码导致领袖英雄为空。
- 因此,"1100年秋12日"执行的代码很可能存在问题。
================================ harmony.log.txt ================================
**堆栈跟踪(通用类型):米特拉派对:空:lord_4_24_2_party_19896
在 TaleWorlds.DotNet.Managed.GetStackTraceStr(Int32 skipCount)
在PartyAiOverhaulAndCommands.Behaviors.PAO_DetectNoLeaderHeroParty.PAO_ChangePartyLeaderPatch.Postfix(PartyComponent __实例, Hero 新首领)
在TaleWorlds.CampaignSystem.Party.PartyComponents.LordPartyComponent.ChangePartyLeader_Patch2(LordPartyComponent this, Hero newLeader)
在 TaleWorlds.CampaignSystem.Roster.TroopRoster.AddToCountsAtIndex_Patch1(TroopRoster 这个, Int32 索引, Int32 数量变化, Int32 受伤数量变化, Int32 经验值变化, Boolean 移除耗尽单位)
在TaleWorlds.CampaignSystem.Roster.TroopRoster.AddToCounts_Patch2(TroopRoster this, CharacterObject character, Int32 count, Boolean insertAtFront, Int32 woundedCount, Int32 xpChange, Boolean removeDepleted, Int32 index)
在 TaleWorlds.CampaignSystem.Clan.CreateNewMobileParty(Hero hero)
在 Helpers.MobilePartyHelper.CreateNewClanMobileParty(Hero partyLeader, Clan clan, Boolean& leaderCameFromMainParty)
在 PartyAiOverhaulAndCommands.Behaviors.PAO_DetectNoLeaderHeroParty.ForceCreateLordParty(List1 strings) 在TaleWorlds.Library.CommandLineFunctionality.CallFunction(String concatName, String concatArguments, Boolean& found) 在ManagedCallbacks.LibraryCallbacksGenerated.Managed_CallCommandlineFunction(IntPtr 函数名, IntPtr 参数) --------------------------- 1100年 秋12日 --------------------------- ** 模组发现了一支没有领袖英雄的领主队伍 ** MobilePartyName : 米特拉的小队 领袖英雄 : 无 所有者:米特拉 氏族:德·科坦 王国:瓦兰迪亚 字符串ID : 领主_4_24_2_派对_19896 **堆栈跟踪:德伊·科尔坦的派对:米特拉:lord_4_24_2_party_19896:1100年秋11日 在TaleWorlds.DotNet.Managed.GetStackTraceStr(Int32 skipCount) 在PartyAiOverhaulAndCommands.Behaviors.PAO_DetectNoLeaderHeroParty.PAO_ChangePartyLeaderPatch.Postfix(PartyComponent __instance,Hero newLeader) 在TaleWorlds.CampaignSystem.Party.PartyComponents.LordPartyComponent.ChangePartyLeader_Patch2(LordPartyComponent this, Hero newLeader) 在TaleWorlds.CampaignSystem.Actions.TeleportHeroAction.ApplyInternal(Hero hero, Settlement targetSettlement, MobileParty targetParty, TeleportationDetail detail) 在 TaleWorlds.CampaignSystem.CampaignBehaviors.TeleportationCampaignBehavior.ApplyImmediateTeleport(TeleportationData 数据) 在TaleWorlds.CampaignSystem.CampaignBehaviors.TeleportationCampaignBehavior.HourlyTick() 在 TaleWorlds.CampaignSystem.MbEvent.InvokeList(EventHandlerRec 列表) 在TaleWorlds.CampaignSystem.CampaignEvents.HourlyTick() 在TaleWorlds.CampaignSystem.CampaignEventDispatcher.HourlyTick() 在 TaleWorlds.CampaignSystem.Campaign.HourlyTick(MBCampaignEvent campaignEvent, Object[] delegateParams) 在 TaleWorlds.CampaignSystem.MBCampaignEvent.RunHandlers(Object[] delegateParams) 在 TaleWorlds.CampaignSystem.MBCampaignEvent.CheckUpdate() 在TaleWorlds.CampaignSystem.CampaignPeriodicEventManager.SignalPeriodicEvents() 在 TaleWorlds.CampaignSystem.Campaign.Tick() 在TaleWorlds.CampaignSystem.GameState.MapState.OnMapModeTick(Single dt) 在 TaleWorlds.CampaignSystem.GameState.MapState.OnTick(Single dt) 在TaleWorlds.Core.GameStateManager.OnTick(Single dt) 在TaleWorlds.Core.Game.OnTick(Single dt) 在TaleWorlds.Core.GameManagerBase.OnTick(Single dt) 在TaleWorlds.MountAndBlade.Module.OnApplicationTick(Single dt) 在TaleWorlds.DotNet.Managed.ApplicationTick(Single dt) **堆栈跟踪:米特拉派对:空值:lord_4_24_2_party_19896:1100年秋12日 在TaleWorlds.DotNet.Managed.GetStackTraceStr(Int32 skipCount) 在 PartyAiOverhaulAndCommands.Behaviors.PAO_DetectNoLeaderHeroParty.PAO_ChangePartyLeaderPatch.Postfix(PartyComponent __instance, Hero newLeader) 在TaleWorlds.CampaignSystem.Party.PartyComponents.LordPartyComponent.ChangePartyLeader_Patch2(LordPartyComponent this, Hero newLeader) 在 TaleWorlds.CampaignSystem.Roster.TroopRoster.AddToCountsAtIndex_Patch1(TroopRoster this, Int32 index, Int32 countChange, Int32 woundedCountChange, Int32 xpChange, Boolean removeDepleted) 在 TaleWorlds.CampaignSystem.Roster.TroopRoster.AddToCounts_Patch2(TroopRoster 这个, CharacterObject 角色, Int32 数量, Boolean 插入到前面, Int32 受伤数量, Int32 经验值变化, Boolean 移除耗尽单位, Int32 索引) 在 TaleWorlds.CampaignSystem.Clan.CreateNewMobileParty(Hero hero) 在 Helpers.MobilePartyHelper.CreateNewClanMobileParty(Hero partyLeader, Clan clan, Boolean& leaderCameFromMainParty) 在 PartyAiOverhaulAndCommands.Behaviors.PAO_DetectNoLeaderHeroParty.ForceCreateLordParty(List1 strings)
在 TaleWorlds.Library.CommandLineFunctionality.CallFunction(String concatName, String concatArguments, Boolean& found)
在 ManagedCallbacks.LibraryCallbacksGenerated.Managed_CallCommandlineFunction(IntPtr 函数名, IntPtr 参数)
================================ harmony.log.txt ================================
提示
- 全部 - (极其罕见)若在使用左ALT键让同伴队伍攻击敌人时发生崩溃,按照以下步骤操作或许能避免该问题。
- 启动时禁用此模组。
- 加载一个出现CTD(崩溃到桌面)的存档。
- 将游戏保存到新存档并关闭。
- 启用模组重新启动游戏并加载该新存档。
- e1.6.1b 至 e1.6.5 - 当你所属的王国处于战争状态时,自动重组功能将生效。若想解散部队,请使用部队管理界面中的"解散部队"按钮。
- 仅限e1.6.0版本 - 将部队数量限制保持在1(如果增加会导致崩溃)
- 仅限v2.4.13版本 - 点击重置按钮后,部队招募界面将开始正常运作。
如何安装
- Vortex(Nexus Mods 的开源模组管理器) 或 下载此模组 解压ZIP文件(推荐使用 7-ZIP) 将"PartyAIOverhaulCommands"文件夹复制到Mount & Blade II Bannerlord / Modules目录下 运行Mount & Blade II Bannerlord启动器 点击Mods启用"PartyAIOverhaulCommands"和"Harmony" 点击开始游戏
版本 e1.6.2g 的变更
- 修复了原版游戏中创建新队伍时,会给予超出其最大负重限制的食物,导致移动速度减慢的问题。
- 尝试修复玩家成为囚犯时发生的崩溃问题。
- 在漫游和巡逻命令中新增了"停止俘虏,仅针对领导贵族"选项。
- 现在包含本地化模板。
版本 e1.6.1d 的变更
- 修复了玩家成为囚犯时游戏崩溃的问题。
e1.6.1c版本变更
- 修复了玩家不属于任何王国时解散军队导致的崩溃问题。
- 修复了军队重聚选项无法使用的问题。
版本 e1.6.1b 的变更内容
- 修复了宣战或宣布和平时军队会被强制解散的问题。
- 修复了导致领主消失的bug。
- 在同伴对话界面新增了一个选项,用于设置该模组的各项参数。
- 如果玩家的军队因缺乏凝聚力或成员而解散,现在将自动重新集结。(仅限所属王国处于战争状态时。)
- 该选项设有间隔时间以记忆军队成员。(我刚注意到内部仍固定为3天,将在下次更新中修复。)
- 现在你可以在部队转移界面手动升级同伴的部队了。(自动升级功能同样有效。)
- 修复了在与敌人战斗后打开物品交换界面时部队获得经验的问题。
- 新增了重置所有部队编制模板的功能。
- 可选地,您可以在该模组使用的字符串末尾添加一个标记。
- 可选地,你现在可以在军队编成界面中禁用原版的集结规则,并召唤一个同伴队伍。
- 修复了作弊命令 "campaign.take_hero_prisoner" 在英雄名称中的空格被 "_" 连接时无法识别的问题。
支持模组 "调试打印"
如果您遇到无法解释的崩溃问题,这个模组或许能提供帮助。 本模组访问游戏的运行时调试信息,并将内容输出到日志文件。
输出文件
调试打印/调试信息.txt
输出内容
如果正常,输出将采用以下格式。
===========================================
**Mono : 正在打开 ....\Modules\Native/ModuleData/action_sets.xml
**堆栈跟踪 : **
在 TaleWorlds.DotNet.Managed.GetStackTraceStr(Int32 skipCount)
在 DebugPrint.DebugPrint.Debug_OnPrint(String arg1, UInt64 arg2)
在TaleWorlds.Library.Debug.Print(String message, Int32 logLevel, DebugColor color, UInt64 debugFilter)
在 TaleWorlds.ObjectSystem.MBObjectManager.CreateDocumentFromXmlFile(String xmlPath, String xsdPath, Boolean forceSkipValidation)
在TaleWorlds.ObjectSystem.MBObjectManager.CreateMergedXmlFile方法中合并XML文件(List1待合并文件列表,List1 xslt转换列表,Boolean跳过验证)
在 TaleWorlds.ObjectSystem.MBObjectManager 中获取原生合并 XML 数据(String id, List`1& usedPaths)
在 TaleWorlds.MountAndBlade.Module.CreateProcessedActionSetsXMLForNative()
"**Mono" 是模组从游戏中获取的调试信息。 "StackTrace" 是已执行的函数。(从下往上阅读)
如果发生异常,将使用以下输出格式。
=========================================== 异常 : 抛出参数异常 类型 : 参数异常 消息 : 已添加具有相同键的项。 对象 : mscorlib 模块 : C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll 发送者 : TaleWorlds.MountAndBlade.Launcher.exe 堆栈跟踪 : 在 System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
如何安装
- 漩涡 或
- 将此模组的文件夹复制到"Mount & Blade II Bannerlord/Modules"文件夹中。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。