猫史档案馆


投票插件 代码公布!

用户:不知道该叫啥的一只萌新不知道该叫啥的一只萌新查看: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);


回复

上一页1 页 / 共 1下一页
科技改变时代科技改变时代

喵d

点赞0


评论


难起的名字难起的名字

沙发()

点赞0


评论


无尽深空无尽深空

没看懂?

点赞0


评论


禾Y禾Y

你好!

点赞0


评论


无尽深空无尽深空

连注释都不加的吗……

点赞0


评论


Architect_海绵Architect_海绵

可以()MX喵()

点赞0


评论


ssssSSSAssssSSSA

可以

点赞0


评论