工程参考/配置文件/Server/DarkConfigTable.ini
DarkConfigTable.ini 的 [DarkQuality] 节给出暗器品质五个档位的权重,共三组:创建暗器时用默认组,重置品质时按参数在高档和低档之间二选一。
文件位置与生效
| 项目 | 说明 |
|---|---|
| 运行文件 | ./Config/DarkConfigTable.ini,相对于 Server 工作目录。路径写死,没有 FileDef 宏。
|
| 读取程序 | Server 在 TableInit::InitDarkQualityDiffTable 加载;创建暗器与重置品质时抽取 |
| 生效方法 | 停服后备份并修改实际 Server/Config 副本,再重启 Server。当前检索范围未发现单独重载入口,也不在 ReloadCombatTables 的清单里。客户端不加载本文件。 |
| 样本格式 | ASCII,CRLF。保留原编码;源码读取器不会自动把中文转为 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 读取器隔离测试。暗器品质抽取未在游戏中执行。