猫史档案馆


本SHQ工作室成员专用

用户:高贵的木叶龙A35d高贵的木叶龙A35d查看:10 回复:21 评论:10 创建时间:2020-05-05T20:59:25


 

 

 

我们的投稿模板问题应该解决了,我们的模板作品太多了!必须得改!必须得改!喵神万变X室长和橘子喵副室长你们看到了吗?

前方纯属防止喵线,真正的好戏其实是我搜刮来的代码……emotion_雷电猴_捂嘴笑

//先给某个模型添加一个叫做【闪烁】的标签
//下面这个代码,是每1000毫秒闪烁一次
async function flashEntity (entity, count) {
    for (let i = 0; i < count; ++i) {
        entity.meshInvisible = !entity.meshInvisible;
        await sleep(1000);
    }
    entity.meshInvisible = false;
}


flashEntity(world.querySelector('.闪烁'), 10);//闪烁10次

我最近来不了编程猫了……代码全放这里哦!

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;
}

function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

var all_player_name=new Array();
var has_wand=new Array();
var spell=new Array();

world.onChat(({entity,message})=>{
    if(entity.hp>0){
        if(message==='昏昏倒地'){
            spell[find(all_player_name,entity.player.name)]='昏昏倒地';
            sleep(10000).then(()=>{
                spell[find(all_player_name,entity.player.name)]='undefined';
            })
        } else if(message==='快快复苏'){
            spell[find(all_player_name,entity.player.name)]='快快复苏';
            sleep(10000).then(()=>{
                spell[find(all_player_name,entity.player.name)]='undefined';
            })
        } else if(message==='除武器'){
            spell[find(all_player_name,entity.player.name)]='除你武器';
            sleep(10000).then(()=>{
                spell[find(all_player_name,entity.player.name)]='undefined';
            })
        } else if(message==='阿瓦达索命'){
            spell[find(all_player_name,entity.player.name)]='阿瓦达索命';
            sleep(10000).then(()=>{
                spell[find(all_player_name,entity.player.name)]='undefined';
            })
        }
    }
})

world.onPlayerJoin(({ entity }) => {
    all_player_name.push(entity.player.name);
    spell.push('undefined');
    entity.enableDamage = true;
    entity.player.onPress(({ button, raycast:{ hitEntity, direction } }) => {
        if (button !== 'action0' || !hitEntity) {
            return;
        }
        if(!hitEntity.isPlayer){
            return;
        }
        if(entity.hp<=0){
            return;
        }
        if(has_wand[find(all_player_name,entity.player.name)]===false){
            entity.player.directMessage('你没有魔杖');
            return;
        }
        if(spell[find(all_player_name,entity.player.name)]==='undefined'){
            entity.player.directMessage('你还没有念咒语');
            return;
        }
        var sp=spell[find(all_player_name,entity.player.name)];
        if(sp==='昏昏倒地'){
            if(hitEntity.hp>0){
                world.say(hitEntity.player.name+'\n被\n'+entity.player.name+'\n击昏了');
                hitEntity.hp=0;
            }
            
        } else if(sp==='快快复苏'){
            if(hitEntity.hp===0){
                world.say(entity.player.name+'\n使\n'+hitEntity.player.name+'\n复苏了');
                hitEntity.hp=100;
            }
        } else if(sp==='除你武器'){
            world.say(entity.player.name+'\n除掉了\n'+hitEntity.player.name+'\n的武器');
            has_wand[find(all_player_name,hitEntity.player.name)]=false;
        } else if(sp==='阿瓦达索命'){
            world.say(entity.player.name+'\n击杀了\n'+hitEntity.player.name);
            has_wand[find(all_player_name,hitEntity.player.name)]=false;
            hitEntity.hp=-1;
        }
        spell[find(all_player_name,entity.player.name)]='undefined';
    });
});

world.querySelectorAll('.fish').forEach((e)=>{
    e.collides=true;
    var type='r';
    world.onTick(()=>{
        if(e.position.x>=41){
            e.position.x-=0.3;
            type='l';
        } else if(e.position.x<=13){
            e.position.x+=0.3;
            type='r';
        } else{
            if(type==='r'){
                e.position.x+=0.3;
            } else{
                e.position.x-=0.3;
            }
        }
    })
})
if(!hitEntity.isPlayer){return}
//防止模型飞走的代码,具体插在哪找本尊

http://www.downxia.com/downinfo/284773.html

喵是t m,这是mod网址

world.sunPhase = 0;
world.sunFrequency = 1/24/60/60;


var m;


world.onPlayerJoin(({ entity }) => {
entity.enableDamage = true;
entity.player.onPress(({ button, raycast:{ hitEntity, direction } }) => {
if (button !== 'action0' || !hitEntity) {
return;
}
hitEntity.velocity.x += direction.x;
hitEntity.velocity.y += 0.5;
hitEntity.hurt(-10 , {   
attacker: entity,
});
});
});
world.onPlayerJoin(({ entity }) => {
    entity.maxHp = 100;
    entity.player.swimSpeed = 10;
    entity.player.scale = 0.5;
    entity.enableDamage = true;
    if(d.includes(entity.player.name)){
        entity.player.canFly = true;
        entity.player.emissive = 0.2;
    }
    entity.player.onPress(({ entity, button, raycast:{ hitEntity, direction } }) => {
        if (button === 'crouch' ){
            entity.hp += 5;
            if(entity.hp > 100){
                entity.hp = 100;
            }
        }
        else {
            if(entity.player.spawnPoint.toString() == z){
                entity.player.color=new Box3RGBColor(1,1,0);
            }else{
                entity.player.color=new Box3RGBColor(0,0,1);
            }
            if (button !== 'action0' || !hitEntity || !hitEntity.isPlayer) {
                return ;
            } 
            hitEntity.velocity.x += direction.x;
            hitEntity.velocity.y += 0.5;
            hitEntity.velocity.z += direction.z;
            hitEntity.hurt(-1, {
            attacker: entity,
            })
        }
    })
    entity.player.onRelease(({ entity, button, raycast:{ hitEntity, direction } }) => {
            if(entity.player.spawnPoint.toString() == z){
                entity.player.color=new Box3RGBColor(1,1,0);
            }else{
                entity.player.color=new Box3RGBColor(0,0,1);
            }
    })
})


world.onDie(({ entity, attacker }) => {
    if (attacker) {
        if(attacker.player.color !== entity.player.color){
            world.say(attacker.player.name + ' 击杀了 ' + entity.player.name)
        }else{
            world.say(attacker.player.name + ' 误杀了自己的队友 ' + entity.player.name)
        }
    }
    entity.player.forceRespawn();
});
world.onPlayerJoin(({entity}) => {
    // 玩家进入游戏的时候缩小到0.5倍
    entity.player.scale = 0.5;
})


world.onTick(()=>{
    world.querySelectorAll('player').forEach((e)=>{
        if(e.position.y < -10){
            if(Math.round(e.hp/3)===0){
                e.hurt(1);
            } else{
                e.hurt(Math.round(e.hp/3));
            }
            if(e.hp<=0){
                world.say('虚空杀喵了'+e.player.name);
            }
        }
    })
})
var m, n;



m = 0;
n = 0;


world.onPlayerJoin(async ({entity})=>{
entity.player.directMessage(entity.player.name + ',欢迎来到星球大战')
    if (m == n) {
        world.onPlayerJoin(({entity})=>{
            entity.position.set(124, 10, 124);//玩家进来的时候,将ta传送到指定的坐标
            entity.player.spawnPoint.copy(entity.position);//将玩家复活点复制为上面的坐标
        })
        entity.position=new Box3Vector3(9,11,118);
        entity.player.directMessage('你加入了红队,快去找队友并肩作战吧!');
        m = (typeof m == 'number' ? m : 0) + 1;
        entity.player.color=new Box3RGBColor(1,0,0);
    }
    else {
        world.onPlayerJoin(({entity})=>{
            entity.position.set(2, 10, 2);//玩家进来的时候,将ta传送到指定的坐标
            entity.player.spawnPoint.copy(entity.position);//将玩家复活点复制为上面的坐标
        })
        entity.position=new Box3Vector3(117,11,9);
        entity.player.directMessage('你加入了蓝队,快去找队友并肩作战吧!');
        n = (typeof n == 'number' ? n : 0) + 1;
        entity.player.color=new Box3RGBColor(0,0,1);
    }
});​
//战争有队友代码

这是贪吃蛇代码

console.log("Link Start!");
const SECONDS_PER_TICK = 1000 / 128; 
const ROUND_TIME = 200 * SECONDS_PER_TICK;//每局游戏时长
const MIN_PLAYERS = 2;//玩家数量下限
const BLACK_TIME = 250 //刷新黑方块的时间,默认一秒钟4个
const GRID_X = 128;
const GRID_Z = 128;
var t;
world.gravity *= 10;

const TEAMS = [
    { r: 1, g: 0, b: 0, v: voxels.id('red_light'),      n: '红队',       score: 0, },
    { r: 0, g: 1, b: 0, v: voxels.id('green_light'),    n: '绿队',     score: 0, },
    { r: 0, g: 0, b: 1, v: voxels.id('blue_light'),     n: '蓝队',      score: 0, },
    { r: 1, g: 0, b: 1, v: voxels.id('purple'),         n: '紫队',   score: 0, },
    { r: 0, g: 1, b: 1, v: voxels.id('indigo_light'),   n: '青队',      score: 0, },
    { r: 1, g: 1, b: 0, v: voxels.id('yellow_light'),   n: '黄队',    score: 0, },
];


world.onPlayerJoin(({ entity }) => {
    entity.player.Len = 1
    //console.log(entity.player.name + "的Len初始化为 : " + entity.player.Len)
    entity.player.All = []
    //console.log(entity.player.name + "的All初始化为 : " + entity.player.Len)
});

// 辅助函数,用于随机打乱一个数组
function shuffle (array) {
    for (let i = 1; i < array.length; ++i) {
        const temp = array[i];
        const x = (Math.random() * (i + 1)) | 0;
        array[i] = array[x];
        array[x] = temp;
    }
    return array;
}

async function startGame () {
    // 将地面初始化,全部变成white
    for (let j = 0; j < GRID_Z; ++j) {
        for (let i = 0; i < GRID_X; ++i) {
            voxels.setVoxel(i, 8, j, 'white');
        }
    }
    
    // 等待玩家进入
    while (world.querySelectorAll('player').length < MIN_PLAYERS) {
        world.say('等待其他玩家加入...');
        await sleep(1000);
        world.say('2个玩家立即开始');
        await world.nextPlayerJoin();
    }

    // 足够玩家加入后,就开始倒计时
    for (let i = 3; i > 0; --i) {
        world.say(i + '...');
        await sleep(1000);
    }
    world.say('游戏开始!');
    putb()
    
    // 每局都随机打乱队伍
    const players = shuffle(world.querySelectorAll('player'));
    
    // 设置玩家的颜色、分值和初始位置
    function setTeam (p, t) {
        p.player.color.r = t.r;
        p.player.color.g = t.g;
        p.player.color.b = t.b;
        p.position.x = Math.random() * GRID_X;
        p.position.y = 30;
        p.position.z = Math.random() * GRID_Z;
        //新加了一个v的私人变量,用于下面的判断
        p.player.v = t.v;
        //初始化分数
        p.player.Len = 1
        //初始化身体
        p.player.All = []
    }

    // 获得初始团队
    const teams = players.map((p, i) => {
        //console.log("t初始化开始");
        t = TEAMS[i % TEAMS.length]
        setTeam(p, t);
        //console.log("t : " + t);
        return t;
    })
    //console.log("t初始化完毕");
    
    //当玩家接触到地面任意方块时,更新该方块的颜色
    const contactHandler = world.onVoxelContact(({voxel, entity, x, y, z }) => {
        //获得该玩家的索引idx:从所有的玩家列表中获得第一个(唯一一个)符合条件的玩家)
        //调用私人变量时要用entity.player.xxx
        const idx = players.indexOf(entity);
        if (idx < 0) {
            //indexOf返回-1时表明未找到
            return;
        }
        //console.log(entity.player.name + "的颜色为" + entity.player.v);
        if (voxel === voxels.id('black')){
            //如果染色的方块为black(食物)
            entity.player.Len ++ ;
            //console.log(entity.player.name + "的Len增加为 : " + entity.player.Len)
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
        } 
        else if (voxel === voxels.id('white')){
            //如果染色的方块为white(空地)
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //console.log(entity.player.name + "的列表增加 : " + entity.player.All[0][0] + " " +entity.player.All[0][1] + " " + entity.player.All[0][2])
            //将列表第一项填充为white(末尾减少)
            //console.log("填充前的列表" + entity.player.All)
            voxels.setVoxelId(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2], voxels.id('white'));
            //console.log("填充后的方块" + voxels.name(voxels.getVoxel(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2])));
            //console.log("填充后的列表" + entity.player.All)
            if (entity.player.All.length != 1){
                //喵我也不知道哪来的BUG
                entity.player.All.shift()
            }
            //第一项:entity.player.All[-(entity.player.Len + 1)]
            //console.log("删除后的列表" + entity.player.All)
        } 
        else if (voxel === entity.player.v){
            //console.log(entity.player.name + "踩到了自己颜色")
            //如果染色的方块为自己的颜色(遗留痕迹)
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //console.log(entity.player.name + "的列表增加 : " + entity.player.All[0][0] + " " +entity.player.All[0][1] + " " + entity.player.All[0][2])
            //将列表第一项填充为white(末尾减少)
            //console.log("填充前的列表" + entity.player.All)
            voxels.setVoxelId(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2], voxels.id('white'));
            //console.log("填充后的方块" + voxels.name(voxels.getVoxel(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2])));
            //console.log("填充后的列表" + entity.player.All)
            if (entity.player.All.length != 1){
                //喵我也不知道哪来的BUG
                entity.player.All.shift()
            }
            //第一项:entity.player.All[-(entity.player.Len + 1)]
            //console.log("删除后的列表" + entity.player.All)
        } 
        else{
            //如果染色的方块不为black、white或自己的颜色(其他人)
            //获取目标(将要被染色)的方块
            mubiao = voxels.getVoxel(x,y,z);
            //console.log(entity.player.name + "踩到了" + voxels.name(mubiao));
            //console.log("踩到的方块:"+ voxel)
            //console.log("自己的颜色:" + entity.player.v)
            for(i=0; i<TEAMS.length; i++){
                //遍历查找该队
                if (mubiao === TEAMS[i].v){
                    //console.log("当前共喵 + players.length + "人")
                    for(let j=0; j<players.length; j++){
                        //遍历查找属于这个队伍的玩家
                        /*console.log("j为" + j)
                        console.log("players为" + players)
                        console.log("players[j].isPlayer为" + players[j].isPlayer)
                        console.log("players[j].player.name为" + players[j].player.name)
                        console.log("players[j].player.v为" + players[j].player.v)*/
                        //players[j].cameraMode = 'fps'
                        if (players[j].player.v == mubiao){
                            //console.log(players[j].player.name + "与目标方块颜色相匹配")
                            //如果颜色相匹配
                            //players[j].player.forceRespawn()
                            players[j].position.x = Math.random() * GRID_X;
                            players[j].position.y = 30;
                            players[j].position.z = Math.random() * GRID_Z;
                            //GO DIETH!
                            restart(players[j])
                            
                        };
                    };

                };
            };
            
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //console.log(entity.player.name + "的列表增加 : " + entity.player.All[0][0] + " " +entity.player.All[0][1] + " " + entity.player.All[0][2])
            //将列表第一项填充为white(末尾减少)
            //console.log("填充前的列表" + entity.player.All)
            voxels.setVoxelId(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2], voxels.id('white'));
            //console.log("填充后的方块" + voxels.name(voxels.getVoxel(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2])));
            //console.log("填充后的列表" + entity.player.All)
            if (entity.player.All.length != 1){
                //喵我也不知道哪来的BUG
                entity.player.All.shift()
            }
            //第一项:entity.player.All[-(entity.player.Len + 1)]
            //console.log("删除后的列表" + entity.player.All)

        }
        const t = teams[idx];
        voxels.setVoxelId(x, y, z, t.v);
    });

    world.onVoxelSeparate(({entity}) => {
        //当有玩家停止接触方块(即有可能掉出虚空)
        if(entity && entity.isPlayer){
            //console.log("entity.position['y']为" + entity.position['y'])
            //console.log("entity.position['y'] < 9为" + (entity.position['y'] < 9))
            if(entity.position['y'] < 9){
                //如果y坐标小于9(玩家是10)
                console.log(entity.player.name + "y坐标小于9")
                restart(entity);
                //GO DEATH!
            }
        }
    });


    // 新玩家加入,会被随机分配到一个队伍
    const joinHandler = world.onPlayerJoin(({entity}) => {
        const t = TEAMS[(Math.random() * teams.length) | 0];
        setTeam(entity, t);
        teams.push(t);
        players.push(entity)
    });
    
    // 每局游戏会在计时到达时结束。
    const endTick = world.currentTick + ROUND_TIME;

    //每隔2秒会出现一个方块(食物)
    
    // 检测游戏是否进行中
    function gameInProgress () {
        let numActivePlayers = 0;
        for (let i = 0; i < players.length; ++i) {
            if (!players[i].destroyed) {
                numActivePlayers += 1;
            }
        }
        return world.currentTick < endTick && numActivePlayers >= MIN_PLAYERS;
        //返回一布尔值,是否游戏中
    }
    
    
    // 当游戏结束时
    while (gameInProgress()) {
        // 等待 1 Tick
        await world.nextTick();
    }
        
        
    // 计算各队伍的分数
    for (let i = 0; i < TEAMS.length; ++i) {
        //遍历各队伍计算分数
        for (let j = 0; j < players.length; j++){
            //遍历各玩家,找出这一个队伍的
            //console.log("players[j].player.v为" + players[j].player.v)
            //console.log("TEAMS[i].v为" + TEAMS[i].v)
            if (players[j].player.v == TEAMS[i].v){
                //如果该玩家颜色与该队伍颜色一样
                TEAMS[i].score += players[j].player.Len;
                console.log(players[j].player.name + "的队伍是" + voxels.name(players[j].player.v) + ",自己的分数是" + players[j].player.Len + "队伍的分数是" + TEAMS[i].score)
                //console.log(TEAMS)
                //将队伍分数加上该玩家分数
            }
        }
        //const c = TEAMS[i].score = fillHoles(TEAMS[i].v);
            
        // 如果有团队圈完全场,那么直接胜出
        //if (c >= GRID_X * GRID_Z) {
        //    break;
        //}
    }
    // 清除事件处理器
    contactHandler.cancel();
    joinHandler.cancel();

    // 重置玩家颜色
    for (let i = 0; i < players.length; ++i) {
        const c = players[i].player.color;
        c.r = c.g = c.b = 1;
    }
    world.say('本局游戏结束!');
    await sleep(5000);

    // 宣布获胜队伍
    /*for(let i=0; i<players.length; i++){
        console.log(players[i].player.name + "的队伍是" + voxels.player.name(players[i].v) + ",分数是" + players[i].player.Len)
    }*/
    TEAMS.sort((a, b) => b.score - a.score);
    world.say(`恭喜 ${TEAMS[0].n} 胜利!!`);
    await sleep(10000);
    for(let i=0;i<TEAMS.length;i++ ){
        TEAMS[i].score = 0
    }
   
}

// 无限循环游戏
async function gameLoop () {
    while (true) {
        await startGame();    
    }
}

async function putb(){
    //刷黑方块
    voxels.setVoxelId((Math.random() * GRID_X), 8, (Math.random() * GRID_Z), voxels.id('black'));
    await sleep(BLACK_TIME)
    putb()
};

async function restart(f_player){
    console.log(f_player.player.name + "喵了")
    f_player.player.Len = 1;
    f_player.player.All = []
    for(let ij=0; ij<GRID_X; ij++){
        //通过遍历还原所有方块
        //骂骂咧咧:console.log("开始还原初始化")
        for(let ji=0; ji<GRID_Z; ji++){
            //c我电脑要炸了,*龙门粗口*:console.log(ij+ "," +ji)
            if(voxels.getVoxel(ij,8,ji) == f_player.player.v){
                //如果该方块为该玩家的颜色
                //s**t:console.log("开始还原颜色")
                voxels.setVoxelId(ij, 8, ji, voxels.id('black'));
            };

        };
                                
    };
}

gameLoop();
//贪吃蛇复杂板

下面是精简版

console.log("Link Start!");//桐老爷专属水印[doge]

const SECONDS_PER_TICK = 1000 / 128; 
const ROUND_TIME = 200 * SECONDS_PER_TICK;//每局游戏时长
const MIN_PLAYERS = 2;//玩家数量下限
const BLACK_TIME = 250 //刷新黑方块的时间,默认一秒钟4个
const GRID_X = 128;//两个都是地图边界
const GRID_Z = 128;
var t;
world.gravity *= 10;

const TEAMS = [
    { r: 1, g: 0, b: 0, v: voxels.id('red_light'),      n: '红队',       score: 0, },
    { r: 0, g: 1, b: 0, v: voxels.id('green_light'),    n: '绿队',     score: 0, },
    { r: 0, g: 0, b: 1, v: voxels.id('blue_light'),     n: '蓝队',      score: 0, },
    { r: 1, g: 0, b: 1, v: voxels.id('purple'),         n: '紫队',   score: 0, },
    { r: 0, g: 1, b: 1, v: voxels.id('indigo_light'),   n: '青队',      score: 0, },
    { r: 1, g: 1, b: 0, v: voxels.id('yellow_light'),   n: '黄队',    score: 0, },
];


world.onPlayerJoin(({ entity }) => {
    //初始化各参数
    entity.player.Len = 1
    //因为刚开始玩家就有一条尾迹,所以说不是0而是1
    entity.player.All = []
    //因为尾迹的添加是在触碰后再添加的,所以说目前为空列表
});

// 辅助函数,用于随机打乱一个数组(未魔改)
function shuffle (array) {
    for (let i = 1; i < array.length; ++i) {
        const temp = array[i];
        const x = (Math.random() * (i + 1)) | 0;
        array[i] = array[x];
        array[x] = temp;
    }
    return array;
}

async function startGame () {
    // 将地面初始化,全部变成white
    for (let j = 0; j < GRID_Z; ++j) {
        for (let i = 0; i < GRID_X; ++i) {
            voxels.setVoxel(i, 8, j, 'white');
        }
    }
    
    // 等待玩家进入(未魔改)
    while (world.querySelectorAll('player').length < MIN_PLAYERS) {
        world.say('等待其他玩家加入...');
        await sleep(1000);
        world.say('2个玩家立即开始');
        await world.nextPlayerJoin();
    }

    // 足够玩家加入后,就开始倒计时(未魔改)
    for (let i = 3; i > 0; --i) {
        world.say(i + '...');
        await sleep(1000);
    }
    world.say('游戏开始!');
    putb()
    //putb()即"put black",用于随机放置黑色方块
    
    // 每局都随机打乱队伍(喵)
    const players = shuffle(world.querySelectorAll('player'));
    
    // 设置玩家的颜色、分值和初始位置
    function setTeam (p, t) {
        p.player.color.r = t.r;
        p.player.color.g = t.g;
        p.player.color.b = t.b;
        p.position.x = Math.random() * GRID_X;
        p.position.y = 30;
        p.position.z = Math.random() * GRID_Z;
        //新加了一个v的私人变量(储存他的颜色),用于下面的队伍判断
        p.player.v = t.v;
        //初始化分数(似乎有点多余了?但也不敢随意删去hhhc)
        p.player.Len = 1
        //初始化身体(似乎有点多余了?但也不敢随意删去hhhc)
        p.player.All = []
    }

    // 获得初始团队(未魔改……吧)
    const teams = players.map((p, i) => {
        t = TEAMS[i % TEAMS.length]
        setTeam(p, t);
        return t;
    })
    
    //当玩家接触到地面任意方块时,更新该方块的颜色
    const contactHandler = world.onVoxelContact(({voxel, entity, x, y, z }) => {
        //获得该玩家的索引idx:从所有的玩家列表中获得第一个(唯一一个)符合条件的玩家)
        //调用私人变量时要用entity.player.xxx
        const idx = players.indexOf(entity);
        if (idx < 0) {
            //indexOf返回-1时表明未找到
            return;
        }
        if (voxel === voxels.id('black')){
            //如果染色的方块为black(食物)
            entity.player.Len ++ ;
            //长度增加
            entity.player.All[entity.player.All.length] = [x, y, z];
            //向列表末尾添加染色方块的位置
            //因为他会让玩家变长,所以说不用删除末尾的方块(举个例子:大家都在退步,你不退步就是进步)
        } 
        else if (voxel === voxels.id('white')){
            //如果染色的方块为white(空地)
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //将列表第一项填充为white(末尾减少)
            voxels.setVoxelId(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2], voxels.id('white'));
            if (entity.player.All.length != 1){
                //喵我也不知道哪来的BUG
                entity.player.All.shift()
            }
            //之前用的第一项,看不懂忽略即可:entity.player.All[-(entity.player.Len + 1)]
        } 
        else if (voxel === entity.player.v){
            //如果染色的方块为自己的颜色(遗留痕迹/尾迹)
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //将列表第一项填充为white(尾迹减少)
            voxels.setVoxelId(entity.player.All[0][0], entity.player.All[0][1], entity.player.All[0][2], voxels.id('white'));
            if (entity.player.All.length != 1){
                //同上,喵我也不知道哪来的BUG
                entity.player.All.shift()
            }
            //同上,第一项:entity.player.All[-(entity.player.Len + 1)]
        else{
            //如果染色的方块不为black、white或自己的颜色(其他人)
            //获取目标(将要被染色)的方块
            mubiao = voxels.getVoxel(x,y,z);
            for(i=0; i<TEAMS.length; i++){
                //遍历查找该队
                if (mubiao === TEAMS[i].v){
                    for(let j=0; j<players.length; j++){
                        //遍历查找属于这个队伍的玩家
                        if (players[j].player.v == mubiao){
                            //如果颜色相匹配(与上方的player.v相对应)
                            players[j].position.x = Math.random() * GRID_X;
                            players[j].position.y = 30;
                            players[j].position.z = Math.random() * GRID_Z;
                            //GO DIETH!
                            restart(players[j])
                            
                        };
                    };

                };
            };
            
            //向列表末尾添加染色方块的位置
            entity.player.All[entity.player.All.length] = [x, y, z];
            //将列表第一项填充为white(末尾减少)
            if (entity.player.All.length != 1){
                //喵我也不知道哪来的BUG×3
                entity.player.All.shift()
            }

        }
        const t = teams[idx];
        voxels.setVoxelId(x, y, z, t.v);
    });

    world.onVoxelSeparate(({entity}) => {
        //当有玩家停止接触方块(即有可能掉出虚空)
        if(entity && entity.isPlayer){
            if(entity.position['y'] < 9){
                //如果y坐标小于9(玩家是10)
                restart(entity);
                //GO DEATH!
            }
        }
    });


    // 新玩家加入,会被随机分配到一个队伍(未魔改)
    const joinHandler = world.onPlayerJoin(({entity}) => {
        const t = TEAMS[(Math.random() * teams.length) | 0];
        setTeam(entity, t);
        teams.push(t);
        players.push(entity)
    });
    
    // 每局游戏会在计时到达时结束。(未魔改)
    const endTick = world.currentTick + ROUND_TIME;
    
    // 检测游戏是否进行中(未魔改)
    function gameInProgress () {
        let numActivePlayers = 0;
        for (let i = 0; i < players.length; ++i) {
            if (!players[i].destroyed) {
                numActivePlayers += 1;
            }
        }
        return world.currentTick < endTick && numActivePlayers >= MIN_PLAYERS;
        //返回一布尔值,是否游戏中
    }
    
    
    // 当游戏结束时(未魔改)
    while (gameInProgress()) {
        // 等待 1 Tick
        await world.nextTick();
    }
        
        
    // 计算各队伍的分数(其实就是把一队的玩家的Len加起来)
    for (let i = 0; i < TEAMS.length; ++i) {
        //遍历各队伍计算分数
        for (let j = 0; j < players.length; j++){
            //遍历各玩家,找出这一个队伍的
            if (players[j].player.v == TEAMS[i].v){
                //如果该玩家颜色与该队伍颜色一样
                TEAMS[i].score += players[j].player.Len;
                //将队伍分数加上该玩家分数
            }
        }
    }
    // 清除事件处理器(未魔改,似乎还要把putb.cancel()加上的,但咱也不敢动(小心翼翼))
    contactHandler.cancel();
    joinHandler.cancel();

    // 重置玩家颜色(未魔改)
    for (let i = 0; i < players.length; ++i) {
        const c = players[i].player.color;
        c.r = c.g = c.b = 1;
    }
    world.say('本局游戏结束!');
    await sleep(5000);

    // 宣布获胜队伍(未魔改)
    TEAMS.sort((a, b) => b.score - a.score);
    world.say(`恭喜 ${TEAMS[0].n} 胜利!!`);
    await sleep(10000);
    for(let i=0;i<TEAMS.length;i++ ){
        TEAMS[i].score = 0
    }
   
}

// 无限循环游戏(未魔改)
async function gameLoop () {
    while (true) {
        await startGame();    
    }
}

async function putb(){
    //刷黑方块
    voxels.setVoxelId((Math.random() * GRID_X), 8, (Math.random() * GRID_Z), voxels.id('black'));
    await sleep(BLACK_TIME)
    putb()
    //无限套娃喵好!(滑稽)
};

async function restart(f_player){
//用于处理当玩家喵后的还原(包括掉下虚空与被别人触碰尾迹,似乎可以用forEach重构的)
    console.log(f_player.player.name + "喵了")
    f_player.player.Len = 1;
    f_player.player.All = []
    for(let ij=0; ij<GRID_X; ij++){
        //通过遍历还原所有方块
        for(let ji=0; ji<GRID_Z; ji++){
            //c我电脑要炸了,*龙门粗口*,谁想试试就把注释符号删去:console.log(ij+ "," +ji)
            if(voxels.getVoxel(ij,8,ji) == f_player.player.v){
                //如果该方块为该玩家的颜色
                //s**t:console.log("开始还原颜色")
                voxels.setVoxelId(ij, 8, ji, voxels.id('black'));
            };

        };
                                
    };
}

gameLoop();

水印你们自己去掉

world.gravity=-0.14; // 将重力变大
world.lunarPhase = 0.3; //月亮变弯咯
//奇妙滴城市
//在玩家脚下挖方块
world.onVoxelContact(({ x, y, z }) => {
    voxels.setVoxel(x, y, z, 0);
});
//也是奇妙城市
world.onChat(({ entity, message }) => {
    // 当玩家发送‘我要变大’文字的时候变大到1.5倍,当玩家发送‘我要变小’文字的时候缩小成0.5倍。发送‘我要还原'则恢复
    if (entity && entity.isPlayer) {
        if (message === '我要变大') {
            entity.player.scale = 1.5;
        } else if (message === '我要变小') {
            entity.player.scale = 0.5;
        }else if (message === '我要还原') {
            entity.player.scale = 1;
        } 
    }
})

吉吉喵的奇妙滴城市帖子提供的代码

//请先在地图中,给一个小狗模型,加上‘狗‘的标签
//这段代码可以让狗说话
world.querySelectorAll('.狗').forEach((dog) => {
    dog.say('汪汪~')
    dog.onEntityContact(({other}) =>{
        dog.say('汪,你好! '+other.player.name)
    }
    )
}
)

哦,还有一个也是↑

const SECONDS_PER_TICK = 1000 / 128; 
const ROUND_TIME = 200 * SECONDS_PER_TICK;//每局游戏时长
const MIN_PLAYERS = 2;//玩家数量下限
const GRID_X = 128;
const GRID_Z = 128;

const TEAMS = [
    { r: 1, g: 0, b: 0, v: voxels.id('red_light'),      n: '红队',       score: 0, },
    { r: 0, g: 1, b: 0, v: voxels.id('green_light'),    n: '绿队',     score: 0, },
    { r: 0, g: 0, b: 1, v: voxels.id('blue_light'),     n: '蓝队',      score: 0, },
    { r: 1, g: 0, b: 1, v: voxels.id('purple'),         n: '紫队',   score: 0, },
    { r: 0, g: 1, b: 1, v: voxels.id('indigo_light'),   n: '靛蓝队',      score: 0, },
    { r: 1, g: 1, b: 0, v: voxels.id('yellow_light'),   n: '黄队',    score: 0, },
];

// 辅助函数,用于随机打乱一个数组
function shuffle (array) {
    for (let i = 1; i < array.length; ++i) {
        const temp = array[i];
        const x = (Math.random() * (i + 1)) | 0;
        array[i] = array[x];
        array[x] = temp;
    }
    return array;
}

async function startGame () {
    // 将地面初始化,全部变成不锈钢
    for (let j = 0; j < GRID_Z; ++j) {
        for (let i = 0; i < GRID_X; ++i) {
            voxels.setVoxel(i, 8, j, 'stainless_steel');
        }
    }
    
    // 等待玩家进入
    while (world.querySelectorAll('player').length < MIN_PLAYERS) {
        world.say('等待其他玩家加入...');
        await sleep(1000);
        world.say('2个玩家立即开始');
        await world.nextPlayerJoin();
    }

    // 足够玩家加入后,就开始倒计时
    for (let i = 3; i > 0; --i) {
        world.say(i + '...');
        await sleep(1000);
    }
    world.say('去圈地吧!看谁是圈地之王?');
    
    // 每局都随机打乱队伍
    const players = shuffle(world.querySelectorAll('player'));
    shuffle(TEAMS);
    
    // 设置玩家的颜色和初始位置
    function setTeam (p, t) {
        p.player.color.r = t.r;
        p.player.color.g = t.g;
        p.player.color.b = t.b;
        p.position.x = Math.random() * GRID_X;
        p.position.y = 30;
        p.position.z = Math.random() * GRID_Z;
    }

    // 获得初始团队
    const teams = players.map((p, i) => {
        const t = TEAMS[i % TEAMS.length]
        setTeam(p, t);
        return t;
    })
    
    //当玩家接触到地面任意方块时,更新该方块的颜色
    const contactHandler = world.onVoxelContact(({ entity, x, y, z }) => {
        const idx = players.indexOf(entity);
        if (idx < 0) {
            return;
        }
        const t = teams[idx];
        voxels.setVoxelId(x, y, z, t.v);
    });
    
    // 新玩家加入,会被随机分配到一个队伍
    const joinHandler = world.onPlayerJoin(({entity}) => {
        const t = TEAMS[(Math.random() * teams.length) | 0];
        setTeam(entity, t);
        teams.push(t);
        players.push(entity)
    });
    
    // 每局游戏会在计时到达时结束。
    const endTick = world.currentTick + ROUND_TIME;
    
    // 检测游戏是否进行中
    function gameInProgress () {
        let numActivePlayers = 0;
        for (let i = 0; i < players.length; ++i) {
            if (!players[i].destroyed) {
                numActivePlayers += 1;
            }
        }
        return world.currentTick < endTick && numActivePlayers >= MIN_PLAYERS;
    }
    
    // 通过深度优先搜索,将圈起来的地自动填色
    const visited = new Uint8Array(GRID_X * GRID_Z)
    const toVisit = []
    function mark (i, j, team) {
        const idx = i + j * GRID_X;
        if (i < 0 || i >= GRID_X ||
            j < 0 || j >= GRID_Z ||
            visited[idx] ||
            voxels.getVoxel(i, 8, j) === team) {
            return;
        }
        visited[idx] = true;
        toVisit.push(i, j);
    }
    function fillHoles (team) {
        visited.fill(0);
        for (let i = 0; i < Math.max(GRID_X, GRID_Z); ++i) {
            mark(i, 0, team);//更正了,将8改成了0
            mark(0, i, team);
            mark(GRID_X - 1, i, team);
            mark(i, GRID_Z - 1, team);
        }
        
        while (toVisit.length > 0) {
            const z = toVisit.pop() | 0;
            const x = toVisit.pop() | 0;
            mark(x - 1, z, team);
            mark(x + 1, z, team);
            mark(x, z - 1, team);
            mark(x, z + 1, team);
        }
        
        let score = 0;
        for (let j = 0; j < GRID_Z; ++j) {
            for (let i = 0; i < GRID_X; ++i) {
                const idx = i + j * GRID_X;
                if (!visited[idx]) {
                    voxels.setVoxelId(i, 8, j, team);
                    score += 1;
                }
            }
        }
        return score;
    }
    
    // 当游戏运行时
    while (gameInProgress()) {
        // 等待 1 Tick
        await world.nextTick();
        
        // 计算各队伍的分数
        for (let i = 0; i < TEAMS.length; ++i) {
            const c = TEAMS[i].score = fillHoles(TEAMS[i].v);
            
            // 如果有团队圈完全场,那么直接胜出
            if (c >= GRID_X * GRID_Z) {
                break;
            }
        }
    }
    
    // 清除事件处理器
    contactHandler.cancel();
    joinHandler.cancel();

    // 重置玩家颜色
    for (let i = 0; i < players.length; ++i) {
        const c = players[i].player.color;
        c.r = c.g = c.b = 1;
    }
    world.say('本局游戏结束!');
    await sleep(5000);
    
    // 宣布获胜队伍
    TEAMS.sort((a, b) => b.score - a.score);
    world.say(`恭喜 ${TEAMS[0].n} 成为圈地之王!!`);
    await sleep(10000);
}

// 无限循环游戏
async function gameLoop () {
    while (true) {
        await startGame();    
    }
}
gameLoop();
//圈地之王
//还原代码
world.querySelectorAll('.thp')/*标签名称*/.forEach((e)=>{//触发机制
e.onEntityContact(({entity,other})=>{ 
if(!other.isPlayer){return} //检测
other.mesh=other;  //还原自己的造型
other.player.invisible=false;//隐身解除
other.player.canFly = false;//飞行解除
other.player.scale = 1;//大小还原
world.say(other.player.name+"还原了自己");//广播信息
});
});
world.querySelectorAll('.跑车').forEach((e)=>{
e.onEntityContact(({entity,other})=>{ 
if(!other.isPlayer){return}
other.mesh=entity.mesh;//设置玩家的外观
other.meshScale=entity.meshScale;//设置玩家的大小
other.player.invisible=true;//影身
other.meshOrientation = new Box3Quaternion(0, 1, 0, 0);//设置跑车的旋转角度,没有反不要这个代码
world.say(other.player.name+" 开启了敞篷跑车");//广播消息
other.player.runSpeed = 2;//设置跑步的速度
other.player.walkSpeed = 1.5;//设置走路的速度
other.player.scale =0.6;//因为实体比较小,设置玩家的大小小一些
other.player.jumpPower = 0;//关闭跳跃能力
});
});


回复

上一页1 页 / 共 1下一页
高贵的木叶龙A35d高贵的木叶龙A35d

沙发个球……

点赞0


评论


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

不会大飞模型的代码来了!

world.onPlayerJoin(({ entity }) => {
    entity.enableDamage = true;
    entity.player.onPress(({ button, raycast:{ hitEntity, direction } }) => {
        if (button !== 'action0' || !hitEntity) {
            return;
        }
        hitEntity.velocity.x += direction.x;
        hitEntity.velocity.y += 0.5;
        hitEntity.velocity.z += direction.z;
        if(!hitEntity.isPlayer){return}
        hitEntity.hurt(5 * Math.random() + 5, {
            attacker: entity,
        });
    });
});
//检测攻击代码
world.onDie(({ entity, attacker }) => {
    if (attacker) {
        world.say(attacker.player.name + ' 击杀了 ' + entity.player.name)
    }
    entity.player.forceRespawn();
});//死亡后代码

点赞1


评论


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

world.onPlayerJoin(({entity})=>{
    entity.position.set(3, 8+Math.random()*5, 125);//玩家进来的时候,将ta传送到8以上随机5格的位置
    entity.player.spawnPoint.copy(entity.position);//将玩家复活点复制为上面的坐标
})

出生点代码

点赞0


评论


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

for(z=0;z&lt;128;z++){for(x=0;x&lt;128;x++){for(y=0;y&lt;喵;y++){voxels.setVoxel(x,y,z,0)}}}
//还原地图代码(放控制台)

点赞0


评论


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

if (timeS <= 500){//如果用时小于 500 秒...
   world.say("${entity.player.name}"+ "到达终点!用时:${timeS} 秒!放大 5 倍!");
   entity.player.scale = 5//可修改
} else {
   world.say("${entity.player.name}"+ "到达终点!用时:${timeS} 秒!放大 2 倍!");
   entity.player.scale = 2//可修改
}

点赞0


评论


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

(async()=>{
    for(y=0;y<128;y++){
        for(x=0;x<128;x++){
            for(z=0;z<128;z++){
                if(voxels.getVoxel(x,y,z)==voxels.id('被替换的方块名称')){
                    voxels.setVoxel(x,y,z,voxels.id('替换后的方块名称'))
                }
            }
        }
    }
})()
//输入控制台,替换世界的方块

点赞0


评论


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

(async()=>{
    for(y=8;y<128;y++){
        for(x=0;x<128;x++){
            for(z=0;z<128;z++){
                if(voxels.getVoxel(x,y,z)==voxels.id('air')){
                    voxels.setVoxel(x,y,z,voxels.id('/*岩浆*/'))//岩浆方块自己写
                }
            }
        };await sleep(1000);
    }
})()

点赞0


评论


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

//模仿系统说话代码:放控制台或者代码栏都可
world.say("你要说的话")

//控制别人说话
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你想要坑的人") {x.say("我是***")}}) 

//让自己飞行
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "名字鬼知道") {x.player.canFly = true}});

//让自己解除飞行
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "名字鬼知道") {x.player.canFly = flase}});

//让自己变身幽灵,无视实体
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "名字鬼知道") {x.player.spectator = true}});

//让自己变回人类,有实体影响
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "名字鬼知道") {x.player.spectator = flase}});

// 控制玩家的行走和跳跃
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.y+=1}})// 跳一下

world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.x+=1}}) // 向右或左走一步

world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.z+=1}}) // 向前向后退

world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.velocity.x=10}}) //传送

//控制玩家大小
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.player.scale = 6}}) // scale 的值可以变

//触碰控制玩家隐身
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "名字鬼知道") {x.player.invisible = true}}); // true是隐身 false是解除

//触碰控制玩家现身
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "名字
鬼知道") {x.player.invisible = false}}); // true是隐身 false是解除

//让玩家发光
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "名字鬼知道") {x.player.emissive = 2}});

//下方代码纯属过期,基本没用

// 强制退出游戏
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.player.Pokering=true}}); //true是喵亡

// 强制退出游戏
world.querySelectorAll('player').forEach((x) => {if (x.player.name == "你要坑的人") {x.fixed = true}}); //true是喵亡





点赞1


评论


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

world.onTick(()=>{world.querySelectorAll('player').forEach((e)=>{
    if(e.position.y<0){e.hurt(e.hp/10+1);}

    })
})
//掉虚空凋谢

点赞0


评论


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

world.onPlayerJoin(({entity})=>{
    entity.player.crouchAcceleration=0.5;
    entity.player.crouchSpeed=0.5;
    entity.player.walkAcceleration=0.5;
    entity.player.walkSpeed=0.5;
    entity.player.runAcceleration=0.5;
    entity.player.runSpeed=0.5;
    entity.player.jumpAccelerationFactor=0.5;
    entity.player.jumpPower=0.75;
    entity.player.jumpSpeedFactor=0.5;
    entity.player.doublejumpAccelerationFactor=0.5;
    entity.player.doublejumpPower=0.75;
    entity.player.doublejumpSpeedFactor=0.5;
    entity.player.swimAcceleration=0.5;
    entity.player.swimSpeed=0.5;
    entity.player.flyAcceleration=0.5;
    entity.player.flySpeed=0.5;
    entity.player.fallAcceleration=0.05;
})
//更改玩家的一些设置

点赞0


评论


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

setInterval(() => {
    world.querySelectorAll('*').forEach((e) => {
        if (e.isPlayer&&e.player.name=='你要整的人的名字') {
            e.position=new Box3Vector3(Math.floor(Math.random()*128),11,Math.floor(Math.random()*128))
            //随机移动
            //为什么random要加上*128呢?因为random给出的是一个0~1之间的小数,将它*128就可以得到0~128之间的小数,正好是box3地图的范围
            //加上floor的原因是Math.random()*128得到的是一个小数,所以要将它向下取整(汗)
        }
    });
}, 10);
//坑人代码,让他闪现,得输控制台

点赞0


评论


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

setInterval(() => {
    world.querySelectorAll('*').forEach((e) => {
        if (e.isPlayer&&e.player.name=='你要整的人的名字') {
            e.velocity.y += 1;
            //增加Y坐标上的速度
        }
    });
}, 10);
//让人喵,也要控制台

点赞0


评论


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

while(true){}
//程序强行崩溃,使用这个代码后请所有人离开10分钟才行,如果有个挂机的……

点赞0


评论


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

entity.hp=0
//这个代码怎么用找大佬去问,我不知道

点赞0


评论


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

sleep(100000)
world.say("喵进村了!")
sleep(100000)
world.say("喵来了!")
sleep(100000)
world.say("救命啊!")
sleep(100000)
world.say("八 嘎!")
//每隔1000000÷1000秒说一句话

点赞0


评论


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

world.querySelectorAll('.喵').forEach((e)=>{
e.onEntityContact(({entity,other})=>{  //设置目标模型的碰撞事件。
if(!other.isPlayer){return} //防止非玩家实体参与检测。
other.mesh=entity.mesh;  //设置玩家的外观。
})
}) 
//背喵的代码

点赞0


评论


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

https://shequ.codemao.cn/community/286686

点赞0


评论


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

//监狱代码
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;
    }
})

点赞0


评论


Fliere_tammy_Fliere_tammy_

名字鬼知道快举报center_image

点赞0


评论


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

(async function(){world.onTick((evt)=>{  world.querySelector("."+'狗').onEntityContact(async ({entitiy,other})=>{    if (other.isPlayer) {      world.say(String(other.player.name) + '被狗咬死了!');      entity.say('汪汪汪!');      other.showHealthBar=true;      other.enableDamage=true;      other.hurt(100);      await sleep(1000);      other.player.forceRespawn();      other.position=new Box3Vector3(64,10,64);      world.say(String(other.player.name) + '被送往森林医院急救,成功复活!');    }  });});})();

点赞0


评论


Ken李Ken李

謝謝🙏

点赞0


评论