gossip_menu表是AzerothCore中控制NPC对话菜单的核心表格。它定义了NPC与玩家对话时显示的文本内容,是游戏对话系统的基础组件。每个对话菜单都有一个唯一的ID,并关联到具体的文本内容。
字段名 | 数据类型 | 默认值 | 说明 |
---|---|---|---|
MenuID | SMALLINT UNSIGNED | 0 | 对话菜单的唯一ID |
TextID | MEDIUMINT UNSIGNED | 0 | 对话文本ID,对应npc_text表 |
ConditionID | MEDIUMINT UNSIGNED | 0 | 显示条件ID,对应conditions表 |
VerifiedBuild | SMALLINT | 1 | 验证版本号 |
对话菜单的唯一标识符。这个ID在creature_template表的gossip_menu_id字段中被引用。
使用建议:
指向npc_text表中的文本内容。npc_text表包含了实际的对话文本。
常见用途:
设置显示该对话文本需要满足的条件。对应conditions表中的条件设置。
常见条件:
为NPC创建一个简单的欢迎对话:
INSERT INTO gossip_menu (MenuID, TextID, ConditionID)
VALUES (1000, 1, 0);
根据任务状态显示不同的对话内容:
-- 任务未接取时的对话
INSERT INTO gossip_menu (MenuID, TextID, ConditionID)
VALUES (1001, 100, 1);
-- 任务进行中的对话
INSERT INTO gossip_menu (MenuID, TextID, ConditionID)
VALUES (1001, 101, 2);
-- 任务完成后的对话
INSERT INTO gossip_menu (MenuID, TextID, ConditionID)
VALUES (1001, 102, 3);
移除特定的对话菜单:
DELETE FROM gossip_menu
WHERE MenuID = 1000;
SELECT gm.*, nt.text0_0
FROM gossip_menu gm
LEFT JOIN npc_text nt ON gm.TextID = nt.ID
WHERE gm.MenuID = 菜单ID;
SELECT * FROM gossip_menu
WHERE TextID = 文本ID;
不需要完全重启服务器,但需要重新加载对话数据:
.reload gossip_menu
可能的原因包括:
gossip_menu表经常与以下表格配合使用: