用户:DTS书贝贝查看:11 回复:8 评论:11 创建时间:2021-12-19T15:02:54
let a={} a.chiyou='无' a.gongju='无' async function deleteUser(user) {//删除玩家存档 await db.sql`DELETE FROM "player" WHERE "userKey"=${user.player.userKey}` } world.onPlayerJoin(({ entity }) => { entity.player.cameraMode = 'fps';
console.log('setting camera mode:', entity.player.cameraMode); }); a.n=0 async function loadUser(user) {//玩家读档 const [data] = await db.sql`SELECT * FROM "player" WHERE "userKey"=${user.player.userKey} LIMIT 1` if (data) {//如果这个玩家已经有存档 user.cao = data.cao user.shu = data.shu user.muban = data.muban user.gen = data.gen user.gongzuo = data.gongzuo user.shitou = data.shitou user.chanzi = data.chanzi user.chanzinianjiou = data.chanzinianjiou user.mufu = data.mufu user.mufunianjiou = data.mufunianjiou user.mugao = data.mugao user.mugaonianjiou = data.mugaonianjiou user.shigao = data.shigao user.shigaonianjiou = data.shigaonianjiou user.shifunianjiou = data.shifunianjiou user.shifu = data.shifu user.shichan = data.shichan user.shichannianjiou = data.shichannianjiou user.meitan = data.meitan user.huoba = data.huoba user.tiefangkuai = data.tiefangkuai user.tieding = data.tieding user.ronglu = data.ronglu user.item = JSON.parse(data.item) } else {//玩家无存档 saveUser(user) } } async function saveUser(user) {//玩家存档 await db.sql` INSERT INTO "player" ( "cao", "shu", "muban", "gen", "gongzuo", "shitou", "chanzi", "chanzinianjiou", "mufu", "mufunianjiou", "mugao", "mugaonianjiou", "shifu", "shifunianjiou", "shigao", "shigaonianjiou", "shichan", "shichannianjiou", "meitan", "huoba", "tiefangkuai", "tieding", "ronglu", "item", "userKey" ) VALUES ( ${user.cao}, ${user.shu}, ${user.muban}, ${user.gen}, ${user.gongzuo}, ${user.shitou}, ${user.chanzi}, ${user.chanzinianjiou}, ${user.mufu}, ${user.mufunianjiou}, ${user.mugao}, ${user.mugaonianjiou}, ${user.shifu}, ${user.shifunianjiou}, ${user.shigao}, ${user.shigaonianjiou}, ${user.shichan}, ${user.shichannianjiou}, ${user.meitan}, ${user.huoba}, ${user.tiefangkuai}, ${user.tieding}, ${user.ronglu}, ${JSON.stringify(user.item)}, ${user.player.userKey} ) ON CONFLICT("userKey") DO UPDATE SET "cao"=excluded."cao", "shu"=excluded."shu", "muban"=excluded."muban", "gen"=excluded."gen", "gongzuo"=excluded."gongzuo", "shitou"=excluded."shitou", "chanzi"=excluded."chanzi", "chanzinianjiou"=excluded."chanzinianjiou", "mufu"=excluded."mufu", "mufunianjiou"=excluded."mufunianjiou", "mugao"=excluded."mugao", "mugaonianjiou"=excluded."mugaonianjiou", "shichan"=excluded."shichan", "shichannianjiou"=excluded."shichannianjiou", "shifu"=excluded."shifu", "shifunianjiou"=excluded."shifunianjiou", "shigao"=excluded."shigao", "shigaonianjiou"=excluded."shigaonianjiou", "shichan"=excluded."shichan", "shichannianjiou"=excluded."shichannianjiou", "meitan"=excluded."meitan", "huoba"=excluded."huoba", "tiefangkuai"=excluded."tiefangkuai", "tieding"=excluded."tieding", "ronglu"=excluded."ronglu", "item"=excluded."item" ` } async function initTable() {//创建玩家数据表 return await db.sql` CREATE TABLE IF NOT EXISTS "player" ( "cao" INTEGER NOT NULL, "shu" INTEGER NOT NULL, "muban" INTEGER NOT NULL, "gen" INTEGER NOT NULL, "gongzuo" INTEGER NOT NULL, "shitou" INTEGER NOT NULL, "chanzi" INTEGER NOT NULL, "chanzinianjiou" INTEGER NOT NULL, "mufu" INTEGER NOT NULL, "mufunianjiou" INTEGER NOT NULL, "mugao" INTEGER NOT NULL, "mugaonianjiou" INTEGER NOT NULL, "shichan" INTEGER NOT NULL, "shichannianjiou" INTEGER NOT NULL, "shifu" INTEGER NOT NULL, "shifunianjiou" INTEGER NOT NULL, "shigao" INTEGER NOT NULL, "shigaonianjiou" INTEGER NOT NULL, "meitan" INTEGER NOT NULL, "huoba" INTEGER NOT NULL, "tiefangkuai" INTEGER NOT NULL, "tieding" INTEGER NOT NULL, "ronglu" INTEGER NOT NULL, "item" TEXT NOT NULL, "userKey" CHAR(16) PRIMARY KEY UNIQUE NOT NULL ) `; } async function poll(fn, msg) {//无限轮询执行sql语句直到成功 while (true) { try { return await fn()//一旦成功执行, 停止无限轮询, 并返回查询结果 } catch (e) { const m = e.message//需要简略显示的异常消息 //sql偶尔会执行超时, 但如果反复显示timeout 15秒以上一直不停, 大概是数据库出了故障只能等官方修复 if (m.includes('timeout')) { world.say(m) } else { world.say(msg || e.stack)//如果sql执行出错, 广播错误消息, 用来排查错误原因 } } await sleep(2000) //每2秒重试一次 } } poll(initTable, '等待pg数据库启动中...') world.onPlayerJoin(async ({ entity }) => { entity.cao = 0 entity.shu = 0 entity.muban = 0 entity.gen = 0 entity.gongzuo = 0 entity.shitou = 0 entity.mugao = 0 entity.mugaonianjiou = 0 entity.mufu = 0 entity.mufunianjiou = 0 entity.chanzi = 0 entity.chanzinianjiou = 0 entity.shichan = 0 entity.shichannianjiou = 0 entity.shifu= 0 entity.shifunianjiou = 0 entity.shigao = 0 entity.shigaonianjiou = 0 entity.meitan=0 entity.huoba=0 entity.tiefangkuai=0 entity.tieding=0 entity.ronglu=0 entity.item = ['剑', '盾'] await loadUser(entity) if(entity.chanzi==0){ entity.chanzinianjiou=20 } if(entity.mufu==0){ entity.mufunianjiou=20 } if(entity.mugao==0){ entity.mugaonianjiou=20 } if(entity.shifu==0){ entity.shifunianjiou=60 } if(entity.shigao==0){ entity.shigaonianjiou=60 } if(entity.shichan==0){ entity.shichannianjiou=60 } }); 报错: SQLITE_ERROR:no such table:player at QueryWrapper.drainDone( 求助!!