工程参考/配置文件/Public/ImpactSEData_V1.txt
ImpactSEData_V1.txt 是效果(Buff/Debuff)的实例表,管挂上之后怎么共存:和谁互斥、谁优先、主人死了留不留、能不能被驱散或手动取消。它不描述效果加多少数值,数值在效果数据表里。
文件位置与生效
| 项目 | 说明 |
|---|---|
| 运行文件 | ../Public/Config/ImpactSEData_V1.txt,相对于 Server 工作目录。
|
| 读取程序 | Server 在 TableInit::InitImpactSEDataMgr 加载;g_ImpactSEDataMgr 由效果系统查询。客户端 GMDataBase 注册同名表 |
| 生效方法 | 停服后备份并修改实际 Public 副本,再重启 Server。服务端另有 GM 指令 ReloadCombatTables(CGCommandHandler 里判定),会依次重跑 InitSkillTemplateDataMgr、InitSkillDataMgr、InitImpactSEDataMgr、InitStandardImpactMgr、InitPvpRulerManager、InitPunishRulerTables 等,可以热重载本表。客户端同名表须同步。 |
| 样本格式 | GB18030-compatible,CRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。
|
样本 807 条记录、类型行 17 列。加载器按固定列位读 7 个字段,其中第 4 到 10 列(图标、激活与持续的特效、音效、绑定点和持续特效 ID)全部被 ++column 跳过,第 15、16 列两个预留域也被跳过。第 8 列样本有 g01_buff2、npc_buff_19 这类值,看起来像资源名,但服务端 InitFromDB 不读它。
同一份样本的数据行里,第 18 列之后还有内容(整表最大列数 33),属于客户端表现列,服务端读取器不会取到。
文件格式
首行是类型行:INT INT INT STRING STRING STRING STRING STRING STRING STRING INT INT INT INT INT STRING STRING;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。
字段详解
列号从 1 开始,源码列下标从 0 开始。
| 字段与类型 | 含义与修改要点 | 缺项或特殊值 |
|---|---|---|
第 1 列INT:效果SE ID |
效果实例编号,也是数组下标,被技能效果引用。 | 须 ≥0 且小于容量 1025。 |
第 2 列INT:互斥ID |
写入 m_nMutexID,同互斥组的效果不能同时挂在同一目标上。 | 空为 0,属于同一互斥组。 |
第 3 列INT:优先级 |
写入 m_nPriParam,同一互斥组内谁的优先级高谁生效。 | 空为 0。 |
第 4 列掠过:图标文件名 |
InitFromDB 直接跳过。 | 改它不影响服务端。 |
第 5 列掠过:激活特效ID |
跳过,激活表现由客户端资源决定。 | 改它不影响服务端。 |
第 6 列掠过:激活音效ID |
跳过。 | 改它不影响服务端。 |
第 7 列掠过:激活特效绑定点 |
跳过。 | 改它不影响服务端。 |
第 8 列掠过:持续特效ID |
样本本列有值(如 g01_buff2),但服务端 InitFromDB 不读取。 | 改它不影响服务端逻辑。 |
第 9 列掠过:持续音效ID |
跳过。 | 改它不影响服务端。 |
第 10 列掠过:持续特效绑定点 |
跳过。 | 改它不影响服务端。 |
第 11 列INT:死亡时是否保留 |
写入 m_bStillOnWhenOwnerDead。非 0 为真,主人死亡后效果继续挂着。 | 空为 0,主人死亡即移除。 |
第 12 列INT:是否可以被驱散 |
写入 m_bCanBeDispeled。非 0 为真,允许被驱散类技能或道具移除。 | 空为 0,不可驱散。 |
第 13 列INT:是否是攻击效果 |
写入 m_bHostileFlag。非 0 为真,参与敌我判定。 | 空为 0,按非攻击效果处理。 |
第 14 列INT:是否可被手动取消 |
写入 m_bCanBeManualCancel。非 0 为真。 | 空为 0,不能点掉。 |
第 15 列预留 |
InitFromDB 用 ++column 跳过。 | 改它不影响服务端。 |
第 16 列预留 |
与第 15 列一起跳过。 | 改它不影响服务端。 |
第 17 列STRING:效果说明 |
写入 m_szDescription,效果提示文字。 | 空值原样存入。 |
常用修改实例
示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。
把效果 1 改成主人死亡后仍然保留
修改前:
INT INT INT STRING STRING STRING STRING STRING STRING STRING INT INT INT INT INT STRING STRING ID 分类 ID(互斥用) PRI优先级 图标文件名 触发特效ID 触发特效的音效ID 触发特效的绑定点 持续性特效ID 持续特效的音效ID 持续性特效的绑定点 死后是否保留 是否可以被技能驱散 是否是负面效果 是否可以被手动取消 是否为线性特效 线性特效的绑定点 效果说明$1$ 1 1 0 Buff0_1 g01_buff2 身体受击点 0 1 1 0 0 撕裂:持续掉血
修改后:
INT INT INT STRING STRING STRING STRING STRING STRING STRING INT INT INT INT INT STRING STRING ID 分类 ID(互斥用) PRI优先级 图标文件名 触发特效ID 触发特效的音效ID 触发特效的绑定点 持续性特效ID 持续特效的音效ID 持续性特效的绑定点 死后是否保留 是否可以被技能驱散 是否是负面效果 是否可以被手动取消 是否为线性特效 线性特效的绑定点 效果说明$1$ 1 1 0 Buff0_1 g01_buff2 身体受击点 1 1 1 0 0 撕裂:持续掉血
按第一列定位效果 1。样本第 11 列是 0(主人死亡即移除),改为 1(继续保留)。只改第 11 列,保留列结构与其余 806 行。本片段含表头与该行,不能覆盖整表。
GetInstanceByID(1)->m_bStillOnWhenOwnerDead 变为真。隔离加载读回真值。实际挂上与死亡后的表现需要实测。
验证与排查
启动日志出现 Load ImpactSEData_v1.txt ... OK!。807 条记录,效果 1 死亡后保留为真。第一列写 ≥1025 会被越界断言跳过。恢复备份后重启,或用 ReloadCombatTables 指令。
本表只管存活与叠加规则;效果加成的具体数值在效果数据表(StandardImpact 一类)里,两者用 ID 关联,不要在本表里找数值。
关联与依据
Public/SkillTemplate_V1.txt · Public/SkillData_V1.txt
其他配置及整理状态 · 服务端外网设置 · Lua 接口索引
Server/Server/GameServer/Server/Main/GameTable.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Main/GameTable.h:实际加载、解析、字段使用或示例关联依据Common/Combat/TemplateManager.h:实际加载、解析、字段使用或示例关联依据Common/Combat/DataRecords.cpp:实际加载、解析、字段使用或示例关联依据Common/Combat/DataRecords.h:实际加载、解析、字段使用或示例关联依据Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Packets/CGCommandHandler.cpp:实际加载、解析、字段使用或示例关联依据resources/Public/Config/ImpactSEData_V1.txt:实际加载、解析、字段使用或示例关联依据
原始 ImpactSEData_T::InitFromDB 与 TemplateManager_T 索引隔离加载测试。效果挂载、互斥与驱散未在游戏中执行。