shushirakawa 发表于 2024-1-12 13:18

为了吾王2 DLL部分修改教程

看了王老菊玩这游戏,突然产生了兴趣,跟风玩了玩,边玩边改的,所以内容有限,有问题也别问我,因为我可能玩一阵子就不会有兴趣再玩了,也不可能会去深入研究的。并且修改方法并不是只有我这一种,每个人可能都会因为对代码理解不同有不同的修改方法。就以我之前修改的DLL为例,说下怎么改,方便各位版本更新后自己修改:
1.属性上限
找到CharacterHelper这个类,在GetMaxStatValue方法里修改,比如:
public static int GetMaxStatValue(eCharacterStats pCharacterStat)
        {
                switch (pCharacterStat)
                {
                case eCharacterStats.STR:
                        return 255;
                case eCharacterStats.VIT:
                        return 255;
                case eCharacterStats.INT:
                        return 255;
                case eCharacterStats.AWR:
                        return 255;
                case eCharacterStats.TAL:
                        return 255;
                case eCharacterStats.SPD:
                        return 255;
                case eCharacterStats.LCK:
                        return 255;
                case eCharacterStats.FOC:
                        return 9; //专注值,一般不改
                }
                return -1;
        }

255这个就是上限值,按你喜欢的改


然后拉到最后,找到public const int MAX_CHARACTER_STAT = 255; 按需修改,

再找到ProgressionHelper这个类,同样有个public const int MAX_CHARACTER_STAT = 255; 修改为一致数字。

重点提下,MAX_CHARACTER_STAT直接修改是会报错的,正确的改法展开所在类的目录树,在这个字段上右键,选择编辑字段,可以看到常量那里是int32,后面的数字按需改,可以直接填入十进制,也可填入十六进制,比如255,或者0xFF

2.各种倍数,我用的方法比较简单粗暴,直接改数字,也可以分析公式在公式里改的。

在ProgressionHelper这个类里,各种GetXXXXXScaleValue方法,在把里面的数字改成想要的倍数就行了。

3.修改开局装配点数,我用的也是最简单粗暴的方式修改:

PartyManagementDirector找到_getLoadoutPoints这个方法,

把:int num = this._baseLoadOutPoints + CharacterHelper.GetStat(pEntity, eCharacterStats.LOP, false);

改成 int num = 想要的数字;

即可

如果出错,可以使用编辑IL指令,然后看序号,把序号为1,4,5,6行删掉,注意,第一行是序号是0,不要稀里糊涂的就直接删了,看好序号。然后在序号为2的行里把需要的数值填上去,默认不得大于127,想要大于127,可以把ldc.i4.s改成ldc.i4。

最后还有一点:改完保存时在保存窗口选择MD写入选项,勾选保持之前的MaxStack值,再保存,否则可能会报错。

另外很多人知道改特性,提供一个特别毁平衡的模板:
{
"TRAIT_TACTICIAN": {
    "ConsumableType": "NONE",
    "Value": 0,
    "MinTier": 0,
    "MaxTier": 0,
    "Rarity": "COMMON",
    "Material": "NONE",
    "Hidden": true,
    "Stacks": false,
    "Ammo": 0,
    "Equippable": {
      "Slots": [],
      "Stats": {
      "STR": 255,
      "SA":255,
      "VIT": 255,
      "INT": 255,
      "SPD": 255,
      "TAL": 255,
      "LCK": 255,
      "AWR": 255
      },
      "Passives": [
      "SKILL_TACTICS",
                "SKILL_EAGER",
                "SKILL_SUPPORTRANGE",
                "SKILL_EUREKA",
                "SKILL_NAVIGATOR",
                "STATUS_IMMUNITY_ALL"
      ],
      "MaxCharges": 0
    },
    "Tags": []
},

这样就是一个全属性255,拥有全特性技能且免疫所有异常状态的神技战术家了。







1246291292 发表于 2024-1-15 03:45

大佬请问你用的是什么工具来修改dll的阿,我用dnspy好像改不了,编译报错。。。

1246291292 发表于 2024-1-15 03:53

1246291292 发表于 2024-1-15 03:45
大佬请问你用的是什么工具来修改dll的阿,我用dnspy好像改不了,编译报错。。。 ...

好吧只能编辑IL指令了。。。

yanchaofan 发表于 2024-3-30 20:39

能否在详细一点啊····我编辑完,就提示编辑错误,缺氧什么的都用此方法修改过,但就这个游戏会提示编辑错误····IL指令编辑也会报错

jenkin999 发表于 2024-4-5 13:09

简单一点,dnspy打开,搜索,CharacterHelper这个类,展开这个类,找到GetStat,有三个,直接点最后一个跳进去,下拉到最后,c#下倒数第二行代码

jenkin999 发表于 2024-4-5 13:12

num3=Math.min(num3, characterhelp.GetMaxstatvalue(pcharacterstat)); 对着min右键选择编辑AL指令,将215行的min改为max就是了,这样你的属性就是最大值95
页: [1]
查看完整版本: 为了吾王2 DLL部分修改教程