quest_greeting - 任务问候表

任务问候表存储了NPC在玩家与其对话时显示的问候文本。当NPC有可用任务或玩家可以交付任务时,会显示这些问候信息,为任务交互提供更丰富的对话体验。

表结构

字段名 类型 属性 默认值 描述
ID int(10) unsigned 不为空 主键 0 NPC的entry ID
Type tinyint(3) unsigned 不为空 主键 0 对象类型(0=生物,1=游戏对象)
Greeting text 不为空 问候文本内容
Emote1 smallint(5) unsigned 不为空 0 第一个表情动作ID
Emote2 smallint(5) unsigned 不为空 0 第二个表情动作ID
EmoteDelay1 int(10) unsigned 不为空 0 第一个表情动作的延迟时间
EmoteDelay2 int(10) unsigned 不为空 0 第二个表情动作的延迟时间
VerifiedBuild int(11) 可为空 NULL 验证的客户端版本号

字段详解

ID

NPC的entry ID,对应creature_template表中的entry字段,或gameobject_template表中的entry字段。

示例值: 1234, 5678, 12345

Type

指定对象的类型,决定ID字段引用的是哪种对象。

类型值:

注意: 大多数情况下使用类型0(生物),类型1主要用于可交互的游戏对象,如任务物品、告示板等。

Greeting

NPC显示的问候文本内容。这个文本会在玩家与NPC对话时首先显示,为任务交互提供背景信息。

示例文本:

"欢迎来到暴风城,勇敢的冒险者!我这里有一些任务需要你的帮助。"

"你好,$N。我一直在等待像你这样的英雄出现。"

"时间紧迫,$N!我们需要立即行动。"

文本变量:

Emote1, Emote2

NPC在显示问候文本时播放的表情动作,最多可以设置2个表情动作。

常见表情ID:

EmoteDelay1, EmoteDelay2

对应表情动作的延迟时间,以毫秒为单位。控制表情播放的时机。

延迟时间示例:

VerifiedBuild

记录验证此问候信息的客户端版本号。

使用场景

任务发放NPC

为提供任务的NPC设置友好的问候文本,介绍任务背景。

任务交付NPC

为接收任务物品的NPC设置感谢或鼓励的问候文本。

重要剧情NPC

为关键剧情角色设置符合其身份和性格的问候文本。

功能性NPC

为商人、训练师等功能性NPC设置专业的问候文本。

创建示例

友好的任务发放者

INSERT INTO quest_greeting (ID, Type, Greeting, Emote1, Emote2, EmoteDelay1, EmoteDelay2, VerifiedBuild)
VALUES (1234, 0, '欢迎,$N!我这里有一些重要的任务需要你的帮助。', 2, 25, 0, 2000, 12340);

紧急任务的NPC

INSERT INTO quest_greeting (ID, Type, Greeting, Emote1, Emote2, EmoteDelay1, EmoteDelay2, VerifiedBuild)
VALUES (5678, 0, '快来,$N!情况紧急,我们需要立即行动!', 6, 5, 0, 1500, 12340);

军官类NPC

INSERT INTO quest_greeting (ID, Type, Greeting, Emote1, Emote2, EmoteDelay1, EmoteDelay2, VerifiedBuild)
VALUES (9999, 0, '士兵$N报到!准备接受新的任务指令。', 66, 1, 0, 2000, 12340);

游戏对象的问候

INSERT INTO quest_greeting (ID, Type, Greeting, Emote1, Emote2, EmoteDelay1, EmoteDelay2, VerifiedBuild)
VALUES (1001, 1, '这块告示板上贴着几张紧急通告...', 0, 0, 0, 0, 12340);

查询示例

查找所有有问候设置的NPC

SELECT qg.ID, ct.name, qg.Greeting
FROM quest_greeting qg
JOIN creature_template ct ON qg.ID = ct.entry
WHERE qg.Type = 0
ORDER BY qg.ID;

查找包含特定关键词的问候

SELECT qg.ID, ct.name, qg.Greeting
FROM quest_greeting qg
JOIN creature_template ct ON qg.ID = ct.entry
WHERE qg.Type = 0 AND qg.Greeting LIKE '%紧急%'
ORDER BY qg.ID;

查找有表情设置的问候

SELECT qg.ID, ct.name, qg.Emote1, qg.Emote2
FROM quest_greeting qg
JOIN creature_template ct ON qg.ID = ct.entry
WHERE qg.Type = 0 AND (qg.Emote1 > 0 OR qg.Emote2 > 0)
ORDER BY qg.ID;

问候文本设计原则

角色一致性

问候文本应该与NPC的身份、性格和背景相符:

情境适应性

根据游戏情境调整问候内容:

玩家体验

考虑玩家的游戏体验:

表情动作搭配

友好问候组合

正式问候组合

紧急问候组合

批量操作示例

为任务NPC批量添加问候

-- 为所有任务发放者添加基础问候
INSERT INTO quest_greeting (ID, Type, Greeting, Emote1, EmoteDelay1, VerifiedBuild)
SELECT DISTINCT cqs.id, 0, '你好,$N。我这里有任务需要你的帮助。', 1, 0, 12340
FROM creature_queststarter cqs
LEFT JOIN quest_greeting qg ON cqs.id = qg.ID AND qg.Type = 0
WHERE qg.ID IS NULL;

根据NPC类型设置不同问候

-- 为守卫类NPC设置正式问候
UPDATE quest_greeting qg
JOIN creature_template ct ON qg.ID = ct.entry
SET qg.Greeting = '士兵$N,有什么需要帮助的吗?', qg.Emote1 = 66
WHERE qg.Type = 0 AND ct.name LIKE '%守卫%';

相关表

常见问题

问候文本不显示怎么办?

检查以下几点:

如何设置性别相关的问候?

使用性别变量:

'欢迎你,$G先生:女士;!'

这会根据玩家性别显示"先生"或"女士"。

问候文本可以多长?

建议:

注意事项