猫史档案馆


我要SQL存档的代码

用户:烨烨小栗子烨烨小栗子查看:7 回复:4 评论:7 创建时间:2022-03-26T18:39:47


imgsrc="http://img.t喵t4/appstyle/expression/ext/normal/6e/shamea_thumb.gif"alt="emotion_害羞"


回复

上一页1 页 / 共 1下一页
小萝卜cXsQ小萝卜cXsQ

我也想要

点赞0


评论


BOTPLAYBOTPLAY

我也想要,你给我吗?

点赞0


评论


十殿阎王十殿阎王

az,什么存档啊

 

点赞0


评论


十殿阎王十殿阎王

// 创建玩家数据表
(async function () {
    await db.sql`
        CREATE TABLE IF NOT EXISTS players (
            coin INTEGER NOT NULL,
            exp INTEGER NOT NULL,
            userKey TEXT PRIMARY KEY UNIQUE NOT NULL
        )
    `
})();


// 保存玩家数据
async function saveData(entity) {
    if (entity.player.userKey) {
        await db.sql`
            INSERT INTO players (
                coin,
                exp,
                userKey
            )
            VALUES (
                ${entity.coin},
                ${entity.exp},
                ${entity.player.userKey}
            )
            ON CONFLICT(userKey)
            DO UPDATE SET
            coin = excluded.coin,
            exp = excluded.exp,
            userKey = excluded.userKey
        `
    }
}
world.onPlayerLeave(async ({ entity }) => {    //玩家离开游戏后保存
    try {
        await saveData(entity);
    } catch (error) {
        world.say(`SQL ERROR: ${error}`)
        console.error(`SQL ERROR: ${error}`);
    }
});

// 玩家数据读取
async function loadData(entity) {
    const data = (
        await (
            db.sql`
                SELECT * FROM players WHERE userKey = ${entity.player.userKey} limit 1
            `
        )
    )[0];
    if (data) {
        try {
            entity.coin = data.coin;
            entity.exp = data.exp;
            entity.player.directMessage('已读取数据');
        } catch (error) {
            world.say(`SQL ERROR: ${error}`)
            console.error(`SQL ERROR: ${error}`);
        }
    } else {
        // entity.player.directMessage('你目前还没有数据,已帮你创建');
        world.say('热烈欢迎'+ entity.player.name + " 第一次来到地图!")
    }
}


world.onPlayerJoin(async ({ entity }) => {
    
    try {
        await loadData(entity);    // 导入玩家数据
        await saveData(entity);    // 保存玩家数据
    } catch (error) {
        world.say(`SQL ERROR: ${error}`)    // 聊天区报错
        console.error(`SQL ERROR: ${error}`);    // 控制台报错
    }
    try {
        await createTables()    // 创建排行榜
    }
    catch (error) {
        world.say(`SQL ERROR: ${error}`)    // 聊天区报错
        console.error(`SQL ERROR: ${error}`);    // 控制台报错
    }
})

有个前提啊:

world.onPlayerJoin({(entity)} =>{
    entity.coin = 0
    entity.exp = 0
})
//金币(coin)和经验(exp)怎么获得你自己定义吧

点赞0


评论