任务详情表存储了任务接受时显示的详细信息,包括任务描述、目标说明、以及任务接受界面中显示的表情动作等信息。
字段名 | 类型 | 属性 | 键 | 默认值 | 描述 |
---|---|---|---|---|---|
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 | 验证的客户端版本号 |
任务的唯一标识符,必须对应quest_template表中的ID。每个任务只能有一条对应的详情记录。
示例值: 1, 100, 1001, 25000
定义NPC在玩家接受任务时播放的表情动作序列,最多可以设置4个连续的表情动作。
常见表情ID:
注意: 表情ID对应Emotes.dbc文件中的定义,不同的表情会产生不同的动画效果。
对应表情动作的延迟时间,以毫秒为单位。控制表情动作播放的时机和节奏。
延迟时间示例:
建议: 合理设置延迟时间可以让表情动作更加自然,通常第一个表情延迟0-1秒,后续表情间隔2-3秒。
记录验证此任务详情的客户端版本号,用于版本控制和兼容性检查。
表情动作应该与任务内容和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是击杀类任务
检查以下几点:
选择表情时考虑:
建议: