猫史档案馆


如何制作只需官方审核一次就能无线更新代码的地图

用户:SCS_user_LoeheodVOQSCS_user_LoeheodVOQ查看:11 回复:9 评论:11 创建时间:2022-06-10T13:40:13


有时,官方放假,不审核地图,就更新不了代码。

使用这个代码,只要发布过了,就可以无限更新代码。

原理:使用sql保存代码,每次重启地图时运行。

注意:更新完后要重启服务器,代码才能生效。

只要把下面代码中"AUTHER"的值改成自己和合作者的UserKey就行了。

 

UserKey获取方法:

    1.在只有你一个人的地图中,控制台输入;

world.querySelctor('*player').player.userKey

    2.打开开发者工具的控制台,输入;

javascript:document.body.contentEditable='true';document.designMode='on'; void 0

    3.关闭开发者工具,复制控制台输出的内容即可。

 

代码:

const AUTHER = ['0lF1IczVpNfUZkd2']  //这里输入作者与合作者userKey列表

async function init() {
    await db.sql`CREATE TABLE IF NOT EXISTS code (
        code TEXT NOT NULL,
        updateTime TEXT NOT NULL,
        updateUserKey CHAR(16) NOT NULL,
        name TEXT NOT NULL
    )`
    const codes = await db.sql`SELECT * FROM code`
    const codesAfterSelect = []
    for (let code of codes) {
        b = true
        for (let codeAfterSelect of codesAfterSelect) {
            if (code.name == codeAfterSelect.name) {
                if (Date.parse(code.time) > Date.parse(codeAfterSelect.time)) {
                    codeAfterSelect.code = code.code
                }
                b = false
            }
        }
        if (b) {
            codesAfterSelect.push(code)
        }
    }
    for (let c of codes) {
        eval(c.code)
    }
}

world.onPress(async ({ button, entity }) => {
    if (button === Box3ButtonType.ACTION1) {
        const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            title: '菜单',
            content: '请选择操作',
            options: ['更新代码']
        })
        switch (result.index) {
            case 0:
                if (AUTHER.includes(entity.player.userKey)) {
                    const code = await entity.player.dialog({
                        type: Box3DialogType.INPUT,
                        title: '更新代码',
                        content: '请将代码复制进框内:'
                    })
                    if (code) {
                        const name = await entity.player.dialog({
                            type: Box3DialogType.INPUT,
                            title: '更新代码',
                            content: '请输入文件名称:'
                        })
                        if (name) {
                            await db.sql`INSERT INTO code VALUES(
                                ${code},
                                ${new Date().toLocaleString('zh', { timeZone: 'Asia/Shanghai' })},
                                ${entity.player.userKey},
                                ${name}
                            )`
                        }
                    }
                } else {
                    await entity.player.dialog({
                        type: Box3DialogType.TEXT,
                        title: '错误',
                        content: '你不是作者或合作者,无法更新代码'
                    })
                }
                break
        }
    }
})
init()

 


回复

上一页1 页 / 共 1下一页
SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

纠正错误:获取userKey的代码为

world.querySelector('*player').player.userKey

点赞1


评论


Star_Ink_sansStar_Ink_sans

dddd()

点赞0


评论


1086爱编程1086爱编程

userKey用world.say不行吗。。。

点赞0


评论


萌新大佬萌新大佬

问~题~很~大~~

更新又不是只更代码

而且多代码文件地图怎么办

点赞1


评论


box3_创作喵box3_创作喵

收藏

点赞0


评论


云游box3der尖头叉子云游box3der尖头叉子

ddd

点赞0


评论


用户_869149用户_869149

不错不错()

点赞0


评论


面条awa代岛同名面条awa代岛同名

模型可以发布吗?

点赞0


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

代码与建筑更新:https://shequ.cod喵/community/466732

点赞0


评论