npc_vendor表是AzerothCore中控制NPC商人销售物品的核心表格。它定义了哪些NPC可以销售哪些物品,以及这些物品的价格、库存数量、补货时间等商业属性。这个表格是游戏经济系统的重要组成部分。
字段名 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
entry | MEDIUMINT UNSIGNED | 0 | NPC的模板ID,对应creature_template.entry |
slot | SMALLINT | 0 | 物品在商人界面中的位置槽位 |
item | MEDIUMINT | 0 | 销售的物品ID,对应item_template.entry |
maxcount | TINYINT UNSIGNED | 0 | 物品的最大库存数量,0表示无限库存 |
incrtime | INT UNSIGNED | 0 | 库存补货时间间隔(秒),0表示不补货 |
ExtendedCost | MEDIUMINT UNSIGNED | 0 | 扩展货币成本ID,对应ItemExtendedCost.dbc |
ConditionID | MEDIUMINT UNSIGNED | 0 | 购买条件ID,对应conditions表 |
PlayerConditionID | INT UNSIGNED | 0 | 玩家条件ID,用于更复杂的条件判断 |
IgnoreFiltering | TINYINT UNSIGNED | 0 | 是否忽略过滤条件,1=忽略,0=不忽略 |
VerifiedBuild | SMALLINT | 1 | 验证版本号 |
指定哪个NPC模板可以销售物品。这个值必须对应creature_template表中存在的entry值。
常见值:
控制物品在商人购买界面中的显示顺序。数值越小,显示位置越靠前。
使用建议:
指定商人销售的具体物品。必须对应item_template表中存在的entry值。
限制商人同时拥有的物品数量。当库存售完后,需要等待补货时间才能再次购买。
常见设置:
当库存售完后,多长时间补充一个物品(以秒为单位)。
常见设置:
指定使用特殊货币(如荣誉点数、竞技场点数、徽章等)购买物品的成本。对应ItemExtendedCost.dbc文件中的ID。
设置购买物品需要满足的条件,如等级、任务完成状态、声望等级等。对应conditions表中的条件设置。
为暴风城武器商人添加一把基础剑:
INSERT INTO npc_vendor (entry, slot, item, maxcount, incrtime, ExtendedCost, ConditionID)
VALUES (1241, 0, 25, 0, 0, 0, 0);
添加每天只能购买1个的稀有配方:
INSERT INTO npc_vendor (entry, slot, item, maxcount, incrtime, ExtendedCost, ConditionID)
VALUES (1241, 1, 12345, 1, 86400, 0, 0);
添加需要荣誉点数购买的PVP装备:
INSERT INTO npc_vendor (entry, slot, item, maxcount, incrtime, ExtendedCost, ConditionID)
VALUES (15126, 0, 16345, 0, 0, 1, 0);
从商人那里移除特定物品:
DELETE FROM npc_vendor
WHERE entry = 1241 AND item = 25;
SELECT nv.*, it.name
FROM npc_vendor nv
LEFT JOIN item_template it ON nv.item = it.entry
WHERE nv.entry = NPC_ID
ORDER BY nv.slot;
SELECT nv.*, ct.name
FROM npc_vendor nv
LEFT JOIN creature_template ct ON nv.entry = ct.entry
WHERE nv.item = 物品ID;
不需要完全重启服务器,但需要重新加载商人数据:
.reload npc_vendor
物品价格在item_template表中设置,不在npc_vendor表中:
UPDATE item_template
SET BuyPrice = 新价格
WHERE entry = 物品ID;
可能的原因包括:
npc_vendor表经常与以下表格配合使用: