用户:
来者什人查看:15 回复:10 评论:15 创建时间:2022-08-17T11:33:52
很多地图创作者都有这样的麻烦:作品发布后在游玩模式调试时想要临时修改数据,却没有控制台?管喵在管理作品时管理功能太少?不用担心,只要给作品加入以下代码,你的聊天区就可以秒变控制台,只有你想不到,没有它执行不了的(除非代码有误)。
administrators = [];//管喵列表,避免玩家恶意毁图,需要自行添加管喵的userKey,不知道userKey是多少的岛民可以找代码师帮忙查看。
//使用world.onChat事件获取玩家及其消息。
world.onChat(async({ entity, message }) => {
//使用if语句检测玩家身份以及检查玩家目的是否为执行代码。
if (administrators.includes(entity.player.userKey) && message == '$') {
let code = await entity.player.dialog({
type: Box3DialogType.INPUT,
title: "控制台",
content: `请输入代码:`,
confirmText: '执行',
placeholder: 'code',
});
if(!code || code === null){
world.say('取消执行');
return;
}
world.say(eval(code))
}
//以上为对话框模式代码,管喵在聊天区发送$可以启动
//以下为直接执行模式,管喵在聊天区发送$以及需要执行的代码可以启动,注意代码要紧跟$字符,用同一条消息
if (administrators.includes(entity.player.userKey) && message.indexOf("$") == 0) {
world.say(eval(message.slice(1, message.length)));//使用eval函数执行代码,并使用world.say函数输出结果。
} else {
return;
};
})
备注:
1.在使用该控制台时,entity默认指向自己,可以利用这点快速更改自身属性;
2.该控制台也可以用玩家名字辨别管喵,但是需要将administrators列表内的数据改为玩家名,并将控制台代码内所有userKey改为name(但是这样如果管喵改名了,那么管喵列表也要及时更改);
3.由于聊天区消息字符数量限制,直接执行模式可执行代码长度有限,超过长度限制的需要分开执行,或者在创作端封装为函数;
4.如果在对话框模式下需要取消执行代码(按下“执行”前),可以直接关闭对话框;
5.该控制台仅在运行后生效!!!创作端使用请按下开始按钮!
"use strict";//这人畜无害()()
administrators = [];//管理员列表,避免玩家恶意毁图,需要自行添加管理员的userKey,不知道userKey是多少的岛民可以找代码师帮忙查看。
//使用world.onChat事件获取玩家及其消息。
world.onChat(async({ entity, message }) => {
//使用if语句检测玩家身份以及检查玩家目的是否为执行代码。
if (administrators.includes(entity.player.userKey) && message == '$') {
let code = await entity.player.dialog({
type: Box3DialogType.INPUT,
title: "控制台",
content: `请输入代码:`,
confirmText: '执行',
placeholder: 'code',
});
if(!code || code === null){
world.say('取消执行');
return;
}
world.say(eval(code))
}
//以上为对话框模式代码,管理员在聊天区发送$可以启动
//以下为直接执行模式,管理员在聊天区发送$以及需要执行的代码可以启动,注意代码要紧跟$字符,用同一条消息
if (administrators.includes(entity.player.userKey) && message.indexOf("$") == 0) {
world.say(eval(message.slice(1, message.length)));//使用eval函数执行代码,并使用world.say函数输出结果。
} else {
return;
};
})点赞0
评论
administrators=[],world.onChat(async({entity,message})=>{if(administrators.includes(entity.player.userKey)&&"$"==message){let code=await entity.player.dialog({type:Box3DialogType.INPUT,title:"\u63A7\u5236\u53F0",content:`请输入代码:`,confirmText:"\u6267\u884C",placeholder:"code"});if(!code||null===code){world.say("\u53D6\u6D88\u6267\u884C");return}world.say(eval(code))}administrators.includes(entity.player.userKey)&&0==message.indexOf("$")&&world.say(eval(message.slice(1,message.length)))})点赞0
评论
async_function简化+防err版
const admin = [];
function r(m) {
world.say('~>' + m);
world.say('<~' + eval(m));
}
world.onChat(async ({ entity, message }) => {
if (admin.includes(entity.player.userKey) && message.indexOf("$") == 0) {
try {
if (message.length > 1) return r(message.slice(1, message.length));
const code = await entity.player.dialog({
type: 'input',
title: "控制台",
content: `请输入代码:`,
confirmText: '执行',
placeholder: 'code',
});
if (!code) return world.say('取消执行');
r(code)
} catch (e) {
world.say('<~' + e);
}
}
})点赞2
评论