quest_request_items - 任务请求物品表

任务请求物品表存储了当玩家尝试交付任务但尚未满足所有要求时,NPC显示的文本和表情动作。这个表定义了任务进行中的提醒文本,用于指导玩家完成剩余的任务目标。

表结构

字段名 类型 属性 默认值 描述
ID int(10) unsigned 不为空 主键 0 任务ID,对应quest_template.ID
EmoteOnComplete smallint(5) unsigned 不为空 0 任务完成时的表情动作ID
EmoteOnIncomplete smallint(5) unsigned 不为空 0 任务未完成时的表情动作ID
EmoteOnCompleteDelay int(10) unsigned 不为空 0 完成表情的延迟时间
EmoteOnIncompleteDelay int(10) unsigned 不为空 0 未完成表情的延迟时间
CompletionText text 不为空 任务完成时显示的文本
VerifiedBuild int(11) 可为空 NULL 验证的客户端版本号

字段详解

ID

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

示例值: 1, 100, 1001, 25000

EmoteOnComplete

当玩家满足所有任务要求时,NPC播放的表情动作。通常是积极、满意的表情。

常见完成表情:

EmoteOnIncomplete

当玩家尚未满足所有任务要求时,NPC播放的表情动作。通常是等待、提醒的表情。

常见未完成表情:

EmoteOnCompleteDelay / EmoteOnIncompleteDelay

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

延迟时间示例:

CompletionText

当玩家与NPC对话但任务尚未完成时显示的文本。这个文本应该提醒玩家还需要完成什么。

示例文本:

"你还没有收集到足够的物品,$N。我需要你带来所有要求的物品。"

"任务还没有完成,$N。请确保你已经完成了所有的目标。"

"我还在等待你完成任务,$N。还有一些事情需要你去做。"

文本特点:

VerifiedBuild

记录验证此任务请求文本的客户端版本号。

使用场景

收集任务

当玩家需要收集特定数量的物品时,提醒玩家还需要收集多少。

击杀任务

当玩家需要击杀特定数量的怪物时,提醒玩家还需要击杀多少。

探索任务

当玩家需要探索特定区域时,提醒玩家还有哪些地方没有探索。

交互任务

当玩家需要与特定NPC或对象交互时,提醒玩家完成交互。

创建示例

收集任务的请求文本

INSERT INTO quest_request_items (ID, EmoteOnComplete, EmoteOnIncomplete, 
                                        EmoteOnCompleteDelay, EmoteOnIncompleteDelay, 
                                        CompletionText, VerifiedBuild)
VALUES (1001, 25, 5, 0, 1000, 
        '你还没有收集到足够的草药,$N。我需要10株银叶草才能制作药剂。', 12340);

击杀任务的请求文本

INSERT INTO quest_request_items (ID, EmoteOnComplete, EmoteOnIncomplete, 
                                        EmoteOnCompleteDelay, EmoteOnIncompleteDelay, 
                                        CompletionText, VerifiedBuild)
VALUES (1002, 21, 6, 0, 1000, 
        '狼群还在威胁着我们的村庄,$N。你需要消灭更多的狼才能确保安全。', 12340);

探索任务的请求文本

INSERT INTO quest_request_items (ID, EmoteOnComplete, EmoteOnIncomplete, 
                                        EmoteOnCompleteDelay, EmoteOnIncompleteDelay, 
                                        CompletionText, VerifiedBuild)
VALUES (1003, 11, 1, 0, 1000, 
        '你还没有完全探索那个区域,$N。确保你已经到达了所有标记的地点。', 12340);

查询示例

查找有请求文本的任务

SELECT qri.ID, qt.LogTitle, qri.CompletionText
FROM quest_request_items qri
JOIN quest_template qt ON qri.ID = qt.ID
ORDER BY qri.ID;

查找包含特定关键词的请求文本

SELECT qri.ID, qt.LogTitle, qri.CompletionText
FROM quest_request_items qri
JOIN quest_template qt ON qri.ID = qt.ID
WHERE qri.CompletionText LIKE '%收集%'
ORDER BY qri.ID;

查找缺少请求文本的任务

SELECT qt.ID, qt.LogTitle
FROM quest_template qt
LEFT JOIN quest_request_items qri ON qt.ID = qri.ID
WHERE qri.ID IS NULL
AND qt.QuestType IN (0, 1, 2)  -- 假设这些是需要请求文本的任务类型
ORDER BY qt.ID;

文本设计原则

明确性

文本应该明确告诉玩家:

鼓励性

使用积极的语调:

简洁性

保持文本简洁明了:

表情动作搭配

完成状态表情

未完成状态表情

批量操作示例

为收集任务批量添加请求文本

-- 为所有收集类任务添加通用请求文本
INSERT INTO quest_request_items (ID, EmoteOnComplete, EmoteOnIncomplete, 
                                 EmoteOnCompleteDelay, EmoteOnIncompleteDelay, 
                                 CompletionText, VerifiedBuild)
SELECT qt.ID, 25, 5, 0, 1000, 
       '你还没有收集到所有需要的物品,$N。请检查你的任务日志。', 12340
FROM quest_template qt
LEFT JOIN quest_request_items qri ON qt.ID = qri.ID
WHERE qri.ID IS NULL
AND qt.QuestType = 0;  -- 假设0是收集任务类型

根据任务类型设置不同的请求文本

-- 为击杀任务设置特定的请求文本
UPDATE quest_request_items qri
JOIN quest_template qt ON qri.ID = qt.ID
SET qri.CompletionText = '你还需要击败更多的敌人,$N。继续战斗!',
    qri.EmoteOnIncomplete = 15  -- 咆哮表情
WHERE qt.QuestType = 1;  -- 假设1是击杀任务类型

相关表

常见问题

请求文本不显示怎么办?

检查以下几点:

如何设置动态的进度提示?

虽然数据库中的文本是静态的,但可以使用通用的提示:

'请检查你的任务日志,$N。确保你已经完成了所有的目标。'

什么时候需要设置请求文本?

以下类型的任务通常需要请求文本:

注意事项