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

注册 登录

QQ登录

只需一步,快速开始

查看: 46341|回复: 82
打印 上一主题 下一主题

[MOD] =====【180315——180705】简单修改教程,轻量MOD制作示例;格挡保留、能量保留、初始卡牌替换、金币增加、正式版进BETA版方法

  [复制链接]

8

主题

403

帖子

1566

积分

游戏狂人

O(∩_∩)O

Rank: 6Rank: 6

贡献度
47
金元
13783
积分
1566
精华
0
注册时间
2011-7-7
跳转到指定楼层
主题
发表于 2018-3-16 22:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhouq510 于 2020-3-12 11:23 编辑

下文是2018年的内容,现已过时。
DJ Java Decompiler反编译的方法部分失效,Java Bytecode Editor改字节码的方法依然有用。
————————————————————
文件在文末,示例是2018年3月15号版的
————————————————————
所需工具:
Java SE Development Kit 8(用下面两个工具前需要安装这个,Oracle官网下,即jdk8,注意要8,游戏不支持9或10!)
DJ Java Decompiler(反编译需要)
Java Bytecode Editor(如果你需要改字节码就需要这个)
————————————————————
初始卡牌替换:
用winrar把游戏文件夹内的desktop-1.0.jar打开,将\com\megacrit\cardcrawl\characters\中的 Ironclad.class 和 TheSilent.class 解压出来。
用DJ Java Decompiler打开Ironclad.class。(用DJ Java Decompiler打开文件时,注意文件路径和文件名都不能有中文)

编辑初始卡牌,例如这样:
编辑完成后保存成为一个java文件(文件名需保持一致,即Ironclad.java),然后点上方Tools->Compile,设置:

然后Complie,如果编译无出错则将生成的class文件用winrar替换掉游戏jar包里的文件就可以了。(留备份)
然后是TheSilent.class文件
做相同的处理。
————————————————————
能量保留:
文件是desktop-1.0.jar\com\megacrit\cardcrawl\core\EnergyManager.class

打开后编辑,例如这样:
同上面一样编译后替换jar包里的文件。
————————————————————
金币增量:
文件是desktop-1.0.jar\com\megacrit\cardcrawl\characters\AbstractPlayer.class
话说这种带内部类的class,就是带含$号的那些,反编译之后我是不太懂怎么编译回去。所以只能说说我会的用修改字节码的方法。望懂编译的大佬不吝赐教。
修改字节码在涉及增删时是比较麻烦的,不涉及增删时倒是很方便,我用的工具是Java Bytecode Editor(jbe)。
首先用DJ Java Decompiler打开AbstractPlayer.class观察一下,找到目标在gainGold这个函数里。如图
然后用jbe打开AbstractPlayer.class,选择Methods->gainGold->Code。如图
接下来要做的就是比较复杂事情了。
首先java字节码是比较难理解的,逻辑上跟汇编是有点像的,而且用jbe修改的话,你必须小心不能变更长度,否则游戏跳出。而且jbe还不会自动帮你对齐跳转,需要自己手动修改(关于这点我突然意识到ollydbg是有多么地好用了)。
在DJ Java Decompiler中观察gainGold代码,我们的目的是空出“getRelic("Ectoplasm").flash();”和“return;”,然后插入翻倍的指令。在jbe中观察,从第五到第九行,即棕色数字的9到18需要空出。
切换到Code Editor,
然后直接点一次Save method,上方的Attribute length从210变为120,那么接下来你做的修改必须保持120不变游戏才不会跳出。
将第五到第九行删除,键入如下图的四行翻倍指令,不足的长度键入nop填充,使Attribute length维持120。顺便将第四行的ifeq改为ifne。如图:
改完后需要手动将所有的跳转对齐,因为改动使总行数从40增加到了45,所以涉及第五行后的跳转全都加5。具体而言就是:
第4行的ifeq 10->ifne 15
第11/16行ifgt 16->ifgt 21
第15/20行goto 40->goto 45
第32/37行ifeq 40->ifeq 45
第39/44行goto 30->goto 35
改完后Save method。然后用DJ Java Decompiler打开检查一下(如下图),如果没什么问题就可以存入游戏jar包里了。
————————————————————
格挡保留:
感觉修改字节码好像是很麻烦的样子?实际上如果是更轻量化的修改比如只改个逻辑,不涉及增删的话,比反编译编译还简单。例如想改格挡保留的话,对文件desktop-1.0.jar\com\megacrit\cardcrawl\actions\GameActionManager.class,将Methods->getNextAction中430行和434行的ifne改为ifeq直接Save method就可以存入游戏jar包里了。
简单,图就不截了。
如果想改成文末那样的格挡文件的样子的话,可以看下去:




将格挡逻辑从上图一改为上图二,需要在jbe中将439和440行删除并用nop填充长度,将438行的ifne改为ifeq,下方bipush 15改为bipush 3。改动使总行数增加4,所有涉及439行后的跳转全加4(共有11处;另现在新的版本有12处了)。如图

————————————————————
以上示例中以三月十五号版本为准,更新后有可能不一样(例如字节码行数),思路是一样的,观察一下代码即可。——截自4月12日,GameActionManager.class的行数已经和3月15日不同。
其它效果的修改大同小异,可以自行摸索一下。
32楼写了在商店可以重复删卡的效果
37楼写了下获得卡牌时自动升级效果
————————————————————
三月十五号版本的文件:
315三倍金币AbstractPlayer.class (41.56 KB, 下载次数: 218) 三倍金币,当你拥有灵体外质时能且只能获得一倍金币
315格挡保存GameActionManager.class (10.62 KB, 下载次数: 220) 格挡每回合开始时仅减少3,当你拥有壁垒、残影、遗物外卡钳其中之一时不减
315能量保存EnergyManager.class (1.61 KB, 下载次数: 205) 能量保留,上限是费用+3,例如你有4费则可保留7点能量,结束回合时若能量大于7点也不会减少,因此与加能量的卡牌遗物无冲突,拥有冰淇淋或保留电量时无上限
315换初始卡牌金币Ironclad.class (3.44 KB, 下载次数: 108) 战士初始600金币,初始卡牌为打击、痛击、剑柄打击、头槌、闪电霹雳、铁斩波、防御、耸肩无视、武装、活动肌肉,稀有度普通
315换初始卡牌金币TheSilent.class (3.45 KB, 下载次数: 105) 猎手初始600金币,初始卡牌为打击、中和、快斩、带毒刺击、匕首雨、防御、生存者、后空翻、偏折、闪躲翻滚,稀有度普通
————————————————————
三月22号、三月29号、四月5号、四月12号、四月19号、四月26号、四月28号、五月3号、五月10号、五月17号、五月24号、五月31号、六月7号、六月14号、六月21号、六月28号
以上这些版本的文件不提供了
————————————————————
七月5号版本的文件:
0705三倍金币AbstractPlayer.class (59.12 KB, 下载次数: 1694) 说明同上
0705格挡保存GameActionManager.class (13.68 KB, 下载次数: 1352) 说明同上
0705能量保存EnergyManager.class (1.89 KB, 下载次数: 1206) 说明同上
0705换初始卡牌金币Ironclad.class (3.83 KB, 下载次数: 681) 说明同上
0705换初始卡牌金币TheSilent.class (3.84 KB, 下载次数: 639) 说明同上
0705换初始卡牌金币Defect.class (3.29 KB, 下载次数: 540) 机器人初始600金币,初始卡牌为打击,球状闪电、寒流、扫荡射线、防御、电击、双重释放、飞跃、蒸汽护壁、冷静头脑,普通
————————————————————
正式版进BETA版:
0705进测试版Settings.class (13.31 KB, 下载次数: 2077) 替换desktop-1.0.jar\com\megacrit\cardcrawl\core\Settings.class进入BETA版(现在正式版也能用故障机器人了)。关于进BETA版的修改方法&存档继承方法参见http://bbs.3dmgame.com/thread-5740696-1-1.html这个帖子
————————————————————
65楼有2018十月11号版本的文件……!
————————————————————
更一个20200114版本的:
200114三倍金币AbstractPlayer.class (67.53 KB, 下载次数: 37)
200114换初始卡牌金币Ironclad.class (13.58 KB, 下载次数: 28)
200114换初始卡牌金币TheSilent.class (14.16 KB, 下载次数: 24)
200114换初始卡牌金币Defect.class (13.83 KB, 下载次数: 23)
200114换初始卡牌金币Watcher.class (18.34 KB, 下载次数: 22)
200114格挡保存GameActionManager.class (17.64 KB, 下载次数: 67)
200114能量保存EnergyManager.class (1.89 KB, 下载次数: 46)
200114商店重复删卡ShopScreen.class (37.07 KB, 下载次数: 24)
200114进测试版Settings.class (16.44 KB, 下载次数: 28)

评分

1

查看全部评分

回复

使用道具 举报

18

主题

1450

帖子

2217

积分

3DM创意工坊

Rank: 11Rank: 11Rank: 11Rank: 11

贡献度
97
金元
18292
积分
2217
精华
0
注册时间
2010-5-28
舒服的沙发
发表于 2021-3-18 22:32 | 只看该作者
大佬,求最新版的保留能量和格挡!研究了半天,没研究明白咋改,而且行数不对了,找不到
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-21 15:57 , Processed in 0.031917 second(s), 19 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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