猫史档案馆


【Box3超级干货帖】输入玩家姓名将其关监狱功能怎么做!

用户:Alex79Alex79查看:30 回复:33 评论:30 创建时间:2020-05-10T22:57:08


hello!我是Alex79,Box3干货帖来喽~

今天的干货牵扯到一些算法哦~萌新如果看不懂就直接到最后白嫖代码吧!

今天咱们主要讲区输入命令,什么是命令呢,比如实现这样的效果:

关监狱Alex79

输入这行命令,就把我转移到监狱里了。

那咱们今天就讲讲怎么实现这个关监狱的效果:

首先,因为要取玩家说的话,onChat事件不能少

world.onChat(async ({entity,message})=>{

}});

然后随手判断说话的是否为玩家

if(entity.player){

}

然后判断是否为管喵(你总不会让任何一个人都有关监狱权限吧)

if(entity.player.name == "管喵名称"){

}
else{
    world.say("你不是管喵")
}

下面重点来啦啦啦!!!都注意啦啦啦!!!

咱们先要定义一个私有变量,来储存玩家输入的文字

entity.player.mess=message;

下面!才是划重点敲黑板的地方!

下面!咱们要用到一个函数,这个函数的作用是把一个字符串里的一些字符分离出来

 

函数介绍:

slice()函数

功能:arrayObject.slice(start,end)返回一个新的数组,包含从start到end(不包括该元素)的arrayobject中的元素。

start:必需填。指定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

end:可选。指定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

我这解释的够清楚了吧!

比如:

var str='abcdefghijk';
alert(str.slice(1,5))   //结果bcde

那么,知道我要干什么了吧,我要喵家的用户名从中分离出来,然后根据用户名将其玩家关监狱

var name = entity.player.mess.slice(3);

这行代码的意思就是定义了一个叫name的公有变量,然后喵家的私有变量的值(也就是玩家输入的内容)从中分离出要关监狱的玩家的名字

关监狱是三个字,那从第四个字开始到最后一个字就是分离出来的名字了这行代码就是这个意思。

下面的代码就简单了

world.querySelectorAll('player').forEach((x) => {
      if (x.player.name == name){
          x.position.x = 转移x坐标;
          x.position.y = 转移y坐标;
          x.position.z = 转移z坐标;
      }
})

这段代码过于简单,我不想讲了...

大佬一看就懂,萌新一脸懵逼

 

.......

算了,为了Box3的萌新发展,我还是讲一下吧

world.querySelectorAll('player').forEach((x) => {

})

这段代码的意思就是遍历循环地图中的所有玩家,并赋值给x

下面就该判断玩家的用户名了

if(x.player.name == name){

}

这段代码的意思就是判断x里存的玩家的名字是否为咱们刚才定义的变量name里的名字

然后转移

x.position.x = 转移x坐标;
x.position.y = 转移y坐标;
x.position.z = 转移z坐标;

这段程序就讲解完了,我讲的是不是很详细?如果觉得讲得好,在评论区扣emotion_编程猫_点赞或者666

下面完整代码白嫖时间到!萌新们可以把代码愉快的白喵,对了,里面的参数得改(大佬看到这里会说一声废话),否则会报错!

world.onChat(async ({entity,message})=>{
if(entity.player){
    if(entity.player.name == "管喵名称"){
        entity.player.mess=message;
        var name = entity.player.mess.slice(3);
        world.querySelectorAll('player').forEach((x) => {
            if (x.player.name == name){
                x.position.x = 转移x坐标;
                x.position.y = 转移y坐标;
                x.position.z = 转移z坐标;
            }
        })
    }
    else{
        world.say("你不是管喵")
    }
}});

如果有什么问题或疑惑,欢迎评论!!!


回复

上一页1 页 / 共 2下一页
猫悟淡猫悟淡

DD,大佬NB!

点赞0


评论


未命名用户015734未命名用户015734

emotion_编程猫_厉害了

点赞0


评论


魔以侵心魔以侵心

大师你中午有时间来吗

点赞0


评论


魔以侵心魔以侵心

有的话就12:30来我的地图

点赞0


评论


一个STUB用户_7273204一个STUB用户_7273204

点赞0


评论


Vicent轩Vicent轩

顶!谢谢大佬啦~

点赞0


评论


TobylaiTobylai

其实我会做mc的命令效果:

/kill Alex95

其实有个高级些的,叫做“split”

分成数组很开森

点赞0


评论


LXL孤仙LXL孤仙

nbnb

点赞0


评论


ZCH幻影深渊ZCH幻影深渊

emotion_编程猫_厉害了

点赞0


评论


两个小八路两个小八路

emotion_编程猫_厉害了

点赞0


评论


两个小八路两个小八路

怎么使用

点赞0


评论


亿只懒Ink亿只懒Ink

谢谢~

点赞0


评论


ZCH幻影深渊ZCH幻影深渊

https://box3create.codemao.cn/games/d1ff9016b1bcd613c142?p=R1Ne6fHJkxXwlK3DNZZ5BwLH8AnhuVRMqHMP2lXy%喵NA9PGyjagLgVndWVzdA%3D%3D

点赞0


评论


亿只懒Ink亿只懒Ink

顶顶

点赞0


评论


名字是什么a名字是什么a

大佬

点赞0


评论


暗淡苍穹暗淡苍穹

判断时候是玩家的是:

if(entity.isplayer){
   
}

点赞0


评论


名字是什么a名字是什么a

在吗emotion_编程猫_伤心

点赞0


评论


小玥玥小月月小玥玥小月月

咋出来

点赞0


评论


JerryLKJJerryLKJ

请问代码里面咋没有关监狱三个字?

点赞0


评论


JerryLKJJerryLKJ

早就会了

点赞0


评论


Ken李Ken李

大师

点赞0


评论


BCM墨水瓶BCM墨水瓶

那怎么输监狱啊

 

点赞0


评论


datacatdatacat

我提个建议,如果玩家输入:早上好xxx怎么办?

点赞0


评论


Chara_juechuief_sChara_juechuief_s

66666666666666666666666666666666666

点赞1


评论


治愈绾兮治愈绾兮

厉害

点赞0


评论


指令者指令者

如果有人输入:

早上好XXX

你好啊XXX

你在哪XXX

等怎么办

点赞0


评论


Chengxuyee_已退Chengxuyee_已退

太棒了!我正好想要slice函数!感谢此教程!!!emotion_编程猫_点赞emotion_编程猫_厉害了emotion_编程猫_加油

点赞0


评论


治愈绾兮治愈绾兮

world.onChat(({ entity, message }) => {
    if (message === '作者,我错了') {//对方输入后回到出生点
        entity.position.set(122,15,122)//出生点位置
    } else if (message === 'shrink') {
        entity.player.spawnPoint.set(122,15,122)
    }
})

点赞0


评论


Chengxuyee_已退Chengxuyee_已退

改良版:

var administrators = ['BCX编程中手']//可以继续往后加。

world.onChat(async ({entity,message})=>{
if(entity.player){
    if(administrators.includes(entity.player.name)){
        if(message[0] == '/'){
            entity.player.mess=message;
            var name = entity.player.mess.slice(2);
            if(administrators.includes(name)){
                entity.player.directMessage('不能将管喵封进监狱。')
            }else{
                world.querySelectorAll('player').forEach((x) => {
                    if (x.player.name == name){
                        x.position.x = 0;//可以改
                        x.position.y = 0;//可以改
                        x.position.z = 0;//可以改
                    }
                })
            }
        }
    }
}});

点赞0


评论


未名用户未名用户

挖坟

点赞2


评论