64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
|
|
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);
|
|
}
|
|
}
|
|
} |