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

52 lines
2.0 KiB
JavaScript

this.inherits(COMMAND);
this.command = "chat";
this.allow_busy = true;
this.allow_state = true;
this.allow_die = true;
this.enter = function (me, str) {
if (!str) return;
if (me.master) return;
if (str.length > 200) return me.notify("你说的太多了。");
if (me.query_temp("no_chat")) {
if (me.temp.no_chat.e) {
let time = new Date(me.temp.no_chat.e);
return me.notify("你已经被禁言,持续到" + time.getFullYear()
+ "年" + (time.getMonth() + 1) + "月" +
time.getDate() + "日" + time.getHours() + "时" + time.getMinutes() + "分。");
}
return me.notify("你已经被禁言。");
}
if (me.query_temp("chat")) return me.notify("你说话速度太快了。");
if (me.query_setting("off_chat")) return me.notify("你目前禁止公共频道中。");
//if (me.query_temp("new")) return me.notify("新手训练完成前不能在世界频道发言。");
if (me.exp < 100000) return me.notify("新注册账号不能在世界频道发言");
if (!me.name) {
// WORLD.log(null, me.ip_address || me.userid || "chat", str);
return;
}
var msg = "", name = me.name;
if (str[0] == "*") {
str = str.substr(1);
msg = WORLD.COMMANDS["emote"].enter(me, str);
if (!msg) {
msg = UTIL.htmlEncode(str);
msg = UTIL.replace_word(str);
}
else name = "";
} else {
msg = UTIL.htmlEncode(UTIL.replace_word(str));
}
let content = { type: "msg", ch: "chat", content: msg, uid: me.id, lv: (me.level || 0), name: name };
if (me.level === 6) {
let lv6 = me.query_temp('lv6');
if (lv6) content.lv6 = lv6;
}
msg = JSON.stringify(content);
for (var i = 0; i < WORLD.USERS.length; i++) {
if (!WORLD.USERS[i].query_setting("off_chat"))
WORLD.USERS[i].send(msg);
}
me.set_temp('chat', 1, 3000);
//me.add_temp('chat2', 1, UTIL.diff_time());
}