
Lv.1
Box3ID:XiaoLi
签名:目前制作Box3作品:哔哩大陆 链接:https://box3.codemao.cn/g/278811
在 跑酷激光教程 中回复
没有用world.raycast吗,倒腾跑酷激光的时候想到world.raycast是不是可以用,然后world.raycast的方向搞不准,searchbox是不是会不精确呢?
2022-05-08T09:35:59 点赞:1
在 这段代码为什么会报错? 中回复
你这种实现方式很笨,但是有这种编程思想还是可以的
岛三有更好的api去实现检测发送的文字: world.onChat
更好的实现:
world.onChat(async(entity,message) => {
if(entity.player.name === '老李头13zl'){
if(message == '拉人进小黑屋'){
entity.player.dialog({
type: Box3DialogType.TEXT,
content: `1`,
})
}
}
})2022-11-26T09:08:51 点赞:1
在 ()求助各位大佬((sql模板如何做排行榜( 中回复
console.clear();
const PlayerData = {
money: [0, true],
lv: [1, true],
item: [[], true],
test: ['yee', false]
};
(async () => {
await db.sql`
CREATE TABLE IF NOT EXISTS YJZTX (
datas TEXT NOT NULL,
userKey CHAR(16) PRIMARY KEY UNIQUE NOT NULL
)
`
})();
function initPlayer(entity) {
for (let i in PlayerData) {
entity[i] = PlayerData[i][0]
}
};
function getPlayerData(entity) {
var data = { "name": entity.player.name };
for (let i in PlayerData) {
PlayerData[i][1] ? data[i] = entity[i] : null
};
return JSON.stringify(data);
};
async function savePlayer(entity) {
if (!entity.player.userKey) return;
await db.sql`
INSERT INTO YJZTX (
datas,
userKey
)
VALUES (
${getPlayerData(entity)},
${entity.player.userKey}
)
ON CONFLICT(userKey)
DO UPDATE SET
datas = excluded.datas
`
};
async function loadPlayer(entity) {
const [data] = await db.sql`SELECT * FROM YJZTX WHERE userKey = ${entity.player.userKey} LIMIT 1`;
if (data) {
var Data = JSON.parse(data.datas);
for (let i in PlayerData) {
Data[i] ? entity[i] = Data[i] : entity[i] = PlayerData[i][0]
};
} else {
initPlayer(entity);
}
};
async function getTop100(type, typeName) {
var list = [];
for await (const row of await db.sql`SELECT * FROM YJZTX`) {
list.push([JSON.parse(row.datas).name, JSON.parse(row.datas)[type]])
};
var sortedPlayers = list.sort((a, b) => b[1] - a[1]);
for (let i = 0; i <= 100; i++) {
if (sortedPlayers[i]) {
sortedPlayers[i] = [`第${i+1}名 | ${sortedPlayers[i][0]} | ${sortedPlayers[i][1]}${typeName}${type}`]
}
}
return sortedPlayers
}
async function deletePlayer(entity) {
await db.sql`DELETE FROM YJZTX WHERE "userKey" = ${entity.player.userKey}`;
};
world.onPlayerJoin(async ({ entity }) => {
await loadPlayer(entity);
await savePlayer(entity)
await getTop100('money', '枚')
});
world.onPlayerLeave(async ({ entity }) => {
await savePlayer(entity)
})2023-03-25T14:33:28 点赞:0