工程参考/配置文件/Server/MonsterDropBoxs.txt
MonsterDropBoxs.txt 把怪物模板编号对应到最多 20 个掉落包。掉落率用本表怪物价值除以掉落包价值,再乘 ConfigInfo 的 DropParam。它不是经验表,也不是 Lua 抽奖表 DropRateOfItemTable。
文件位置与生效
| 项目 | 说明 |
|---|---|
| 运行文件 | ./Config/MonsterDropBoxs.txt,相对于 Server 工作目录。
|
| 读取程序 | Server 在 ItemTable::Init 加载;击杀掉落按怪物 DataID 查询 |
| 生效方法 | 停服后备份并修改实际 Server/Config 副本,再重启 Server。当前检索范围未发现独立重载。客户端不加载本表。 |
| 样本格式 | GB18030-compatible,CRLF。保留原编码;源码读取器不会自动把中文转为 UTF-8。
|
样本 3984 行、23 列。第一列怪物模板号从 523 到 42099,唯一且递增,查询用二分,不能排序错乱。查询键是怪物 DataID,不是场景对象 ID 或 GUID。
| 位置 | 怎样用 |
|---|---|
| 第 1 列 | 怪物模板编号,与怪物表 DataID 相同。 |
| 第 2 列 | 怪物价值,参与 价值比。两边都须为正,否则该包掉率为 0。 |
| 第 3 列 | 分配类型:0 普通,1 BOSS。影响拾取分配,不决定出不出物品。 |
| 第 4..23 列 | 掉落包编号,对应 DropBoxContent 第一列。-1 结束后续槽。 |
当前击杀入口把等级差衰减表的返回值丢弃,控制系数固定 1.0。等级差列传入掉落函数后也未使用。
文件格式
首行是类型行:INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT;第二行是列名行,程序跳过其内容;从第三行开始读取数据。各列用真实 Tab 分隔,保留首列、空列及行尾,不用空格代替。数据行行首 # 表示注释,分号不是此表的注释规则。首列为空的行被跳过;不足的尾列补为空值,多余列不参与本页字段读取。空整数和非数字经 atoi 可能成为 0,空字符串仍为空,不把解析成功当作业务合法。第一列须唯一,重复会触发读取器错误。
字段详解
列号从 1 开始,源码列下标从 0 开始。
| 字段与类型 | 含义与修改要点 | 缺项或特殊值 |
|---|---|---|
第 1 列INT:ID(怪物编号) |
怪物模板编号。加载按行保存,查询按本列二分。样本连续递增但不从 1 起号。 | 空首列跳行。重复编号使二分结果不确定。找不到模板则本次不按本表掉落。 |
第 2 列INT:Mvalue(怪物价值) |
与掉落包价值相比得到基础掉率。例如 1860 的 4 对价值 1000 的包为 4/1000,再乘 DropParam。 | 0 或负使该怪物对各正价值包的比值为 0。不是经验、金币或物品编号。 |
第 3 列INT:怪物掉落类型 |
0=BDR_COMMON,1=BDR_BOSS,写入掉落容器并供分配规则查询。 | 其他值会原样保存。0xFFFF 为未知分配。不能靠改本列关闭掉落。 |
第 4 列INT:DID1(掉落包编号) |
第 1 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 5 列INT:DID2 |
第 2 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 6 列INT:DID3 |
第 3 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 7 列INT:DID4 |
第 4 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 8 列INT:DID5 |
第 5 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 9 列INT:DID6 |
第 6 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 10 列INT:DID7 |
第 7 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 11 列INT:DID8 |
第 8 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 12 列INT:DID9 |
第 9 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 13 列INT:DID10 |
第 10 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 14 列INT:DID11 |
第 11 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 15 列INT:DID12 |
第 12 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 16 列INT:DID13 |
第 13 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 17 列INT:DID14 |
第 14 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 18 列INT:DID15 |
第 15 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 19 列INT:DID16 |
第 16 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 20 列INT:DID17 |
第 17 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 21 列INT:DID18 |
第 18 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 22 列INT:DID19 |
第 19 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
第 23 列INT:DID20 |
第 20 个掉落包编号。按顺序处理,遇到 -1 停止后面的包。须在 DropBoxContent 中存在,否则记录错误日志并跳过该包。 | -1 截断。0 会去查编号 0 的掉落包(样本确有 ID 0)。中间插 -1 会丢掉后面的包。 |
常用修改实例
示例为局部教学片段,先备份原运行文件,再修改对应行并保留其余配置。教学值不是程序默认值。 以下代码块保留真实 Tab;本地示例文件保留原样本编码、中文表头与 CRLF。网页文字使用浏览器编码显示,不表示运行文件应改存 UTF-8。
把宝藏小怪 1860 的掉落价值从 4 改为 8
修改前:
INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT ID(怪物编号) Mvalue(怪物价值) 怪物掉落类型 DID1(掉落包编号) DID2 DID3 DID4 DID5 DID6 DID7 DID8 DID9 DID10 DID11 DID12 DID13 DID14 DID15 DID16 DID17 DID18 DID19 DID20 1860 4 0 681 661 621 36 25 601 611 410 510 56 68 -1 -1 -1 -1 -1 -1 -1 -1 -1
修改后:
INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT INT ID(怪物编号) Mvalue(怪物价值) 怪物掉落类型 DID1(掉落包编号) DID2 DID3 DID4 DID5 DID6 DID7 DID8 DID9 DID10 DID11 DID12 DID13 DID14 DID15 DID16 DID17 DID18 DID19 DID20 1860 8 0 681 661 621 36 25 601 611 410 510 56 68 -1 -1 -1 -1 -1 -1 -1 -1 -1
按第一列定位模板 1860。样本第 2 列为 4,第 3 列为 0,前几个掉落包为 681、661、621。只把第 2 列改为 8,保留 23 列和其余 3983 行。本片段含表头与该行,不能覆盖整表。
包 681 的价值为 1000。在 DropParam=1、控制系数 1 时,该包基础掉率由 4/1000 变为 8/1000。实际是否掉出还要随机,且衰减表当前未参与。隔离查询读回价值 8。游戏内爆率需要实测。
验证与排查
启动有 InitMonsterDropBoxTable() Ok!。仍为 3984 行、编号递增,1860 的价值为 8、包号不变。用模板 1860 的测试怪核对掉落包仍能查到。恢复备份后重启。
掉率
单包基础掉率 = 怪物价值/包价值 × DropParam × 控制系数。当前击杀入口控制系数为 1.0。比值大于 1 时循环多次,每次随机决定是否从该包抽一件。
绑定
场景怪物初始化后击杀走 DataID。关掉某次掉落盒与改本表不是同一件事。
关联与依据
Server/DropBoxContent.txt · Server/DropAttenuation.txt · Server/ConfigInfo.ini
其他配置及整理状态 · 服务端外网设置 · Lua 接口索引
Server/Server/GameServer/Server/Item/ItemTable.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Item/ItemTable.h:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Item/ItemTypes.h:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Item/ItemRuler.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Obj/ItemBoxManager.cpp:实际加载、解析、字段使用或示例关联依据Server/Server/GameServer/Server/Main/Server.cpp:实际加载、解析、字段使用或示例关联依据Common/GameDefine.h:实际加载、解析、字段使用或示例关联依据Common/GameDefine_Item.h:实际加载、解析、字段使用或示例关联依据Common/ServerBase/FileDef.h:实际加载、解析、字段使用或示例关联依据Common/DataBase/TLBB_DBC.cpp:实际加载、解析、字段使用或示例关联依据Common/DataBase/TLBB_DBC.h:实际加载、解析、字段使用或示例关联依据resources/Server/Config/MonsterDropBoxs.txt:实际加载、解析、字段使用或示例关联依据resources/Server/Config/DropBoxContent.txt:实际加载、解析、字段使用或示例关联依据
原始 DBC、加载与按模板二分查询隔离测试。掉落随机、拾取分配和场景击杀未执行。