this.inherits(COMMAND);
this.command = "setting";
this.allow_busy = true;
this.allow_state = true;
this.allow_die = true;
this.regex = /^(?:(\w+)?\s+(.+))?$/;
this.enter = function (me, key, value) {
if (!me.is_player) return;
if (!key) {
var str = ['{type:"setting",items:{'];
if (me.setting) {
str.push(JSON.stringify(me.setting));
}
str.push("}}");
me.notify(str.join(""));
} else {
if (key === 'psxk' || key === 'fullscreen') return;
let setting_item = setting_keys[key];
if (!setting_item) return me.notify("无效设定项。");
if (setting_item.type === 'String') {
if (value && setting_item.length && value.length > setting_item.length) {
return me.notify("设定值太长。");
}
if (value === 'none') value = "";
else if (setting_item.def && setting_item.def === value)
value = "";
} else if (setting_item.type === 'Boolean') {
value = value || 0;
value = parseInt(value);
if (value !== 0 && value !== 1) return me.notify("无效设定值。");
}
if (setting_item.on_setting) {
if (setting_item.on_setting(me, value) === false) return;
}
if (key == "no_message") {
me.no_message = (value == 1) ? true : false;
}
me.set_setting(key, value);
if (setting_item.desc) {
if (setting_item.type === 'String') {
if (value && value !== '0') {
me.notify("已设置" + setting_item.desc + "");
} else {
me.notify("已取消" + setting_item.desc + "");
}
} else if (setting_item.type === 'Boolean') {
if (value) {
me.notify("已开启" + setting_item.desc + "");
} else {
me.notify("已关闭" + setting_item.desc + "");
}
}
}
//var parent = me.environment;
//if (!parent) return;
//switch (key) {
// case "exits_map":
// parent.send_exits(me);
// break;
//}
}
}
this.clear = function (me) {
let str = [];
for (let user of WORLD.USERS) {
if (!user.settings) continue;
for (let key in user.settings) {
if (!setting_keys[key]) {
str.push(user.name, key, '\n');
delete user.settings[key];
}
}
}
if (me) me.send(str.join(''));
}
const setting_keys = {
'hide_roomdesc': {
type: "Boolean",
desc: "隐藏房间描述"
}, 'exits_dir': {
type: "Boolean",
desc: "出口描述使用方向描述"
},
'show_command': {
type: "Boolean",
desc: "列出NPC或道具的可用命令"
},
'show_roomitem': {
type: "Boolean",
desc: "在命令栏列出房间内的可用物品"
}, 'item_firstme': {
type: "Boolean",
desc: "列出NPC自己始终显示在房间物品第一列"
},
'keep_msg': {
type: "Boolean",
desc: "切换房间时不清空上房间信息"
}, 'off_move': {
type: "Boolean",
desc: "不显示玩家进出房间描述"
},
'off_plist': {
type: "Boolean",
desc: "隐藏玩家列表"
}, 'no_spmsg': {
type: "Boolean",
desc: "聊天信息不分开显示"
},
'auto_sortitem': {
type: "Boolean",
desc: "按品质自动排列背包和技能"
}, 'no_message': {
type: "Boolean",
desc: " 不显示其他玩家或NPC的房间消息"
},
'auto_showcombat': {
type: "Boolean",
desc: "战斗时自动打开战斗面板"
}, 'auto_hideroom': {
type: "Boolean",
desc: "战斗时自动隐藏房间信息"
},
'no_combatmsg': {
type: "Boolean",
desc: "不显示其他玩家的战斗信息"
}, 'no_mcmsg': {
type: "Boolean",
desc: "不显示自己的普通战斗信息"
},
'combat_wrap': {
type: "Boolean",
desc: "技能栏允许换行"
},
'action_wrap': {
type: "Boolean",
desc: "动作栏允许换行"
},
'show_hpnum': {
type: "Boolean",
desc: "显示血量为数字"
},
'off_hp': {
type: "Boolean",
desc: "关闭血条显示"
}, 'show_damage': {
type: "Boolean",
desc: "显示伤害统计"
}, 'show_sa': {
type: "Boolean",
desc: "显示快捷动作"
},
'font': {
type: "String",
length: 10,
desc: "字体"
},
'combat_size': {
type: "String",
length: 10,
desc: "操作栏大小",
def: "1em"
},
'dialog_size': {
type: "String",
length: 10,
desc: "窗口大小",
def: "1em"
},
'menu_size': {
type: "String",
length: 10,
desc: "菜单栏大小",
def: "1em"
},
'fontsize': {
type: "String",
length: 10,
desc: "字体大小",
def: "0.875rem"
}, 'fontcolor': {
type: "String",
length: 20,
desc: "正常字体颜色",
def: "#008000"
}, 'backcolor': {
type: "String",
length: 20,
desc: "背景颜色"
}, 'hide_equip': {
type: "Boolean",
desc: "隐藏自己的装备"
},
'off_fight': {
type: "Boolean",
desc: "不接受比试"
}, 'ban_pk': {
type: "Boolean",
desc: "",
on_setting: function (me, value) {
if (value == 1) {
if (me.query_setting("ban_pk")) return false;
// if (me.level >= 3) return me.notify("你已经是宗师,不再需要保护了。");
if (me.query_temp("pk")) {
return me.notify_fail("你最近7天内关闭过PK保护或击杀过其他玩家,需要一段时间后才可以再次打开保护。");
}
me.notify("你已开启PK保护,不可主动击杀玩家,不可被玩家主动击杀。");
me.set_temp("pk", 1, 24 * 3600000 * 7);
} else {
if (!me.query_setting("ban_pk")) return false;
me.notify("你已关闭PK保护。");
}
}
}, 'no_master': {
type: "Boolean",
desc: "不接受玩家拜师"
}, 'no_team': {
type: "Boolean",
desc: "不接受玩家组队邀请"
},
'off_chat': {
type: "Boolean",
desc: "屏蔽公共频道"
}, 'off_fam': {
type: "Boolean",
desc: "屏蔽门派频道"
},
'off_es': {
type: "Boolean",
desc: "屏蔽全区频道"
}, 'off_pty': {
type: "Boolean",
desc: "屏蔽帮派频道"
},
'auto_get': {
type: "Boolean",
desc: "击杀NPC后自动拾取战利品"
}, 'auto_pfm': {
type: "String",
length: 300,
desc: "击杀玩家或NPC时自动出招"
},
'show_cus': {
type: "Boolean",
desc: "允许其他玩家查看自己的自创武功"
},
'auto_pfm2': {
type: "String",
length: 300,
desc: "被玩家击杀时自动反击"
}, 'auto_work': {
type: "String",
length: 400,
desc: "",
on_setting: function (me, value) {
if (!value || value === '0')
return me.notify('已关闭学习,练习,打坐中断后的自动操作');
if (value === '1') {
return me.notify('已设置学习,练习,打坐中断后,自动去挖矿');
}
return me.notify('已设置学习,练习,打坐中断后的自动操作');
}
}
};