quest_details - 任务详情表

任务详情表存储了任务接受时显示的详细信息,包括任务描述、目标说明、以及任务接受界面中显示的表情动作等信息。

表结构

字段名 类型 属性 默认值 描述
ID int(10) unsigned 不为空 主键 0 任务ID,对应quest_template.ID
Emote1 smallint(5) unsigned 不为空 0 第一个表情动作ID
Emote2 smallint(5) unsigned 不为空 0 第二个表情动作ID
Emote3 smallint(5) unsigned 不为空 0 第三个表情动作ID
Emote4 smallint(5) unsigned 不为空 0 第四个表情动作ID
EmoteDelay1 int(10) unsigned 不为空 0 第一个表情动作的延迟时间
EmoteDelay2 int(10) unsigned 不为空 0 第二个表情动作的延迟时间
EmoteDelay3 int(10) unsigned 不为空 0 第三个表情动作的延迟时间
EmoteDelay4 int(10) unsigned 不为空 0 第四个表情动作的延迟时间
VerifiedBuild int(11) 可为空 NULL 验证的客户端版本号

字段详解

ID

任务的唯一标识符,必须对应quest_template表中的ID。每个任务只能有一条对应的详情记录。

示例值: 1, 100, 1001, 25000

Emote1-4

定义NPC在玩家接受任务时播放的表情动作序列,最多可以设置4个连续的表情动作。

常见表情ID:

注意: 表情ID对应Emotes.dbc文件中的定义,不同的表情会产生不同的动画效果。

EmoteDelay1-4

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

延迟时间示例:

建议: 合理设置延迟时间可以让表情动作更加自然,通常第一个表情延迟0-1秒,后续表情间隔2-3秒。

VerifiedBuild

记录验证此任务详情的客户端版本号,用于版本控制和兼容性检查。

表情动作设计原则

表情序列的逻辑性

表情动作应该与任务内容和NPC性格相匹配:

时间节奏控制

合理的延迟时间设置可以增强沉浸感:

创建示例

普通任务的表情设置

INSERT INTO quest_details (ID, Emote1, Emote2, Emote3, Emote4, 
                                  EmoteDelay1, EmoteDelay2, EmoteDelay3, EmoteDelay4, VerifiedBuild)
VALUES (1001, 1, 5, 25, 0, 0, 2000, 4000, 0, 12340);

这个示例创建了一个包含"说话-指向-点头"的表情序列,适合普通的指引类任务。

紧急任务的表情设置

INSERT INTO quest_details (ID, Emote1, Emote2, Emote3, Emote4, 
                                  EmoteDelay1, EmoteDelay2, EmoteDelay3, EmoteDelay4, VerifiedBuild)
VALUES (1002, 6, 15, 5, 1, 0, 1000, 3000, 5000, 12340);

这个示例创建了一个"吃惊-咆哮-指向-说话"的表情序列,适合紧急或危险的任务。

友好任务的表情设置

INSERT INTO quest_details (ID, Emote1, Emote2, Emote3, Emote4, 
                                  EmoteDelay1, EmoteDelay2, EmoteDelay3, EmoteDelay4, VerifiedBuild)
VALUES (1003, 2, 11, 25, 0, 0, 2000, 4000, 0, 12340);

这个示例创建了一个"问候-大笑-点头"的表情序列,适合友好或轻松的任务。

查询示例

查找有表情设置的任务

SELECT qd.ID, qt.LogTitle, qd.Emote1, qd.Emote2, qd.Emote3, qd.Emote4
FROM quest_details qd
JOIN quest_template qt ON qd.ID = qt.ID
WHERE qd.Emote1 > 0 OR qd.Emote2 > 0 OR qd.Emote3 > 0 OR qd.Emote4 > 0
ORDER BY qd.ID;

统计表情使用频率

SELECT emote_id, COUNT(*) as usage_count
FROM (
    SELECT Emote1 as emote_id FROM quest_details WHERE Emote1 > 0
    UNION ALL
    SELECT Emote2 as emote_id FROM quest_details WHERE Emote2 > 0
    UNION ALL
    SELECT Emote3 as emote_id FROM quest_details WHERE Emote3 > 0
    UNION ALL
    SELECT Emote4 as emote_id FROM quest_details WHERE Emote4 > 0
) emotes
GROUP BY emote_id
ORDER BY usage_count DESC;

查找缺少详情设置的任务

SELECT qt.ID, qt.LogTitle
FROM quest_template qt
LEFT JOIN quest_details qd ON qt.ID = qd.ID
WHERE qd.ID IS NULL
ORDER BY qt.ID;

批量操作示例

为所有任务添加基础表情

-- 为没有详情设置的任务添加基础的说话表情
INSERT INTO quest_details (ID, Emote1, EmoteDelay1, VerifiedBuild)
SELECT qt.ID, 1, 0, 12340
FROM quest_template qt
LEFT JOIN quest_details qd ON qt.ID = qd.ID
WHERE qd.ID IS NULL;

根据任务类型设置表情

-- 为击杀类任务设置战斗相关表情
UPDATE quest_details qd
JOIN quest_template qt ON qd.ID = qt.ID
SET qd.Emote1 = 15, qd.Emote2 = 5, qd.EmoteDelay2 = 2000
WHERE qt.QuestType = 1;  -- 假设1是击杀类任务

相关表

常见问题

表情动作不播放怎么办?

检查以下几点:

如何选择合适的表情?

选择表情时考虑:

表情序列太长会有问题吗?

建议:

注意事项