↑点击这里,欢乐多多,奖励多多哦~↑
前言:
一.工具篇 使用的工具为alice-tools,当前版本0.5.1,作者Nunuhara Cabbage(没错,就是那个ヌヌハラ……起的一手好名字)
下载:https://haniwa.technology/alice-tools/
源码:https://github.com/nunuhara/xsystem4
(下载页面有说明,英文使用者可以跳过这段)
说是工具,实则为工具包,目前有以下五个组件: aindump:导出ain文件里的代码或文本信息; ainedit:将编辑过的代码/文本注入回ain文件; exdump:导出ex文件里的静态数据; exbuild:将导出的静态数据重建; alice-ar:解包ald/afa/flat文件(目前无法用于中文版)。
(注:原本中文版ain存在无法注入代码的问题,现已修复。)
二.提取/封装 (下载页面有说明,英文使用者可以跳过这段)
三.ex修改 准备工作基本结束了,接下来就是实际的部分了。
我们先说ex文件吧(相对简单不少),目前贴吧里主流的修改基本都是对ex文件修改。
ex文件里保存着游戏使用的绝大多数静态数据。
结构也比较简单,主要的两种数据结构,table就是表格了,逗号分割可以比较简单的转换为csv格式,如:
table E_声音分组设定 = {
{ indexed int 分组编号, int 対応音声分组编号 = -1, float 默认响度 = 0.800000 },
{ 0, -1, 0.800000 },
{ 1, -1, 0.800000 },
{ 2, -1, 0.800000 },
{ 3, -1, 1.000000 },
{ 4, -1, 0.800000 },
{ 5, -1, 0.177828 }
};
table的修改只需要替换对应的合理值,没有什么需要注意的点。
比较重要的table有任务信息(不含条件逻辑),卡牌信息以及技能信息,其他可以忽略。
另一种tree类似于json,主要区别在于使用“=”而不是“:”,如:
tree 排除故障时奖励/头目 = {
3轮以内打倒了 = {
值 = 1,
},
1轮内打倒了 = {
值 = 1,
},
过度杀戮 = {
值 = 10,
},
使用大招打倒了 = {
值 = 0,
},
};
tree类型里数据结构相对重要一些,我们稍微拆开来写。 1.map数据:
2.任务数据
3.成就情报
4.其他: 相对次要但可以关注的数据还有卡牌情报,CG回想,障碍物(地图装饰物),食券条件(识别名情报),秘书数据/情报,不多赘述了。
四.ain修改 写到这感觉累了,那就鸽了吧
相对较不推荐的修改方式,需要有一定的汇编基础。或者有爱和脑子也行
建议没兴趣的同学不用看下去了,有兴趣的同学先补充下汇编基础知识或者直接看个乐子。
目前alice-tools无法做到像AinDecompiler那样反编译出可读性较高的高级代码,只能反汇编出无分割的汇编码。好在alice-tools自带了一部分宏功能优化了可读性。
因为大部分的静态数据都储存在ex文件中,只有逻辑部分归属于ain,那我们的修改思路也基于此,从flag、卡名之类的字符串或者游戏内元素相关的函数名作为切入点下手。
虽然多读一些代码对于我们更好地掌握游戏结构有很大帮助,但是从修改的角度来说以点破面各取所需也不尝是个好办法。
这里就拿实际的例子说明吧: 例1:初期追加卡片
例2:妖怪王的日常生活任务
例3:卡牌的掉落条件
例4:高难度模式追加等同于CP点的难度
例5:新周目继承统合部队
五.结语 感觉写的还是比较乱且啰嗦,嘛反正就当是笔记,无所谓了。
作为出发点的新周目继承这个目标已经实现了,接下来也没有太多的追求,可能就对受到影响的flag修修补补了吧。
写这么多,就当是留个纪念了。
下载区怎么用完全忘了,等我研究下再看要不要把自制的试毒向补丁放上来……
卡牌掉落和任务条件整理了一半,看心情再继续(大概摸了
随缘更新(基本摸了