
Lv.1
签名:一枚被封藏在历史中的屑?
在 【box3】代码岛数据库---稿件征集! 中回复
名称:sql模板
类型:代码(.js)
代码:
async function createTable() {
await db.sql`
CREATE TABLE IF NOT EXISTS players (
userName varchar(50),
money INTEGER DEFAULT 0
)
`;
}; (async function () { createTable() })()
async function savePlayer(entity) {//定义保存玩家状态的函数
if (entity.player.userKey) {//拥有userKey的玩家, 则玩家不是游客, 可以保存
await db.sql`
--尝试向player表插⼊⼀条记录, 向各个字段写⼊玩家身上对应的属性值
INSERT INTO players (
userName,
money
)
VALUES(
${entity.player.name},
${entity.money}
)
ON CONFLICT(userKey)--如果玩家记录已经存在, 则不需要插⼊, ⽽是更新各个字段的值
DO UPDATE SET
userName=excluded.userName,
money=excluded.money
`
}
}
//players
async function showPlayers() {
const playerList = await db.sql`SELECT * FROM players`
for (const p of playerList) {
console.log(JSON.stringify(p))
}
}
async function loadPlayer(entity) {
const data = (await (db.sql`SELECT * FROM players WHERE userKey=${entity.player.userKey} limit 1`))[0]
if (data) { //如果存在这个玩家的存档
entity.money = data.money
}
}
async function showPlayers() {
console.clear() // 清空控制台
const playerList = await db.sql`SELECT * FROM players`
for (const p of playerList) {
console.log(JSON.stringify(p))
}
}
world.onPlayerJoin(({ entity }) => {
if ((await(db.sql`SELECT * FROM players WHERE userKey=${entity.player.userKey} limit 1`))[0] == null) {
entity.money = 100
await savePlayer(entity)
} else {
await loadPlayer(entity)
}
})
world.onPlayerLeave(({ entity }) => {
savePlayer(entity)
})
//模板--怎么回事啊提供2021-07-19T20:26:25 点赞:1