猫史档案馆


【新手教程】如何弹出对话框,大佬勿入……

用户:坦率的血翼蝠5801坦率的血翼蝠5801查看:9 回复:10 评论:9 创建时间:2022-04-17T13:05:18


首先我们先得知道对话框该怎么写:

await entity.player.dialog({
    type: Box3DialogType.对话框类型大写,
    title: `标题`,
    content: `文本`,
})

而await应该在async里面,所以应该加上async。

例:

world.onPlayerJoin(async({entity}) => {
    const hi = await entity.player.dialog({
        type: Box3DialogType.TEXT,
        title: `作者`,
        content: `欢迎来到这个地图!`,
    })
})

而如果是一个选项框的话就是SELECT,且要加一个options

world.onPlayerJoin(async({entity}) => {
    const hi = await entity.player.dialog({
        type: Box3DialogType.SELECT,
        title: `作者`,
        content: `欢迎来到这个地图!`,
        options: ['谢谢您的好意','我要抢劫你']
    })
})

但是只有选择,怎么检测玩家选的是哪个呢?可以用switch语句

switch(hi.index){
    case 0:
        // 当玩家选择了谢谢
        entity.player.directMessage('不客气哦~')
        break;
    case 1:
        // 当玩家想要抢劫作者
        entity.player.kick() // 踢出玩家
        world.say(entity.player.name + '因想抢劫作者而被踢出了地图')
        break;
    default:
}

完整代码:

world.onPlayerJoin(async({entity}) => {
    const hi = await entity.player.dialog({
        type: Box3DialogType.SELECT,
        title: `作者`,
        content: `欢迎来到这个地图!`,
        options: ['谢谢您的好意','我要抢劫你']
    })
    switch(hi.index){
        case 0:
            // 当玩家选择了谢谢
            entity.player.directMessage('不客气哦~')
            break;
        case 1:
            // 当玩家想要抢劫作者
            entity.player.kick() // 踢出玩家
            world.say(entity.player.name + '因想抢劫作者而被踢出了地图')
            break;
        default:
    }
})

 

 

 


回复

上一页1 页 / 共 1下一页
灵清帝王吃爆一切厕所灵清帝王吃爆一切厕所

不一定要用switch吧()

也可以用if(hi.value == '谢谢您的好意!')

点赞1


评论


坦率的血翼蝠5801坦率的血翼蝠5801

对话框类型见https://docs.box3.codemao.cn/box3dialogtype.html

点赞0


评论


坦率的血翼蝠5801坦率的血翼蝠5801

简易了0.00001点的

world.onPlayerJoin(async({entity}) => {
    c喵t hi = await entity.player.dialog({
        type: 'select',
        title: `作者`,
        content: `欢迎来到这个地图!`,
        opti喵: ['谢谢您的好意','我要抢劫你']
    })
    switch(hi.index){
        case 0:
            // 当玩家选择了谢谢
            entity.player.directMessage('不客气哦~')
            break;
        case 1:
            // 当玩家想要抢劫作者
            entity.player.kick() // 踢出玩家
            world.say(entity.player.name + '因想抢劫作者而被踢出了地图')
            break;
        default:
    }
})

点赞0


评论


坦率的血翼蝠5801坦率的血翼蝠5801

效果见https://box3.codemao.cn/e/8d3d21be066710bc4ae6

点赞0


评论


治愈绾兮治愈绾兮

第一个代码片段错了……

点赞0


评论


YLG_個YLG_個

那如果我点空白,就会报错,所以要加上:

   if(!result || result === null){ //如果玩家点击空白位置
        entity.player.directMessage('放弃');
        return; 
    }

点赞1


评论


坦率的血翼蝠5801坦率的血翼蝠5801

谢谢YLG的提醒,要加一句

if (!hi || hi == null) return;

点赞1


评论


堂主の犬堂主の犬

感觉这串代码更简单:

if(hi){
    if(hi.index === 0){
        entity.directMessage('不客气哦~')
    }
    if(hi.index === 1){
        entity.player.kick()
        world.say(`${entity.player.name}因想抢劫作者而被踢出了地图`)
    }
}

点赞1


评论


BZIClawLYNEYBZIClawLYNEY

鼓掌!

点赞0


评论


小星原小星原

好气人哟

点赞0


评论