任务请求物品表存储了当玩家尝试交付任务但尚未满足所有要求时,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 | 验证的客户端版本号 |
任务的唯一标识符,必须对应quest_template表中的ID。每个任务只能有一条对应的请求物品记录。
示例值: 1, 100, 1001, 25000
当玩家满足所有任务要求时,NPC播放的表情动作。通常是积极、满意的表情。
常见完成表情:
当玩家尚未满足所有任务要求时,NPC播放的表情动作。通常是等待、提醒的表情。
常见未完成表情:
对应表情动作的延迟时间,以毫秒为单位。控制表情播放的时机。
延迟时间示例:
当玩家与NPC对话但任务尚未完成时显示的文本。这个文本应该提醒玩家还需要完成什么。
示例文本:
"你还没有收集到足够的物品,$N。我需要你带来所有要求的物品。"
"任务还没有完成,$N。请确保你已经完成了所有的目标。"
"我还在等待你完成任务,$N。还有一些事情需要你去做。"
文本特点:
记录验证此任务请求文本的客户端版本号。
当玩家需要收集特定数量的物品时,提醒玩家还需要收集多少。
当玩家需要击杀特定数量的怪物时,提醒玩家还需要击杀多少。
当玩家需要探索特定区域时,提醒玩家还有哪些地方没有探索。
当玩家需要与特定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。确保你已经完成了所有的目标。'
以下类型的任务通常需要请求文本: