Files
wsmud/world/cmd/admin/send.js
2026-05-26 16:41:20 +08:00

71 lines
2.0 KiB
JavaScript

this.inherits(COMMAND);
this.command = "send";
this.allow_busy = true;
this.allow_state = true;
this.allow_die = true;
this.regex = /^(\w+)\s(.+)$/;
this.enter = function (me, user, arg) {
if (me && me.allow_level < 5) return false;
if (!arg) return me && me.send("没有消息内容。");
var msg;
var is_str = typeof arg == "string";
if (is_str && arg[0] != "{") {
msg = { content: arg, time: Date.now() };
} else {
msg = is_str ? JSON.toObject(arg) : arg;
if (!msg.content || !msg.attach) return me && me.send("格式错误。");
msg.time = Date.now();
for (var i = 0; i < msg.attach.length; i++) {
let attach = msg.attach[i];
var obj = OBJ.CREATE(attach.obj, attach.count);
if (obj) {
attach.name = obj.unit_name(attach.count);
}
}
}
var users = [];
if (user == "all") {
users = WORLD.USERS;
} else {
var player = WORLD.getUser(user);
if (!player) player = { id: user };
users.push(player);
}
var obj = {};
obj.type = "dialog";
obj.dialog = "message";
obj.message = {
id: msg.from || "system",
name: msg.from_name || "系统",
content: msg.content,
time: msg.time,
attach: msg.attach
};
for (var i = 0; i < users.length; i++) {
let user_msg = {
time: msg.time,
content: msg.content,
attach: msg.attach
};
let mail_type = obj.message.id;
WORLD.MESSAGE.pushUserMessage(users[i].id, {
id: mail_type, name: obj.message.name
}, user_msg);
obj.message.index = user_msg.index;
if (users[i].socket) users[i].send(JSON.stringify(obj));
if (RECORD[mail_type]) {
WORLD.log(users[i], mail_type, msg.content);
}
}
me && me.notify("发送完成,共发送" + users.length);
}
const RECORD = {
top: true,
score: true,
weapon: true
};