一个无创修改assets的新思路(傻瓜版,免打包,免替换/备份,易还原,附一份功法的小改代码)
本帖最后由 qweytr_1 于 2018-10-1 00:16 编辑首先,欢迎大家进行一些有效的回复(比如提供一些.txt的某一列是什么意思,或者在这里链接上自己的总结帖子)
一个总结帖子在这里http://bbs.3dmgame.com/thread-5793798-1-1.html,都是成品
目测这个方法对测试分支的更新也是暂时适用的……
传说之中游戏是用字符串存东西的……很多MOD都是按字符串改的
于是这里提供一种无创手术方案……
……
准确地说,这里提供一种不用修改任何文件而给游戏加MOD的方案
首先感谢@hbdrnhnrn 在http://bbs.3dmgame.com/thread-5793542-1-1.html的工作,下面以Gongfa_date.txt为例
在这里新建一个文件夹,并放入Gongfa_date.txt
(太吾:抱歉之前拼错了……不过没关系,反正我们会一直按错的拼下去的……)
(如果图像被拉伸了,可以点击查看原图)
运行……于是你得到了奇迹
列一下清单
uses UABE
uses notepad++
uses open office
uses dnSpy
//uses x64dbg
//uses 某个未加密掉的游戏以利用mono.dll来dump出所需的dll
uses 过期的dll差不多就是这些了,UABE用于dump出Gongfa_date.txt//明明应该dump出data这里dump出date也是醉了……开始在写这篇帖子的时候我拼成date我以为是我拼错了……后来发现拼成data的我真拼错了……
notepad++用于掐头去尾得到真正内容
请一定要用raw这个格式进行dump
我检查了三遍才发现……那玩意真的是用str储存的……于是你会看到茫茫多的\r\n
在raw里面你看不到,只会看到结尾一个NUL,一定要把这个NUL删掉,否则读取进度会卡死在99%
当然开头要删到井号为止……事实上删掉直接第一行也是可以的
下面是一些说明
其一、\r是可选的,你可以在任何位置加入\r,反正程序会帮你处理掉……
其二、半角逗号','是分隔符,任何时候你都不应该添加新的半角逗号
其三、井号可以注释掉一整行……虽然游戏代码是这么写的但游戏并没有用类似注释或者你们硬说
#,0,2,61,62,63,64,66,67,68,69,70,71,72,73,99,103,104,1,6,7,3,15,16,4,5,701,702,703,704,705,999,710,711,901,902,903,904,905,906,907,908,909,910,921,922,923,924,95,96,501,502,503,504,14,8,9,31,38,39,40,10,11,12,13,101,21,22,23,24,25,26,27,28,29,30,601,602,603,611,612,613,614,615,604,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,32,33,34,35,36,81,82,83,84,85,86,50041,50042,50043,50044,50045,50046,50032,50033,50022,50023,51110,51101,51102,51103,51104,51105,51106,51107,51108,51109,51111,50081,50082,50083,51367,51368,51369,50084,50085,50086,51370,51371,51372,50071,50072,50073,50092,50093,50094,50095,50096,50097,50098,98,37
是一个注释的话其四、这里的GongFa_Date.txt是dump好的,只做了一处调整,就是把,3,3,3,3,改成了,9,9,9,9,
有爱自取不喜勿喷
就酱~
附录之一,部分txt名称:Massage_Date
StoryBuff_Date
TimeWorkBooty_Date
Age_Date
SolarTerms_Date
TrunEvent_Date
ActorMassage_Date
PalceWorld_Date
PartWorldMap_Date
AllWorldMap_Date
Resource_Date
Poison_Date
ActorAttr_Date
PresetGang_Date
GangGroup_Date
GangGroupValue_Date
PresetActor_Date
ActorFeature_Date
Talk_Date
Generation_Date
Skill_Date
Story_Date
StoryTerrain_Date
StoryEvent_Date
StoryShop_Date
EnemyTeam_Date
BattleTyp_Date
AttackTyp_Date
Body_Date
Injury_Date
BattleRated_Date
Ability_Date
HomeTyp_Date
Event_Date
MoodTyp_Date
StudyDisk_Date
ReadBook_Date
MakeItem_Date
ChangeEquip_Date
HomeShopEventTyp_Date
HomeShopEvent_Date
CricketPlace_Date
CricketBattle_Date
Goodness_Date
Identity_Date
BattleState_Date
BuffAttr_Date
AIShoping_Date
GangEquip_Date
ActorSurname_Date
ActorName_Date
TipsMassage_Date
QiValueState_Date
BattleMap_Date
GongFaFPower_Date
BaseMission_Date
EnemyRand_Date
ItemPower_Date
GameLevel_Date
Teaching_Date
ScoreBooty_Date
ScoreValue_Date
BaseSkill_Date
BaseTips_Date
LoadingImage_Date
HomePlace_Date
Cricket_Date
GongFaOtherFPower_Date
VillageName_Date附录2 各行功效笔记
uses openoffice
使用utf-8编码,可以直接查看源文件而避免乱码
下面列的格式用编号/注释编号进行记录
比如列B/0,是招数名。
列BK-BM/11-13,招数使用需求,格式是 招数|数量,目测招数6=崩,9=音
列U/7,招数占用格子数
列J/68,0-5之间,怀疑是五行其实不是
列C/2是功法品级
列O/73疑似功法突破时候的消耗
都是目测数据,或许存在偏差 {:3_177:}萌新一边瑟瑟发抖的聆听大佬教学一边认真的做笔记... 全部解出来,改就行啊,优先级高覆盖的。有兴趣的可以自己写个对应每个解包文件的修改器嘛,添加修改会方便很多。 楼主说话有些前言不搭后语,不过还是get到最重要的点了 楼主真厉害……居然还有这样的修改方法! 感觉楼主的思路是在做 fastpatch,而 Unity 引擎支持读取未加密的 txt 作为数据库的配置文件,以后做调试很方便了。
不过还是期待今后能出相关配套工具,不然一个个去找数值对应的参数意义太麻烦了,一堆 0 的缺省值还容易看漏。
说起来,一开始我也在吐槽开发组把 Data 打成 Date,明显 typo。 {:3_93:}又见技术大佬...真的只能膜拜..
看看能不能看懂先.. 你在说啥??? 我的天看不懂! 我就觉得现在你这个内功挺好的
我的天,试试能不能看懂 本帖最后由 k521k521 于 2018-9-30 18:42 编辑
我的问题。
很好的方法,以后方便很多了,谢谢楼主 kankan!!!!!!!!!!!!
新的思路可以 方便/轻巧
感谢分享
有意思!感谢分享! 谢谢分享,感激不尽
呃,是用UABE 把sharedassets0.assets 里要修改的文件解包出来,然后删去开头的
0 TextAsset Base
1 string m_Name = "GongFa_Date"
1 string m_Script =
之后在游戏文件夹里新建data 文件夹放入修改过的txt文件就可以了吗? 666支持一下。。. 学习了,正好需要 支持支持
可以征集一下版上各位手里对txt文件的解读,对每个txt的解析方法做一个配置文件,把字段对应到一个中文名称里,然后模板出一个有点像excel表格的gui供修改,点啥改啥,都是文本。。
修改的时候就有点像存档修改器吧,asset就是个存盘文件嘛
每次存盘的时候基于一个原版的源,打上gui里改动过的缓存就可以压包了,最后程序后台来个存档备份替换,就跟坛子里的存档修改一样。。
解包压包就可以指定下UABE的路径,然后用命令行调用exe加参数吧
我觉得这个比做自动拼接多个mod要简单很多,而且所有玩家都可以自己按照自己的想法弄了。程序框架就用现在存档修改器的,主要缺少就是格式解析呀这类的,可以从那个解密dll的类里面找对应的反序列化类的字段定义 dalao,牛逼!
谢谢分享
666666666666666
谢谢分享
感谢分享 我要下载. 楼主威武感谢楼主 ...................