工程参考/配置文件/Public/ImpactCollections.txt
ImpactCollections.txt 把效果标识按分类归组:每一行是一个分类,第 1 列是分类编号,第 2 列是说明,第 3 列是本类包含多少个 ID,第 4 到 33 列最多 30 个效果标识 ID,第 34 列是测试用结尾说明。样本 11 条记录、34 列。本表当前不生效(见下)。
文件位置与生效
| 项目 | 说明 |
|---|---|
| 运行文件 | ../Public/Config/ImpactCollections.txt,相对于服务端工作目录。
|
| 读取程序 | 服务端 GameTable.cpp 的 InitIdCollectionMgr 加载的是 FILE_ID_COLLECTION(日志写“Load IDCollections.txt”),文件名是复数 IDCollections.txt;本文件名为 ImpactCollections.txt,与加载入口不一致,全树检索不到 ImpactCollections.txt 的读取入口 |
| 生效方法 | 服务端加载的是 IDCollections.txt 而不是本文件;修改本文件并重启不会产生影响。 |
| 样本格式 | GB18030-compatible,CRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。
|
第 3 列“本类中的 ID 数量”决定读取器实际取前 N 个 ID 列;超过 N 的列即使写了值也不会被读到。第 4 到 33 列是固定的 30 个 ID 槽位,读取时按第 3 列截断。第 2、34 列是说明文字,只供阅读。
这种“分类 + 数量 + 定长 ID 数组”的布局与运行时的 IDCollection_T / g_IDCollectionMgr 一致,但本文件并未被加载——服务端加载的是文件名不同的 IDCollections.txt。
文件格式
首行是类型行:INT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT STRING;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。
字段详解
列号从 1 开始,源码列下标从 0 开始。
| 字段与类型 | 含义与修改要点 | 缺项或特殊值 |
|---|---|---|
第 1 列INT:标识ID的分类ID |
本分类的编号,用于归类一组效果标识。 | 空为 0。 |
第 2 列STRING:分类说明$1$ |
分类的中文说明,$1$ 是客户端格式化占位符,只供阅读。 | 空值原样存入。 |
第 3 列INT:本类中的ID数量 |
实际读取的 ID 个数;读取器只取前 N 个 ID 列。 | 空为 0,不读任何 ID。 |
第 4 列INT:ID1 |
第 1 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 5 列INT:ID2 |
第 2 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 6 列INT:ID3 |
第 3 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 7 列INT:ID4 |
第 4 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 8 列INT:ID5 |
第 5 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 9 列INT:ID6 |
第 6 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 10 列INT:ID7 |
第 7 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 11 列INT:ID8 |
第 8 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 12 列INT:ID9 |
第 9 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 13 列INT:ID10 |
第 10 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 14 列INT:ID11 |
第 11 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 15 列INT:ID12 |
第 12 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 16 列INT:ID13 |
第 13 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 17 列INT:ID14 |
第 14 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 18 列INT:ID15 |
第 15 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 19 列INT:ID16 |
第 16 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 20 列INT:ID17 |
第 17 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 21 列INT:ID18 |
第 18 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 22 列INT:ID19 |
第 19 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 23 列INT:ID20 |
第 20 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 24 列INT:ID21 |
第 21 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 25 列INT:ID22 |
第 22 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 26 列INT:ID23 |
第 23 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 27 列INT:ID24 |
第 24 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 28 列INT:ID25 |
第 25 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 29 列INT:ID26 |
第 26 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 30 列INT:ID27 |
第 27 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 31 列INT:ID28 |
第 28 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 32 列INT:ID29 |
第 29 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 33 列INT:ID30 |
第 30 个效果标识 ID,归类到本分类下。读取数量由第 3 列决定。 | 空为 0。 |
第 34 列STRING:结尾说明,测试用 |
样本标注“测试用”的结尾说明,只供阅读。 | 空值原样存入。 |
常用修改实例
示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。
把 1 号分类的第 1 个 ID 从 0 改成 100(教学用,实际不生效)
修改前:
INT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT STRING 标识ID的分类ID 分类说明$1$ 本类中的ID数量 ID1 ID2 ID3 ID4 ID5 ID6 ID7 ID8 ID9 ID10 ID11 ID12 ID13 ID14 ID15 ID16 ID17 ID18 ID19 ID20 ID21 ID22 ID23 ID24 ID25 ID26 ID27 ID28 ID29 ID30 结尾说明,测试用 1 持续伤害 20 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
修改后:
INT STRING INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT STRING 标识ID的分类ID 分类说明$1$ 本类中的ID数量 ID1 ID2 ID3 ID4 ID5 ID6 ID7 ID8 ID9 ID10 ID11 ID12 ID13 ID14 ID15 ID16 ID17 ID18 ID19 ID20 ID21 ID22 ID23 ID24 ID25 ID26 ID27 ID28 ID29 ID30 结尾说明,测试用 1 持续伤害 20 100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
按第一列定位 1 号分类。样本第 4 列 ID1 为 0,改为 100。只改第 4 列,保留 34 列和其余 10 行。本片段含类型行、列名行与该行,不能覆盖整表。
该列是效果标识 ID;由于本表不被加载(服务端读的是 IDCollections.txt),改完之后运行也不会受影响。
验证与排查
服务端启动日志出现的是“Load IDCollections.txt”,不是本文件名;本表不会影响运行。判断依据是 InitIdCollectionMgr 的宏与文件名,不是日志是否报错。
文件名差异
服务端运行时加载“IDCollections.txt”(复数),本仓库里对应的生效文件若是那个名字才能被读到;ImpactCollections.txt 是未被加载的备用/旧文件,改它没有运行效果。
与服务端集合逻辑的关系
效果互斥/集合判定走 IDCollection_T 与 g_IDCollectionMgr(Impact_IsImpactInCollection 等),数据来自 IDCollections.txt,不是本表。
关联与依据
Public/Impact.txt · Public/ImpactSEData_V1.txt · Server/StandardImpact.txt
其他配置及整理状态 · 服务端外网设置 · Lua 接口索引
Server/Server/GameServer/Server/Main/GameTable.cpp:实际加载、解析、字段使用或示例关联依据Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据resources/Public/Config/ImpactCollections.txt:实际加载、解析、字段使用或示例关联依据
本页核对 GameTable.cpp 的 InitIdCollectionMgr 加载入口(FILE_ID_COLLECTION → IDCollections.txt 复数)与 FileDef.h 宏,确认 ImpactCollections.txt 无读取入口;未启动服务端。