猫史档案馆


【圣诞挑战赛】代码公开

用户:云游de军长渡云游de军长渡查看:2 回复:5 评论:2 创建时间:2023-01-17T20:06:52



// 有玩家进入区域
area.onEnter(({ entity }) => {
    entity.player.spawnPoint.copy(entity.position)
    entity.player.directMessage('存档')
});
world.onEntityContact(({ entity, other }) => { //other是被触碰的实体
    if (other.hasTag('A')) { 
        entity.hurt(20) //受伤
    }
    if (other.hasTag('B')) { 
        entity.hurt(20) //受伤
    }
    if (other.hasTag('C')) { 
        entity.hurt(20) //受伤
    }
    if (other.hasTag('D')) { 
        entity.hurt(20) //受伤
    }
    if (other.hasTag('E')) { 
        entity.hurt(20) //受伤
    }
    if (other.hasTag('F')) { 
        entity.hurt(20) //受伤
    }
})

for (const entityRotation of world.querySelectorAll('.12')) {
setInterval(async()=>{
    entityRotation.meshOrientation.copy(entityRotation.meshOrientation.rotateY(Math.PI/180))
},15)
}
for (const elevator of world.querySelectorAll('.1')){ 
const x = elevator.position.x
const y = elevator.position.y
const z = elevator.position.z
const ani = elevator.animate([
    { position:[x,y,z]},
    { position:[x,y+0.3,z]},
], {
    duration: 16 * 2, //播放一个循环共用时15秒,
    iterations: Infinity,//动画无限次循环播放
    direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
})
}
for (const elevator of world.querySelectorAll('.123')){ //获取电梯板实体
const x = elevator.position.x
const y = elevator.position.y
const z = elevator.position.z
const ani = elevator.animate([
    { position:[x,y,z]},
    { position:[x,y+0.3,z]},
], {
    duration: 16 * 2.5, //播放一个循环共用时15秒,
    iterations: Infinity,//动画无限次循环播放
    direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
})
}
world.onPress(async ({ entity, button }) => {
    if (button == Box3ButtonType.ACTION1) { 
        const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            content: `昵称:${entity.player.name}
            物品:[${entity.b}/${entity.d}/${entity.e}]
            通关提示:${entity.k}`,
            options: ['重新开始'],
        })
        if (!result || result === null) {
            return;
        }
        if (result.value == '重新开始') {
            entity.a = 1
            entity.b = ''
            entity.c = 0
            entity.d = ''
            entity.e = ''      
            entity.f = 1
            entity.g = 1
            entity.h = 1
            entity.i = 1
            entity.j = 1
            entity.k = '让妻子开心才能把钥匙给你'
            entity.l = '帆船模型'
            entity.m = '火箭模型'
            entity.n = '《学霸是怎样练成的》学习秘籍'
            entity.o = '手提包'
            entity.p = '哑铃足球排球乒乓球'
            entity.q = '游戏机'
            entity.r = '《中华上下五千年》历史课外读物'
            entity.s = 'CD*10'
            entity.t = '旅行箱'
            entity.u = '肯德基全家桶'
            entity.v = 1
            entity.w = 1
            entity.x = 1
            entity.y = 1
            entity.z = 1
            entity.ab = 1
            entity.bc = 1
            entity.player.directMessage('系统:已为你清除关卡')
            entity.position.set(25, 10, 18);
            entity.player.enableDoubleJump = true;
            entity.player.invisible = false;
            entity.player.spectator = false; 
        }
    }
})
world.onFluidEnter(async ({ entity, voxel }) => {//当实体进入液体中时
    if (entity.isPlayer) {//如果实体是玩家
        if (voxel == voxels.id('water')) {//如果液体方块名称是water
            entity.player.forceRespawn()//玩家重生
        }
    } else {
        return//不处理非玩家实体
    }
})
var hang_up4 = world.querySelector('#袜子-1');
hang_up4.enableInteract = true;
hang_up4.boolean = true            //允许互动
hang_up4.interactHint = hang_up4.id;
hang_up4.interactRadius = 4;
hang_up4.onInteract(async ({ entity }) => {
    var result = await entity.player.dialog({
        type: Box3DialogType.SELECT,
        title: hang_up4.id,
        content: `性别:女
        性格:梦想进入清华,敢于追梦`,
        options: [`${entity.l}`,`${entity.m}`,`${entity.n}`,`${entity.o}`,`${entity.p}`,`${entity.q}`,`${entity.r}`,`${entity.s}`,`${entity.t}`,`${entity.u}`],
    })
    if (!result || result === null) {
        return;
    }
    switch (result.index) {
        case 0:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        case 1:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        case 2:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `成功放进袜子里!`,
            })
            entity.n = ''
            entity.v = 2
            break;
        case 3:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        case 4:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        case 5:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        case 6:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        case 7:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        case 8:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        case 8:
            var result = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: hang_up4.id,
                content: `要按照孩子的性格来!`,
            })
            break;
        default:

    }
});

const hang_up2 = world.querySelector('#袜子-2');
hang_up2.enableInteract = true;
hang_up2.boolean = true            //允许互动
hang_up2.interactHint = hang_up2.id;
hang_up2.interactRadius = 4;
hang_up2.onInteract(async({entity}) => {
    const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            title: hang_up2.id,
            content: `性别:男
            性格:超级喜欢历史`,
            options: [`${entity.l}`,`${entity.m}`,`${entity.n}`,`${entity.o}`,`${entity.p}`,`${entity.q}`,`${entity.r}`,`${entity.s}`,`${entity.t}`,`${entity.u}`,],
    })
    if (!result || result === null) {
        return; 
    }
    switch (result.index){
        case 0:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 1:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 2:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 3:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 4:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 5:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 6:
            text(entity, '', `成功放进袜子里!`)
            entity.r = ''
            entity.w = 2
            break;
        case 7:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 8:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 9:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        default:

    }
});
const hang_up5 = world.querySelector('#袜子-3');
hang_up5.enableInteract = true;
hang_up5.boolean = true            //允许互动
hang_up5.interactHint = hang_up5.id;
hang_up5.interactRadius = 4;
hang_up5.onInteract(async({entity}) => {
    const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            title: hang_up5.id,
            content: `性别:男
            性格:梦想成为水手,喜欢航海`,
            options: [`${entity.l}`,`${entity.m}`,`${entity.n}`,`${entity.o}`,`${entity.p}`,`${entity.q}`,`${entity.r}`,`${entity.s}`,`${entity.t}`,`${entity.u}`,],
    })
    if (!result || result === null) {
        return; 
    }
    switch (result.index){
        case 0:
            text(entity, '', `成功放进袜子里!`)
            entity.l = ''
            entity.x = 2
            break;
        case 1:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 2:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 3:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 4:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 5:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 6:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 7:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 8:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 9:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        default:

    }
});
const hang_up6 = world.querySelector('#袜子-4');
hang_up6.enableInteract = true;
hang_up6.boolean = true            //允许互动
hang_up6.interactHint = hang_up6.id;
hang_up6.interactRadius = 4;
hang_up6.onInteract(async({entity}) => {
    const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            title: hang_up6.id,
            content: `性别:男
            性格:热爱体育,一名体育特长生`,
            options: [`${entity.l}`,`${entity.m}`,`${entity.n}`,`${entity.o}`,`${entity.p}`,`${entity.q}`,`${entity.r}`,`${entity.s}`,`${entity.t}`,`${entity.u}`,],
    })
    if (!result || result === null) {
        return; 
    }
    switch (result.index){
        case 0:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 1:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 2:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 3:
            text(entity, '', `要按照孩子的性格来!`)
        case 4:
            text(entity, '', `成功放进袜子里!`)
            entity.p = ''
            entity.y = 2
        case 5:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 6:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 7:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 8:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 9:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        default:

    }
});
const hang_up7 = world.querySelector('#袜子-5');
hang_up7.enableInteract = true;
hang_up7.boolean = true            //允许互动
hang_up7.interactHint = hang_up7.id;
hang_up7.interactRadius = 4;
hang_up7.onInteract(async({entity}) => {
    const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            title: hang_up7.id,
            content: `性别:男
            性格:“长大了我要做太空人,爷爷奶奶可高兴了,给喵吃的喜之郎果冻。”`,
            options: [`${entity.l}`,`${entity.m}`,`${entity.n}`,`${entity.o}`,`${entity.p}`,`${entity.q}`,`${entity.r}`,`${entity.s}`,`${entity.t}`,`${entity.u}`,],
    })
    if (!result || result === null) {
        return; 
    }
    switch (result.index){
        case 0:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 1:
            text(entity, '', `成功放进袜子里!`)
            entity.m = ''
            entity.z = 2
            break;
        case 2:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 3:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 4:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 5:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 6:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 7:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 8:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 9:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        default:

    }
});
const hang_up8 = world.querySelector('#袜子-6');
hang_up8.enableInteract = true;
hang_up8.boolean = true            //允许互动
hang_up8.interactHint = hang_up8.id;
hang_up8.interactRadius = 4;
hang_up8.onInteract(async({entity}) => {
    const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            title: hang_up8.id,
            content: `性别:女
            性格:喵音乐`,
            options: [`${entity.l}`,`${entity.m}`,`${entity.n}`,`${entity.o}`,`${entity.p}`,`${entity.q}`,`${entity.r}`,`${entity.s}`,`${entity.t}`,`${entity.u}`,],
    })
    if (!result || result === null) {
        return; 
    }
    switch (result.index){
        case 0:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 1:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 2:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 3:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 4:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 5:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 6:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 7:
            text(entity, '', `成功放进袜子里!`)
            entity.s = ''
            entity.ab = 2
            break;
        case 8:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 9:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        default:

    }
});
const hang_up9 = world.querySelector('#袜子-7');
hang_up9.enableInteract = true;
hang_up9.boolean = true            //允许互动
hang_up9.interactHint = hang_up9.id;
hang_up9.interactRadius = 4;
hang_up9.onInteract(async({entity}) => {
    const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            title: hang_up9.id,
            content: `性别:男
            性格:吃货一枚`,
            options: [`${entity.l}`,`${entity.m}`,`${entity.n}`,`${entity.o}`,`${entity.p}`,`${entity.q}`,`${entity.r}`,`${entity.s}`,`${entity.t}`,`${entity.u}`,],
    })
    if (!result || result === null) {
        return; 
    }
    switch (result.index){
        case 0:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 1:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 2:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 3:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 4:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 5:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 6:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 7:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 8:
            text(entity, '', `要按照孩子的性格来!`)
            break;
        case 9:
            text(entity, '', `成功放进袜子里!`)
            entity.u = ''
            entity.bc = 2
            break;
        default:

    }
});
world.onPlayerJoin(async ({ entity }) => {
    entity.a = 1
    entity.b = ''
    entity.c = 0
    entity.d = ''
    entity.e = ''
    entity.f = 1
    entity.g = 1
    entity.h = 1
    entity.i = 1
    entity.j = 1
    entity.k = '让妻子开心才能把钥匙给你(话说她刚刚弄丢了化妆品)'
    entity.l = '帆船模型'
    entity.m = '火箭模型'
    entity.n = '《学霸是怎样练成的》学习秘籍'
    entity.o = '手提包'
    entity.p = '哑铃足球排球乒乓球'
    entity.q = '游戏机'
    entity.r = '《中华上下五千年》历史课外读物'
    entity.s = 'CD*10'
    entity.t = '旅行箱'
    entity.u = '肯德基全家桶'
    entity.v = 1
    entity.w = 1
    entity.x = 1
    entity.y = 1
    entity.z = 1
    entity.ab = 1
    entity.bc = 1
})
console.clear()
async function text(entity, title, content) {//将一个text封装成函数,调用时更加的简单
    return await entity.player.dialog({
        type: Box3DialogType.TEXT,//text
        title,//标题
        content//内容
    })
}
for (const npc of world.querySelectorAll('.npc')) {
    npc.enableInteract = true;
    npc.interactRadius = 5;
    npc.interactHint = npc.id
    
    
    if (npc.id == '化妆品') {
        npc.onInteract(async ({ entity }) => {
            if (entity.a == 1) {
                entity.player.directMessage('获得 化妆品*1')
                entity.a = 2
                entity.b = '化妆品';
            }
        })
    }
    if (npc.id == '妻子') {
        npc.onInteract(async ({ entity }) => {
            if (entity.a == 1) {
                text(entity, '你', `我:
                我想出去一下...`)
                text(entity, '妻子', `妻子:
                要去哪鬼混?不准去`)
                text(entity, '你', `我:
                让我去吧,不让我去我也要去!`)
                text(entity, '妻子', `妻子:
                你有钥匙吗?钥匙在我这,别想走开半步!`)
                text(entity, '你', `我:
                ......`)
                text(entity, '你', `我:
                妻管严的痛......`)
            }
            if (entity.a == 2) {
                text(entity, '妻子', `妻子:
                这不是我找了半天的化妆品吗?钥匙给你去吧去吧`)
                entity.player.directMessage('消耗 化妆品*1')
                entity.player.directMessage('获得 钥匙*1')
                entity.a = 3
                entity.b = '钥匙';
            }
        })
    }
    if (npc.id == '门') {
        npc.onInteract(async ({ entity }) => {
            if (entity.a < 3) {
                text(entity, '门', `出去了就回不来了哦`)
            }
            if (entity.a == 3) {
                entity.position.set(45, 10, 57)
                entity.a = 4
                entity.k = '翻过这座山吧'
                entity.player.enableDoubleJump = false;
            }
        })
    }
    if (npc.id == '机甲模型') {
        npc.onInteract(async ({ entity }) => {
            if (entity.f = 1) {
                text(entity, '机甲模型', `找到一个遗失的礼物`)
                entity.f = 2
            }
            if (entity.f > 1) {
                text(entity, '机甲模型', `你已经找到这个东西了!`)
            }
        })
    }
    if (npc.id == '铁甲灵犀') {
        npc.onInteract(async ({ entity }) => {
            if (entity.g = 1) {
                text(entity, '铁甲灵犀', `找到一个遗失的礼物`)
                entity.g = 2
            }
            if (entity.g > 1) {
                text(entity, '铁甲灵犀', `你已经找到这个东西了!`)
            }
        })
    }
    if (npc.id == '帆船模型') {
        npc.onInteract(async ({ entity }) => {
            if (entity.h = 1) {
                text(entity, '模型帆船', `找到一个遗失的礼物`)
                entity.h = 2
            }
            if (entity.h > 1) {
                text(entity, '模型帆船', `你已经找到这个东西了!`)
            }
        })
    }
    if (npc.id == '满城尽带黄金甲') {
        npc.onInteract(async ({ entity }) => {
            if (entity.i = 1) {
                text(entity, '满城尽带黄金甲', `找到一个遗失的礼物`)
                entity.i = 2
            }
            if (entity.i > 1) {
                text(entity, '满城尽带黄金甲', `你已经找到这个东西了!`)
            }
        })
    }
    if (npc.id == '摆件') {
        npc.onInteract(async ({ entity }) => {
            if (entity.j = 1) {
                text(entity, '摆件', `找到一个遗失的礼物`)
                entity.j = 2
            }
            if (entity.j > 1) {
                text(entity, '摆件', `你已经找到这个东西了!`)
            }
        })
    }
    if (npc.id == '继续前进') {
        npc.onInteract(async ({ entity }) => {
            if (entity.f >1) {
                if (entity.g >1) {
                    if (entity.h >1) {
                        if (entity.i >1) {
                            if (entity.j >1) {
                                entity.position.set(180, 10, 242)
                                entity.k = '根据每个孩子的性格给他们发礼物'
                            }
                        }
                    }
                }
            }
            if (entity.f =1) {
                if (entity.g =1) {
                    if (entity.h =1) {
                        if (entity.i =1) {
                            if (entity.j =1) {
                            }
                        }
                    }
                }
            }
        })
    }
    if (npc.id == '已完成') {
        npc.onInteract(async ({ entity }) => {
            if (entity.v >1) {
                if (entity.w >1) {
                    if (entity.x >1) {
                        if (entity.y >1) {
                            if (entity.z >1) {
                                if (entity.ab >1) {
                                    if (entity.bc > 1){
                                        world.say(`恭喜 ${entity.player.name} 完成所有任务!进入观众模式!!!`)
                                        entity.player.spectator = true;
                                        entity.player.invisible = true;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (entity.v =1) {
                if (entity.w =1) {
                    if (entity.x =1) {
                        if (entity.y =1) {
                            if (entity.z =1) {
                                if (entity.ab =1){
                                    if(entity.bc = 1){
                                    }
                                }
                            }
                        }
                    }
                }
            }
        })
    }
    if (npc.id == '补给雪人') {
        npc.onInteract(async ({ entity }) => {
            text(entity, '补给雪人', `送给你二段跳能力。`)
            entity.player.enableDoubleJump = true;
        })
    }
    if (npc.id == '公告栏') {
        npc.onInteract(async ({ entity }) => {
            text(entity, '任务', `给孩子们发放礼物吧!(提示,有10个礼物,但是只有7个礼物会被送出去)`)
        })
    }
    if (npc.id == '联邦星舰达契亚号') {
        npc.onInteract(async ({ entity }) => {
            text(entity, `联邦星舰达契亚号`,'怎么回事,刚刚的好像是传送门啊!')
            text(entity, `联邦星舰达契亚号`,'你要去城市里面送礼物,必须经过这座山,翻过这座山吧')
            text(entity, `广告`,'广告时间~')
            text(entity, `广告`,'U.S.S.Dacia,联邦星舰达契亚号,U.S.S联邦模型部长.漫游者 制')
            text(entity, `广告`,'2022年11月27日荣获首页通知书')
            text(entity, `广告`,'了解更多请看:https://box3.codemao.cn/u/code98913gy')
        })
    }
    if (npc.id == '代码板') {
        npc.onInteract(async ({ entity }) => {
            text(entity, `旁白`,'你本来在空中驾驶,但是不小心把5个礼物掉了下来。现在到这个村庄找回5个礼物')
        })
    }
    if (npc.id == '操作/玩法') {
        npc.onInteract(async ({ entity }) => {
            text(entity, `旁白`,'每一关的任务在刚进入关卡的地方领取')
            text(entity, `旁白`,'第三第四关做完任务后到进入关卡的地方报道进入下一关')
            text(entity, `旁白`,'右键查看提示或重新开始')
        })
    }
    if (npc.id == '提示') {
        npc.onInteract(async ({ entity }) => {
            text(entity, `游玩小提示`,'需要钥匙才能走出家门,但是钥匙似乎在妻子手上')
        })
    }
    if (npc.id == '合作方') {
        npc.onInteract(async ({ entity }) => {
            text(entity, `地图信息`,'地图信息,地图合作方:')
            text(entity, `地图信息`,'本地图由')
            text(entity, `地图信息`,'U.S.S联邦创协(USS联邦)与永宁第十一喵军创作团(永军)')
            text(entity, `地图信息`,'联合出品')
        })
    }
    if (npc.id == '军长渡赋诗') {
        npc.onInteract(async ({ entity }) => {
            text(entity, `如梦令·圣诞创作节作图`,'常记创作日暮,不知代码咋做,崩溃晚作图,代码不知何处?神渡,神渡,惊起一滩人之怒。')
        })
    }
}
world.onVoxelContact(({ entity, voxel }) => {
    if (voxel == voxels.id('white_light')) {
        entity.player.spawnPoint.copy(entity.position)
        entity.player.directMessage('存档成功')
    }
})



const hang_up1 = world.querySelector('#电脑');
hang_up1.enableInteract = true;
hang_up1.boolean = true            //允许互动
hang_up1.interactHint = hang_up1.id;
hang_up1.interactRadius = 4;
hang_up1.onInteract(async({entity}) => {
    const lookTarget = new Box3Vector3(128, 8, 128);
    const lookEye = new Box3Vector3(128, 345, 128);
    const lookUp = new Box3Vector3(1, 0, 0)
    entity.player.dialog({
        type: Box3DialogType.TEXT,
        title: "卫星全景俯视图",
        content: `观看过程中请打开最远视野~`,
        lookEye: lookEye,
        lookTarget: lookTarget,
        lookUp: lookUp
    })
})
world.onPlayerJoin(({ entity }) => {
        entity.player.addWearable({
            bodyPart: Box3BodyPart.HEAD,
            mesh: 'mesh/圣诞老人.vb',       //使用代码时,此处的名称需与地图中的模型名称保持一致
            orientation: new Box3Quaternion(0,1,0,0).rotateY(Math.PI/-2),
            offset: new Box3Vector3(0,0.9,-0.15),
            scale: new Box3Vector3(1.1, 1.1, 1.1),
        });
        entity.player.addWearable({
            bodyPart: Box3BodyPart.TORSO,
            mesh: 'mesh/身体.vb',       //使用代码时,此处的名称需与地图中的模型名称保持一致
            orientation: new Box3Quaternion(0,1,0,0).rotateY(Math.PI/-2),
            offset: new Box3Vector3(0,0.1,0.1),
            scale: new Box3Vector3(0.8, 0.8, 0.8),
        });
        entity.player.skinInvisible.torso = true;
})


//游玩提示代码:
world.onPlayerJoin(({ entity }) => {
    const dialog = entity.player.dialog({
        type: Box3DialogType.TEXT,
        title: '背景',
        content: `${entity.player.name},又是一年圣诞节了,但是却圣诞老人病了,而且请你来替他给孩子们发礼物。
        (注:由于圣诞老人是秘密职业,所以不能让你的家人们知道你是圣诞老人)`,
    });
});



//私聊代码:
async function chats(entity, other, text) {
    other.player.directMessage('收到一条私信')
    const has = await other.player.dialog({
        type: Box3DialogType.SELECT,
        title: "私聊",
        titleTextColor: new Box3RGBAColor(0, 0, 0, 1),
        titleBackgroundColor: new Box3RGBAColor(0.968, 0.702, 0.392, 1),
        content: `${entity.player.name}:\n${text}`,
        options: ['回复', '取消'],
    });
    if (!has || has === null) {
        entity.player.directMessage('你被TA无视了');
        return;
    }
    if (has.value === '回复') {
        entity.player.directMessage('对方收到了你的私信')
        const returns = await other.player.dialog({
            type: Box3DialogType.INPUT,
            title: "私聊-回复",
            titleTextColor: new Box3RGBAColor(0, 0, 0, 1),
            titleBackgroundColor: new Box3RGBAColor(0.968, 0.702, 0.392, 1),
            content: `${other.player.name},请输入回复内容`,
            confirmText: '发送',
            placeholder: '输入回复内容',
        });
        if (!returns || returns === null) {
            return;
        }
        chats(other, entity, returns)
    }
    else if (has.value === '取消') {
        entity.player.directMessage('对方收到了你的私信')
    }
}
world.onPlayerJoin(({ entity }) => {
    entity.player.interactTimes = 0;
    entity.enableInteract = true;
    entity.interactRadius = 1.5;
    entity.interactHint = '互动';
    entity.onInteract(async ({ entity, targetEntity }) => {
        targetEntity.player.directMessage('收到了@' + entity.player.name + ' 向你发送私聊信息,正在查收……')
        while (!entity.destroyed) {
            const others = await entity.player.dialog({
                type: Box3DialogType.SELECT,
                title: targetEntity.player.name + ' 的信息',
                titleTextColor: new Box3RGBAColor(0, 0, 0, 1),
                titleBackgroundColor: new Box3RGBAColor(0.968, 0.702, 0.392, 1),
                content: `请写下你想对TA说的话`,
                options: ['和TA私聊'],
            })
            if (!others || others === null) {
                return;
            }
            if (others.value == '和TA私聊') {
                const chating = await entity.player.dialog({
                    type: Box3DialogType.INPUT,
                    title: "私聊",
                    titleTextColor: new Box3RGBAColor(0, 0, 0, 1),
                    titleBackgroundColor: new Box3RGBAColor(0.968, 0.702, 0.392, 1),
                    content: `${entity.player.name},请输入私聊内容`,
                    confirmText: '发送',
                    placeholder: '输入私聊内容',
                });
                if (!chating || chating === null) {
                    return;
                }
                chats(entity, targetEntity, chating)
            }
        }
    })
})

world.onVoxelContact(({other,entity,player,voxel, x, y, z }) => { //当触碰方块
     entity.enableDamage = true 
    if (voxel === voxels.id('polar_ice')) { 
        entity.hurt(100) //受伤
    }}
    )
    // 玩家喵时,等待5秒后复活。 
world.onDie(async({ entity }) => { // 等待事件需要用 async
    if (!entity.isPlayer) return;  // 不处理非玩家的喵事件
    entity.player.forceRespawn();  // 让玩家重生
})

world.onChat(({ entity, message }) => {
    world.querySelectorAll('player').forEach((x) => {
        if (x.player.name == message) {
            world.querySelectorAll("player").forEach((c) => {
                if (c.player.name == entity.player.name) { c.player.cameraEntity = x; }
            })
        }
    });
})

const number = { '1': 'one', '2': 'two', '3': 'three', '4': 'four', '5': 'five', '6': 'six', '7': 'seven', '8': 'eight', '9': 'nine', '0': 'zero' }


var adminsss = ['云游de军长渡','U.S.S联邦最高议会长官.人之怒', '奇异果博士','云游de吉祥~~~']
world.onChat(async ({ entity, message }) => {
    if (entity.isPlayer) {
        if (adminsss.includes(entity.player.name)) {
            if (message == '特殊权限') { entity.player.directMessage('亲爱的创作人员你好!特殊功能包含变大、变小、还原大小、飞行、解除飞行、隐身、现身、隐藏名字、显示名字、穿墙、解除穿墙、发光、还原发光、反光、还原反光、变红色、变蓝色、变绿色、变紫色、变黄色、变浅蓝色、还原颜色、全部还原、禁言(例如:禁言+禁言者名字)、解除禁言(例如:解除禁言+被禁言者名字),提示(禁言和禁言者名字间要加一个空格)。') }
            if (message == '变大') { entity.player.scale = 2; world.say(entity.player.name + '变大了') }
            if (message == '变小') { entity.player.scale = 0.25; world.say(entity.player.name + '变小了') }
            if (message == '还原大小') { entity.player.scale = 1; world.say(entity.player.name + '还原了大小') }
            if (message == '飞行') { entity.player.canFly = true; world.say(entity.player.name + '开启了飞行模式') }
            if (message == '解除飞行') { entity.player.canFly = false; world.say(entity.player.name + '关闭了飞行模式') }
            if (message == '加速') {
                entity.player.walkSpeed += 10000
                entity.player.runSpeed += 500
                entity.player.flySpeed += 700
                world.say(entity.player.name + '加速了')
            }
            if (message == '隐身') { entity.player.invisible = true; world.say(entity.player.name + '隐身') }
            if (message == '现身') { entity.player.invisible = false; world.say(entity.player.name + '现身了') }
            if (message == '隐藏名字') { entity.player.showName = false; world.say(entity.player.name + '隐藏了名字') }
            if (message == '显示名字') { entity.player.showName = true; world.say(entity.player.name + '显示了名字') }
            if (message == '穿墙') { entity.player.spectator = true; world.say(entity.player.name + '开启了穿墙模式') }
            if (message == '解除穿墙') { entity.player.spectator = false; world.say(entity.player.name + '关闭了穿墙模式') }
            if (message == '发光') { entity.player.emissive = 1; world.say(entity.player.name + '开启了发光效果') }
            if (message == '还原发光') { entity.player.emissive = 0; world.say(entity.player.name + '还原了发光效果') }
            if (message == '反光') { entity.player.shininess = 1; world.say(entity.player.name + '开启了反光效果') }
            if (message == '还原反光') { entity.player.shininess = 0; world.say(entity.player.name + '还原了反光效果') }
            if (message == '变红色') { entity.player.color.set(1, 0, 0); world.say(entity.player.name + '变成了红色') }
            if (message == '变蓝色') { entity.player.color.set(0, 0, 1); world.say(entity.player.name + '变成了蓝色') }
            if (message == '变绿色') { entity.player.color.set(0, 1, 0); world.say(entity.player.name + '变成了绿色') }
            if (message == '变紫色') { entity.player.color.set(1, 0, 1); world.say(entity.player.name + '变成了紫色') }
            if (message == '变黄色') { entity.player.color.set(1, 1, 0); world.say(entity.player.name + '变成了黄色') }
            if (message == '变浅蓝色') { entity.player.color.set(0, 1, 1); world.say(entity.player.name + '变成了浅蓝色') }
            if (message == '还原颜色') { entity.player.color.set(1, 1, 1); world.say(entity.player.name + '还原了颜色') }
            if (message == '全部还原') {
                entity.player.scale = 1
                entity.player.canFly = false
                entity.player.showName = true
                entity.player.spectator = false
                entity.player.emissive = 0
                entity.player.shininess = 0
                entity.player.color.set(1, 1, 1)
                world.say(entity.player.name + '全部还原了')
            }
            if (message.startsWith('禁言')) {
                if (message.slice(2) == entity.player.name) {
                    entity.player.directMessage('无法禁言自己,请重新尝试!')
                } else {
                    world.querySelectorAll('player').forEach((x) => {
                        if (x.player.name == message.slice(2)) {
                            x.player.directMessage('你已被管喵禁言,请等待管喵解除')
                            world.say('有人犯了错,被管喵禁言了!')
                            x.player.muted = true
                        }
                    })
                }
            }
            if (message.startsWith('监狱')) {
                if (message.slice(3) == entity.player.name) {
                    entity.player.directMessage('无法让自己进监狱,请重新尝试!')
                } else {
                    world.querySelectorAll('player').forEach((x) => {
                        if (x.player.name == message.slice(3)) {
                            x.player.directMessage('管喵把你扔进监狱了!请好好反省!')
                            x.position.set(99, 8, 37)
                            world.say(`管喵把 ${x.player.name} 扔进监狱了! `)
                        }
                    })
                }
            }
            if (message.startsWith('/KILL/')) {
                if (message.slice(6) == entity.player.name) {
                    entity.player.directMessage('无法干掉自己,请重新尝试!')
                } else {
                    world.querySelectorAll('player').forEach((x) => {
                        if (x.player.name == message.slice(6)) {
                            world.say('有人被喵了!')
                            x.hurt(1000000)
                            world.say('管喵击杀了' + x.player.name)
                        }
                    })
                }
            }
            if (message.startsWith('/FIND/')) {
                if (message.slice(6) == entity.player.name) {
                    entity.player.directMessage('无法寻找自己,请重新尝试!')
                } else {
                    world.querySelectorAll('player').forEach((x) => {
                        if (x.player.name == message.slice(6)) {
                            x.position.set(entity.position.x, entity.position.y, entity.position.z)
                        }
                    })
                }
            }
            if (message.startsWith('/SET/')) {
                if (message.slice(5) == entity.player.name) {
                    entity.player.directMessage('无法寻找自己,请重新尝试!')
                } else {
                    world.querySelectorAll('player').forEach((eee) => {
                        if (eee.player.name == message.slice(5)) {
                            entity.position.set(eee.position.x, eee.position.y, eee.position.z)
                        }
                    })
                }
            }
            if (message.startsWith('解除禁言')) {
                if (message.slice(4) == entity.player.name) {
                    entity.player.directMessage('无法解除禁言自己,请重新尝试!')
                } else {
                    world.querySelectorAll('player').forEach((x) => {
                        if (x.player.name == message.slice(4)) {
                            x.player.directMessage('你已被管喵解除禁言')
                            world.say('有人被管喵解除禁言了!')
                            x.player.muted = false
                        }
                    })
                }
            }
            if (message[0] == "$") {
                if (adminsss.includes(entity.player.name)) {
                    try {
                        var code = eval(message.slice(1));
                        world.say(`~>${code}`)
                    }
                    catch (e) {
                        world.say(e)
                    }
                }
            }
        }
    }
})
var zuozhe = ['云游de军长渡','U.S.S联邦最高议会长官.人之怒','奇异果博士']
world.onChat(async ({ entity, message }) => {
    if (entity.isPlayer) {
        if (zuozhe.includes(entity.player.name)) {
if (message.startsWith('/KICK/')) {
                if (message.slice(6) == entity.player.name) {
                    entity.player.directMessage('无法踢掉自己,请重新尝试!')
                } else {
                    world.querySelectorAll('player').forEach((x) => {
                        if (x.player.name == message.slice(6)) {
                            world.say('有人被踢走了!')
                            x.player.kick()
                            world.say('管喵踢走了' + x.player.name)
                        }
                    })
                }
            }
}
}
})


world.addCollisionFilter('player', 'player');

(async function () {
    world.querySelector('.A').friction = Infinity
    while (1) {
        for (let i = 0; i < 200; i++) {
            world.querySelector('.A').position.z += 0.2
            world.querySelector('.A').position.x -= 0.02
            await sleep(20)
        }
        for (let i = 0; i < 200; i++) {
            world.querySelector('.A').position.z -= 0.2
            world.querySelector('.A').position.x += 0.02
            await sleep(52)
        }
    }
})();
(async function () {
    world.querySelector('.B').friction = Infinity
    while (1) {
        for (let i = 0; i < 200; i++) {
            world.querySelector('.B').position.z -= 0.2
            world.querySelector('.B').position.x += 0.02
            await sleep(20)
        }
        for (let i = 0; i < 200; i++) {
            world.querySelector('.B').position.z += 0.2
            world.querySelector('.B').position.x -= 0.02
            await sleep(20)
        }
    }
})();
(async function () {
    world.querySelector('.C').friction = Infinity
    while (1) {
        for (let i = 0; i < 200; i++) {
            world.querySelector('.C').position.x += 0.2
            world.querySelector('.C').position.z -= 0.02
            await sleep(20)
        }
        for (let i = 0; i < 200; i++) {
            world.querySelector('.C').position.x -= 0.2
            world.querySelector('.C').position.z += 0.02
            await sleep(20)
        }
    }
})();
(async function () {
    world.querySelector('.D').friction = Infinity
    while (1) {
        for (let i = 0; i < 200; i++) {
            world.querySelector('.D').position.x -= 0.2
            world.querySelector('.D').position.z += 0.02
            await sleep(20)
        }
        for (let i = 0; i < 200; i++) {
            world.querySelector('.D').position.x += 0.2
            world.querySelector('.D').position.z -= 0.02
            await sleep(20)
        }
    }
})();
(async function () {
    world.querySelector('.E').friction = Infinity
    while (1) {
        for (let i = 0; i < 200; i++) {
            world.querySelector('.E').position.x -= 0.2
            world.querySelector('.E').position.z += 0.02
            await sleep(20)
        }
        for (let i = 0; i < 200; i++) {
            world.querySelector('.E').position.x += 0.2
            world.querySelector('.E').position.z -= 0.02
            await sleep(20)
        }
    }
})();

(async function () {
    world.querySelector('.F').friction = Infinity
    while (1) {
        for (let i = 0; i < 200; i++) {
            world.querySelector('.F').position.x += 0.2
            world.querySelector('.F').position.z -= 0.02
            await sleep(20)
        }
        for (let i = 0; i < 200; i++) {
            world.querySelector('.F').position.x -= 0.2
            world.querySelector('.F').position.z += 0.02
            await sleep(20)
        }
    }
})();

console.clear(); //清空控制台信息
const Quat = new Box3Quaternion(0, 0, 0, 1); //初始化四元数,用于旋转
const e = world.querySelector('#炮台'); //获取炮台实体

world.onPlayerJoin(({ entity }) => { //当玩家进入时
    entity.position.set(25, 10, 18); //设置玩家的坐标为 { x: 32, y: 13, z: 32 }
    entity.player.spawnPoint.copy(entity.position); //设置玩家的重生点为位置,也就是 { x: 32, y: 13, z: 32 }
    entity.enableDamage = true; //让玩家允许受到伤害
});

const zone = world.addZone({ //添加一个炮台检测的区域
    selector: 'player', //区域内的物体搜索条件,这里为玩家
    bounds: { //指定检测区域
        lo: e.position.sub({ x: 40, y: 2, z: 40 }), //最低点,这里用位置的sub方法来实现一个位置减去另一个位置的功能
        hi: e.position.add({ x: 40, y: 5, z: 40 }), //最高点,这里用位置的add方法来实现一个位置加上另一个位置的功能
    },
});

zone.onEnter(({ entity }) => { //如果炮台检测的区域进入了玩家
    entity.interval = setInterval(async () => { //每2秒执行一次,把这个程序放在entity.interval中
        if (zone.entities().includes(entity)) { //如果玩家在这个区域里
            let direction = entity.position.sub(e.position); //用位置的sub方法算出方向
            let face = direction.clone(); //用clone函数复制一个一样的位置对象
            let d = Quat.rotateY(Math.atan2(face.z, face.x)); //用初始化四元数的rotateY方法来旋转Y轴,用atan2函数来计算旋转弧度,这样我们就得到了一个玩家方向的四元数
            e.meshOrientation = d; //设置子弹的旋转值为玩家方向

            let bullet = world.createEntity({ //创建一个子弹实体
                mesh: 'mesh/子弹.vb', //模型为子弹模型
                meshScale: [1/80, 1/80, 1/80], //大小为默认大小,[1/16, 1/16, 1/16]
                collides: true, //开启碰撞
                gravity: false, //不受重力影响
                position: e.position, //在玩家的位置生成子弹
                velocity: face.scale(0.15), //子弹的初速度是玩家方向,因为速度太快了,所以要用位置的scale方法来把xyz各乘上0.15
                meshOrientation: d.rotateY(Math.PI / 1), //子弹的头指向玩家,这里还需要用四元数的rotateY方法来旋转90度
            });

            bullet.onEntityContact(({ other }) => { //每当子弹碰到另一个实体
                if (other.hp > 0) { //如果这个实体的血量大于0
                    other.hurt(100, { //被碰实体受10点伤害
                        damageType: '炮台的子弹', //伤害类型设为“炮台的子弹” 
                    });
                    bullet.destroy(); //攻击之后子弹消失,防止重复攻击
                }
            });

            await sleep(2500); //等1.5秒后
            if (!bullet.destroyed) { //如果这个子弹还没有清除
                bullet.destroy(); //清除子弹,防止子弹数量太多超过服务器负载
            }
        }
    }, 900);
});

zone.onLeave(({ entity }) => {
    if (entity.interval) clearInterval(entity.interval); //如果entity.interval这个程序存在,把每2秒执行一次的子弹程序取消,防止多个子弹程序一起发生
});

world.onDie(async ({ entity, damageType }) => { //当有玩家S亡时
    if (entity.interval) clearInterval(entity.interval); //如果entity.interval这个程序存在,把每2秒执行一次的子弹程序取消,防止多个子弹程序一起发生
    while (1) { //无限循环,防止玩家点“×”
        let respawnDialog = await entity.player.dialog({ //该玩家弹出一个对话框
            type: Box3DialogType.SELECT, //类型为选择对话框
            title: '喵提示', //将对话框的标题设为“喵提示”
            content: `你被${damageType}击杀了
            ${entity.player.name=='云游de军长渡'?'':`弹,是一个创想,一名小学生在没有陀螺玩时做出的无奈幻想;
            弹,是一股不挡,在课桌上渐渐接过了竹节人的气场;
            弹,是一种梦想,一起来让我们童年时玩过的游戏火遍全网!
            box3.codemao.cn/g/958580`}`, //将对话框的内容设为一个模板字符串,拼接方式为 '你被' + damageType + '击杀了'
            options: ['重生'], //对话框的选项只有一个,就是“重生”
        });

        if (respawnDialog) { //如果玩家点击了选项(因为选项只有一个,所以这行代码的意思还可以是“如果玩家点击了‘重生’”)
            entity.player.forceRespawn(); //让玩家重生
            break; //退出无限循环
        } //这里不用判断“如果玩家没有点击选项”了,因为这是无限循环,如果不点击选项就没有break,自然就直接进行下一轮循环(重新弹出一遍对话框)了
    }
});

const hang_up3 = world.querySelector('#圣诞驯鹿');
hang_up3.enableInteract = true;
hang_up3.boolean = true            //允许互动
hang_up3.interactHint = hang_up3.id;
hang_up3.interactRadius = 4;
hang_up3.onInteract(async({entity}) => {
    const result = await entity.player.dialog({
            type: Box3DialogType.SELECT,
            title: hang_up3.id,
            content: `即将进入下一关,准备好了吗??`,
            options: ['准备好了'],
    })
    if (!result || result === null) {
        return; 
    }
    switch (result.index){
        case 0:
            entity.position.set(63, 10, 68)
            entity.k = '把丢失的东西找回来。'
            break;
        default:

    }
});

代码较乱,不喜勿喷


回复

上一页1 页 / 共 1下一页
yyds二营长yyds二营长

收藏

点赞0


评论


仙之鹤仙之鹤

谢大佬

点赞0


评论


迷失冷光迷失冷光

一眼能缩成200行

点赞0


评论


屑怪盗屑怪盗

收藏

点赞0


评论


yyds二营长yyds二营长

收藏

点赞0


评论