猫史档案馆


[box3]为什么Gitbook里的代码会报错?

用户:化石茄子的铁镐化石茄子的铁镐查看:2 回复:4 评论:2 创建时间:2021-08-16T08:25:40


如题,

以下代码完全选自Gitbook:

console.clear()

/// 创建表
async function createTable() {
    await db.sql`CREATE TABLE IF NOT EXISTS playerlogin (
        name VARCHAR(50) NOT NULL,
        jointime REAL NOT NULL,
        leavetime REAL
    )`
}

// 第一次进入游戏时,新建玩家数据
async function insertPlayer(name, join, leave = 0) {
    try {
        await db.sql`INSERT INTO playerlogin VALUES (${name}, ${join}, ${leave})`;
    } catch (e) {
        console.log(`insert sql error: ${e}`) ;
    }
}

// 更新玩家进入游戏时间
async function updatePlayerJoin(name, value) {
    try {
        await db.sql`UPDATE playerlogin SET jointime = ${value} WHERE name = ${name}`; 
    } catch (e) {
        console.log(`[jointime] update sql error: ${e}`) ;
    }
}

// 更新玩家离开游戏时间
async function updatePlayerLeave(name, value) {
    try {
        await db.sql`UPDATE playerlogin SET leavetime = ${value} WHERE name = ${name}`; 
    } catch (e) {
        console.log(`[leavetime] update sql error: ${e}`) ;
    }
}

// 查询数据。如果数据不存在,返回空。
async function getPlayerData(name) {
    const rows =  await db.sql`SELECT * FROM playerlogin WHERE name=${name}`;

    if (rows && !rows.length) {
        return null;
    }

    return rows[0];
}

// 清空所有数据
async function clearLoginRecord () {
    await db.sql`DELETE FROM playerlogin`
    world.say(`清空所有登陆数据!`);
}

//-------------------------------------------------------
// 玩家进入游戏

world.onPlayerJoin( async ({entity}) => {

    const now = new Date().valueOf();    // 获取真实世界的时间戳 timestamp
    const playerData = await getPlayerData(entity.player.name);    // 获取上次登录记录

    // 如果数据不存在,说明时第一次进入游戏
    if (playerData === null) {
        insertPlayer(entity.player.name, now); // 插入玩家数据
        world.say(`${entity.player.name} 第一次进入游戏。`);
    } else {
        updatePlayerJoin(entity.player.name, now); // 更新玩家进入游戏时间
        const leaveTime = (now - playerData.leavetime) / 1000;
        entity.player.directMessage(`${entity.player.name} 距离上次登录经过了 ${leaveTime.toFixed(2)} 秒`);
    }

});

// 玩家离开游戏
world.onPlayerLeave( async ({entity}) => {
    const now = new Date().valueOf();
    updatePlayerLeave(entity.player.name, now)
});

原链接:https://   docs.box3.codemao.cn/ box3database. html 

的示例代码2

自行去空格


回复

上一页1 页 / 共 1下一页
化石茄子的铁镐化石茄子的铁镐

求大佬帮忙

点赞0


评论


化石茄子的铁镐化石茄子的铁镐

 ddd

点赞0


评论


七式草莓七式草莓

PGSQL??

点赞1


评论


星星上的雪花星星上的雪花

你再加上这个试试?

createTable();

点赞1


评论