猫史档案馆


【代码岛3.0】圣诞公园【】 全部代码揭秘!

用户:AbnormalLOGAbnormalLOG查看:0 回复:0 评论:0 创建时间:2020-12-18T17:35:58


//-----setup-----


const Parkour = /^跑酷/i;//跑酷聊天命令
const end_Parkour = /^停止跑酷/i;
const help_message = /^help/i;
const help = `
    欢迎来到${world.projectName}~
    合作人员:
    天真的流星猫fiED(https://box3.codemao.cn/u/8NDS6dhsAkDUq58)
    幸运喵mmGZ(https://box3.codemao.cn/u/SVgLoUtviMWRLuz)
    功夫熊猫666(https://box3.codemao.cn/u/3EQGZs9K9KCtsic)
    我的个人主页:https://box3.codemao.cn/u/P10dpwtEjNjnKvg
    地图里有许多彩蛋~
    想要跑酷请说:跑酷,
    停止跑酷说:停止跑酷,
    帮助:help
`

const GIFT_NUMBER = {}
var ADMIN_PLAYER = ["__name__", "吉吉喵", "搬砖喵", "美术喵"]
const TOOL = require('./TOOL.js');
function gift() {

    var mesh = TOOL.listsGetRandomItem(['mesh/圣诞礼物6.vb', 'mesh/圣诞礼物7.vb', 'mesh/圣诞礼物8.vb', 'mesh/圣诞礼物9.vb'])
    var random = Math.random() * 1
    var z = world.createEntity({
        mesh: `${mesh}`,
        position: world.querySelector(".xq").position,
        meshScale: [random / 16, random / 16, random / 16],
        meshColor: new Box3RGBAColor(253, 180, 23, 255),
        meshEmissive: 0.14
    })
    z.addTag("礼物"); z.addTag("动物")

}
(async function () {

    for (var i = 0; i < 50; i++) {
        var name = TOOL.listsGetRandomItem(['雷电猴', '阿若法狗', '编程猫', '猫老祖','新手指引宠物'])
        var z = world.createEntity({
            mesh: `mesh/${name}.vb`,
            position: [39, 13, 56.5],
            meshScale: [1 / 16, 1 / 16, 1 / 16],
            interact: true,
            interactHint: `${name}`,
            interactColor: new Box3RGBAColor(50, 50, 50, 50),
            id: name
        })
        z.addTag("动物")
        z.enableInteract = true
    }
    var j = world.createEntity({
        mesh: "mesh/S喵-警笛头.vb",
        position: [122, 3, 51],
        meshScale: [1.7 / 16, 1.7 / 16, 1.7 / 16],
    })
    j.addTag("警笛头")
    for (var i = 0; i < 100; i++) {
        gift()
        await sleep(100)
    }
    world.say("礼物已生成!由papyrus提供,sans发送!")
})();
setInterval(() => {
    world.say("礼物由papyrus提供,sans发送!")
}, 1000 * 60 * 2);
world.onPlayerJoin(async ({ entity }) => {
    entity.addTag(entity.player.name)
    world.say(`${entity.player.name},欢迎进入地图`)
    entity.player.canFly = false
    entity.position = new Box3Vector3(73, 12, 118)
    entity.player.spawnPoint.copy(entity.position)
    TOOL.Notice(`欢迎${entity.player.name}~~~`)
    entity.enableDamage = true; entity.maxHp = 100
    if (GIFT_NUMBER[entity.player.name] === undefined) {
        GIFT_NUMBER[entity.player.name] = 0
    }
    if (ADMIN_PLAYER.includes(entity.player.name)) {
        entity.player.canFly = true
        entity.player.addWearable({
            bodyPart: Box3BodyPart.HIPS,
            mesh: 'mesh/光环.vb',
            orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(Math.PI/2),
            scale: new Box3Vector3(0.5, 0.5, 0.5),
            offset: new Box3Vector3(0, 2, 0),emissive:0.14
        })
        entity.player.addWearable({
            bodyPart: Box3BodyPart.HIPS,
            mesh: 'mesh/天使之翼.vb',
            orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(Math.PI/2),
            scale: new Box3Vector3(0.5, 0.5, 0.5),
            offset: new Box3Vector3(0, 0.5, -0.5),emissive:0.14
        })

    }
    entity.player.enable3DCursor = true;
})
world.onDie(({ entity }) => {
    if (entity.isPlayer) {
        TOOL.Notice(`${entity.player.name}喵亡,将在3秒后复活`) 
        sleep(3000).then(() => { entity.player.forceRespawn() })
    }
})
world.onInteract(async ({ entity, targetEntity }) => {
    if (targetEntity.hasTag("sans")) {
        await entity.player.dialog({
            type: Box3DialogType.TEXT,
            title: "undertale sans",
            content: "hi,可能你有很大的胆子来看我,你敢碰我吗?"
        })
    }
    if (targetEntity.hasTag("GGM")) {
        var g = await entity.player.dialog({
            type: Box3DialogType.INPUT,
            title: `${entity.id}`,
            confirmText: '确定',
            content: `输入地图作者的个性签名,我才放你出去!`,
            placeholder: "去 https://box3.codemao.cn/u/P10dpwtEjNjnKvg 看看~"
        })

        if (g != "我是__name__") {
            targetEntity.say(`❌你说了${g},答案错误!❌`)
        } else {
            entity.position = new Box3Vector3(73, 12, 118)
            entity.player.spawnPoint.copy(entity.position)
            entity.player.directMessage(`欢迎出狱!(……)`)
            entity.player.muted = false
        }
    }
    if (targetEntity.hasTag("开关")) {
        targetEntity.say(entity.player.name + ",欢迎回来~")
        voxels.setVoxel(86, 15, 118, 0)
        voxels.setVoxel(86, 15, 117, 0)
        voxels.setVoxel(86, 15, 116, 0)
        voxels.setVoxel(86, 14, 118, 0)
        voxels.setVoxel(86, 14, 117, 0)
        voxels.setVoxel(86, 14, 116, 0)
        voxels.setVoxel(86, 13, 118, 0)
        voxels.setVoxel(86, 13, 117, 0)
        voxels.setVoxel(86, 13, 116, 0)
        voxels.setVoxel(86, 12, 118, 0)
        voxels.setVoxel(86, 12, 117, 0)
        voxels.setVoxel(86, 12, 116, 0)
        /****/await sleep(3000)
        voxels.setVoxel(86, 15, 118, 'palace_cloud')
        voxels.setVoxel(86, 15, 117, 'palace_cloud')
        voxels.setVoxel(86, 15, 116, 'palace_cloud')
        voxels.setVoxel(86, 14, 118, 'palace_cloud')
        voxels.setVoxel(86, 14, 117, 'palace_cloud')
        voxels.setVoxel(86, 14, 116, 'palace_cloud')
        voxels.setVoxel(86, 13, 118, 'palace_cloud')
        voxels.setVoxel(86, 13, 117, 'palace_cloud')
        voxels.setVoxel(86, 13, 116, 'palace_cloud')
        voxels.setVoxel(86, 12, 118, 'palace_cloud')
        voxels.setVoxel(86, 12, 117, 'palace_cloud')
        voxels.setVoxel(86, 12, 116, 'palace_cloud')


    }
    if (targetEntity.hasTag("开关2")) {
        targetEntity.say(entity.player.name + ",一路顺风~")
        voxels.setVoxel(86, 15, 118, 0)
        voxels.setVoxel(86, 15, 117, 0)
        voxels.setVoxel(86, 15, 116, 0)
        voxels.setVoxel(86, 14, 118, 0)
        voxels.setVoxel(86, 14, 117, 0)
        voxels.setVoxel(86, 14, 116, 0)
        voxels.setVoxel(86, 13, 118, 0)
        voxels.setVoxel(86, 13, 117, 0)
        voxels.setVoxel(86, 13, 116, 0)
        voxels.setVoxel(86, 12, 118, 0)
        voxels.setVoxel(86, 12, 117, 0)
        voxels.setVoxel(86, 12, 116, 0)
        /****/await sleep(3000)
        voxels.setVoxel(86, 15, 118, 'palace_cloud')
        voxels.setVoxel(86, 15, 117, 'palace_cloud')
        voxels.setVoxel(86, 15, 116, 'palace_cloud')
        voxels.setVoxel(86, 14, 118, 'palace_cloud')
        voxels.setVoxel(86, 14, 117, 'palace_cloud')
        voxels.setVoxel(86, 14, 116, 'palace_cloud')
        voxels.setVoxel(86, 13, 118, 'palace_cloud')
        voxels.setVoxel(86, 13, 117, 'palace_cloud')
        voxels.setVoxel(86, 13, 116, 'palace_cloud')
        voxels.setVoxel(86, 12, 118, 'palace_cloud')
        voxels.setVoxel(86, 12, 117, 'palace_cloud')
        voxels.setVoxel(86, 12, 116, 'palace_cloud')
    }
    if (targetEntity.hasTag("世界爆炸")) {
        await entity.player.dialog({
            type: "text",
            title: "世界爆炸",
            content: "点击我!"
        })
    }
    if (targetEntity.hasTag("地图")) {
        await entity.player.dialog({ type: "text", title: "雪人", content: "圣诞快乐~" })
    }
})
world.onClick(async ({ entity, clicker }) => {
    if (clicker.isPlayer) {
        if (entity.hasTag("世界爆炸")) {
            TOOL.Notice(clicker.player.name + "点击了世界爆炸按钮!世界将在20秒后爆炸!")
            for (var time = 0; time < 20; time++) {
                await sleep(1000)
                TOOL.Notice(time + "...")

            }
            world.querySelectorAll("player").forEach((p) => {
                if (p.player.name != clicker.player.name) {
                    p.hurt(100)
                }
                TOOL.Notice("世界已爆炸.")
            })
        }
    }
})
world.onEntityContact(async ({ entity, other }) => {
    if (other.isPlayer) {
        if (entity.hasTag("飞机")) {
            other.mesh = entity.mesh
            other.meshScale = entity.meshScale
            other.meshOrientation = new Box3Quaternion(0, 1, 0, 0)
            other.player.invisible = true;
            other.player.flySpeed = 10
            world.say(`${other.player.name}开走了飞机`)
            other.player.canFly = true
            Object.assign(other, {
                particleRate: 1000,
                particleSize: [1, 1, 1, 1, 1, 1],
                particleLifetime: 100,
                particleVelocity: new Box3Vector3(0, 0.5, 0),
                particleColor: [
                    new Box3RGBColor(1, 0, 0),
                    new Box3RGBColor(0, 1, 0),
                    new Box3RGBColor(0, 0, 1),
                    new Box3RGBColor(1, 0, 0),
                    new Box3RGBColor(0, 1, 0),
                    new Box3RGBColor(0, 0, 1),
                ]
            });

        }
        if (entity.hasTag("礼物")) {
            entity.destroy()
            GIFT_NUMBER[other.player.name]++
            other.player.directMessage("你获得了一个礼物,当前你有礼物" + GIFT_NUMBER[other.player.name] + '个')

            gift()
        }
        if (entity.hasTag("光环")) {
                    other.player.addWearable({
            bodyPart: Box3BodyPart.HIPS,
            mesh: 'mesh/光环.vb',
            orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(Math.PI/2),
            scale: new Box3Vector3(0.5, 0.5, 0.5),
            offset: new Box3Vector3(0, 2, 0),emissive:0.14
        })
        }
        if (entity.hasTag("缩小")) {
            other.player.scale = 0.5
            other.player.forceRespawn()
        }
        if (entity.hasTag('飞行彩蛋')) {
            other.player.canFly = true
                    other.player.addWearable({
            bodyPart: Box3BodyPart.HIPS,
            mesh: 'mesh/天使之翼.vb',
            orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(Math.PI/2),
            scale: new Box3Vector3(0.5, 0.5, 0.5),
            offset: new Box3Vector3(0, 0.5, -0.5),emissive:0.14
        });other.player.forceRespawn()
            TOOL.Notice(other.player.name + "获得飞行")

        }
        if (entity.hasTag("飞")) {
            other.player.canFly = true
            TOOL.Notice(`${other.player.name}获得飞行功能~`)

        }
        if (entity.hasTag("幽灵")) {
            other.player.spectator = true
        }
        if (entity.hasTag("狗")) {
            TOOL.entity_hurt(100, other, await_ = 50)
        }
        if (entity.hasTag("sans")) {
            other.position = new Box3Vector3(122, 3, 51)
            other.player.spawnPoint.copy(other.position)
            other.player.muted = true
            TOOL.Notice(
                `
                最近,Box3.0通缉的犯人${other.player.name}被捉住,进入监狱
            `
            )
        }
        if (entity.hasTag("电视")) {
            //for (let i=0;i<50*500000;i++) {
            /*other.hurt(100000);*/
            other.hurt(-100000)
            //}

        }
        if (entity.hasTag("挂机")) {
            if (Math.random() < 0.1) {
                other.position = new Box3Vector3(124, 13, 42)
            } else if (Math.random() > 0.3) {
                other.position = new Box3Vector3(124, 13, 48)
            } else {
                other.position = new Box3Vector3(124, 13, 54)
            }

        }
        if (entity.hasTag('跑酷1')) {
            TOOL.Notice(`${other.player.name}开始跑酷啦`)
            other.player.canFly = false
            world.addCollisionFilter('.'+other.player.name,'player')
            other.addTag("跑酷")
            other.addTag('跑酷01')
            other.player.spawnPoint = new Box3Vector3(
                entity.position.x,
                entity.position.y + 3,
                entity.position.z
            )
            TOOL.aura(entity)
        }
        if (entity.hasTag('跑酷2')) {
            world.say(`${other.player.name}冲破了跑酷第1关~`)
            other.player.spawnPoint = new Box3Vector3(
                entity.position.x,
                entity.position.y + 3,
                entity.position.z
            )
            TOOL.aura(entity)
            other.addTag('跑酷02')
        }
        if (entity.hasTag('跑酷3')) {
            world.say(`${other.player.name}冲破了跑酷第2关~`)
            other.player.spawnPoint = new Box3Vector3(
                entity.position.x,
                entity.position.y + 3,
                entity.position.z
            )
            TOOL.aura(entity);other.addTag('跑酷03')
        }
        if (entity.hasTag('终点')) {
            if (other.hasTag("跑酷") && (other.hasTag("跑酷01") && (other.hasTag("跑酷02") && other.hasTag("跑酷03")))) {
                world.removeCollisionFilter("."+other.player.name,"player")
                TOOL.Notice(`恭喜${other.player.name}冲破了终点!`)
                TOOL.aura(entity)
                other.removeTag('跑酷')
                other.position = new Box3Vector3(73, 13, 118)
                other.player.spawnPoint.copy(entity.position)
                
                other.player.canFly = true
            }
        }
    }
})

world.onVoxelContact(({ entity, voxel, x, y, z }) => {
    if (entity.isPlayer) {
        if (voxel == voxels.id("exclamation_mark")) {
            if (x === 35 && (z == 56 || z == 57)) {
                voxels.setVoxel(35, 15, 57, 0)
                voxels.setVoxel(35, 15, 56, 0)
                voxels.setVoxel(35, 14, 57, 0)
                voxels.setVoxel(35, 14, 56, 0)
                voxels.setVoxel(35, 13, 57, 0)
                voxels.setVoxel(35, 13, 56, 0)
                sleep(3000).then(() => {
                    voxels.setVoxel(35, 15, 57, "exclamation_mark")
                    voxels.setVoxel(35, 15, 56, "exclamation_mark")
                    voxels.setVoxel(35, 14, 57, "exclamation_mark")
                    voxels.setVoxel(35, 14, 56, "exclamation_mark")
                    voxels.setVoxel(35, 13, 57, "exclamation_mark")
                    voxels.setVoxel(35, 13, 56, "exclamation_mark")
                })
            }
        }
    }
})
world.onChat(({ entity, message }) => {
    if (entity.isPlayer) {
        if (message.match(Parkour)) {
            entity.position = new Box3Vector3(
                world.querySelector(".跑酷1").position.x,
                world.querySelector(".跑酷1").position.y + 3,
                world.querySelector(".跑酷1").position.z,
            )
        }
        if (message.match(help_message)) {
            entity.player.directMessage(help)
        }
    }
})

world.onTick(({ tick }) => {

    world.querySelectorAll(".xq").forEach((xq) => {
        xq.position.x -= 1
        if (xq.position.x < 5) {
            xq.position.x = 117.8
        }
    })
    world.querySelector(".lr").position = new Box3Vector3(world.querySelector(".xq").position.x + 3,
        world.querySelector(".xq").position.y, world.querySelector(".xq").position.z)
    world.querySelector(".地图").enableInteract = true
    world.querySelector(".sans").enableInteract = true; world.querySelector(".GGM").enableInteract = true; world.querySelector(".踏板").collides = true
    world.querySelectorAll(".跑酷").forEach((e) => { if (e.position.y < 117) { TOOL.entity_hurt(100, e, await_ = 10) } })
    world.querySelector(".开关").enableInteract = true; world.querySelector(".开关2").enableInteract = true; world.querySelector(".世界爆炸").enableInteract = true
    world.querySelectorAll(".动物").forEach((e) => {
        const sdxz = Math.abs(e.velocity.x) + Math.abs(e.velocity.z);
        if (sdxz > 0.1) {
            const angle = Math.floor(Math.atan2(e.velocity.z, e.velocity.x) / (2. * Math.PI) * 256) * 2. * Math.PI / 256;
            const orientation = new Box3Quaternion(0, 0, 0, 1).rotateY(angle).rotateY(Math.PI / 4);
            e.meshOrientation.copy(orientation);
        } else {
            const randTheta = Math.random() * Math.PI * 2;
            const mag = Math.random() + Math.random();
            e.velocity.x = mag * Math.sin(randTheta);
            e.velocity.z = mag * Math.cos(randTheta);
        }
        e.onVoxelContact(({ voxel }) => {
            e.velocity.y = 0.3 + Math.random() * 0.7
        })
        e.onInteract(async ({ entity }) => {
            await entity.player.dialog({
                type: 'text',
                content: TOOL.listsGetRandomItem(['你好~', '知道不,图主为了干这个地图的跑酷喵了几十次', "图主告诉我,这个图有许多彩蛋!"]),
                title: e.id
            })
        })
    });

    const Quat = new Box3Quaternion(0, 0, 0, 1)// box引擎默认的旋转朝向
    let allPlayers = []//所有玩家
    let allZombies = []//所有僵尸
    allPlayers = world.querySelectorAll('player')
    allZombies = world.querySelectorAll('.警笛头')
    allZombies.forEach(async (e) => {
        let zomPos = e.position
        if (tick % 11 === 0) {
            let target = allPlayers.sort((a, b) => {
                return a.position.distance(zomPos) - b.position.distance(zomPos)
            })[0]
            if (target) {
                e.target = target
            }
        }
        if (e.target && !e.target.destroyed) {
            var direction = e.target.position.sub(zomPos);
            var dist = direction.mag()
            var speed = 0.2 + Math.random() * 0.3
            e.velocity.x = direction.x * speed / dist
            e.velocity.z = direction.z * speed / dist
            var orientation = Quat.rotateY(Math.atan2(e.velocity.z, e.velocity.x))
            e.meshOrientation.copy(orientation)
        }

    })
    world.querySelectorAll('.地图').forEach((e)=>{
    var type='p';
    world.onTick(()=>{
        if(e.meshOrientation.x>=0.5){
            e.meshOrientation.x-=0.1;
            type='m';
        } else if(e.meshOrientation.x<=-0.5){
            e.meshOrientation.x+=0.1;
            type='p';
        } else{
            if(type==='p'){
                e.meshOrientation.x+=0.1;
            } else{
                e.meshOrientation.x-=0.1;
            }
        }
    })
})
})

TOOL(新建一个文件,命名为TOOL.js)

function listsGetRandomItem(list, remove=false) {
  var x = Math.floor(Math.random() * list.length);
  if (remove) {
    return list.splice(x, 1)[0];
  } else {
    return list[x];
  }
}
async function entity_hurt(hurt_number,entity,await_=50,hurt_=1) {
    for (var hu=0;hu<hurt_number+1;hu++) {
        entity.hurt(hurt_)
        await sleep(await_)
    }
}
async function Notice(string,entity=world.querySelector(".告示")) {
    entity.say(string)
}


async function aura(entity, color = [
        new Box3RGBColor(0.033, 1, 10), //3个值分别代表红光、绿光、蓝光的含量,大小为0到正无穷
        new Box3RGBColor(10, 0.025, 10), 
        new Box3RGBColor(0.05, 1, 10),
        new Box3RGBColor(10, 0.5, 10),
        new Box3RGBColor(0.2, 1, 10)
    ], time=1000) {

    // 设置粒子特效参数
    entity.particleRate = 500;//实体每秒产生粒子的数量
    entity.particleLimit = 500;//产生的粒子总数的上限
    entity.particleLifetime = 0.8;//每颗粒子的存活时间,以秒为单位
    entity.particleSize = [5,3,5,3,5];//粒子大小按时间变化的模式,平均分为5个阶段
    entity.particleSizeSpread = 2;//粒子大小的随机变化范围
    entity.particleColor = color;//随时间变化的粒子颜色,同样分为5个阶段
    entity.particleAcceleration = new Box3Vector3(0, 1, 0);//粒子的加速度,是竖直向上的
    entity.particleNoise = 5;//粒子运动随机偏离的大小
    entity.particleNoiseFrequency = 10;//粒子随机偏离的频率
    entity.particleVelocity = new Box3Vector3(0, 5, 0);//粒子的初速度

    // 让粒子特效在经历时间time(ms)后停止
    await sleep(time);//静待一段时间,time是输入的参数,默认值为1000毫秒
    entity.particleRate = 0;//将产生粒子的数量设为0,也就是停止粒子特效
    entity.particleLimit = 0;//将产生粒子上限数量设为0
}
function mathRandomInt(a, b) {
  if (a > b) {
    // Swap a and b to ensure a is 喵aller.
    var c = a;
    a = b;
    b = c;
  }
  return Math.floor(Math.random() * (b - a + 1) + a);
}





module.exports = {
    listsGetRandomItem,
    entity_hurt,
    Notice,
    aura,
    mathRandomInt,
    
}

(来源:圣诞公园代码编辑器,作者:__name__)


回复

上一页1 页 / 共 0下一页