猫史档案馆


如何做离开地图以后下一次进入地图还是在那个地方出身

用户:倔强的铁奥13284708倔强的铁奥13284708查看:12 回复:5 评论:12 创建时间:2021-07-01T13:06:30


天起大路那样

五个赞或者是各方面的关注

 


回复

上一页1 页 / 共 1下一页
神兽喵神兽喵

要用SQL存档

点赞0


评论


凌cloud凌cloud

可以设置出生点,你每次做完地图后在场景里设置一下出生点就行了

点赞0


评论


SHEL深空无尽SHEL深空无尽

在地面每一个方块上都放上一个存档点模型,然后输入SQL云存档跑酷代码

点赞0


评论


指令者指令者

//创造SQL表格
db.sql`CREATE TABLE IF NOT EXISTS leaderboard(
    id VARCHAR(500) PRIMARY KEY UNIQUE NOT NULL,
    x REAL NOT NULL,
    y REAL NOT NULL,
    z REAL NOT NULL,
)`
const joinPosition = new Box3Vector3(128,55,128);//设置玩家出生点
world.onPlayerJoin(async({entity})=>{
    const rows =  await db.sql`SELECT * FROM leaderboard WHERE id = ${entity.player.boxId}`;//判断玩家数据是否为空
    if(rows && !rows.length){//如果玩家没有数据
        entity.position = joinPosition;//将玩家移动到出生点
        await db.sql`INSERT INTO leaderboard(id,x,y,z) VALUES (${entity.player.boxId},${joinPosition.x},${joinPosition.y},${joinPosition.z})`;//初始位置
    }else{//否则
        const id = entity.player.boxId;
        for await(const row of db.sql`SELECT * FROM leaderboard WHERE id = ${id} ORDER BY x ASC LIMIT 1`){//查找玩家数据
            var x = row.x;
        }
        for await(const row of db.sql`SELECT * FROM leaderboard WHERE id = ${id} ORDER BY y ASC LIMIT 1`){//查找玩家数据
            var y = row.y;
        }
        for await(const row of db.sql`SELECT * FROM leaderboard WHERE id = ${id} ORDER BY z ASC LIMIT 1`){//查找玩家数据
            var z = row.z;
        }
        entity.position.set(x,y,z);//将玩家移动到数据点
    }
})
world.onPlayerLeave(({entity})=>{
    db.sql`UPDATE leaderboard SET x = ${entity.position.x} WHERE id = ${entity.player.boxId}`; 
    db.sql`UPDATE leaderboard SET y = ${entity.position.y} WHERE id = ${entity.player.boxId}`; 
    db.sql`UPDATE leaderboard SET z = ${entity.position.z} WHERE id = ${entity.player.boxId}`; 
})

点赞2


评论


倔强的铁奥13284708倔强的铁奥13284708

 

//创造SQL表格
db.sql`CREATE TABLE IF NOT EXISTS leaderboard(
    id VARCHAR(500) PRIMARY KEY UNIQUE NOT NULL,
    x REAL NOT NULL,
    y REAL NOT NULL,
    z REAL NOT NULL,
)`
const joinPosition = new Box3Vector3(119,17,2);//设置玩家出生点
world.onPlayerJoin(async({entity})=>{
    const rows =  await db.sql`SELECT * FROM leaderboard WHERE id = ${entity.player.boxId}`;//判断玩家数据是否为空
    if(rows && !rows.length){//如果玩家没有数据
        entity.position = joinPosition;//将玩家移动到出生点
        await db.sql`INSERT INTO leaderboard(id,x,y,z) VALUES (${entity.player.boxId},${joinPosition.x},${joinPosition.y},${joinPosition.z})`;//初始位置
    }else{//否则
        const id = entity.player.boxId;
        for await(const row of db.sql`SELECT * FROM leaderboard WHERE id = ${id} ORDER BY x ASC LIMIT 1`){//查找玩家数据
            var x = row.x;
        }
        for await(const row of db.sql`SELECT * FROM leaderboard WHERE id = ${id} ORDER BY y ASC LIMIT 1`){//查找玩家数据
            var y = row.y;
        }
        for await(const row of db.sql`SELECT * FROM leaderboard WHERE id = ${id} ORDER BY z ASC LIMIT 1`){//查找玩家数据
            var z = row.z;
        }
        entity.position.set(x,y,z);//将玩家移动到数据点
    }
})
world.onPlayerLeave(({entity})=>{
    db.sql`UPDATE leaderboard SET x = ${entity.position.x} WHERE id = ${entity.player.boxId}`; 
    db.sql`UPDATE leaderboard SET y = ${entity.position.y} WHERE id = ${entity.player.boxId}`; 
    db.sql`UPDATE leaderboard SET z = ${entity.position.z} WHERE id = ${entity.player.boxId}`; 
})//这玩意儿不行啊@指令者

点赞0


评论