用户:yee剑走天下查看:12 回复:15 评论:12 创建时间:2023-08-11T09:36:50
功能:可以不管玩家是否在线,直接管理(大部分功能仿照全能的究极玩家管理,但新增加了增加处罚天数和重启容器),对话框控制器,重启地图/容器,聊天区$指令
console.clear();
var admin = ['yee剑走天下'];
var manageStorage = storage.getDataStorage('Manage');
function find(n) { return world.querySelectorAll('player').find(x => x.player.name == n) };
async function getUid(name) {
let str = '';
const queryList = await manageStorage.list({
cursor: 0,
pageSize: Infinity
});
let data = queryList.getCurrentPage().find(x => x.value.name == name);
if (data) str = data.key;
return str;
};
async function penalize(entity) {
let day = parseInt((Date.now() - entity.blackTime) / 1000 / 3600 / 24);
if (entity.isBlack == 0) entity.player.directMessage('已为您读取数据!');
if (entity.isBlack == 1) {
world.say(`玩家${entity.player.name}已被管喵封号处罚!十秒后将被踢出地图!`);
entity.player.directMessage(`你已被管喵封号处罚,距离封号处罚结束还有${entity.blackDay - day}天!十秒后将被踢出地图!`);
await sleep(1e4);
entity.player.kick();
}
if (entity.isBlack == 2) {
world.say(`玩家${entity.player.name}已被管喵禁足处罚!将不能移动!`);
entity.player.directMessage(`你已被管喵禁足处罚,将不能移动,视角只能朝天!距离禁足处罚结束还有${entity.blackDay - day}天!`);
entity.player.disableInputDirection = 'both';
entity.player.jumpPower = 0;
entity.player.enableCrouch = false;
entity.player.cameraMode = 'fixed';
entity.player.cameraTarget = entity.player.spawnPoint.add(new GameVector3(0, 30, 0));
}
};
function textDialog(entity, title, content) {
entity.player.dialog({
type: 'text',
title,
content
});
};
async function selectDialog(entity, title, content, options) {
return await entity.player.dialog({
type: 'select',
title,
content,
options
});
};
async function inputDialog(entity, title, content) {
return await entity.player.dialog({
type: 'input',
title,
content
});
};
world.onPlayerJoin(async ({ entity }) => {
let data = await manageStorage.get(entity.player.userId);
if (data) {
Object.assign(entity, data.value);
await penalize(entity)
} else {
Object.assign(entity, { isBlack: 0, blackTime: 0, blackDay: 0 })
await manageStorage.set(entity.player.userId, { name: entity.player.name, isBlack: 0, blackTime: 0, blackDay: 0 });
entity.player.directMessage('已为您创建数据!');
}
});
world.onPlayerLeave(async ({ entity }) => {
await manageStorage.update(entity.player.userId, () => ({ name: entity.player.name, isBlack: entity.isBlack, blackTime: entity.blackTime, blackDay: entity.blackDay }))
});
world.onPress(async ({ entity, button }) => {
if (entity.player.walkState == 'crouch' && button == 'action1' && admin.includes(entity.player.name)) {
const manageMenu = await selectDialog(entity, '管喵系统', '以下是你可以执行的一些操作:', ['封号处罚管理', '禁足处罚管理', '重启地图', '控制台']);
if (!manageMenu) return;
let value = manageMenu.value;
if (manageMenu.index <= 1) {
let str = value.split('处罚')[0];
const ask = await inputDialog(entity, value, `请输入你要${str}/解除处罚的玩家:`);
if (ask) {
let key = await getUid(ask);
if (key) {
let data = await manageStorage.get(key);
if (data.value.isBlack != 0 && data.value.isBlack == manageMenu.index + 1) {
let type = { 1: '封号', 2: '禁足' }[data.value.isBlack];
let day = data.value.blackDay - parseInt((Date.now() - data.value.blackTime) / 1000 / 3600 / 24);
const ask2 = await selectDialog(entity, value, `${ask}已被${type}处罚,其距离结束处罚还剩${day}天`, ['结束处罚', '增加处罚天数', '取消']);
if (!ask2) return;
if (ask2.value == '结束处罚') {
await manageStorage.update(key, () => ({ name: ask, isBlack: 0, blackTime: 0, blackDay: 0 }));
textDialog(entity, '结束处罚', `已结束对${ask}的${type}处罚`);
world.say(`管喵已结束玩家${ask}的${ask2.value}处罚!`);
if (find(ask)) {
var player = find(ask);
player.isBlack = 0
player.blackDay = 0;
player.blackTime = 0;
}
}
if (ask2.value == '增加处罚天数') {
const ask3 = await inputDialog(entity, '增加处罚天数', '请输入你要增加的处罚天数:');
if (ask3) {
let num = Number(ask3);
if (isNaN(num) || num.toString().includes('.') || num <= 0) {
textDialog(entity, '增加处罚天数', '输入有误!');
} else {
await manageStorage.update(key, () => ({ name: ask, isBlack: data.value.isBlack, blackTime: data.value.blackTime, blackDay: data.value.blackDay + num }));
textDialog(entity, '增加处罚天数', `已增加${ask3}天对${ask}的${type}处罚`);
world.say(`玩家${ask}已被管喵增加${ask3}天的${str}处罚!`);
if (find(ask)) {
var player = find(ask);
player.isBlack = data.value.isBlack;
player.blackTime = data.value.blackTime;
player.blackDay = data.value.blackDay + num;
}
}
}
}
} else {
let type = { '封号': 1, '禁足': 2 }[str];
const ask2 = await selectDialog(entity, manageMenu.value, `${ask}未被${str}处罚,请选择对其${str}处罚的天数:`, ['1', '5', '10', '30', '50', '100', '365', '3650']);
if (!ask2) return;
const ask3 = await selectDialog(entity, `${str}处罚`, `确定对${ask}处以${ask2.value}天的${str}处罚吗?`, ['确定', '取消']);
if (!ask3) return;
if (ask3.value == '确定') {
let time = Date.now();
await manageStorage.update(key, () => ({ name: ask, isBlack: type, blackTime: time, blackDay: Number(ask2.value) }));
textDialog(entity, manageMenu.value, '处罚成功!');
world.say(`玩家${ask}已被管喵处以${ask2.value}天的${str}处罚!`);
if (find(ask)) {
var player = find(ask);
player.isBlack = type;
player.blackDay = Number(ask2.value);
player.blackTime = time;
}
}
}
} else {
textDialog(entity, value, '输入有误!此玩家不存在!')
}
}
};
if (value == '重启地图') {
const ask = await selectDialog(entity, value, '请选择重启方式:', ['重启地图', '重启容器']);
if (!ask) return;
if (ask.value == '重启地图') {
for(;;);
} else {
db.sql([''], '');
}
};
if (value == '控制台') {
const ask = await inputDialog(entity, value, '请输入你要执行的内容');
if (!ask) return;
if (ask) {
try {
textDialog(entity, value, `~> ${ask}\n<~ ${eval(ask)}`)
} catch (e) {
textDialog(entity, value, `~> ${ask}\n<~ ${e}`)
}
}
}
};
});
world.onChat(({ entity, message }) => {
if (message[0] == '$' && admin.includes(entity.player.name)) {
try {
world.say(`<~ ${eval(message.slice(1))}`)
} catch (e) {
world.say(`<~ ${e}`)
}
}
});
Dreamland_Aurora搞不懂yee剑的和我的find函数有啥区别
function find(name){
const a = world.queyrSelectorAll('player');
for(let i in a){
if (a[i].player.name == name) return a[i];
}
}
global.find = find;点赞0
评论
Dreamland_Aurora给yee剑优化下聊天框指令代码()
const Author = '';//这里写作者的userKey
const Admin = [Author,''];//管理员
const Danger = ['eval','db','sql','for','while','null','Danger'];
world.onChat(({ entity, message })=>{
if(Admin.includes(entity.player.userKey){
if(message[0] === '$'){
var flag = false;
for(const e of Danger){
if(message.includes(e){
flag = true;
break;
}
}
if(entity.player.userKey === Author || !flag){
try{
world.say("<~" + eval(message.substring(1)));
}catch(error){
world.say(error.stack);
}
}else{
world.say('该指令有危险性');
}
}
}
})点赞0
评论