sdzy.png (948.2 KB, 下载次数: 0)
下载附件
2024-12-28 14:09 上传
前言:游戏是unity引擎开发,使用C#语言,默认所有游戏脚本编译到(项目名\项目名_Data\Managed)目录下【Assembly-CSharp.dll】
[color=]的预定义程序集
[color=]中
Steam库里面右键游戏找到【管理】,点击【浏览本地文件】,找到【Assembly-CSharp.dll】
使用dnSpy工具查看修改Assembly-CSharp.dll源代码
声明:
该游戏是单机游戏,
改不改是个人的选择,不会影响到其他人
一般vac也就是防止你作弊的话,它是在多人联机的部分会检测
我是找出来的
这个帖子只是提供一个思路和示例
修改方法:
TheEntity.Role.UpdateAttr(int, float, float, string, bool) : float @06001E0E
说明:
PersonAttrDefine @020007B6 心情(Mood=0)信任点数(TrustPoint=3)精力(Energy=7)金钱(Money=30)
PersonAttrDefine相当于注释类,因为作者只声明了,实际使用是直接用值,一开始搜索精力单词,找到了这个类,但是没有找到上下文有使用,只能一个类一个类的分析,找到了TheEntity.Role.UpdateAtt方法
Math.Max方法是比较两个数值返回最大的值
1 搜索【
[color=]TheEntity.Role.UpdateAttr
】,双击【
[color=]UpdateAttr
】,在
[color=]UpdateAttr
[color=]()
方法内右键点击【编辑方法(C#)...】,修改代码如下,之后点击【编译】
原代码
[C#] 纯文本查看 复制代码
else if (key == 7)
{
result = this.SetAttr(key, attr + num, -1f);
}
else if (key == 0)
{
result = this.SetAttr(key, attr + num, 0f);
}
else if (key == 30)
{
if (num >= 0f)
{
num = (float)Mathf.FloorToInt(num * 10f) / 10f;
}
else
{
num = (float)Mathf.CeilToInt(num * 10f) / 10f;
}
result = this.SetAttr(key, attr + num, 0f);
修改后
[C#] 纯文本查看 复制代码
else if (key == 7)
{
result = this.SetAttr(key, Math.Max(attr + num,10), -1f);
}
else if (key == 0)
{
result = this.SetAttr(key, Math.Max(attr + num,100), 0f);
}
else if (key == 3)
{
result = this.SetAttr(key, Math.Max(attr + num,40), 0f);
}
else if (key == 30)
{
if (num >= 0f)
{
num = (float)Mathf.FloorToInt(num * 10f) / 10f;
}
else
{
num = (float)Mathf.CeilToInt(num * 10f) / 10f;
}
result = this.SetAttr(key, Math.Max(attr + num,30), 0f);
1.png (157.14 KB, 下载次数: 0)
下载附件
2024-12-28 14:09 上传
dnSpy 可能不支持 System.Runtime.CompilerServices.TupleElementNamesAttribute 特性,或者在处理该特性时存在兼容性问题,直接删除就好了
zy.png (66.15 KB, 下载次数: 0)
下载附件
2024-12-28 14:17 上传
[color=]