0x00 前言
你是否有遇到类似的问题?
有时在右上角突然出现 Miss QuestID: #####
:
或者出现 Unknown Quest, ID = #####
:
打开【任务目录】(Alt + U
)的可以看到它们,但却不知因何而来、也不知如何修改。
那么应该如何正确配置一个任务到 UI 呢?
0x10 任务配置
0x11 服务端配置
如果一个 NPC 的任务脚本需要做 CD(冷却时间)控制,大部份情况下需要绑定一个任务 ID,然后通过 checkquest
检查 CD 是否结束:
*checkquest({,PLAYTIME|HUNTING{,}})
If no additional argument supplied, return the state of the quest:
-1 = Quest not started (not in quest log)
0 = Quest has been given, but the state is "inactive"
1 = Quest has been given, and the state is "active"
2 = Quest completed
If parameter "PLAYTIME" is supplied:
-1 = Quest not started (not in quest log)
0 = the time limit has not yet been reached
1 = the time limit has not been reached but the quest is marked as complete
2 = the time limit has been reached
If parameter "HUNTING" is supplied:
-1 = Quest not started (not in quest log)
0 = you haven't killed all of the target monsters and the time limit has not been reached.
1 = you haven't killed all of the target monsters but the time limit has been reached.
2 = you've killed all of the target monsters
例如 “星座之塔” 副本,在开启前会检查 CD 时间:
.@cd = checkquest(30059, PLAYTIME);
if (.@cd == 0 || .@cd == 1) {
mes "副本冷却等待 24 小时";
close;
} else {
mes "可以再次进入星座之塔";
erasequest 30059; // 从玩家的任务日志中删除该任务缓存记录
... ...
setquest 30059; // 激活任务
... ...
close;
}
其中 30059
就是绑定的任务 ID,它在 db/quest_db.yml
中定义为:
# 星座之塔副本 Constellation of Tower
- Id: 30059
Title: 星座之塔
TimeLimit: +24h
0x12 客户端配置
然后修改 System/OngoingQuestInfoList.lub
配置,在其中添加一个节点:
[30059] = {
Title = "星座之塔",
Description = {
"看来有人推翻了 “无尽之塔” ... ",
"以星座之名,直面挑战这个新主人吧 !"
},
Summary = "EP 18.1, Lv 240+, CD: 24h"
},
注意客户端任务 ID 要和服务端任务 ID 的保持一致。
System/OngoingQuestInfoList.lub
作用是进行中的任务,它对应的就是【任务目录】中的 In Progress
标签页的任务。
配置完成后、重新进入游戏,当玩家触发 NPC 任务后,任务因为处于 “进行中” 的状态,就会自动显示在 In Progress
面板和右上角中:
顺便一提,
System/RecommendedQuestInfoList.lub
对应的是【任务目录】中的News
标签页的情报,这个标签的内容是相对固定的,不会因为玩家的行为而改变:
0x20 客户端修改了,不起作用?
如果你发现修改了这两个配置文件:
System/OngoingQuestInfoList.lub
System/RecommendedQuestInfoList.lub
但是任务 UI 面板却没有显示你新增的任务/情报、甚至于报错,很可能是你在 DIFF 的时候没有指定正确路径导致的:
你可能有疑问,明明 DIFF 指定的文件名是对的,为什么不生效?
这是因为,这两个文件在 System 目录下也是特殊的存在。
一般而言,我们在 DIFF 指定文件路径的时候都是要带上文件后缀的,例如 System/Iteminfo.lub
、System/Iteminfo.lua
等,
唯独 OngoingQuestInfoList
和 RecommendedQuestInfoList
不需要带上后缀!
一旦在 DIFF 中配置成 System/OngoingQuestInfoList.lub
,实际上客户端搜索的路径就变成 System/OngoingQuestInfoList.lub.lub
,但因为文件不存在,从而导致报错:
对于 System 目录下的文件、DIFF 时哪些需要或不需要文件后缀,这里特别归纳了一下:
文件名 | DIFF 是否需要加上后缀 |
---|---|
Iteminfo | 需要 |
MapInfo | 需要 |
Towninfo | 需要 |
Tipbox | 需要 |
PetEvolutionCln | 需要 |
PrivateAirplane | 需要 |
MonsterSizeEffect | 需要 |
CheckAttendance | 需要 |
AchievementList | 需要 |
OngoingQuestInfo | 不需要 |
RecommendedQuestInfo | 不需要 |
因此,OngoingQuestInfoList
和 RecommendedQuestInfoList
正确的配置方法应该是:
这里的 Nemo 其实也误导了我们:Nemo 提供的默认配置是带后缀的,一但不注意就会配错