使用 AI 生成自动召唤 APC 称号文件
背景
这篇文档记录一个用于 DNF/PVF 修改的工作流:把当前版本导出的索引文件和 APC 称号模板文件交给 AI,让 AI 生成一个新的 beholder.equ 称号文件。
目标效果是:玩家佩戴该称号进入副本后,自动随机召唤一个当前版本存在的 APC。APC 持续 180000 毫秒,称号冷却时间也是 180000 毫秒。副本超过 3 分钟后,第一个 APC 会消失,并在冷却结束后重新随机生成下一个 APC。
这个方案适合偶尔生成一次称号文件的场景。相比固定脚本,AI 更适合处理不同 PVF 版本里的字段结构、缩进风格、索引文件格式差异等不完全标准化的问题。但生成结果仍然需要人工检查,尤其是概率、ID 去重、字段闭合和客户端/服务端 PVF 是否一致。
PVF 内部文件路径
本文档中的路径指的是 PVF 解包后的内部路径。
| 用途 | 路径 |
|---|---|
| 装备列表文件 | equipment/equipment.lst |
| APC / 人偶索引文件 | aicharacter/aicharacter.lst |
| 副本索引文件 | dungeon/dungeon.lst |
| APC 称号模板文件 | equipment/character/common/title/apc_title_template.equ.tpl |
| 当前版本称号参考文件 | equipment/character/common/title/任意一个已有称号.equ |
| 最终称号文件目录 | equipment/character/common/title |
| 最终称号文件 | equipment/character/common/title/beholder.equ |
| 赛丽亚商店文件 | itemshop/equipmentshop7.shp |
| 称号图标 | Item/Title/title.img 第 192 帧 |
输入文件
必需文件
aicharacter/aicharacter.lst
dungeon/dungeon.lst
equipment/character/common/title/apc_title_template.equ.tplaicharacter/aicharacter.lst:当前版本 APC / AI 角色索引文件,用于提取可召唤 APC ID。dungeon/dungeon.lst:当前版本副本索引文件,用于生成[dungeon check]白名单。apc_title_template.equ.tpl:APC 称号模板文件,用于提供自动召唤 APC 的称号结构。
推荐额外提供
equipment/character/common/title/任意一个已有称号.equ这个文件用于让 AI 参考当前版本称号文件的字段写法、缩进风格和基础结构。它不是最终输出文件,也不需要和 beholder.equ 同名。
APC 称号模板文件
模板文件用于提供固定结构,不直接打包进 PVF。模板里可以保留占位符,例如:
{{DUNGEON_CHECK_IDS}}
{{APC_THEN_BLOCKS}}
{{COOLTIME}}
{{DURATION}}
{{PROBABILITY}}
{{ICON_FRAME}}AI 生成最终文件时,需要把这些占位符全部替换掉,最终产物是:
equipment/character/common/title/beholder.equ模板中的建议默认值:
TITLE_NAME = 阿拉德的支援者
TITLE_NAME2 = Supporter
ICON = `Item/Title/title.img` 192
COOLTIME = 180000
DURATION = 180000
PROBABILITY = 100 / APC总数量,保留 8 位小数给 AI 的完整提示词
可以把下面提示词直接发给 AI,然后上传必需文件,以及可选的当前版本称号参考文件。
我会上传 PVF 明文相关文件,请你帮我生成一个新的称号装备文件,文件名为 `beholder.equ`。
目标:
生成一个 DNF/PVF 称号文件。玩家佩戴该称号进入副本后,自动随机召唤一个当前版本存在的 APC。APC 持续 180000 毫秒,称号冷却时间 180000 毫秒。副本超过 3 分钟后,旧 APC 消失,并在冷却结束后重新随机召唤下一个 APC。
PVF 内部路径约定:
1. 装备列表文件路径:`equipment/equipment.lst`
2. APC / 人偶索引文件路径:`aicharacter/aicharacter.lst`
3. 副本索引文件路径:`dungeon/dungeon.lst`
4. APC 称号模板文件:`apc_title_template.equ.tpl`
5. 当前版本称号参考文件路径:`equipment/character/common/title/任意一个已有称号.equ`
6. 新增称号文件最终路径:`equipment/character/common/title/beholder.equ`
7. 赛丽亚商店文件路径:`itemshop/equipmentshop7.shp`
8. 图标使用:`Item/Title/title.img` 第 192 帧
我会提供的文件:
1. `aicharacter/aicharacter.lst`
- 这是当前版本 APC / AI 角色索引文件。
- 请从这个文件中提取所有有效 APC ID。
- 只允许使用该文件中真实存在的 APC ID。
- 不要根据最大 ID 猜测数量。
- 不要自己编造 APC ID。
- 不要生成重复 APC ID。
2. `dungeon/dungeon.lst`
- 这是当前版本副本索引文件。
- 请从这个文件中提取所有有效 dungeon ID。
- `[dungeon check]` 只允许使用该文件中真实存在的 dungeon ID。
- 不要自己编造 dungeon ID。
- 不要生成重复 dungeon ID。
3. `apc_title_template.equ.tpl`
- 这是 APC 称号模板文件。
- 请参考它的称号基础结构、触发条件、图标字段和 `[multiple then]` 召唤分支格式。
- 请替换模板中的占位符,生成最终的 `beholder.equ`。
- 不要保留任何 `{{PLACEHOLDER}}` 占位符。
4. 如果我额外上传了任意一个已有称号 `.equ` 文件:
- 请参考它的称号字段结构、缩进风格、图标字段、基础属性字段和当前版本兼容写法。
- 但最终生成的文件名仍然是 `beholder.equ`。
- 不要直接照抄它的召唤 APC 列表。
生成要求:
一、基础称号信息
请生成一个完整的 `beholder.equ` 文件,称号基础信息如下:
- 称号名称:`阿拉德的支援者`
- 英文名:`Supporter`
- 说明文本:`进入副本后,随机召唤一名APC协助作战。`
- 图标使用:
`[icon]`
`` `Item/Title/title.img` 192 ``
- 稀有度默认:2
- 最低等级默认:1
- 其他基础字段优先参考 `apc_title_template.equ.tpl`,同时结合当前版本已有称号文件的兼容写法。
二、触发条件
称号触发逻辑需要包含:
`[if]`
其中必须包含:
1. `[dungeon check]`
- 使用 `dungeon/dungeon.lst` 中解析出来的全部有效 dungeon ID。
- 每个 ID 单独一行。
- 不能使用 `dungeon/dungeon.lst` 中不存在的 ID。
2. `[cooltime]`
- 值为 `180000`
3. `[change status]`
- 内容为:
`` `hp` ``
`` `>` ``
`` `%` 0 ``
`` `end` ``
三、召唤逻辑
使用 `[multiple then]` 生成随机 APC 召唤池。
每一个 APC ID 生成一个 `[then]` 分支。
每个分支结构参考 APC 称号模板文件,格式如下:
`[then]`
`[target]`
`` `myself` -1 ``
`[duration]`
`180000`
`[probability]`
`单个概率`
`[then probability]`
`单个概率`
`[summon apc]`
`APC_ID -1 1`
`[/then]`
规则:
- APC_ID 必须来自 `aicharacter/aicharacter.lst`。
- 不允许使用 `aicharacter/aicharacter.lst` 中不存在的 APC ID。
- 不允许重复生成同一个 APC ID。
- 单个概率计算公式为:`100 / APC总数量`
- 概率保留 8 位小数。
- `[probability]` 和 `[then probability]` 使用同一个值。
- 所有分支概率总和应尽量接近 100。
四、输出要求
请最终提供两个文件:
1. `beholder.equ`
- 完整可保存的 PVF 称号文件。
- 文件应放置到 `equipment/character/common/title/beholder.equ`。
- 不要只输出片段。
- 不要省略 `[multiple then]`。
- 不要用“此处省略”之类的占位内容。
- 不要保留任何 `{{PLACEHOLDER}}` 占位符。
2. `report.txt`
- 输出生成报告。
报告内容需要包含:
- 解析到的 APC 原始条目数量
- 去重后的 APC 数量
- 是否存在重复 APC ID
- 解析到的 dungeon 原始条目数量
- 去重后的 dungeon 数量
- 是否存在重复 dungeon ID
- 单个 APC 概率
- 概率总和
- 使用的 cooltime
- 使用的 duration
- 使用的图标路径和图标编号:`Item/Title/title.img` 第 `192` 帧
- 建议放置路径:`equipment/character/common/title/beholder.equ`
- 风险提示:
- 只校验 APC ID 是否存在于 `aicharacter/aicharacter.lst`
- 不保证对应 `.aic` 文件、技能、动作、贴图资源完整
- 客户端和服务端 PVF 需要保持一致
- 建议先备份原 PVF,再测试
五、不要做的事情
- 不要修改赛丽亚商店文件。
- 不要修改装备索引文件。
- 不要生成商店 `[sell item]`。
- 不要生成装备 ID 注册内容。
- 不要帮我打包 PVF。
- 不要自己编造任何 APC ID。
- 不要自己编造任何 dungeon ID。
- 不要使用上传文件以外的数据源。
- 不要生成不存在于当前版本索引文件中的 ID。
请先解析我上传的文件,再生成 `beholder.equ` 和 `report.txt`。生成后的检查点
AI 生成 beholder.equ 后,重点检查:
- 是否已经替换所有
占位符。 [multiple then]是否完整,没有“省略”。[then]和[/then]是否成对闭合。[multiple then]和[/multiple then]是否成对闭合。[dungeon check]里的 ID 是否都来自dungeon/dungeon.lst。[summon apc]的第一个参数是否都来自aicharacter/aicharacter.lst。- 概率是否按
100 / APC数量计算。 [probability]和[then probability]是否一致。[icon]是否为Item/Title/title.img192 。- 客户端和服务端 PVF 是否都替换成同一版。
去哪里添加装备 ID
beholder.equ 只是装备文件本体。要让游戏识别这个新增称号,还需要在当前版本的装备列表文件里注册一个装备 ID。
装备列表文件路径:
equipment/equipment.lst找到类似结构:
装备ID
`装备文件路径/xxx.equ`新增称号时,例如 ID 使用 99999,可以添加:
99999
`equipment/character/common/title/beholder.equ`注意:
99999必须是当前版本未被占用的装备 ID。- 路径必须和
beholder.equ实际放置路径一致。 - 如果路径写错,商店可能不显示、购买失败或客户端异常。
如何放到赛丽亚商店
赛丽亚商店文件路径:
itemshop/equipmentshop7.shp在这个文件里找到 [sell item] 配置段。
示例:
[sell item]
1253 -1 -1 -1 -1 -1 697120001
1106 1107 1108 -1 1112 1113 1114
-2
3037 3035 3036 3033 3034 3262 -1
[/sell item]如果新增称号装备 ID 是 99999,最稳的做法是替换一个 -1 空位,不要直接乱追加,也不要删除 -2。
例如把第一行改成:
[sell item]
1253 99999 -1 -1 -1 -1 697120001
1106 1107 1108 -1 1112 1113 1114
-2
3037 3035 3036 3033 3034 3262 -1
[/sell item]说明:
-1通常表示空位。-2通常表示分页或分类分隔,不要随便删除。- 商店里添加的是装备 ID,例如
99999,不是文件名beholder.equ。
最终流程
1. 导出当前版本 PVF 明文文件
2. 准备 aicharacter/aicharacter.lst
3. 准备 dungeon/dungeon.lst
4. 准备 equipment/character/common/title/apc_title_template.equ.tpl
5. 可选:准备 equipment/character/common/title/任意一个已有称号.equ
6. 把文件和完整提示词发给 AI
7. 获取 beholder.equ 和 report.txt
8. 检查 report.txt 和 equ 结构,确认无 {{PLACEHOLDER}}
9. 把 beholder.equ 放到 equipment/character/common/title/beholder.equ
10. 在 equipment/equipment.lst 中添加装备 ID,例如 99999
11. 在 itemshop/equipmentshop7.shp 的 [sell item] 中替换一个 -1 为 99999
12. 重新打包 PVF
13. 客户端和服务端同步替换 PVF
14. 进游戏测试购买、佩戴、进图召唤、3 分钟刷新风险提示
这个方法只通过 aicharacter/aicharacter.lst 校验 APC ID 是否存在,通过 dungeon/dungeon.lst 校验副本 ID 是否存在。
它不能保证:
- 对应
.aic文件一定存在; - APC 引用的技能一定存在;
- APC 动作、贴图、音效资源一定完整;
- 所有特殊副本都适合召唤 APC;
- 客户端和服务端 PVF 不一致时不会异常。
所以测试时建议先备份 PVF,并先在普通副本中验证。