用户:
不知道该叫啥的一只萌新查看:3 回复:7 评论:3 创建时间:2021-05-21T17:22:19
world.onChat(({ entity, message }) => {
if (entity&&entity.isPlayer) {
if(entity&&Admin.indexOf(entity.player.name)!=-1&&message.charAt(0)=='$'){
try{
world.say('<~ '+eval(message.split('$')[1]))}catch(err){
world.say('Error:'+err)
}
};
}
})
const Admin=['MX的一只萌新','萧弦-永远的屑']
async function createTables() {
await db.sql`CREATE TABLE IF NOT EXISTS board (
title VARCHAR(50) NOT NULL,
tips TEXT NOT NULL,
tips_number TEXT NOT NUlL,
tips_name text NOT NULL,
creatkey TEXT NOT NULL ,
name TEXT NOT NULL
)`
}
(async function() {
await createTables()
console.clear()
//await db.sql`drop table board`
}());
async function insertRecord(title,tips,tips_number,key,name,tips_name) {
try{
await db.sql`
INSERT INTO board (
title,
tips,
tips_number,
tips_name,
creatkey,
name
)
VALUES (
${title},
${JSON.stringify(tips)},
${JSON.stringify(tips_number)},
${JSON.stringify(tips_name)},
${key},
${name}
)
`;
} catch (e) {
console.error(`insert sql error: ${e}`) ;
}
}
async function updata(title,tips_number,key,name) {
try {
await db.sql`UPDATE board SET
tips_number=${JSON.stringify(tips_number)},
tips_name=${JSON.stringify(name)}
WHERE title = ${title} and creatkey=${key}`;
} catch (e) {
console.error(`update sql error: ${e}`) ;
}
}
async function remove(title,key){
await db.sql`DELETE FROM board WHERE creatKey=${key} and title=${title}`
world.say(`管喵删除了userKey为${key}的投票`)
}
world.onPlayerJoin(async({entity})=>{
if(entity.player.boxId===null){return;}
world.createEntity({
mesh:'mesh/球.vb',
id:entity.player.boxId,
position:entity.position,
enableInteract:true,
interactRadius:5,
})
world.querySelectorAll('#'+entity.player.boxId).forEach(async(b)=>{
b.addTag('玩家背包')
b.ps=entity
b.meshInvisible=true;
b.collides=false
b.gravity=false
b.onInteract(async({entity:user,targetEntity})=>{
var re=await user.player.dialog({
type:Box3DialogType.SELECT,
title:`投票插件`,
content:'请选择:',
options:[
'创造投票',
'查看现有的投票',
'删除投票(管喵专享)'
],
})
if(!re||re===null){return;}
if(re.index==0){
var title=await user.player.dialog({
type:Box3DialogType.INPUT,
title:`投票插件`,
content:'请输入投票标题:',
})
if(!title||title==null){return}
var opction=await user.player.dialog({
type:Box3DialogType.INPUT,
title:`投票插件`,
content:'请输入选项 多个请用中文逗号(,)隔开:',
})
if(!opction||opction==null){return}
var numbers=[]
var name=[]
for(let i=0;i<opction.split(',').length;i++){
numbers.push(0)
}
insertRecord(title,opction.split(','),numbers,entity.player.userKey,entity.player.name,[])
console.log(entity.player.userKey)
}else if(re.index==1){
var opction=[]
var data=await db.sql`SELECT * from board`
for(let i=0;i<data.length;i++){
opction.push(`${data[i].name}的投票 ${data[i].title}`)
}
var re=await user.player.dialog({
type:Box3DialogType.SELECT,
title:`投票插件`,
content:'点击查看详情或投票:',
options:opction
})
if(!re||re==null){return}
opction=[]
for(let i=0;i<JSON.parse(data[re.index].tips).length;i++){
opction.push(`${JSON.parse(data[re.index].tips)[i]} ${JSON.parse(data[re.index].tips_number)[i]}人投了它`)
}
var text=await user.player.dialog({
type:Box3DialogType.SELECT,
title:`${data[re.index].title}`,
content:`创造人:${data[re.index].name}\n创造人UserKey:${data[re.index].creatkey}\n选项:`,
options:opction
})
var name=JSON.parse(data[re.index].tips_name)
console.log(name)
if(name.includes(entity.player.name)){
entity.player.dialog({
type:Box3DialogType.TEXT,
title:'投票系统',
content:'你已经投过票了!'
})
return
}
if(!text||text==null){return}
var numbers=JSON.parse(data[re.index].tips_number)
console.log(Object.keys(data[re.index]))
var name=JSON.parse(data[re.index].tips_name)
console.log(name)
numbers[text.index]++;
name.push(entity.player.name)
updata(data[re.index].title,numbers,data[re.index].creatkey,name)
}else if(re.index==2){
if(!Admin.includes(entity.player.name)){return}
var opction=[]
var data=await db.sql`SELECT * from board`
for(let i=0;i<data.length;i++){
opction.push(`${data[i].name}的投票 ${data[i].title}`)
}
var re=await user.player.dialog({
type:Box3DialogType.SELECT,
title:`投票插件`,
content:'点击删除:',
options:opction
})
if(!re||re==null){return}
console.log(data[re.index].creatkey)
remove(data[re.index].title,data[re.index].creatkey)
}
})
})
})
setInterval(() => {
world.querySelectorAll('.玩家背包').forEach(async(b)=>{
const pl=b.ps
b.position.set(b.ps.position.x,b.ps.position.y,b.ps.position.z)
})
},1);