偷窃掉落模板表存储了盗贼使用偷窃技能对生物进行偷窃时可能获得的物品信息。这个表定义了物品的掉落几率、数量范围和掉落条件等属性。
pickpocketing_loot_template表的结构与其他掉落模板表(如creature_loot_template、skinning_loot_template等)完全相同。
字段名 | 类型 | 属性 | 描述 |
---|---|---|---|
Entry | mediumint(8) unsigned | 主键,不为空,默认0 | 生物模板ID,对应creature_template表中的entry字段 |
Item | mediumint(8) unsigned | 主键,不为空,默认0 | 物品ID,对应item_template表中的entry字段 |
Reference | mediumint(8) unsigned | 不为空,默认0 | 引用ID,如果不为0,则引用另一个掉落模板 |
Chance | float | 不为空,默认100 | 掉落几率(百分比) |
QuestRequired | tinyint(1) unsigned | 不为空,默认0 | 是否需要任务(0=否,1=是) |
LootMode | smallint(5) unsigned | 不为空,默认1 | 掉落模式 |
GroupId | tinyint(3) unsigned | 不为空,默认0 | 组ID,同一组中只会掉落一个物品 |
MinCount | tinyint(3) unsigned | 不为空,默认1 | 最小数量 |
MaxCount | tinyint(3) unsigned | 不为空,默认1 | 最大数量 |
Comment | varchar(255) | 不为空,默认'' | 注释 |
偷窃是盗贼职业的特殊技能,允许盗贼从某些生物身上偷取物品,而不需要杀死它们。偷窃系统的工作原理如下:
注意: 生物是否可偷窃由creature_template表中的pickpocketloot字段决定。如果pickpocketloot大于0,则该生物可以偷窃,且pickpocketloot的值作为pickpocketing_loot_template表中的Entry。
以下SQL语句将为人类守卫(ID=1)添加基础偷窃掉落:
INSERT INTO pickpocketing_loot_template (Entry, Item, Chance, MinCount, MaxCount, Comment)
VALUES
(1, 1, 60, 1, 5, '铜币'),
(1, 5, 30, 1, 3, '银币'),
(1, 43, 10, 1, 1, '破损的皮甲');
注意: 还需要确保creature_template表中对应生物的pickpocketloot字段设置为1:
UPDATE creature_template SET pickpocketloot = 1 WHERE entry = 人类守卫的ID;
以下SQL语句将为不同等级的人型生物添加不同的偷窃掉落:
-- 低级人型生物(ID=100)
INSERT INTO pickpocketing_loot_template (Entry, Item, Chance, MinCount, MaxCount, Comment)
VALUES
(100, 1, 80, 1, 10, '铜币'),
(100, 5, 20, 1, 5, '银币');
-- 中级人型生物(ID=101)
INSERT INTO pickpocketing_loot_template (Entry, Item, Chance, MinCount, MaxCount, Comment)
VALUES
(101, 5, 70, 1, 15, '银币'),
(101, 6, 30, 1, 3, '金币');
-- 高级人型生物(ID=102)
INSERT INTO pickpocketing_loot_template (Entry, Item, Chance, MinCount, MaxCount, Comment)
VALUES
(102, 5, 40, 5, 20, '银币'),
(102, 6, 50, 1, 5, '金币'),
(102, 7909, 10, 1, 1, '绿宝石');
以下SQL语句将为特定生物(ID=200)添加特殊物品偷窃掉落:
INSERT INTO pickpocketing_loot_template (Entry, Item, Chance, MinCount, MaxCount, Comment)
VALUES
(200, 5, 50, 1, 20, '银币'),
(200, 6, 30, 1, 5, '金币'),
(200, 8952, 15, 1, 1, '烟草'),
(200, 16885, 5, 1, 1, '重型锁箱');
以下SQL语句将为特定生物(ID=300)添加一个任务物品偷窃掉落,只有有相关任务的盗贼才能看到和拾取:
INSERT INTO pickpocketing_loot_template (Entry, Item, Chance, QuestRequired, MinCount, MaxCount, Comment)
VALUES (300, 7907, 100, 1, 1, 1, '军官徽章');
以下SQL语句将为特定生物(ID=400)添加引用掉落,引用ID为10003的掉落模板:
INSERT INTO pickpocketing_loot_template (Entry, Item, Reference, Chance, Comment)
VALUES (400, 10003, 10003, 5, '稀有偷窃物品组');
使用以下SQL语句查询特定生物的偷窃掉落:
SELECT ct.entry, ct.name, ct.pickpocketloot, pl.Item, it.name, pl.Chance, pl.MinCount, pl.MaxCount
FROM creature_template ct
JOIN pickpocketing_loot_template pl ON ct.pickpocketloot = pl.Entry
JOIN item_template it ON pl.Item = it.entry
WHERE ct.entry = 生物ID;
使用以下SQL语句查询特定物品在哪些生物上可以偷窃获得:
SELECT ct.entry, ct.name, pl.Chance, pl.MinCount, pl.MaxCount
FROM pickpocketing_loot_template pl
JOIN creature_template ct ON pl.Entry = ct.pickpocketloot
WHERE pl.Item = 物品ID AND ct.pickpocketloot > 0;
不需要完全重启服务器,但需要重新加载掉落模板数据:
.reload all_loot
或者只重新加载偷窃掉落模板:
.reload pickpocketing_loot_template
可能的原因包括:
偷窃所需的技能等级通常基于生物的等级,遵循以下规则:
这个规则是由游戏核心代码控制的,不能通过数据库直接修改。