player_loot_template 表
player_loot_template表定义玩家死亡掉落物品,结构与creature_loot_template完全一致,Entry字段为玩家角色GUID。
表概述
player_loot_template属于Loot System,控制玩家死亡时掉落物品的规则。当玩家在PVP中死亡,系统根据此表配置掉落对应的物品或金币。
表结构与creature_loot_template完全一致,主键为 (Entry, Item),其中Entry对应角色GUID。Chance值100表示100%掉落。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| Entry | INT UNSIGNED | 0 | 角色GUID(主键) |
| Item | INT UNSIGNED | 0 | 掉落物品ID或引用ID(主键) |
| Reference | INT | 0 | 引用其他掉落模板的Entry |
| Chance | FLOAT | 100 | 掉落概率百分比 |
| QuestRequired | TINYINT | 0 | 1=任务物品,只有有任务的玩家可见 |
| LootMode | SMALLINT UNSIGNED | 1 | 掉落模式掩码 |
| GroupId | TINYINT UNSIGNED | 0 | 掉落组ID(同组只掉一件) |
| MinCount | TINYINT UNSIGNED | 1 | 最小掉落数量 |
| MaxCount | TINYINT UNSIGNED | 1 | 最大掉落数量 |
| Comment | TEXT | NULL | 注释说明 |
重要字段详解
Entry (角色GUID)
对应characters库中角色的GUID,不是creature_template的Entry。每个Entry代表一个特定的玩家角色。
当玩家死亡时,服务器根据角色GUID查找对应的掉落配置。如果未找到,则不产生任何掉落。
Chance (掉落概率)
浮点数,取值范围0-100。表示物品掉落的百分比概率:
- 100 - 必定掉落
- 50 - 50%掉落
- 0 - 不掉落
当需要100%掉落但数量随机时,Chance设为100,通过MinCount/MaxCount控制数量。
GroupId (掉落组)
同一GroupId的多个掉落项中只随机掉落一件。概率由Chance值决定分配权重。GroupId=0表示独立掉落,不受组限制。
常用于设置"必掉1件装备,从多个候选装备中随机"的场景。
实战案例
设置玩家GUID=100的角色死亡必定掉落金币和一件装备
-- 100%掉落1-5金币(金币ID=1),Chance=100,数量随机1-5
INSERT INTO player_loot_template (Entry, Item, Chance, MinCount, MaxCount, Comment)
VALUES (100, 1, 100, 1, 5, '玩家死亡必掉金币');
-- 掉落组1(3件装备随机1件),组内Chance加总为100
INSERT INTO player_loot_template (Entry, Item, Chance, GroupId, Comment)
VALUES (100, 30123, 30, 1, '装备A 30%'),
(100, 40156, 40, 1, '装备B 40%'),
(100, 50189, 30, 1, '装备C 30%');
引用其他掉落模板(Reference loot)
-- Reference>0时,Item指向引用掉落表的Entry,Chance为引用权重
INSERT INTO player_loot_template (Entry, Item, Reference, Chance, GroupId, Comment)
VALUES (200, 5000, 1, 50, 0, '50%概率引用Entry=5000的掉落模板');
设置任务物品仅对持有特定任务的玩家掉落
-- QuestRequired=1,只有接了任务25000的玩家死亡时能看到此物品
INSERT INTO player_loot_template (Entry, Item, Chance, QuestRequired, Comment)
VALUES (300, 60001, 100, 1, '任务物品-仅限拥有任务的玩家');
常见问题
Q: Entry用角色GUID还是account ID?
A: 使用角色GUID(characters库character表的guid),不是account ID。在线查看角色GUID可用 .pinfo 玩家名 命令。
Q: 如何让多个掉落组都生效?
A: 不同GroupId的掉落组独立计算。例如GroupId=1和GroupId=2的两个组,各会独立掉落一件物品(如果GroupId内Chance满足)。GroupId=0的项不受组限制,单独计算。