猫史档案馆


【岛3】怎么给作品聊天区加控制台功能?控制台插件来了!【来者课堂】

用户:来者什人来者什人查看: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.该控制台仅在运行后生效!!!创作端使用请按下开始按钮!


回复

上一页1 页 / 共 1下一页
145a145a

被你抢先了(气)

不过还是很nb的()

点赞0


评论


FML饭米粒FML饭米粒

eval不加try

报错了就有你哭的地方去

点赞1


评论


研岩研岩

点赞0


评论


我爱Kitten我爱Kitten

"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


评论


145a145a

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_functionasync_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


评论


爱学习的邹同学爱学习的邹同学

nice

点赞0


评论


虚伪_der_面具虚伪_der_面具

666

点赞0


评论


HashbaoHashbao

nice!

点赞0


评论


新一只勤劳的木叶龙新一只勤劳的木叶龙

yee

点赞0


评论