工程参考/配置文件/Server/DarkConfigTable.ini

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


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

DarkConfigTable.ini 的 [DarkQuality] 节给出暗器品质五个档位的权重,共三组:创建暗器时用默认组,重置品质时按参数在高档和低档之间二选一。

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

文件位置与生效

项目 说明
运行文件 ./Config/DarkConfigTable.ini,相对于 Server 工作目录。路径写死,没有 FileDef 宏。
读取程序 Server 在 TableInit::InitDarkQualityDiffTable 加载;创建暗器与重置品质时抽取
生效方法 停服后备份并修改实际 Server/Config 副本,再重启 Server。当前检索范围未发现单独重载入口,也不在 ReloadCombatTables 的清单里。客户端不加载本文件。
样本格式 ASCIICRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。

加载器只读 [DarkQuality] 一节,共 15 个键,分三组各五个档位。每组五档之和必须正好等于 1000,否则会打印 NOT 1000 的断言(加载器在读完一整组之后再校验,所以不会因为单项写错而中途退出)。

两处键名拼写按源码保留:低档与高档的前缀是 GorwRate,不是 GrowRate;只有默认组写成 GrowRate。改名会让读取失败。

抽中的档位下标会再乘 40 加上 rand()%40 得到品质附加值:ItemRuler 里是 40*nQualityIndex + rand()%40,Item::ResetDarkQuality 里是 rand()%40 + 40*nQualityIndex;结果大于 200 时被改写为 0。

文件格式

使用 [节名] 与 Key=Value,节名和键名区分大小写,保持节标题位于行首。用单独一行分号写注释,保留原编码及 CRLF 换行;重复节或键取先匹配项,不依赖后写覆盖。缺项、空值与 0 分别按下表处理。

字段详解

模板 [n] 表示从 0 开始的序号,写入时应展开为实际数字;不是字面键名。

[DarkQuality]

字段与类型 含义与修改要点 缺项或特殊值
DefaultDark_Quality_GrowRate0
整数,写入 SHORT
默认品质档位权重,对应 g_DarkQualityDiffTbl.m_DefaultQuality。第 0 级的相对权重,本级品质档下标就是 0。源码按 rand()%1000 在五档间累加命中。创建暗器时抽品质档用本组。 缺失会打印 read DarkQuality::DefaultDark_Quality_GrowRate0 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
DefaultDark_Quality_GrowRate1
整数,写入 SHORT
默认品质档位权重,对应 g_DarkQualityDiffTbl.m_DefaultQuality。第 1 级的相对权重,本级品质档下标就是 1。源码按 rand()%1000 在五档间累加命中。创建暗器时抽品质档用本组。 缺失会打印 read DarkQuality::DefaultDark_Quality_GrowRate1 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
DefaultDark_Quality_GrowRate2
整数,写入 SHORT
默认品质档位权重,对应 g_DarkQualityDiffTbl.m_DefaultQuality。第 2 级的相对权重,本级品质档下标就是 2。源码按 rand()%1000 在五档间累加命中。创建暗器时抽品质档用本组。 缺失会打印 read DarkQuality::DefaultDark_Quality_GrowRate2 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
DefaultDark_Quality_GrowRate3
整数,写入 SHORT
默认品质档位权重,对应 g_DarkQualityDiffTbl.m_DefaultQuality。第 3 级的相对权重,本级品质档下标就是 3。源码按 rand()%1000 在五档间累加命中。创建暗器时抽品质档用本组。 缺失会打印 read DarkQuality::DefaultDark_Quality_GrowRate3 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
DefaultDark_Quality_GrowRate4
整数,写入 SHORT
默认品质档位权重,对应 g_DarkQualityDiffTbl.m_DefaultQuality。第 4 级的相对权重,本级品质档下标就是 4。源码按 rand()%1000 在五档间累加命中。创建暗器时抽品质档用本组。 缺失会打印 read DarkQuality::DefaultDark_Quality_GrowRate4 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
LowDark_Quality_GorwRate0
整数,写入 SHORT
低档权重,对应 g_DarkQualityDiffTbl.m_LowDarkQuality。键名里的 Gorw 是源码拼写。第 0 级的相对权重,本级品质档下标就是 0。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality 在 nType 不等于 2 时用本组。 缺失会打印 read DarkQuality::LowDark_Quality_GorwRate0 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
LowDark_Quality_GorwRate1
整数,写入 SHORT
低档权重,对应 g_DarkQualityDiffTbl.m_LowDarkQuality。键名里的 Gorw 是源码拼写。第 1 级的相对权重,本级品质档下标就是 1。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality 在 nType 不等于 2 时用本组。 缺失会打印 read DarkQuality::LowDark_Quality_GorwRate1 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
LowDark_Quality_GorwRate2
整数,写入 SHORT
低档权重,对应 g_DarkQualityDiffTbl.m_LowDarkQuality。键名里的 Gorw 是源码拼写。第 2 级的相对权重,本级品质档下标就是 2。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality 在 nType 不等于 2 时用本组。 缺失会打印 read DarkQuality::LowDark_Quality_GorwRate2 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
LowDark_Quality_GorwRate3
整数,写入 SHORT
低档权重,对应 g_DarkQualityDiffTbl.m_LowDarkQuality。键名里的 Gorw 是源码拼写。第 3 级的相对权重,本级品质档下标就是 3。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality 在 nType 不等于 2 时用本组。 缺失会打印 read DarkQuality::LowDark_Quality_GorwRate3 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
LowDark_Quality_GorwRate4
整数,写入 SHORT
低档权重,对应 g_DarkQualityDiffTbl.m_LowDarkQuality。键名里的 Gorw 是源码拼写。第 4 级的相对权重,本级品质档下标就是 4。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality 在 nType 不等于 2 时用本组。 缺失会打印 read DarkQuality::LowDark_Quality_GorwRate4 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
HighDark_Quality_GorwRate0
整数,写入 SHORT
高档权重,对应 g_DarkQualityDiffTbl.m_HighDarkQuality。键名里的 Gorw 是源码拼写。第 0 级的相对权重,本级品质档下标就是 0。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality(2) 这一个分支才用本组。 缺失会打印 read DarkQuality::HighDark_Quality_GorwRate0 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
HighDark_Quality_GorwRate1
整数,写入 SHORT
高档权重,对应 g_DarkQualityDiffTbl.m_HighDarkQuality。键名里的 Gorw 是源码拼写。第 1 级的相对权重,本级品质档下标就是 1。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality(2) 这一个分支才用本组。 缺失会打印 read DarkQuality::HighDark_Quality_GorwRate1 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
HighDark_Quality_GorwRate2
整数,写入 SHORT
高档权重,对应 g_DarkQualityDiffTbl.m_HighDarkQuality。键名里的 Gorw 是源码拼写。第 2 级的相对权重,本级品质档下标就是 2。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality(2) 这一个分支才用本组。 缺失会打印 read DarkQuality::HighDark_Quality_GorwRate2 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
HighDark_Quality_GorwRate3
整数,写入 SHORT
高档权重,对应 g_DarkQualityDiffTbl.m_HighDarkQuality。键名里的 Gorw 是源码拼写。第 3 级的相对权重,本级品质档下标就是 3。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality(2) 这一个分支才用本组。 缺失会打印 read DarkQuality::HighDark_Quality_GorwRate3 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。
HighDark_Quality_GorwRate4
整数,写入 SHORT
高档权重,对应 g_DarkQualityDiffTbl.m_HighDarkQuality。键名里的 Gorw 是源码拼写。第 4 级的相对权重,本级品质档下标就是 4。源码按 rand()%1000 在五档间累加命中。 ResetDarkQuality(2) 这一个分支才用本组。 缺失会打印 read DarkQuality::HighDark_Quality_GorwRate4 failed 的断言;写负数后会参与求和校验,仍会被要求五档合计 1000。

常用修改实例

示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。

把默认组的 1 级品质权重从 874 降到 800,同时把 2 级从 100 提到 174

修改前:

[DarkQuality]
DefaultDark_Quality_GrowRate0=874
DefaultDark_Quality_GrowRate1=100
DefaultDark_Quality_GrowRate2=20
DefaultDark_Quality_GrowRate3=5
DefaultDark_Quality_GrowRate4=1

修改后:

[DarkQuality]
DefaultDark_Quality_GrowRate0=800
DefaultDark_Quality_GrowRate1=174
DefaultDark_Quality_GrowRate2=20
DefaultDark_Quality_GrowRate3=5
DefaultDark_Quality_GrowRate4=1

代码块保留节标题 [DarkQuality] 与默认组的五行权重,两级调整后合计仍是 1000。先备份原文件,只改这两行;低档与高档两组保持原值,节标题保留。

修改后创建暗器落在 1 级的概率从 874/1000 降到 800/1000,落在 2 级的概率从 100/1000 升到 174/1000。隔离加载读回 800 与 174。实际掉落与鉴定结果需要实测。

验证与排查

启动时若某组之和不是 1000,Server 日志出现 INI: read DarkQuality::m_DefaultQuality NOT 1000 一类断言;键名写错则出现 read DarkQuality::<键名> failed。确认 15 个键都在、三组各自合计 1000,再分别抽默认组与重置组观察品质分布(需要实测)。恢复备份后重启。

与其它暗器表的分工

本文件管品质数值分布;DarkSkillList.txt 管按等级换技能,DarkSkillStudy.txt 管 40/70/90 级的随机换体系,Public/DarkExpLevel.txt 管升级经验。四者互不替代。

值域

值按 SHORT 保存,单个键不要超过 32767;因为每组必须合计 1000,实际也不应该出现大数。

关联与依据

Server/DarkSkillList.txt · Server/DarkSkillStudy.txt · Public/DarkExpLevel.txt

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

  • Server/Server/GameServer/Server/Main/GameTable.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Main/GameTable.h:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/Item.cpp:实际加载、解析、字段使用或示例关联依据
  • Server/Server/GameServer/Server/Item/ItemRuler.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/Ini.cpp:实际加载、解析、字段使用或示例关联依据
  • Common/ServerBase/Ini.h:实际加载、解析、字段使用或示例关联依据
  • resources/Server/Config/DarkConfigTable.ini:实际加载、解析、字段使用或示例关联依据

原始 InitDarkQualityDiffTable 与 INI 读取器隔离测试。暗器品质抽取未在游戏中执行。