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

注册 登录

QQ登录

只需一步,快速开始

查看: 16524|回复: 192
打印 上一主题 下一主题

[分享] 关于角色属性,物品数量耐久,消除功法逆练修改的一些分享C#版☯☯☯☯☯☯☯☯☯☯2018.09.30

  [复制链接]

329

主题

3171

帖子

7981

积分

3DM创意工坊 原创组

Rank: 12Rank: 12Rank: 12

贡献度
972
金元
40532
积分
7981
精华
4
注册时间
2009-7-13
跳转到指定楼层
主题
发表于 2018-9-28 09:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tempa 于 2018-9-30 15:04 编辑

提示,你需要有解密的Assembly-CSharp.dll文件,或者会写MOD才能看懂我写的是什么内容。


如果不具备以上条件,你可能看不懂我在说什么,可以直接无视贴子内容。


分享下数据。主要就是分析源码,以及参考现有几个MOD的代码位置得出的。

关于如何编写MOD,如果你有C#基础,只要参考现有MOD源码


https://github.com/phorcys/Taiwu_mods


以及Harmony使用方法

https://github.com/pardeike/Harmony


https://gist.github.com/pardeike/c02e29f9e030e6a016422ca8a89eefc9


https://github.com/pardeike/Harmony/wiki/Patching


用Visual Studio就可以写出来,当然你需要一份解密的Assembly-CSharp.dll


把知道的情报先共享出来,能看懂的人自然就会写工具或者MOD了。



角色属性修改参考之前的贴子。


http://bbs.3dmgame.com/thread-5792047-1-1.html



需要得到角色ID,游戏所有角色属性数据都在DateFile.instance.actorsDate这个字典中


比如第1代主角默认ID是10001,如果是非第1代,可以看DateFile.instance.mianActorId



以第1代为例,那么
DateFile.instance.actorsDate[10001]


就是主角所有属性


属性Key值含义参考上面的贴子,比如姓名,姓是5


那么想把姓改成 "逆"就写成


DateFile.instance.actorsDate[10001][5] = "逆";


名是0



改成"风尿"写成


DateFile.instance.actorsDate[10001][0] = "风尿";


其他属性以此类推,比如


61        臂力


臂力想改为500就写成

DateFile.instance.actorsDate[10001][61] = "500";


注意500是字符串类型,所以你如果用CE修改可能很难搜到值,但是用C#处理就非常简单,建议大家学一点C#编程,C#编程上手还是比较简单的。


要注意这个


臂力 = 500是基础数值,而显示在界面上的是最终的值,应该是所有buf加完后的,所以你看到的值可能多,也可以少,也可能正好,取决于其他buf


========================================


接下来是如何查看队友信息,


所有角色信息都在
DateFile.instance.actorsDate
这个字典中,但是这个字典游戏新开档就2000多个了,手动一个个找肯定不行。


那怎么找,还有个List


DateFile.instance.actorFamilyDate


这里存放了队友,包含主角本人的ID,那么你想改队友,自己找一下主角以外的ID使用就可以了。


比如我的队友是10003,初始就跟着我的一个队友,那么我想改他的臂力就这样


DateFile.instance.actorsDate[10003][61] = "500";

如果你发现心仪的队友,但是资质或者其他属性差就可以自己改


========================================


接下来是修改物品属性


游戏中所有物品都在


DateFile.instance.itemsDate


这个字典中,初始档就2万多件


比如我现在手上的沛然决,ID是1028877,那么


DateFile.instance.itemsDate[1028877]就是这个物品了,但是这个ID每次游戏都会变,应该是当前物品的实例ID,因为你可能有多本同名的书。


这个物品有一些属性,如果是书籍,那么会有

DateFile.instance.itemsDate[1028877][901] = "2";//剩余次数
DateFile.instance.itemsDate[1028877][902] = "3";//总次数
DateFile.instance.itemsDate[1028877][33] = "1|1|1|1|1|1|1|1|1|0";//书页状态




看了下存档修改器,似乎书籍的真传和手抄版的区别只在于最高位,


比如说我现在有一个书叫《伏龙坛手秒秘籍》ID是731402,只要把最高位7改成5变成531402,就是真传书籍了。


这样,我们只要遍历主角所有物品


DateFile.instance.actorItemsDate[10001]

判断所有带[33]键的说明是书籍,

并且判断其带[999]键的是值,如果是6位,并且最高位为7,就改成5,理论上就可以完成所有手抄本到真传的转化,如果做成MOD可以做成一键转化所有书为真传,这种东西。









装备,武器和衣服也是这么改,比如青竹衣,实例ID是1028898,是我这次的ID


衣服的耐久是34/38,我想改成50/50
DateFile.instance.itemsDate[1028898][901] = "50";
DateFile.instance.itemsDate[1028898][902] = "50";


就提高了耐久,可以改个高点的武器耐久,不用来回修


而如果是消耗品,改这里就没用了,需要看角色物品数量,比如主角


DateFile.instance.actorItemsDate[10001],假设一开始会有30个物品,
比如捕虫网的ID是99,那么在这个List中


DateFile.instance.actorItemsDate[10001][99] = 100;


就是100个捕虫网,注意这时的100是数值,具体是字符串还是数值,看字典对应的类型
========================================


最后终于解决了添加物品的问题,主要参考MassageWindow这个类中所有关于MakeNewItem的用法就可以了。

简单的说,你只要这样写就可以添加一般性物品,比如这个21是血露,带有数量的消耗品


<


接下来是武器装备,你也可以这样用,但是你可能更希望来一些高耐久的,你就可以这样写,52309是剑,100/100耐久


<


最后如果是书籍,你可能想要加个完整书页,可以这样写,500101是一本内功书


<
========================================
如何修复已经逆练的功法?



DateFile.instance.actorGongFas

这个字典中,记录了所有角色的功法信息

10001是1代主角,20101是功法,20101,卧虎功

可以解包游戏,GongFa_Date.txt中看到所有功法对应的ID,也可以直接用存档修改器查看


DateFile.instance.actorGongFas[10001][20101]

就是功法相关的数组,有3个数据,最后1个


DateFile.instance.actorGongFas[10001][20101][2]


就是逆练等级,把这里改成0就可以去掉逆练的效果了


DateFile.instance.actorGongFas[10001][20101][2] = 0;

========================================

捏脸改角色属性请看之前角色属性的贴子




评分

2

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-19 02:46 , Processed in 0.033580 second(s), 19 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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