📊 表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| Entry | INT UNSIGNED | 0 | 掉落模板ID (主键1) |
| Item | INT UNSIGNED | 0 | 物品ID (主键2) |
| Reference | INT | 0 | 引用模板ID |
| Chance | FLOAT | 100 | 掉落几率(%) |
| QuestRequired | TINYINT | 0 | 需要任务 |
| LootMode | SMALLINT UNSIGNED | 1 | 掉落模式 |
| GroupId | TINYINT UNSIGNED | 0 | 组ID |
| MinCount | TINYINT UNSIGNED | 1 | 最小数量 |
| MaxCount | TINYINT UNSIGNED | 1 | 最大数量 |
| Comment | VARCHAR(255) | NULL | 注释 |
🔑 核心字段详解
🆔 Entry - 掉落模板ID
详细说明:掉落模板的唯一标识符,对应gameobject_template的数据字段或自定义ID。
取值范围:自定义或对应gameobject_template
- 复合主键的一部分
- 一个模板可包含多个掉落物品
- 通常对应游戏对象的模板ID
- 可以创建自定义掉落模板
📦 Item - 物品ID
详细说明:掉落的物品ID,对应item_template.entry。
取值范围:对应item_template.entry
- 复合主键的一部分
- 指定掉落的具体物品
- 必须是已存在的物品
- Reference不为0时,Item字段无意义
🔗 Reference - 引用模板ID
详细说明:引用其他掉落模板,实现掉落模板的复用。
取值范围:对应reference_loot_template.Entry
- 0 - 不引用,使用Item字段
- 正数 - 引用reference_loot_template
- 引用时Item字段无效
- 用于共享掉落列表
🎲 Chance - 掉落几率
详细说明:物品掉落的百分比几率。
取值范围:0 - 100
- 100 - 必定掉落
- 50 - 50%几率掉落
- 10 - 10%几率掉落
- GroupId>0时,Chance为组内相对几率
- 实际掉落由随机数决定
📋 QuestRequired - 需要任务
详细说明:是否需要特定任务才能掉落该物品。
取值范围:0 - 1
- 0 - 不需要任务,正常掉落
- 1 - 需要相关任务才掉落
- 用于任务物品掉落
- 玩家必须有任务才会看到物品
🎯 LootMode - 掉落模式
详细说明:掉落模式标志,控制掉落的条件。
取值范围:位标志组合
| 模式值 | 模式名 | 说明 |
|---|---|---|
| 1 | LOOT_MODE_DEFAULT | 默认模式 |
| 2 | LOOT_MODE_HARD_MODE_1 | 困难模式1 |
| 4 | LOOT_MODE_HARD_MODE_2 | 困难模式2 |
| 其他 | 自定义 | 其他模式 |
📊 GroupId - 组ID
详细说明:掉落组ID,同一组中只会掉落一个物品。
取值范围:0 - 255
- 0 - 不分组,独立掉落
- 正数 - 分组掉落
- 同一组中只掉落一个物品
- 组内Chance为相对几率
- 用于随机选择物品
📈 MinCount/MaxCount - 数量范围
详细说明:掉落物品的数量范围。
取值范围:1 - 255
- MinCount - 最小掉落数量
- MaxCount - 最大掉落数量
- 实际数量在范围内随机
- MinCount=MaxCount时固定数量
- 用于可堆叠物品
💡 实际案例
普通掉落 配置普通物品掉落
Entry=12345, Item=1000, Chance=50, MinCount=1, MaxCount=3
INSERT INTO gameobject_loot_template VALUES(
12345, 1000, 0, 50, 0, 1, 0, 1, 3, '普通材料'
);必掉物品 配置必定掉落物品
Entry=12346, Item=1001, Chance=100, MinCount=1, MaxCount=1
INSERT INTO gameobject_loot_template VALUES(
12346, 1001, 0, 100, 0, 1, 0, 1, 1, '必定掉落'
);分组掉落 配置分组随机掉落
Entry=12347, GroupId=1, 三个物品随机掉落一个
-- 第一个物品,50%相对几率
INSERT INTO gameobject_loot_template VALUES(12347, 1002, 0, 50, 0, 1, 1, 1, 1, '物品A');
-- 第二个物品,30%相对几率
INSERT INTO gameobject_loot_template VALUES(12347, 1003, 0, 30, 0, 1, 1, 1, 1, '物品B');
-- 第三个物品,20%相对几率
INSERT INTO gameobject_loot_template VALUES(12347, 1004, 0, 20, 0, 1, 1, 1, 1, '物品C');任务物品 配置任务相关掉落
Entry=12348, Item=1005, QuestRequired=1
INSERT INTO gameobject_loot_template VALUES(
12348, 1005, 0, 100, 1, 1, 0, 1, 1, '任务物品'
);引用模板 配置引用掉落模板
Entry=12349, Reference=10000(引用reference_loot_template)
INSERT INTO gameobject_loot_template VALUES(
12349, 0, 10000, 100, 0, 1, 0, 1, 1, '引用模板'
);查询 查询游戏对象的掉落列表
查询Entry=12345的所有掉落物品
SELECT glt.Entry, glt.Item, glt.Chance, glt.MinCount, glt.MaxCount, it.name
FROM gameobject_loot_template glt
JOIN item_template it ON glt.Item = it.entry
WHERE glt.Entry = 12345
ORDER BY glt.GroupId, glt.Chance DESC;⚡ 快速参考
掉落几率
| 100 | 必定掉落 |
| 50 | 50%几率 |
| 10 | 10%几率 |
| 分组 | 相对几率 |
掉落模式
| 1 | 默认模式 |
| 2 | 困难模式1 |
| 4 | 困难模式2 |
| 组合 | 位标志 |
分组规则
| GroupId=0 | 独立掉落 |
| GroupId>0 | 组内随机 |
| 组内Chance | 相对几率 |
| 每组一个 | 随机选择 |
关联表
| gameobject_template | 游戏对象模板 |
| item_template | 物品模板 |
| reference_loot_template | 引用模板 |
| creature_loot_template | 生物掉落 |
🔗 相关表格
- gameobject_template - 游戏对象模板表
- gameobject_questitem - 游戏对象任务物品表
- item_template - 物品模板表
- reference_loot_template - 引用掉落模板表
- creature_loot_template - 生物掉落模板表
❓ 常见问题
Q1: 如何配置必定掉落?
设置Chance=100,GroupId=0,表示该物品必定掉落,不受分组影响。
Q2: 分组掉落如何工作?
GroupId>0的物品属于同一组,组内Chance为相对几率,只会掉落组内一个物品。
Q3: Reference字段的作用?
Reference不为0时,引用reference_loot_template中的掉落列表,实现掉落模板的复用。
Q4: QuestRequired=1会怎样?
玩家必须有相关任务才能看到并拾取该物品,用于任务物品掉落。