📖 表说明
引用掉落模板表定义了可重复引用的掉落模板组合,允许多个掉落源共享相同的掉落配置,提高配置的复用性和维护效率。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写,确保字段定义的准确性和权威性。
📊 表结构
| 字段名 | 数据类型 | 属性 | 键 | 默认值 | 描述 |
|---|---|---|---|---|---|
| Entry | int UNSIGNED | 不为空 | 主键 | 0 | 引用模板ID,被其他*_loot_template.reference引用 |
| Item | int UNSIGNED | 不为空 | 主键 | 0 | 物品ID,对应item_template.entry |
| Reference | int | 不为空 | 0 | 引用ID,如果不为0则引用其他reference_loot_template | |
| Chance | float | 不为空 | 100 | 掉落几率(百分比) | |
| QuestRequired | tinyint | 不为空 | 0 | 是否需要任务(0=否,1=是) | |
| LootMode | smallint UNSIGNED | 不为空 | 1 | 掉落模式(位掩码) | |
| GroupId | tinyint UNSIGNED | 不为空 | 0 | 组ID,同一组中只会掉落一个物品 | |
| MinCount | tinyint UNSIGNED | 不为空 | 1 | 最小掉落数量 | |
| MaxCount | tinyint UNSIGNED | 不为空 | 1 | 最大掉落数量(引用时作为重复因子) | |
| Comment | varchar(255) | 可为空 | NULL | 注释说明 |
主键: (Entry, Item)
注意: reference_loot_template的GroupId不是主键,与creature_loot_template不同
🔑 核心字段详解
🆔 Entry - 引用模板ID
详细说明:引用掉落模板的唯一标识ID,被其他掉落模板表通过Reference字段引用。
取值范围:正整数
- 主键字段,标识引用掉落模板
- 被*_loot_template表的Reference字段引用
- 可以定义通用的掉落组合,供多个掉落源使用
- 重要:不允许自引用(Entry不能等于Reference),会导致服务器崩溃
示例:
- Entry=10000 - 引用模板ID为10000
- Entry=20000 - 引用模板ID为20000
📦 Item - 物品ID
详细说明:可能掉落的物品ID,对应item_template表中的entry字段。
取值范围:对应item_template.entry
- 主键字段,标识掉落的物品
- 必须对应item_template表中存在的entry
- 当Reference不为0时,此字段应为0
- 用于定义具体掉落的物品
示例:
- Item=25 - 物品ID为25的物品
- Item=19019 - 雷霆之怒,逐风者的祝福之剑
🔗 Reference - 引用ID
详细说明:引用其他reference_loot_template的ID,实现嵌套引用。
取值范围:对应reference_loot_template.entry
- 如果不为0,则引用其他reference_loot_template中的定义
- Item和Reference不能同时非零
- 重要:不允许自引用(Entry不能等于Reference),会导致服务器崩溃
- 用于创建嵌套的引用掉落模板
示例:
- Reference=10000 - 引用ID为10000的reference_loot_template
- Reference=0 - 不使用引用,直接掉落Item指定的物品
🎲 Chance - 掉落几率
详细说明:物品掉落的百分比几率。
取值范围:0.0 - 100.0(浮点数)
- 同一GroupId的所有条目的Chance总和不能超过100
- 如果Chance为0,则同一GroupId且chance=0的所有条目几率相等
- Chance=100表示必定掉落(如果GroupId=0)
- Chance=0表示物品不会掉落(仅允许分组条目使用)
示例:
- Chance=50.0 - 50%的掉落几率
- Chance=100 - 100%必定掉落
- Chance=0.5 - 0.5%的极低掉落几率
📋 QuestRequired - 任务需求
详细说明:物品是否需要特定任务才能掉落。
取值范围:0 或 1
| 值 | 说明 |
|---|---|
| 0 | 掉落总是可用,不需要任务 |
| 1 | 只有当玩家有任务且物品ID在quest_template.RequiredItemId1-6中时才能掉落 |
示例:
- QuestRequired=0 - 任何玩家都可以获得此掉落
- QuestRequired=1 - 只有接了相关任务的玩家才能获得
⚙️ LootMode - 掉落模式
详细说明:掉落模式的位掩码,用于分离条件掉落。
取值范围:位掩码值(通常为1)
- 用于分离条件掉落,如奥杜尔的困难模式掉落
- 核心可以随时更改活动的掉落模式
- 大多数情况下此字段为1
- 可以组合多个模式(如LootMode=3表示模式1和模式2)
示例:
- LootMode=1 - 默认模式,正常掉落
- LootMode=2 - 困难模式掉落
- LootMode=3 - 同时支持模式1和模式2
👥 GroupId - 组ID
详细说明:用于在同一引用模板中分组物品。
取值范围:0 - 255
- GroupId=0表示独立掉落,不参与分组
- GroupId>0表示参与分组,组中只有一个物品可以掉落
- 如果组的Chance总和为100,则必定掉落一个物品
- 如果组的Chance总和小于100,则可能空掉落
- 引用掉落可以是组的一部分
- 重要:客户端只能显示16个物品在掉落窗口中(包括金币),因此不建议使用超过16个组
示例:
- GroupId=0 - 独立掉落,与其他物品无关
- GroupId=1 - 组1中的物品,只会掉落其中一个
- GroupId=2 - 组2中的物品,只会掉落其中一个
📊 MinCount - 最小数量
详细说明:单次掉落中物品的最小数量。
取值范围:1 - 255(不能为0)
- 定义掉落物品的最小数量
- 不能为0,零值没有意义且不应使用
- 通常与MaxCount相同,表示固定数量
- 可以小于MaxCount,表示数量范围
示例:
- MinCount=1 - 至少掉落1个
- MinCount=5 - 至少掉落5个
📈 MaxCount - 最大数量
详细说明:单次掉落中物品的最大数量,或引用的重复因子。
取值范围:1 - 255
- 对于非引用条目:单次掉落中物品的最大数量
- 对于引用条目:MaxCount用作引用的重复因子,引用将不只处理一次,而是恰好MaxCount次
- 通常与MinCount相同,表示固定数量
- 可以大于MinCount,表示数量范围
示例:
- MaxCount=1 - 最多掉落1个
- MaxCount=5 - 最多掉落5个
- MaxCount=3(引用)- 引用模板将被处理3次
💬 Comment - 注释说明
详细说明:用于记录掉落项的说明和备注。
取值范围:文本字符串(最多255字符)
- 可为空(NULL)
- 用于记录掉落项的用途、来源等信息
- 帮助管理员理解和维护掉落配置
示例:
- Comment='通用金币掉落模板'
- Comment='史诗装备掉落模板'
💡 实际案例
引用 引用模板ID 10000 - 通用金币掉落
定义一个通用的金币掉落模板,可被多个生物引用
-- 引用模板ID 10000:通用金币掉落
DELETE FROM reference_loot_template WHERE Entry = 10000;
INSERT INTO reference_loot_template VALUES
(10000, 0, 0, 100, 0, 1, 0, 1, 5, '通用金币掉落');
使用方式: 在creature_loot_template中添加:(1000, 0, 10000, 100, 0, 1, 0, 1, 1, '引用金币模板')
引用 引用模板ID 20000 - 分组掉落模板
定义一个分组掉落模板,组中只掉落一个物品
-- 引用模板ID 20000:分组掉落模板
-- 组1:三选一掉落,总几率100%
DELETE FROM reference_loot_template WHERE Entry = 20000;
INSERT INTO reference_loot_template VALUES
(20000, 200, 0, 40, 0, 1, 1, 1, 1, '组1-物品A'),
(20000, 201, 0, 30, 0, 1, 1, 1, 1, '组1-物品B'),
(20000, 202, 0, 30, 0, 1, 1, 1, 1, '组1-物品C');
使用方式: 在creature_loot_template中添加:(5000, 0, 20000, 100, 0, 1, 0, 1, 1, '引用分组模板')
引用 引用模板ID 30000 - 嵌套引用示例
定义一个嵌套引用模板,引用其他reference_loot_template
-- 引用模板ID 30000:嵌套引用
-- 引用ID 10000和20000,MaxCount=2表示引用模板将被处理2次
DELETE FROM reference_loot_template WHERE Entry = 30000;
INSERT INTO reference_loot_template VALUES
(30000, 0, 10000, 100, 0, 1, 0, 1, 2, '引用金币模板2次'),
(30000, 0, 20000, 50, 0, 1, 0, 1, 1, '引用分组模板');
效果: 引用模板10000将被处理2次(可能掉落2-10金币),引用模板20000有50%几率被处理1次。
⚡ 快速参考
引用掉落模板用途
| 用途 | 说明 | 示例 |
|---|---|---|
| 复用掉落配置 | 多个掉落源共享相同的掉落配置 | 多个生物使用相同的金币掉落模板 |
| 简化维护 | 修改引用模板即可更新所有引用源的掉落 | 修改金币掉落模板,所有生物的金币掉落自动更新 |
| 嵌套引用 | 引用模板可以引用其他引用模板 | 引用模板A引用引用模板B,实现复杂掉落组合 |
| 重复处理 | 使用MaxCount控制引用的处理次数 | MaxCount=3表示引用模板将被处理3次 |
重要规则
- 不允许自引用(Entry不能等于Reference),会导致服务器崩溃
- Item和Reference不能同时非零
- 同一GroupId的Chance总和不能超过100
- MinCount不能为0
- 客户端最多显示16个物品(包括金币)
- 主键为(Entry, Item),GroupId不是主键
表关系
- 被引用表: 所有*_loot_template表
- 关联字段: *_loot_template.Reference → Entry
- 物品表: item_template - 物品模板表
- 关联字段: Item → item_template.entry
- 可嵌套引用: Reference → reference_loot_template.entry
🔗 相关表格
- creature_loot_template - 生物掉落模板表
- gameobject_loot_template - 游戏对象掉落模板表
- item_loot_template - 物品掉落模板表
- disenchant_loot_template - 分解掉落模板表
- item_template - 物品模板表
❓ 常见问题
Q1: 如何创建引用掉落模板?
使用INSERT语句添加记录,指定Entry、Item、Chance等字段。例如:INSERT INTO reference_loot_template VALUES (10000, 0, 0, 100, 0, 1, 0, 1, 5, '通用金币掉落');
Q2: 如何在其他掉落模板中使用引用?
在creature_loot_template或其他掉落模板表中,将Reference字段设置为引用模板的Entry值,Item字段设置为0。例如:(1000, 0, 10000, 100, 0, 1, 0, 1, 1, '引用金币模板');
Q3: 引用模板可以嵌套引用吗?
可以。reference_loot_template可以引用其他reference_loot_template,实现复杂的嵌套掉落组合。但要注意不允许自引用(Entry不能等于Reference)。
Q4: MaxCount字段在引用中有特殊含义吗?
是的。对于引用条目,MaxCount用作引用的重复因子。例如MaxCount=3表示引用模板将被处理3次,可能掉落更多物品。
Q5: 为什么reference_loot_template的GroupId不是主键?
因为reference_loot_template允许同一Entry下有多个GroupId相同的条目,用于实现分组掉落。而creature_loot_template需要GroupId作为主键来区分不同的掉落组。