超武进化:丧尸毁灭者 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;
}
感谢分享啊 瞬间玩到底了 2244156 发表于 2023-9-4 01:10
瞬间玩到底了
危险度到8开始,仍旧步履蹒跚
谢谢!!谢谢!!谢谢!!谢谢!!真的感谢! 卧槽!6666666666 888886666666666
怎么弄不会啊 6666666666666666666 有1.0.14的吗? GunData.LevelData 这个类没找到呢?
1.0.14好像又改了不少代码作者大佬真能折腾 dnSpy 不能整个搜索,找不到类就比较麻烦
照着楼主的教程大概弄了下v1.0.14版的
比较BT每次只能玩一局 第二局进去有bug 无法开始 无法点击武器
有大佬帮我看看吗
这个是改了加资源的可以正常游戏 没有只能打一局的bug
但是没有武器锁定为rank5
啥都没改都编译错误了
Random 改成UnityEngine.Random 的话 又跟第一版一样 有bug了
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 15:00 编辑
Random 改成UnityEngine.Random 了
算是v1+ 打完一局就要关闭程序 重启
资源做了一些优化开局资源增加
终端数据库的东西合成后不会变 武器会变成绿色甚至白色
武器培养还是要在v2版本上进行
本帖最后由 mwq22 于 2024-6-15 15:51 编辑
资源和经验再加大
让然是一局版
本帖最后由 mwq22 于 2024-6-18 13:19 编辑
重新做了一个 没有锁定金色了 游戏可以正常玩的
不是一局版了
游戏 v1.0.14
因为增加了武器等级上限,后面挂机等武器升级太慢了再次加大了经验加成
重新搞了下
外部数据可以锁定rank4了金色
武器还是不行
感谢分享!
mwq22 发表于 2024-6-14 21:05
这个是改了加资源的可以正常游戏 没有只能打一局的bug
但是没有武器锁定为rank5
没法编译的地方需要用IL指令编译,不要置换函数
IL指令编译 好难完全不会 feiyu_wind 发表于 2024-7-7 10:08
没法编译的地方需要用IL指令编译,不要置换函数
大佬能录个视频来解惑吗?
mwq22 发表于 2024-7-13 02:51
大佬能录个视频来解惑吗?
这个就是另外意义的汇编语言,如果没有基础的话不是几句话能讲清楚的,如果有基础的话,去翻一下IL指令集就可以了。
所以,很抱歉,这个没法讲
feiyu_wind 发表于 2024-7-24 13:21
这个就是另外意义的汇编语言,如果没有基础的话不是几句话能讲清楚的,如果有基础的话,去翻一下IL指令集 ...
感谢回复
看来弄不了了 这个确实太复杂了
感谢分享修改方法,看起来确实对游戏效果增强不少。希望有更多的技巧可以分享。 大佬能帮改一下1.0.14的文件吗
public bool UpLv(bool isAddLvCost = true)武器升级时候增加的升级点数,*500倍
左边是楼主的数据右边是1.0.14的原始数据
这个要怎么改呢?
本帖最后由 mwq22 于 2025-1-1 01:40 编辑
public int rank 武器等级,重置武器等级最高
这个也变化较大
关键字有3处 第一处一样
第二处 第三处代码变化较大 不知道咋改了
类GunData.LevelData 这个类也没有找到
public int rank 还是只找到【类GunData】里面的3个
本帖最后由 mwq22 于 2025-1-1 04:54 编辑
这次仔细的对照了
把能改的改了 最後一个改武器rank5也改成功了
除了上面这3个 改变较大 没改其他都改到了
算是我改的目前为止,最好的一版了
页:
[1]
2