feiyu_wind 发表于 2023-9-3 10:13

超武进化:丧尸毁灭者 1.0.13和1.0.14修改和修改好的文件

本帖最后由 feiyu_wind 于 2025-1-5 23:03 编辑

1.0.13没找到修改器,所以自己用dnspy改了下。1、修改文件:Arms.Evolution.ZOMBIE.DESTROYER.v1.0.13-P2P\Zombie Destroyer_Data\Managed\Assembly-CSharp.dll
覆盖前请注意备份。
修改工具dnSpy,请用x64版本
2、修改方法,附件主要修改了以下内容,如何修改的,可以对比自己的文件和附件文件中的内容。
类PlayerDataManager
public static void AddEN(int cost)能量增加,修改倍率
public static void AddAI(float cost)心智点数增加,修改倍率
public static void init()每场战斗初始化数据,每秒增加数据的基础值在这里可以改
类GunData
public bool AddExp(float _exp)武器经验增加,修改数值
public float chargeTime武器装弹时间。/100倍,加快一百倍
public int maxLv武器最大等级
public bool UpLv(bool isAddLvCost = true)武器升级时候增加的升级点数,*500倍
public int rank武器等级,重置武器等级最高
类GunData.LevelData
public int rank武器升级技能等级
类UI_TENAsset
public void AddTEN(int v, string msg)终端能量*1000倍
类ChipDataManager
public static ChipData GetRandChip(int rank)外部数据的等级,锁定为rank5
类LinkerData
public LinkAttrData(int slot)用IL指令修改Rank,link car的等级锁定为rank5

其他的,例如星图等级,card等级暂时没找到地方,上面的修改基本也够用了。


为了回复网友,我在1.0.14上重新测试了修改
PlayerDataManager类
1、AddEN
      public static void AddEN(int cost)
      {
                if (cost > 0)
                {
                        PlayerDataManager.en += (long)cost * 100L;
                }
                else
                {
                        PlayerDataManager.en += (long)cost;
                }
                if (PlayerDataManager.en < 0L)
                {
                        PlayerDataManager.en = 0L;
                }
                PlayerDataManager.tempEN = PlayerDataManager.en;
      }
2、AddAI
      public static void AddAI(float cost)
      {
                if (cost > 0f)
                {
                        PlayerDataManager.aiCost += cost * 100f;
                }
                else
                {
                        PlayerDataManager.aiCost += cost;
                }
                PlayerDataManager.tempAICost = PlayerDataManager.aiCost;
      }
3、init
      public static void init()
      {
                PlayerDataManager.gunSecExp = 100f;
                PlayerDataManager.enCostEXPlus += TechnologySaveDataManager.GetTechData(60);
                PlayerDataManager.aiCostEXPlus += TechnologySaveDataManager.GetTechData(61);
                PlayerDataManager.aiCostEXPlus += MemoryCardSaveData.GetEffectData("SEC_AI_COST");
                PlayerDataManager.gunSecExp += TechnologySaveDataManager.GetTechData(62) + 100f;
                PlayerDataManager.gunSecExp += MemoryCardSaveData.GetEffectData("SEC_EXP") + 100f;
                PlayerDataManager.secHpHeal += TechnologySaveDataManager.GetTechData(68) + 100f;
                PlayerDataManager.secHpHeal += MemoryCardSaveData.GetEffectData("SEC_HP_HEAL") + 100f;
      }
4、AddExp
      public static void AddExp(long exp)
      {
                PlayerDataManager.floatEXP += (float)exp * 100f * (TechnologySaveDataManager.GetTechData(66) + MemoryCardSaveData.GetEffectData("PLAYER_EXP"));
      }
GunData类
5、maxLv
      public int maxLv
      {
                get
                {
                        return 500 + this.rank * 2 + this.plusMaxLV + this.baseLv + num + this.techLv + this.cardLv + this.typeLv * 5;
                }
      }
6、UpLv,需要用IL指令
      if (isAddLvCost)
      {
                PlayerDataManager.lvCost += 500;
                float num = TechnologySaveDataManager.GetTechData(56) + MemoryCardSaveData.GetEffectData("GUN_UP_LV_COST");
                PlayerDataManager.lvCost += (int)num;
                num -= (float)((int)num);
                if ((float)Random.Range(0, 100) <= num * 100f)
                {
                        PlayerDataManager.lvCost++;
                }
      }
7、rank,get_rank()
public int get_rank()
{
      if (this.data.rank <= 4)
      {
                this.data.rank = 4;
      }
      return this.data.rank;
}上面这种改法,会导致打完一盘后第二盘需要退出重开。也可以用下面的改法(附件dll中为上面的,请自行修改)
public int get_rank()
{
    if (this.data.rank < 4 && this.data.rank >= 0)
    {
      return 4;
    }
    return this.data.rank;
}
8、GunData.LevelData类rank
                public int rank
                {
                        get
                        {
                              return this._rank.data;
                        }
                        set
                        {
                              if (value >= 4)
                              {
                                        this._rank.data = value;
                                        return;
                              }
                              this._rank.data = 4;
                        }
                }


GunData类
9、chargeTime:GunData.chargeTime,子弹重载时间,不是在BulletData类,之前搞错了
      public float chargeTime
      {
                get
                {
                        float num = this.bulletData._chargeTime;
                        float chargeTimePct = this.chargeTimePct;
                        num *= chargeTimePct / 100f;
                        if (this.gunType == 2 && num < 0.5f)
                        {
                              num = 0.5f;
                        }
                        if (num < 0.1f)
                        {
                              num = 0.1f;
                        }
                        return num;
                }
      }
UI_TENAsset类
10、AddTEN
      public void AddTEN(int v, string msg)
      {
                this.ten += v * 10000;
                PlayerSaveData.body.tCost += (long)v;
                this.assetText.text = "<sprite name=\"TCOST\">" + this.ten.ToString();
                if (msg != "")
                {
                        TextMeshProUGUI[] array = this.msgText;
                        for (int i = 0; i < array.Length; i++)
                        {
                              array.text = msg + v.ToString();
                        }
                        base.gameObject.GetComponent<Animation>().Play("TEN_ADD_ASSET_SHOW");
                }
      }
LinkerData类
11、public LinkAttrData(int slot),这个是记忆卡里面的link
需要IL指令把
27      003D      ldarg.0
28      003E      ldloc.1
29      003F      ldloc.0
30      0040      ldc.i4.1
31      0041      call      class System.Collections.Generic.List`1<!!0> MyMathf::GetRandVByRates<int32>(class System.Collections.Generic.List`1<!!0>, class System.Collections.Generic.List`1<float32>, int32)
32      0046      ldc.i4.0
33      0047      callvirt      instance !0 class System.Collections.Generic.List`1<int32>::get_Item(int32)
34      004C      stfld      int32 LinkerData/LinkAttrData::rank
改成
27      003D      ldarg.0
28      003E      ldc.i4.4
29      003F      stfld      int32 LinkerData/LinkAttrData::rank
12、结算能量(点星云那个)
UI_TENAsset类,100倍
      public void AddTEN(int v, string msg)
      {
                this.ten += v * 10000;
                PlayerSaveData.body.tCost += (long)v * 100;
      }
系统有检查作弊的,我初步看了一下,主要是跟这个ten关联,(我初步看了一下,不一定准确)
为了避免作弊被查出来,可以改这里
SCA_SkyBoxRoate类,需要用IL指令把ldc.i4.1改成ldc.i4.0就行
    private void Start()
    {
                if (PlayerSaveData.body.tCost != 0L && PlayerSaveData.body.tCost - num >= 300000L)
                {
                  string text = "DIS:" + (num - PlayerSaveData.body.tCost).ToString() + "|";
                  text = text + num.ToString() + "|" + PlayerSaveData.body.tCost.ToString();
                  PlayerSaveData.body.isCheater = false;
                  PlayerSaveData.body.cheaterLog = "GameManager.tempV|" + text + "|" + UI_Ver.ver;
                  Debug.LogError("CHEATER");
                }
注:这个结算修改不在dll中,避免不需要的朋友不小心被标记作弊
13、武器的云图技能倍率
CloadMapNode类,通过IL指令,修改的10倍基础倍率(红色),不要改太大,否则随便点一下云图,dpm就几万亿了
    public void UpAttrBase()
    {
      this.attrV = this.data.attrV;
      this.attrV *= 10f + (float)(this.rank - this.data.minRank) * this.data.rankRate;
      if (this.subData == null && this.id != 6 && this.id != 9)
      {
            this.attrV *= (float)this.actRate;
      }

14、武器的云图的点数
UI_CloudMap类,改成每次使用减少1点(而不是减少倍率,也可以直接删除--,这样就是无限点数)
public void SetNode(Transform child, CloudMapNode data, bool isShow, bool isAct, bool isForbid)
{
      if (this.gunData.cloudMapCost >= this.cloudMap.actRate)
      {
            this.gunData.cloudMapCost--;
            this.cloudMap.ActNode(data);
            this.UpView();
            return;
      }





tango222 发表于 2023-9-4 00:17

感谢分享啊

2244156 发表于 2023-9-4 01:10

瞬间玩到底了

feiyu_wind 发表于 2023-9-8 23:28

2244156 发表于 2023-9-4 01:10
瞬间玩到底了

危险度到8开始,仍旧步履蹒跚

ali88jhz 发表于 2023-9-14 14:56

谢谢!!谢谢!!谢谢!!谢谢!!真的感谢!

who's静静 发表于 2023-9-17 01:22

卧槽!6666666666

风中秩序 发表于 2024-2-3 16:12

888886666666666

你说我是谁1 发表于 2024-3-9 11:13

怎么弄不会啊

w1090584029 发表于 2024-5-3 12:48

6666666666666666666

mwq22 发表于 2024-6-9 22:33

有1.0.14的吗?

mwq22 发表于 2024-6-13 13:38

GunData.LevelData 这个类没找到呢?

1.0.14好像又改了不少代码作者大佬真能折腾

mwq22 发表于 2024-6-13 13:40

dnSpy 不能整个搜索,找不到类就比较麻烦

mwq22 发表于 2024-6-14 18:53

照着楼主的教程大概弄了下v1.0.14版的

比较BT每次只能玩一局   第二局进去有bug 无法开始 无法点击武器

有大佬帮我看看吗


mwq22 发表于 2024-6-14 21:05

这个是改了加资源的可以正常游戏 没有只能打一局的bug

但是没有武器锁定为rank5


啥都没改都编译错误了
Random 改成UnityEngine.Random 的话   又跟第一版一样 有bug了

mwq22 发表于 2024-6-14 21:06

mwq22 发表于 2024-6-14 21:05
这个是改了加资源的可以正常游戏 没有只能打一局的bug

但是没有武器锁定为rank5
            this.id = MyMathf.GetRandVByRates<int>(list2, list, 1)[0];
            this.attrType = -1;
            this.minsAttrType = -1;
            this.linkType = Random.Range(0, 6);
            float num = Random.Range(this.data.rand[0], this.data.rand[1]);
            this.attr = this.data.attrData + this.data.plusData * (float)this.rank * num;
            num = Random.Range(0.75f, 1.25f);
            this.minsAttr = (this.data.attrData + this.data.plusData * (float)this.rank) * 0.5f * num;
            if (this.data.attrType == "RAND")
            {


mwq22 发表于 2024-6-15 14:58

本帖最后由 mwq22 于 2024-6-15 15:00 编辑

Random 改成UnityEngine.Random 了

算是v1+   打完一局就要关闭程序 重启   



资源做了一些优化开局资源增加



终端数据库的东西合成后不会变   武器会变成绿色甚至白色

武器培养还是要在v2版本上进行



mwq22 发表于 2024-6-15 15:50

本帖最后由 mwq22 于 2024-6-15 15:51 编辑

资源和经验再加大
让然是一局版


mwq22 发表于 2024-6-18 13:12

本帖最后由 mwq22 于 2024-6-18 13:19 编辑

重新做了一个   没有锁定金色了   游戏可以正常玩的

不是一局版了

游戏 v1.0.14

因为增加了武器等级上限,后面挂机等武器升级太慢了再次加大了经验加成

mwq22 发表于 2024-6-24 01:54

重新搞了下

外部数据可以锁定rank4了金色

武器还是不行



baoling88888 发表于 2024-7-7 08:58

感谢分享!

feiyu_wind 发表于 2024-7-7 10:08

mwq22 发表于 2024-6-14 21:05
这个是改了加资源的可以正常游戏 没有只能打一局的bug

但是没有武器锁定为rank5


没法编译的地方需要用IL指令编译,不要置换函数

mwq22 发表于 2024-7-13 02:50

IL指令编译 好难完全不会

mwq22 发表于 2024-7-13 02:51

feiyu_wind 发表于 2024-7-7 10:08
没法编译的地方需要用IL指令编译,不要置换函数

大佬能录个视频来解惑吗?

feiyu_wind 发表于 2024-7-24 13:21

mwq22 发表于 2024-7-13 02:51
大佬能录个视频来解惑吗?

这个就是另外意义的汇编语言,如果没有基础的话不是几句话能讲清楚的,如果有基础的话,去翻一下IL指令集就可以了。
所以,很抱歉,这个没法讲

mwq22 发表于 2024-7-24 22:42

feiyu_wind 发表于 2024-7-24 13:21
这个就是另外意义的汇编语言,如果没有基础的话不是几句话能讲清楚的,如果有基础的话,去翻一下IL指令集 ...

感谢回复
看来弄不了了   这个确实太复杂了


exgbit 发表于 2024-11-1 07:40

感谢分享修改方法,看起来确实对游戏效果增强不少。希望有更多的技巧可以分享。

mwq22 发表于 2024-12-28 14:57

大佬能帮改一下1.0.14的文件吗

mwq22 发表于 2025-1-1 01:28

public bool UpLv(bool isAddLvCost = true)武器升级时候增加的升级点数,*500倍





左边是楼主的数据右边是1.0.14的原始数据

这个要怎么改呢?


mwq22 发表于 2025-1-1 01:33

本帖最后由 mwq22 于 2025-1-1 01:40 编辑

public int rank 武器等级,重置武器等级最高
这个也变化较大
关键字有3处   第一处一样
第二处 第三处代码变化较大   不知道咋改了


类GunData.LevelData 这个类也没有找到

public int rank 还是只找到【类GunData】里面的3个

mwq22 发表于 2025-1-1 02:48

本帖最后由 mwq22 于 2025-1-1 04:54 编辑

这次仔细的对照了
把能改的改了   最後一个改武器rank5也改成功了


除了上面这3个 改变较大 没改其他都改到了
算是我改的目前为止,最好的一版了


页: [1] 2
查看完整版本: 超武进化:丧尸毁灭者 1.0.13和1.0.14修改和修改好的文件