猫史档案馆


【代码岛3.0科普贴】如何像城市空战里那样做跨时段的监狱?

用户:hecoshecos查看:18 回复:20 评论:18 创建时间:2020-04-29T17:19:19


这个嘛。。。不是很好解释

要解释的东西很多

主要靠大家自己体会吧。。。

话不多说,上代码:

function contains(arr,obj){//判断元素是否存在于某数组中
    var i=arr.length;
    while(i>=0){
        if(arr[i]===obj){
            return true;
        }
        i--;
    }
    return false;
}

function find(arr,obj){//查找数组中某个元素的下标
    var i=arr.length;
    while(i>=0){
        if(arr[i]===obj){
            return i;
        }
        i--;
    }
    return -1;
}

var in_jail=new Array();//监狱名单
var all_player_name=new Array();
var jail_count=0;

world.onPlayerJoin(({entity})=>{
    all_player_name.push(entity.player.name);
})

world.onChat(({message,entity})=>{
    if(message[0]==='进'&&message[1]==='监'&&message[2]==='狱'&&entity.player.name==='人工智能AI'){//名字可改
        var message_01=message;
        message_01=message_01.replace("进监狱 ","");//将前面的字删除,只留玩家名
        if(message_01==='人工智能AI'){//名字可改
            entity.player.directMessage('你不能使该玩家进入监狱,他是作者!');
            return;
        }
        if(contains(all_player_name,message_01)&&contains(in_jail,message_01)===false){
            in_jail.push(message_01);
            world.say(message_01+'已进入监狱!');
        } else{
            entity.player.directMessage('该玩家不存在!');
        }
    } 
    else if(message[0]==='出'&&message[1]==='监'&&message[2]==='狱'&&entity.player.name==='人工智能AI'){//名字可改
        var message_01=message;
        message_01=message_01.replace("出监狱 ","");//将前面的字删除,只留玩家名
        if(contains(in_jail,message_01)===false){
            entity.player.directMessage('该玩家不再监狱内!');
            return;
        }
        if(contains(all_player_name,message_01)){
            world.say(message_01+'出狱了!');
            world.querySelectorAll('player').forEach((e)=>{
                if(e.player.name===message_01){
                    e.position.set(喵,喵,喵);
                    in_jail.splice(find(in_jail,message_01),1);//将玩家名从监狱名单中删除
                }
            })
        } else{
            entity.player.directMessage('该玩家不存在!');
        }
    }
})

world.onTick(()=>{//跨时段监狱代码的主要部分
    jail_count++;
    if(jail_count>=250){
        world.querySelectorAll('player').forEach((e)=>{
            for(let i=0;i<=in_jail.length;i++){
                if(in_jail[i]===e.player.name){
                    e.position.set(123,10,123);//监狱位置,可改
                }
            }
        })
        jail_count=0;
    }
})


回复

上一页1 页 / 共 1下一页
D453D453

AI,能给我一张代码岛的图吗?

点赞0


评论


两个小八路两个小八路

谢谢emotion_编程猫_谢谢老板

点赞0


评论


DASKDASK

点赞0


评论


两个小八路两个小八路

用把人工智能ai改成我的名字吗??emotion_编程猫_嗨起来

点赞0


评论


Lonely_wandererLonely_wanderer

阔以啊

点赞0


评论


Lonely_wandererLonely_wanderer

还有,判断onchat的为啥要分开‘进监狱’这么麻烦??直接打上去字符串他不香吗??

点赞0


评论


神岛吉吉喵神岛吉吉喵

emotion_编程猫_紧张

点赞1


评论


两个小八路两个小八路

用把人工智能ai改成我的名字吗?

点赞0


评论


一笑置之_一笑置之_

怎么弄他进去呢

点赞0


评论


JerryLKJJerryLKJ

请问作者

把人放进地狱,是这样吗?

进监狱 邱俊瑞

点赞0


评论


高贵的木叶龙A35d高贵的木叶龙A35d

怎么输?进监狱XXX吗?

点赞0


评论


Ken李Ken李

点赞0


评论


666真是6666真是6

那请问要让人进监狱怎么输呢?

点赞0


评论


码精码精

大佬

点赞0


评论


Ken李Ken李

https://www.bilibili.com/video/BV17t4y1C7Go/
2

点赞0


评论


lon江航lon江航

考古

点赞0


评论


帅气的剑杰帅气的剑杰

啊!!!!!

点赞0


评论


q432q432

imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E7%B4%A7%E5%BC%A0.gif"alt="emotion_编程猫_紧张"

点赞0


评论


千星河凉月吖千星河凉月吖

呃呃呃

点赞0


评论


小电鼠vdc3小电鼠vdc3

挖封

点赞0


评论