猫史档案馆


[pro神岛] 邮箱/意见箱 代码教程 80行内代码教会你[]qwq

用户:MR_WolfMR_Wolf查看:2 回复:3 评论:2 创建时间:2023-12-29T19:38:31


首先我们知道pro岛有sql那么先复习一下

getDataStorage是创建表格

表格.set 是 创建云变量 get是获取云变量 其他的就不用了[]

注意一下 萌新作品 过久不处理会 卡逝

let ADMIN = ['Mr-Wolf','音符魔狼']//可以查看意见的玩家名
let WRITE_LENGTH = 60//可以输入字数

void async function () {
    globalThis.Mailbox = storage.getDataStorage('mailbox')//创建云存档
    if (!await Mailbox.get('record')) {//是否有创建云表格
        await Mailbox.set('record', [])//没有就创建
    }
    globalThis.record = await Mailbox.get('record')//获取
    globalThis.writeData = record.value//这里用了一个本办法[]具体原因看结尾
}()

let NPC = world.querySelector('#邮箱')//互动的模型
NPC.enableInteract = 1//可以互动
NPC.interactRadius = 5//互动空间为5
NPC.interactHint = '邮箱'//互动名称为"邮箱"
NPC.onInteract(async ({ entity: e }) => {//开始互动
    let sel = await e.dlgSel(null, '邮箱', ADMIN.includes(e.player.name) ? ['写意见', '查看意见'] : ['写意见'])
    if (sel) {
        let v = sel.value
        if (v === '写意见') {
            let sel0 = await e.dlgInput(v, '请用简洁的话语概括一下\n字数小于' + WRITE_LENGTH + '字')
            if (sel0) {
                if (sel0.length > WRITE_LENGTH) return await e.dlgMsg(v, '字数过多')
                try {
                    writeData.unshift({ userId: e.player.userId, name: e.player.name, text: sel0 })//向表格添加参数
                    await Mailbox.update('record', (preData) => { return writeData })//改变云表格量为表格
                    await e.dlgMsg(v, '上传成功qwq\n欢迎再次评论')
                } catch (qwq) {
                    await e.dlgMsg(v, '上传失败/(ㄒoㄒ)/~~\n请稍后重试')//可能会因服务器原因 卡逝
                }
            }
        } else if (v === '查看意见') {
            if (writeData.length <= 0) return await e.dlgMsg(v, '暂无意见')
            let options = Object.keys(record.value).map(i => { return record.value[i].name })//用map方法获取表格里面的东西
            let sel0 = await e.dlgSel(v, '一共' + options.length + '跳意见', options)
            if (sel0) {
                let title = writeData[sel0.index]//获取
                let sel1 = await e.dlgSel(v, title.text, ['删除'])//显示内容
                if (sel1) {
                    writeData.remove(title)//删除
                    await Mailbox.update('record', (preData) => { return writeData })//改变云表格量为表格
                    await e.dlgMsg(v, '删除成功')
                }
            }
        }
    }
})
//这里是定义的一些东西[] 代码师应 该都看的懂
Array.prototype.remove = function (ele) {
    if (!this.includes(ele)) return null;
    else return this.splice(this.indexOf(ele), 1)
}
GameEntity.prototype.dlgMsg = async function (title, content, hasArrow) {
    let sel = await this.player.dialog({
        type: 'text',
        title,
        content,
        hasArrow,
    })
    return sel
}
GameEntity.prototype.dlgInput = async function (title, content) {
    let sel = await this.player.dialog({
        type: 'input',
        title,
    return sel
}
GameEntity.prototype.dlgSel = async function (title, content, options) {
    let sel = await this.player.dialog({
        type: 'select',
        title,
        content,
        content,
    })
        options,
    })
    return sel || ''
}

这里向大佬请教一下[]为啥我往云存档内插入信息

查看云存档,结果显示两个信息 是相同的

还有为啥我用数字当云存档插入的那个名字(key)为啥会有那么多bug[]比如使用remove方法[]remove了个寂寞qwq[]

我也尝试用JSON.stringify Number 等但还是没有达到效果[]求大佬分析qwq


回复

上一页1 页 / 共 1下一页
MR_WolfMR_Wolf

沙发qwq

点赞0


评论


追梦ez追梦ez

对了,我弄信息的时候也遇到过你这种情况,联名求教)

点赞0


评论


MR_WolfMR_Wolf

先点赞 后copy[]qwq

点赞0


评论