init: add workspace files
This commit is contained in:
64
world/cmd/dialog/task.js
Normal file
64
world/cmd/dialog/task.js
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
this.inherits(COMMAND);
|
||||
this.command = "task";
|
||||
this.regex = /(\w+)\s+(\w+)(?:\s(\w+))?(?:\s(\w+))?/;
|
||||
this.allow_state = true;
|
||||
this.enter = function (me, tid, cmd, oid) {
|
||||
if (!tid || !cmd) return;
|
||||
if (!me.is_player || !WORLD.is_server(me)) return;
|
||||
if (tid === 'all') return this.tasks_fin(me);
|
||||
let task = USERTASK.GET(tid);
|
||||
if (!task) return me.notify("没有这个任务。");
|
||||
let target = null;
|
||||
if (!oid && !(ALLOW_COMMANDS[cmd])) {
|
||||
oid = cmd;
|
||||
cmd = 'start';
|
||||
}
|
||||
if (oid) {
|
||||
target = me.find_obj(oid, me.environment);
|
||||
if (!target) return me.notify("这里没有这个人。");
|
||||
}
|
||||
switch (cmd) {
|
||||
case "fin":
|
||||
this.task_fin(me, task);
|
||||
break;
|
||||
case "start":
|
||||
task.start(me, target);
|
||||
break;
|
||||
case "giveup":
|
||||
task.giveup(me);
|
||||
break;
|
||||
case "fin2":
|
||||
this.task_fin(me, task, 'ok');
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
const ALLOW_COMMANDS = {
|
||||
start: true,
|
||||
giveup: true,
|
||||
fin: true,
|
||||
fin2: true
|
||||
};
|
||||
this.task_fin = function (me, task, par) {
|
||||
if (task.on_finish(me, par)) {
|
||||
const obj = {};
|
||||
obj.type = "dialog";
|
||||
obj.dialog = "tasks";
|
||||
obj.id = task.id;
|
||||
obj.state = task.query_state(me);
|
||||
if (obj.state) {
|
||||
obj.title = task.query_title(me);
|
||||
obj.desc = task.query_desc(me);
|
||||
}
|
||||
return me.notify(JSON.stringify(obj));
|
||||
}
|
||||
}
|
||||
this.tasks_fin = function (me) {
|
||||
for (let i = 0; i < WORLD.TASKS.length; i++) {
|
||||
const task = WORLD.TASKS[i];
|
||||
if (task.query_state(me) === 2) {
|
||||
this.task_fin(me, task);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user