📖 表说明

生物掉落模板表存储了生物死亡时可能掉落的物品信息。这个表定义了物品的掉落几率、数量范围和掉落条件等属性,是魔兽世界掉落系统的核心组成部分。

数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写,确保字段定义的准确性和权威性。

官方文档: AzerothCore Wiki - loot_template

📊 表结构

字段名 数据类型 属性 默认值 描述
Entry int UNSIGNED 不为空 主键 0 生物模板ID,对应creature_template.lootid
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, GroupId)

🔑 核心字段详解

🆔 Entry - 生物模板ID

详细说明:掉落模板的唯一标识ID,通常对应creature_template表中的entry字段。 取值范围:对应creature_template.entry
  • 主键字段,标识掉落模板所属的生物
  • 通常与creature_template.entry相同
  • 也可以使用creature_template.lootid指定的特殊掉落ID
  • 用于关联生物和其掉落物品列表

示例:

  • Entry=1000 - 生物ID为1000的掉落模板
  • Entry=5000 - 生物ID为5000的掉落模板

📦 Item - 物品ID

详细说明:可能掉落的物品ID,对应item_template表中的entry字段。 取值范围:对应item_template.entry
  • 主键字段,标识掉落的物品
  • 必须对应item_template表中存在的entry
  • 当Reference不为0时,此字段应为0
  • 用于定义具体掉落的物品

示例:

  • Item=25 - 物品ID为25的物品
  • Item=19019 - 雷霆之怒,逐风者的祝福之剑

🔗 Reference - 引用ID

详细说明:引用其他掉落模板的ID,用于复用掉落定义。 取值范围:对应reference_loot_template.entry
  • 如果不为0,则引用reference_loot_template中的定义
  • Item和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 1000'

💡 实际案例

生物 生物ID 1000 - 普通生物掉落

普通生物的简单掉落配置示例

-- 生物ID 1000的掉落模板 -- 独立掉落:金币(Item=0表示金币) DELETE FROM creature_loot_template WHERE Entry = 1000; INSERT INTO creature_loot_template VALUES (1000, 0, 0, 100, 0, 1, 0, 1, 5, '金币掉落'), (1000, 25, 0, 50, 0, 1, 0, 1, 1, '普通物品'), (1000, 100, 0, 10, 0, 1, 0, 1, 2, '稀有物品');

效果: 生物1000死亡时必定掉落1-5金币,50%几率掉落物品25,10%几率掉落1-2个物品100。

生物 生物ID 5000 - 分组掉落示例

使用GroupId实现分组掉落,组中只掉落一个物品

-- 生物ID 5000的分组掉落模板 -- 组1:三选一掉落,总几率100% DELETE FROM creature_loot_template WHERE Entry = 5000; INSERT INTO creature_loot_template VALUES (5000, 200, 0, 40, 0, 1, 1, 1, 1, '组1-物品A'), (5000, 201, 0, 30, 0, 1, 1, 1, 1, '组1-物品B'), (5000, 202, 0, 30, 0, 1, 1, 1, 1, '组1-物品C'), -- 组2:二选一掉落,总几率80% (5000, 300, 0, 50, 0, 1, 2, 1, 1, '组2-物品D'), (5000, 301, 0, 30, 0, 1, 2, 1, 1, '组2-物品E');

效果: 组1必定掉落一个物品(40%几率物品200,30%几率物品201,30%几率物品202)。组2有80%几率掉落一个物品(50%几率物品300,30%几率物品301),20%几率空掉落。

生物 生物ID 10000 - 引用掉落模板

使用Reference引用其他掉落模板

-- 生物ID 10000使用引用掉落模板 -- 引用ID 10000的reference_loot_template DELETE FROM creature_loot_template WHERE Entry = 10000; INSERT INTO creature_loot_template VALUES (10000, 0, 10000, 100, 0, 1, 0, 1, 1, '引用通用掉落模板');

效果: 生物10000死亡时会使用reference_loot_template中Entry=10000的所有掉落定义。

生物 生物ID 20000 - 任务物品掉落

需要任务才能掉落的物品配置

-- 生物ID 20000的任务物品掉落 -- 只有接了任务的玩家才能获得物品500 DELETE FROM creature_loot_template WHERE Entry = 20000; INSERT INTO creature_loot_template VALUES (20000, 500, 0, 100, 1, 1, 0, 1, 1, '任务物品-需要任务ID 1000');

效果: 只有接了任务且quest_template.RequiredItemId包含物品500的玩家才能获得此掉落。

⚡ 快速参考

掉落模板类型

表名 Entry含义 用途
creature_loot_template creature_template.lootid 生物死亡掉落
disenchant_loot_template item_template.DisenchantID 分解物品获得材料
fishing_loot_template 区域ID 钓鱼获得物品
gameobject_loot_template gameobject_template.data1 游戏对象(宝箱等)掉落
item_loot_template item_template.entry 物品包含的其他物品
mail_loot_template 邮件模板ID 邮件附件物品
milling_loot_template item_template.entry 研磨获得物品(铭文)
pickpocketing_loot_template creature_template.pickpocketloot 偷窃获得物品
prospecting_loot_template item_template.entry 勘探获得宝石(选矿)
reference_loot_template *_loot_template.reference 可复用的掉落模板
skinning_loot_template creature_template.skinloot 剥皮获得材料
spell_loot_template SpellID 法术触发的掉落

重要规则

表关系

🔗 相关表格

❓ 常见问题

Q1: 如何创建简单的掉落配置?
使用INSERT语句添加记录,指定Entry、Item、Chance等字段。例如:INSERT INTO creature_loot_template VALUES (1000, 25, 0, 50, 0, 1, 0, 1, 1, '普通物品');
Q2: 如何实现分组掉落(只掉落其中一个)?
使用相同的GroupId(大于0)将多个物品分组,确保Chance总和不超过100。例如:GroupId=1的三个物品,Chance分别为40、30、30,则必定掉落其中一个。
Q3: 如何使用引用掉落模板?
将Reference字段设置为reference_loot_template中的Entry值,Item字段设置为0。例如:Reference=10000表示使用ID为10000的引用模板。
Q4: Chance=0有什么特殊含义?
Chance=0有两种情况:1)GroupId=0时表示物品不会掉落;2)GroupId>0时表示与其他Chance=0的物品均分掉落几率。
Q5: 为什么掉落窗口最多只能显示16个物品?
这是客户端的限制,掉落窗口最多显示16个物品(包括金币)。因此不建议使用超过16个GroupId,否则玩家无法看到所有掉落物品。