表概述

player_loot_template属于Loot System,控制玩家死亡时掉落物品的规则。当玩家在PVP中死亡,系统根据此表配置掉落对应的物品或金币。

表结构与creature_loot_template完全一致,主键为 (Entry, Item),其中Entry对应角色GUID。Chance值100表示100%掉落。

表结构

字段名数据类型默认值说明
EntryINT UNSIGNED0角色GUID(主键)
ItemINT UNSIGNED0掉落物品ID或引用ID(主键)
ReferenceINT0引用其他掉落模板的Entry
ChanceFLOAT100掉落概率百分比
QuestRequiredTINYINT01=任务物品,只有有任务的玩家可见
LootModeSMALLINT UNSIGNED1掉落模式掩码
GroupIdTINYINT UNSIGNED0掉落组ID(同组只掉一件)
MinCountTINYINT UNSIGNED1最小掉落数量
MaxCountTINYINT UNSIGNED1最大掉落数量
CommentTEXTNULL注释说明

重要字段详解

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的项不受组限制,单独计算。