3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 27488|回复: 47
打印 上一主题 下一主题

[原创] 已知几个dll修改位置,攻速,攻击力,掉率,金币,技能点,经验,

  [复制链接]

46

主题

1167

帖子

1529

积分

游戏狂人

Rank: 6Rank: 6

贡献度
58
金元
12973
积分
1529
精华
0
注册时间
2011-6-22
跳转到指定楼层
主题
发表于 2019-9-4 15:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cafeguest 于 2019-9-8 11:24 编辑

嘛,又一个暗黑刷刷刷游戏,怎么可以不修改



工具:dnspy,但是反编译会报错,所以所有修改基于IL改公式数值


左键攻速
Zyklus.Player  PlayerBase  GetDelayBetweenPrimaryAttacks()  右键编辑IL 把1改成0.5就是两倍


右键攻速
同上,GetDelayBetweenSecondaryAttacks()


升级的时候崩怪的伤害
LevelUpDamage()   
this.level_up_adapter_.pDamage.pValue.SetMode_Const(2f * this.GetPrimaryAttackDamageStat().GetValue());   2改成200什么的


掉率
zuklus.Loot  LootDropperComponent
Drop函数,133行
if (RandomUtility.TryChance(this.drop_paramters_chance_.pItem2.GetValue() * 10f))
*10f是后加的倍率
IL是
ldc.r4 10
mul

当然也可以写死为true
这块是掉不掉东西,没说什么东西,这个过了还有第二次roll,太低了也只会掉钱,可能俩都得改

Zyklus.Loot  LootStaticDataContainer  第二个Drop函数  
float num = UnityEngine.Random.Range(0f, 1f);

把1改小,降低掉钱几率,具体改多小,保持大于你要的东西掉率之和就行,具体是多少不好说
随机举例:一个箱子的掉落表里,0-0.1是掉钱0.1-0.2掉血瓶,改成0-0.1就只掉钱,0-0.2就是一半一半,但是后面如果还有一个0.2-0.3掉装备,那么必须改成0-0.3才能出装备。超过0.3的未定义都是掉钱。至于有几段,分别代表是什么,分别是多宽,代码里看不到,得看具体箱子的掉落表。
这里只是把两次roll的机制找到了。如果不打算弄清楚就只改第一个,乘以30,包你满地金币血瓶符文。

金币数量
DropCommonPart函数
num3 = Mathf.FloorToInt(UnityEngine.Random.Range(0.9f, 1.1f) * (float)quantity / (float)num);

0.9-1.1倍改大即可
还有一处需要修改,改成乘以一个立即数就可以。它算法是如果钱多就掉好几堆,前面几堆上限固定,最后一堆就是上面那行。我是把值乘以自己了,原来掉7块就掉49块,感觉有点多。

升级技能点
Zyklus.Player   PlayerLevelStat  RaiseOnLevelGained
this.total_ability_point_stat_.AddValue(1f);
this.ability_point_stat_.AddValue(1f);

1改10

经验倍数
Zyklus.Stat   StatStaticDataContainer  AddXPDirect
float modification_value = (float)xp_value * xp_gain;

后面乘以倍数即可


怒气获取倍数
Zyklus.Stat   StatStaticDataContainer  GetRageValue
return (num + num2) * 3f;
3是后加的倍率





符文耐久度不减
Zyklus.Rune RuneComponent UseRune()
this.current_durability_ -= 0f;
或者直接改类成员private float durability_use_rate = 0f;



弓妹的站撸技能伤害倍数
Zyklus.Player Linda ProgressStadyAim()
把_+_*_后面加一个*30倍就可以了,一箭正常,二箭死牛,三剑日天,遇事不决站着撸。。。我就是奥法!



法师小妹的追踪弹数量
Zyklus.player Lucy OnPrimaryAttackHit()
for (int i = 0; i < (int)this.currentExtraShotCount_ * 8; i++)


大儿子Mark的盾消耗速度
Zyklus.player Mark UpdateShieldOnHit()
-7和-3.5成倍改小

大儿子Mark盾相关的增益
UpdateProtectiveShield()
盾的最大值是50,改这个数值可以增减几种效果
成倍补充盾                this.number_of_protective_shields_ += shield_stack;
改盾上限(如果改了请注意修改这个文件的所有地方50保持一致)                this.number_of_protective_shields_ = Mathf.Clamp(this.number_of_protective_shields_, 0, 50);
设置能量条                base.pPlayerEnergyComponent.SetPlayerEnergyByFactor((float)this.number_of_protective_shields_ / 50f);
对左键伤害的增益                this.primary_damage_shield_modifier.SetValue(1f + (float)this.number_of_protective_shields_ / 50f * this.shield_damage_multiplier_.GetValue());
对免伤的增益                this.shield_physical_reduction_modifier.SetValue((float)this.number_of_protective_shields_ / 50f * this.shield_level_upgrade_stat_.GetValue());


大儿子Mark左键技能距离半径加倍
Update()
Collider2D[] array = Physics2D.OverlapCircleAll(vector, this.cast_radius_.GetValue() * 3f, LayerMask.GetMask(new string[]
                {
                    "EnemyHitable",
                    "OtherHitable"
                }));

39    0087    ldarg.0
40    0088    ldfld    class ['Assembly-CSharp-firstpass']Altar.Data.IStat Zyklus.Player.Mark::cast_radius_
41    008D    callvirt    instance float32 ['Assembly-CSharp-firstpass']Altar.Data.IStat::GetValue()
新增42    0092    ldc.r4    3
新增43    0097    mul
44    0098    ldc.i4.2
45    0099    newarr    [mscorlib]System.String


小儿子kevin连击加攻速
Zyklus.Player KevinFrenzyComponent GetCurrentAttackSpeedFrenzyBonus()
return 3f + this.frenzyBonusUpgrade.GetValue() * (float)this.pCurrentStackCount * num;

1f改成3f,基础速度是3倍。如果在后面乘以一个倍数就是连击加成增倍。




以上修改可能无效,还在摸索欢迎分享


评分

3

查看全部评分

回复

使用道具 举报

6

主题

324

帖子

402

积分

高级玩家

Rank: 4

贡献度
5
金元
3819
积分
402
精华
0
注册时间
2014-8-12
舒服的沙发
发表于 2021-2-27 22:59 | 只看该作者
法师小妹的追踪弹数量
Zyklus.player Lucy OnPrimaryAttackHit()
for (int i = 0; i < (int)this.currentExtraShotCount_ * 8; i++)
请问用什么编辑方式?普通的话一堆错误 IL是看不懂
回复 支持 反对

使用道具 举报

46

主题

1167

帖子

1529

积分

游戏狂人

Rank: 6Rank: 6

贡献度
58
金元
12973
积分
1529
精华
0
注册时间
2011-6-22
硬硬的板凳
 楼主| 发表于 2021-2-28 05:09 | 只看该作者
梦雾云 发表于 2021-2-27 22:59
法师小妹的追踪弹数量
Zyklus.player Lucy OnPrimaryAttackHit()
for (int i = 0; i < (int)this.currentEx ...

有的函数反编译以后不能编译,右键直接修改IL即可

回复 支持 反对

使用道具 举报

6

主题

324

帖子

402

积分

高级玩家

Rank: 4

贡献度
5
金元
3819
积分
402
精华
0
注册时间
2014-8-12
冰凉的地板
发表于 2021-2-28 12:18 | 只看该作者
这段吗?  具体咋弄?

360截图20210228121446208.jpg (12.91 KB, 下载次数: 0)

360截图20210228121446208.jpg

360截图20210228121446208.jpg (12.91 KB, 下载次数: 1)

360截图20210228121446208.jpg
回复 支持 反对

使用道具 举报

46

主题

1167

帖子

1529

积分

游戏狂人

Rank: 6Rank: 6

贡献度
58
金元
12973
积分
1529
精华
0
注册时间
2011-6-22
5#
 楼主| 发表于 2021-2-28 13:53 | 只看该作者
梦雾云 发表于 2021-2-28 12:18
这段吗?  具体咋弄?

conv.i4后面加ldc.i4.8和mul
不明白就查查ilasm的语句含义


回复 支持 反对

使用道具 举报

6

主题

324

帖子

402

积分

高级玩家

Rank: 4

贡献度
5
金元
3819
积分
402
精华
0
注册时间
2014-8-12
6#
发表于 2021-2-28 14:11 | 只看该作者
cafeguest 发表于 2021-2-28 13:53
conv.i4后面加ldc.i4.8和mul
不明白就查查ilasm的语句含义

明白了 谢谢大佬
回复 支持 反对

使用道具 举报

5

主题

312

帖子

500

积分

高级玩家

Rank: 4

贡献度
6
金元
4760
积分
500
精华
0
注册时间
2020-4-20
7#
发表于 2021-8-31 04:14 | 只看该作者
66666666666从来没搞过这种东西,

按照撸主的方法不停的试,眼睛都快看瞎了,终于。。成功


还有没有能改的啊?主要是其他词条不知道具体意思,翻译软件也不准确。。。

回复 支持 反对

使用道具 举报

6

主题

324

帖子

402

积分

高级玩家

Rank: 4

贡献度
5
金元
3819
积分
402
精华
0
注册时间
2014-8-12
8#
发表于 2021-9-11 19:53 | 只看该作者
能修改洗点用的彩蛋数量吗
回复 支持 反对

使用道具 举报

6

主题

403

帖子

837

积分

超级玩家

Rank: 5Rank: 5

贡献度
66
金元
5732
积分
837
精华
0
注册时间
2014-4-16
9#
发表于 2022-3-8 22:20 | 只看该作者
升级技能点是怎么改呢?我这打开显示的是

this.total_ability_point_stat_.AddValue((float)gained_levels);
this.ability_point_stat_.AddValue((float)gained_levels);

这要怎么改?
回复 支持 反对

使用道具 举报

46

主题

1167

帖子

1529

积分

游戏狂人

Rank: 6Rank: 6

贡献度
58
金元
12973
积分
1529
精华
0
注册时间
2011-6-22
10#
 楼主| 发表于 2022-6-5 18:37 | 只看该作者
维特の风尚。 发表于 2022-3-8 22:20
升级技能点是怎么改呢?我这打开显示的是

this.total_ability_point_stat_.AddValue((float)gained_levels ...

大概的语句应该是这样的,游戏删了只能猜着写

加载gained_levels到栈顶
转换成float类型  <-----找这句

加载this.total...函数指针

需要在转换float类型语句后加两行
ldc.r4 666   这句666是倍数,类型是r4就是float

mul   把栈顶的gained_levels和上一行的倍数相乘

改后变成this.total_ability_point_stat_.AddValue((float)gained_levels*666)

回复 支持 反对

使用道具 举报

0

主题

173

帖子

183

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1830
积分
183
精华
0
注册时间
2022-3-9
11#
发表于 2023-8-14 17:20 | 只看该作者
cafeguest 发表于 2022-6-5 18:37
大概的语句应该是这样的,游戏删了只能猜着写

加载gained_levels到栈顶

这样改对了吗,改了以后这个样子了
回复 支持 1 反对 0

使用道具 举报

0

主题

51

帖子

65

积分

初级玩家

Rank: 2

贡献度
0
金元
654
积分
65
精华
0
注册时间
2024-4-26
12#
发表于 2025-3-29 15:39 | 只看该作者
金币数量
DropCommonPart函数
num3 = Mathf.FloorToInt(UnityEngine.Random.Range(0.9f, 1.1f) * (float)quantity / (float)num);
0.9-1.1倍改大即可
还有一处需要修改,改成乘以一个立即数就可以。它算法是如果钱多就掉好几堆,前面几堆上限固定,最后一堆就是上面那行。我是把值乘以自己了,原来掉7块就掉49块,感觉有点多。
这个怎么弄啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-5-9 21:46 , Processed in 0.043086 second(s), 21 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表