工程参考/配置文件/Server/DarkSkillList.txt

来自天龙知识库
雪舞留言 | 贡献2026年9月11日 (五) 10:25的版本 (维护配置文件知识库:完整字段、读取范围、手工修改实例与核对状态)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索


首页 · 配置文件索引 · 修改约定

DarkSkillList.txt 是暗器技能的进化链。每一行是一条链,16 列对应暗器等级 10、20、…、160 时该链上的技能编号。暗器升级时先按当前技能编号找到所在行,再取新等级那一列的值替换进去。

位置与生效 · 文件格式 · 字段详解 · 修改实例

文件位置与生效

项目 说明
运行文件 ./Config/DarkSkillList.txt,相对于 Server 工作目录。路径写死,没有 FileDef 宏。
读取程序 Server 在 TableInit::InitDarkSkillListTable 加载;Item::DarkLevelupSkill 与 Item::AdjustDarkSkill 按等级列取值
生效方法 停服后备份并修改实际 Server/Config 副本,再重启 Server。当前检索范围未发现单独重载入口,也不在 ReloadCombatTables 的清单里。客户端不加载本表。
样本格式 GB18030-compatibleCRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。

样本 31 行、16 列。加载器只要求列数不少于 16,不校验任何数值,也不要求第一列是编号。DarkLevelupSkill 与 AdjustDarkSkill 都先要求暗器等级落在 40 到 160 之间且能被 10 整除,再把等级换算成列下标:下标 = 等级/10 − 1,并夹在 0..15。所以第 1 列对应 10 级、第 16 列对应 160 级,但等级 10、20、30 对应的第 1 到第 3 列在任何调用路径里都取不到,真正会被读取的是第 4 列(40 级)到第 16 列(160 级)。

Item::DarkLevelup 在等级大于 149 时直接返回失败,所以靠升级最高停在 150 级,第 16 列(160 级)在升级路径中不可达;只有 AdjustDarkSkill 在暗器已经是 160 级时才读它。

样本前 24 行是每行 16 个连续编号的技能链(32000 到 32399),后 7 行是整行同值的收尾链(32400 到 32406 各占一行)。表头第 13 列样本写成「130级110级技能」,是原表保留的笔误,不要顺手按其它列的格式去改它,除非确实要改这一列的业务含义。

文件格式

首行是类型行:INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。

字段详解

列号从 1 开始,源码列下标从 0 开始。

字段与类型 含义与修改要点 缺项或特殊值
第 1 列
INT:10级技能
列位对应暗器等级 10,但两条调用路径都要求等级 ≥40,本列取不到。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 2 列
INT:20级技能
列位对应暗器等级 20,但两条调用路径都要求等级 ≥40,本列取不到。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 3 列
INT:30级技能
列位对应暗器等级 30,但两条调用路径都要求等级 ≥40,本列取不到。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 4 列
INT:40级技能
暗器等级 40 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 5 列
INT:50级技能
暗器等级 50 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 6 列
INT:60级技能
暗器等级 60 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 7 列
INT:70级技能
暗器等级 70 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 8 列
INT:80级技能
暗器等级 80 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 9 列
INT:90级技能
暗器等级 90 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 10 列
INT:100级技能
暗器等级 100 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 11 列
INT:110级技能
暗器等级 110 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 12 列
INT:120级技能
暗器等级 120 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 13 列
INT:130级110级技能
暗器等级 130 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 14 列
INT:140级技能
暗器等级 140 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 15 列
INT:150级技能
暗器等级 150 时该链上的技能编号。样本编号从 32000 到 32406。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。
第 16 列
INT:160级技能
暗器等级 160 时该链上的技能编号。样本编号从 32000 到 32406。正常升级在 150 级封顶,本列只在 AdjustDarkSkill 处理 160 级暗器时用到。修改时同一行内各列应保持合法的技能编号,否则该等级会写入查不到的技能。 空经 atoi 为 0;调用方遇到 ≤0 会跳过该槽位,相当于本列不推进。

常用修改实例

示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。

把第一条链 40 级时的技能从 32003 改为 32999

修改前:

INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT
10级技能	20级技能	30级技能	40级技能	50级技能	60级技能	70级技能	80级技能	90级技能	100级技能	110级技能	120级技能	130级110级技能	140级技能	150级技能	160级技能
32000	32001	32002	32003	32004	32005	32006	32007	32008	32009	32010	32011	32012	32013	32014	32015

修改后:

INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT	INT
10级技能	20级技能	30级技能	40级技能	50级技能	60级技能	70级技能	80级技能	90级技能	100级技能	110级技能	120级技能	130级110级技能	140级技能	150级技能	160级技能
32000	32001	32002	32999	32004	32005	32006	32007	32008	32009	32010	32011	32012	32013	32014	32015

按第一列定位 32000(样本第 1 条链)。第 4 列对应暗器等级 40,样本 32003。只改第 4 列,保留 16 列和其余 30 行。本片段含表头与该行,不能覆盖整表。

暗器到 40 级时,若某个槽位的当前技能属于这一行,槽位会先写入第 4 列的值 32999;因为 40 级同时触发 DarkSkillStudy 的第 1 阶段抽取,第 0 个槽位还可能被那一次抽取覆盖。隔离加载读回 32999。技能能否释放取决于技能模板是否存在,需要实测。

验证与排查

启动日志出现 Load DarkSkillList.txt ... OK!。31 行、16 列。列数少于 16 会 Assert 失败。技能编号写错不会在加载时报错,只在暗器升级时表现为槽位落空。恢复备份后重启。

本表负责「同一体系内按等级换技能」,DarkSkillStudy 负责「40/70/90 级时随机换到哪条体系」,两者配合使用。改本表不会改变暗器品质,品质在 DarkConfigTable.ini。

关联与依据

Server/DarkSkillStudy.txt · Public/DarkExpLevel.txt · Server/DarkConfigTable.ini

其他配置及整理状态 · 服务端外网设置 · Lua 接口索引

  • Server/Server/GameServer/Server/Main/GameTable.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Main/GameTable.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/Item.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据
  • Common/DataBase/TLBB_DBC.cpp:实际加载、解析、字段使用或示例关联依据
  • resources/Server/Config/DarkSkillList.txt:实际加载、解析、字段使用或示例关联依据

原始 InitDarkSkillListTable 隔离加载测试。暗器升级换技能未在游戏中执行。