工程参考/配置文件/Public/SkillBullet.txt
SkillBullet.txt 描述技能子弹(投射物)的表现:飞行特效、飞行音效、速度、爆炸特效、爆炸音效、击中绑定点,以及 5 个预留列。样本 4 条记录、15 列。本表当前不生效(见下)。
文件位置与生效
| 项目 | 说明 |
|---|---|
| 运行文件 | ../Public/Config/SkillBullet.txt,相对于客户端工作目录。客户端实际加载的是同目录的 Bullet.txt。
|
| 读取程序 | 客户端 GMDataBase.cpp 把子弹数据注册为 DBC_BULLET_DATA(id 129)并指向 “Bullet.txt”,不是 SkillBullet.txt;全树检索不到 SkillBullet.txt 的读取入口 |
| 生效方法 | 客户端读取的是 Bullet.txt;修改 SkillBullet.txt 并随客户端资源更新也不会被读取。服务端不需要重启。 |
| 样本格式 | GB18030-compatible,CRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。
|
第 1 列是子弹编号,客户端按它查询;第 2、3 列是子弹类型与初始位置类型;第 4 到 9 列是表现信息(飞行特效/音效、速度、爆炸特效/音效、击中绑定点),其中特效与音效是资源名或路径,绑定点如“身体受击点”;第 10 到 14 列是预留列,样本为空;第 15 列是中文描述。
整表除编号/类型/速度外多为字符串,写进去的是资源名或路径。本表与 Server/SkillObjData_V1.txt 都基于 _DBC_BULLET_DATA 结构,但客户端实际读取的是 Bullet.txt,本文件同名不同命。
文件格式
首行是类型行:INT INT INT STRING STRING FLOAT STRING STRING STRING STRING STRING STRING STRING STRING STRING;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。
字段详解
列号从 1 开始,源码列下标从 0 开始。
| 字段与类型 | 含义与修改要点 | 缺项或特殊值 |
|---|---|---|
第 1 列INT:ID |
子弹数据的编号,客户端按此查询。服务端不读取本表。 | 空首列使数据行被跳过;须唯一。 |
第 2 列INT:类型 |
子弹类型,区分不同的子弹行为。 | 空为 0。 |
第 3 列INT:初始位置类型 |
子弹生成的初始位置类型(如施法者、目标)。 | 空为 0。 |
第 4 列STRING:子弹飞行特效ID |
飞行过程中播放的特效资源名。 | 空表示不播飞行特效。 |
第 5 列STRING:飞行音效ID |
飞行音效资源路径;样本多为空。 | 空表示不出声。 |
第 6 列FLOAT:速度(m/s) |
子弹飞行速度,单位米/秒。 | 空为 0,子弹不移动。 |
第 7 列STRING:子弹爆炸特效ID |
子弹到达/爆炸时播放的特效资源名。 | 空表示不播爆炸特效。 |
第 8 列STRING:爆炸音效ID |
爆炸音效资源路径。 | 空表示不出声。 |
第 9 列STRING:击中特效的绑定点 |
命中特效挂到的骨骼绑定点名称(如“身体受击点”)。 | 空按默认绑定。 |
第 10 列STRING:预留1 |
样本为空。 | 未使用。 |
第 11 列STRING:预留2 |
样本为空。 | 未使用。 |
第 12 列STRING:预留3 |
样本为空。 | 未使用。 |
第 13 列STRING:预留4 |
样本为空。 | 未使用。 |
第 14 列STRING:预留5 |
样本为空。 | 未使用。 |
第 15 列STRING:描述$1$ |
中文描述,$1$ 是客户端格式化占位符,只供阅读。 | 空值原样存入。 |
常用修改实例
示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。
把 1 号子弹的速度从 1000 改成 1200(教学用,实际不生效)
修改前:
INT INT INT STRING STRING FLOAT STRING STRING STRING STRING STRING STRING STRING STRING STRING ID 类型 初始位置类型 子弹飞行特效ID 飞行音效ID 速度(m/s) 子弹爆炸特效ID 爆炸音效ID 击中特效的绑定点 预留1 预留2 预留3 预留4 预留5 描述$1$ 1 0 0 g01_zd_yueluoxishan 1000 g01_zdo_yueluoxishan_01 身体受击点 月落西山
修改后:
INT INT INT STRING STRING FLOAT STRING STRING STRING STRING STRING STRING STRING STRING STRING ID 类型 初始位置类型 子弹飞行特效ID 飞行音效ID 速度(m/s) 子弹爆炸特效ID 爆炸音效ID 击中特效的绑定点 预留1 预留2 预留3 预留4 预留5 描述$1$ 1 0 0 g01_zd_yueluoxishan 1200 g01_zdo_yueluoxishan_01 身体受击点 月落西山
按第一列定位 1 号子弹。样本第 6 列速度为 1000(米/秒),改为 1200。只改第 6 列,保留 15 列和其余 3 行。本片段含类型行、列名行与该行,不能覆盖整表。
该列是飞行速度;由于客户端读的是 Bullet.txt 不是本文件,改完之后运行也不会受影响。
验证与排查
客户端启动日志加载的是 Bullet.txt(DBC_BULLET_DATA),不是本文件名;本表不会影响运行。判断依据是 DBC 注册表指向的文件名,不是日志是否报错。
客户端用 Bullet.txt,不是 SkillBullet.txt
客户端 GMDataBase.cpp:176 把 DBC_BULLET_DATA(129) 映射到 “Bullet.txt”,Obj_Bullet.cpp 用 Search_Index_EQU 按子弹 ID 查 Bullet.txt。SkillBullet.txt 同名不同命,是未被加载的备用/旧文件。
与 SkillObjData 共用结构
本表与 Server/SkillObjData_V1.txt 都基于 _DBC_BULLET_DATA 结构;两者当前都没有生效的加载入口。
关联与依据
Public/ImpactDirectly.txt · Public/Impact.txt · Public/ImpactSEData_V1.txt
其他配置及整理状态 · 服务端外网设置 · Lua 接口索引
Client/Client/Common/TDDBC_Struct.h:实际加载、解析、字段使用或示例关联依据Client/Client/Game/DBC/GMDataBase.cpp:实际加载、解析、字段使用或示例关联依据Client/Client/Game/Object/Surface/Obj_Bullet.cpp:实际加载、解析、字段使用或示例关联依据Common/GameStruct_Skill.h:实际加载、解析、字段使用或示例关联依据resources/Public/Config/SkillBullet.txt:实际加载、解析、字段使用或示例关联依据
本页核对客户端 GMDataBase.cpp 的 DBC_BULLET_DATA 注册(指向 Bullet.txt)、Obj_Bullet.cpp 的使用,以及 GameStruct_Skill.h 的 _DBC_BULLET_DATA 结构;确认 SkillBullet.txt 无读取入口;未运行客户端。