【骑马与砍杀2:霸主】 dnSpy修改游戏数据,改变俘虏的招募速度

您所在的位置:网站首页 骑砍修改招募士兵人数 【骑马与砍杀2:霸主】 dnSpy修改游戏数据,改变俘虏的招募速度

【骑马与砍杀2:霸主】 dnSpy修改游戏数据,改变俘虏的招募速度

#【骑马与砍杀2:霸主】 dnSpy修改游戏数据,改变俘虏的招募速度| 来源: 网络整理| 查看: 265

作为老汽油,从刚出第一天就开始玩,本人游戏时间得有快700小时了,也玩过各种各样的流派。在高难度下,除了改造人体流,野战对高级兵的消耗还是比较大的,本人就想加速俘虏中高级兵的招募速度,快速补员。要么没有符合的mod,要么功能不喜欢,因此在这里分享一种自己修改游戏数据的方法,所用的工具是dnSpy。

dnSpy是一款开源的.NET程序集反编译器和调试器,它可以用来分析和修改.NET程序集。dnSpy可以反编译.NET程序集中的IL代码,还可以将程序集转换为C#代码进行查看和编辑。除了反编译外,dnSpy还支持调试.NET程序集,包括单步调试和断点调试等功能。通过dnSpy,用户可以深入了解.NET程序的内部实现,并且可以对其进行修改和优化。我们这里用它来修改骑砍2的TaleWorlds.CampaignSystem.dll,里边有我们需要修改的数据。另外dnSpy也可以修改其他用c#或者unity开发的游戏文件,比如雨中冒险2等。

首先,安装好dnSpy以后,用它打开骑砍文件夹中的 Mount & Blade II Bannerlord\bin\Win64_Shipping_Client\TaleWorlds.CampaignSystem.dll(最好提前备份一份,方便反悔), 打开后如下图所示:

点击TaleWorlds.CampaignSystem.GameCompnents左侧的三角,可以看到游戏中部分模块的数据,你可以根据名称判断你是否想修改,比如DefaultBattleRewardModel定义了战斗后获得的奖励,包括声望,领主关系,战利品质量和数量等。这里我们要修改的是DefaultPrisonerRecruitmentCalculationModel, 从名字就可看出它是管俘虏招募计算的。

比如GetConformityNeededToRecruitPrisoner函数是计算俘虏士兵可以被招募的服从度,从函数可以看出这个值只跟士兵的等级有关,为(等级+6)的平方 – 10。所以,使用dnSpy你也可以看到烤肉社的游戏机制设计。

public override int GetConformityNeededToRecruitPrisoner(CharacterObject character) { return (character.Level + 6) * (character.Level + 6) - 10; }

这里我们只修改每小时俘虏获得的服从度,右击函数名,并选择编辑方法:

修改其中代码如下:

public override int GetConformityChangePerHour(PartyBase party, CharacterObject troopToBoost) { ExplainedNumber explainedNumber = new ExplainedNumber(10f, false, null); if (party.LeaderHero != null) { explainedNumber.Add((float)party.LeaderHero.GetSkillValue(DefaultSkills.Leadership) * 0.15f, null, null); explainedNumber.Add((float)party.LeaderHero.GetSkillValue(DefaultSkills.Charm) * 0.2f, null, null); explainedNumber.Add((float)party.LeaderHero.GetSkillValue(DefaultSkills.Steward) * 0.15f, null, null); } if (troopToBoost.Tier = 4 && party.MobileParty.HasPerk(DefaultPerks.Leadership.StoutDefender, true)) { explainedNumber.AddFactor(DefaultPerks.Leadership.StoutDefender.SecondaryBonus * 0.01f, null); } if (troopToBoost.Occupation != Occupation.Bandit && party.MobileParty.HasPerk(DefaultPerks.Leadership.LoyaltyAndHonor, true)) { explainedNumber.AddFactor(DefaultPerks.Leadership.LoyaltyAndHonor.SecondaryBonus * 0.01f, null); } if (troopToBoost.IsInfantry && party.MobileParty.HasPerk(DefaultPerks.Leadership.LeadByExample, false)) { explainedNumber.AddFactor(DefaultPerks.Leadership.LeadByExample.PrimaryBonus * 0.01f, null); } if (troopToBoost.IsRanged && party.MobileParty.HasPerk(DefaultPerks.Leadership.TrustedCommander, false)) { explainedNumber.AddFactor(DefaultPerks.Leadership.TrustedCommander.PrimaryBonus * 0.01f, null); } if (troopToBoost.Occupation == Occupation.Bandit && party.MobileParty.HasPerk(DefaultPerks.Roguery.Promises, true)) { explainedNumber.AddFactor(DefaultPerks.Roguery.Promises.SecondaryBonus, null); } return MathF.Round(explainedNumber.ResultNumber); }

这里我对每个俘虏的基础服从度做了修改,让它跟部队领袖的统御、魅力、管理有关,如果你想,你也可以添加更多选项,比如角色的声望等。

修改完成后点击编译。然后没有其他修改的话就点击文件-保存模块,保存文件就可以了。此时再进入游戏就可以生效了,不需要重新开档。

以上就是dnSpy修改游戏数据的流程。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3