【神奇代码岛】花费时长1年,写出了一个长达1000多行的程序

这个程序我放在了神奇代码岛

想玩的可以直接免费进去玩,地图非常简陋,但是我还会继续后续的更新。

这是我的源代码:

console.clear()

for (var x=0;x<254;x++){
    for (var z=0;z<254;z++){
        //voxels.setVoxel(x,18,z, 'stone')
    }
}

for (var x=162;x<206;x++){
    for(var z=0;z<41;z++){
        voxels.setVoxel(x,18,z, 'plank_01')
        voxels.setVoxel(x,10,z, 'plank_01')
    }
}

for (var x=173;x<181;x++){
    for (var z=34;z<39;z++){
        voxels.setVoxel(x,18,z, 'air')
    }
}

for (var x=143;x<174;x++){
    for (var z= 45;z<73;z++){
        voxels.setVoxel(x,19,z, "carpet_07")
    }
}

for (var x1=235;x<254;x++){
    for (var z1=43;z<60;x++){
        voxels.setVoxel(x1,18,z1, "air")
    }
}


//密室一
const door1 = world.querySelector('#门-2');
const tishi = world.querySelector('#提示牌-1')

const door1_state = true;
door1.enableInteract = true;
door1.interactHint = '门';
door1.interactRadius = 5;
door1.fixed = true;
door1.collides = true;
door1.interactColor = new Box3RGBColor(1,0,1);
door1.meshEmissive = false;

tishi.enableInteract = true;
tishi.interactHint = '提示';
tishi.interactRadius = 5;

const room1 = world.querySelector('#出生点')

tishi.onInteract(async({entity})=>{
    const tishi_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:tishi.id,
        lookEye:entity,
        lookTarget:tishi,
        content:"提示:门的密码是“1+2+3+4+5+...+99+100”的计算结果"
    })
})

door1.onInteract(async({entity})=>{
    const door1_result = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        title:door1.id,
        lookEye:entity,
        lookTarget:door1,
        content: '请输入密码:',
    })
    
    if (door1_result == '5050'){
        entity.player.directMessage("密码正确");
        door1.collides = false;

        
    }else {
        entity.player.directMessage("密码错误");
    }
})

const door2 = world.querySelector("#门-3")
door2.enableInteract = true;
door2.interactHint = "门-2";
door2.interactRadius = 5;
door2.fixed = true;
door2.collides = true;
door2.interactColor = new Box3RGBColor(1,0,1)
door2.meshEmissive = false;

door2.onInteract(async({entity})=>{
    const door2_result = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        title:door1.id,
        lookEye:entity,
        lookTarget:door1,
        content: "请输入口令:",
    });

    if (door2_result == "213564"){
        entity.player.directMessage("密码正确")
        door2.collides = false;
    }
    else{
        entity.player.directMessage("密码错误")
    }
})

const tishi_1 = world.querySelector("#提示牌-2")
tishi_1.enableInteract = true;
tishi_1.interactHint = tishi_1;
tishi_1.interactRadius = 5;
tishi_1.interactHint = "提示牌"

tishi_1.onInteract(async({entity})=>{
    const tishi1_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:tishi_1.id,
        lookEye:entity,
        lookTarget:tishi_1,
        content:"大门的口令:请按照《菩萨蛮·大柏地》第1句的颜色顺序与颜色走廊的颜色顺序中找出答案(第一个颜色为橙色,第二个为红色 注意:此答案为一串数字)倒数第二个颜色是紫色",
    });
})

const door3 = world.querySelector('#门-4');
door3.enableInteract = true;
door3.interactHint = door3;
door3.interactRadius = 5;
door3.interactColor = new Box3RGBColor(1,0,1)
door3.collides = true;
door3.fixed = true;

door3.onInteract(async({entity})=>{
    const door3_result = await entity.player.dialog({
        type:Box3DialogType.SELECT,
        title:door3.id,
        lookEye:entity,
        lookTarget:tishi_1,
        content:"请输入吉吉喵的性别",
        options:['男', '女', '没有性别'],
    })
    if (door3_result){
        if (door3_result.index == 0){
            entity.player.directMessage("选错了") 
        }
        else if (door3_result.index == 1){
            entity.player.directMessage("选错了")
        }
        else if (door3_result.index == 2){
            entity.player.directMessage("选对了,门已解锁");
            door3.collides = false;
        }
    }
})

// 第一个房间
function state_one(){
    door1.collides = true;
    door2.collides = true;
    door3.collides = true;
    door7.collides = true;

}

// 密室二
//第一间密室的门
const room2 = world.querySelector("#出生点-2")
const door4 = world.querySelector("#门-6")
door4.enableInteract = true;
door4.interactHint = "门";
door4.interactRadius = 5;
door4.interactColor = new Box3RGBColor(1,0,1);
door4.collides = true;
door4.fixed = true;

const tishi_2 = world.querySelector("#提示牌-3")
tishi_2.enableInteract = true;
tishi_2.interactHint = "提示牌";
tishi_2.interactRadius = 2;
tishi_2.interactColor = new Box3RGBColor(1,0,1);

tishi_2.onInteract(async({entity})=>{
    const tishi2_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:tishi_2.id,
        lookEye:tishi_2,
        lookTarget:entity,
        content:"=>RRRD\nRUUD\nDLLL\nDRLU\nRRRR\nDLLL\nDLDL\nRRRD\nLLLD\nLLLL<="
    })
})

const tishi_4 = world.querySelector("#提示牌-4")
tishi_4.collides = true;
tishi_4.fixed = true;
tishi_4.enableInteract=true;
tishi_4.interactHint = "提示牌-4 (注意)(一定要看)";
tishi_4.interactRadius = 2;
tishi_4.interactColor = new Box3RGBColor(0,0,1)
tishi_4.onInteract(async({entity})=>{
    const tishi_4_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:"提示牌",
        lookEye:tishi_4,
        lookTarget:entity,
        content:"每四个字母为一行,“=>”为起点,“<=”为终点,”R”为右,“U”为上,“L”为左,“D”为下,请逃生者门将其画在草稿本上,用笔画线"
    })

})

door4.onInteract(async({entity})=>{
    const door4_result = await entity.player.dialog({
        type:Box3DialogType.SELECT,
        title:door4.id,
        lookEye:door4,
        lookTarget:entity,
        content:"如何将玩家传送到(20,30,40)的位置:",
        options:['entity.player.copy(20,30,40)', 'entity.position.copy(20,30,40)']
    })
    if (door4_result){
        if (door4_result.index == 0){
            entity.player.directMessage("密码错误");
            door4.collides = false;
        }
        else if (door4_result.index == 1){
            entity.player.directMessage("密码正确,门已解锁")
            door4.collides = false
        }
    }
})

const door5 = world.querySelector("#门-7") 
door5.enableInteract = true;
door5.collides = true;
door5.interactColor = new Box3RGBColor(1,0,1) 
door5.interactHint = "门"
door5.interactRadius = 5
door5.fixed = true
door5.onInteract(async({entity})=>{
    const door5_result = await entity.player.dialog({
        type:Box3DialogType.SELECT,
        title:door5.id,
        lookEye:door5,
        lookTarget:entity,
        content:"请用for循环从循环到10(结尾不用加一对大括号“{}”代码输入正确)",
        options:['for (var a = 0;a<10;a++)', 'for a = 0;a<10;a++', 'for var a = 0;a<10;a++'],
    })
    if (door5_result){
        if (door5_result.index == 0){
            entity.player.directMessage("密码正确,门已解锁") 
            door5.collides = false
        }
        else if (door5_result.index == 1){
            entity.player.directMessage("密码错误")
        }
        else if (door5_result.index == 2){
            entity.player.directMessage("密码错误")
        }
    }
})

const door6 = world.querySelector("#门-8")
door6.enableInteract = true;
door6.interactHint = "门"
door6.interactColor = new Box3RGBColor(1,0,1) 
door6.interactRadius = 5
door6.collides = true;
door6.onInteract(async({entity})=>{
    const door6_result = await entity.player.dialog({
        type:Box3DialogType.SELECT,
        title:"门",
        lookEye:door6,
        lookTarget:entity,
        content:"如何定义一个A函数?",
        options:['function a(){}', 'def a(){}', 'int a(){}']
    })
    if (door6_result){
        if (door6_result.index == 0){
            entity.player.directMessage("密码正确,恭喜" + entity.player.name + ",完成所有闯关")
            entity.position.copy(chushen)
            entity.msdtt += 1
        }
        else if (door6_result.index == 1){
            entity.player.directMessage("密码错误")
        }
        else if (door6_result.index == 2){
            entity.player.directMessage("密码错误")
        }
    }
})

const door7 = world.querySelector("#门-9")
door7.enableInteract = true;
door7.collides = true;
door7.fixed = true;
door7.interactHint = "门"
door7.interactRadius = 3
door7.interactColor = new Box3RGBColor(0,0,1)
door7.onInteract(async({entity})=>{
    const door7_result = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        title:"门",
        lookEye:door6,
        lookTarget:entity,
        content:"请输入密码:",
    })
    if (door7_result == "25"){
        entity.player.directMessage("密码正确")
        entity.player.directMessage("恭喜" + entity.player.name + ",成功逃脱");
        entity.position.copy(chushen);
        entity.msdtt += 1
    }
    else{
        entity.player.directMessage("密码错误")
    }
})

//第二间密室
function state_two(){
    door4.collides = true;
    door5.collides = true;
    door6.collides = true;
    door7.collides = true;
}

var cehuaan = false 
const room3 = world.querySelector("#存档点-3")
const door8 = world.querySelector("#门-10")
door8.collides = true;
door8.fixed = true;
door8.enableInterac = true;
door8.interactHint = "凶手的房门";
door8.interactColor = new Box3RGBColor(0,0,1)
door8.interactRadius = 2
door8.onInteract(async({entity})=>{
    const door8_result = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        title:"门",
        lookEye:door7,
        lookTarget:entity,
        content:"请输入密码(只有四个字符):"
    })
    if (door8_result == "M415"){
        entity.player.directMessage("密码正确,门已解锁")
        door8.collides = false;
    }
    else{
        entity.player.directMessage("密码错误")
    }
})

const paper = world.querySelector("#纸")
paper.collides = true;
paper.fixed = true;
paper.enableInteract = true;
paper.interactHint = "策划案";
paper.interactColor = new Box3RGBColor(0,0,1)
paper.interactRadius = 2
paper.onInteract(async({entity})=>{
    const paper_result = await entity.player.dialog({
        type:Box3DialogType.SELECT,
        title:"策划案",
        lookEye:paper,
        lookTarget:entity,
        content:"M412年,我和绿色太空人一起被送到这个可恶的地方,这次,我要报仇,因为绿色太空人杀了我的家人,我要报仇,于是,我在这艘飞船上生活了多年,我偷偷的将他们干掉。然后明天,我要将绿色太空人杀掉,这个门的密码就设为明天的年份。",
        options:['送给长官'],
    })
    if (paper_result){
        if (paper_result.index == 0){
            entity.player.directMessage("当你把策划案交给警察之后,警察非常感谢你")
            await sleep(3000)
            entity.position.copy(chushen)
            entity.player.directMessage("恭喜" + entity.player.name + "成功逃脱")
            entity.msdtt  += 1
        }
    }
})

const police1 = world.querySelector("#警察")
police1.collides = true;
police1.enableInteract = true;
police1.interactColor = new Box3RGBColor(0,0,1)
police1.fixed = true;
police1.interactHint = "警察"
police1.interactRadius = 2
police1.onInteract(async({entity})=>{
    if (cehuaan == false){
        const police1_result1 = await entity.player.dialog({
            type:Box3DialogType.SELECT,
            title:"警察",
            lookEye:police1,
            lookTarget:entity,
            content:"谁是凶手?",
            options:['红色太空人', '蓝色太空人', '紫色太空人'],
        })
        if (police1_result1){
            if (police1_result1.index == 0){
                entity.player.directMessage("选对了")
                door8.enableInteract = true;
                cehuaan = true;
                police2.enableInteract = true;
            }
            else if (police1_result1.index == 1){
                entity.player.directMessage("选错了")
                await sleep(2000)
                entity.player.directMessage("蓝色太空人不是内鬼,游戏已结束")
                entity.position.copy(chushen)
            }
            else if (police1_result1.index == 2){
                entity.player.directMessage("选错了")
                await sleep(2000)
                entity.player.directMessage("紫色太空人不是内鬼,游戏已结束")
                entity.position.copy(chushen)
                
            }
        }
    }
    if (cehuaan == true){
        const police1_result1 = await entity.player.dialog({
            type:Box3DialogType.TEXT,
            title:"任务2",
            lookEye:police1,
            lookTarget:entity,
            content:"打开红色太空人的房间门,找出红色太空人的策划案",
        })
    }

})

const green  = world.querySelector("#小绿")
green.collides = true;
green.fixed = true;
green.enableInteract = true;
green.interactHint = "绿色太空人";
green.interactColor = new Box3RGBColor(1,0,1);
green.interactRadius = 2;
green.onInteract(async({entity})=>{
    const green_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:"绿色太空人的伤势",
        lookEye:green,
        lookTarget:entity,
        content:"绿色太空人的伤势看上去并不乐观,左腿被砍了,上面流下了许多鲜血,这个案子看起来不是很好破!"
    })
})

const red1 = world.querySelector("#小红")
red1.collides = true;
red1.fixed = true;
red1.enableInteract = true;
red1.interactColor = new Box3RGBColor(1,0,1)
red1.interactHint = "嫌疑人1(红色太空人)"
red1.interactRadius = 1,
red1.onInteract(async({entity})=>{
    const red1_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:"红色天空人的对话",
        lookEye:red1,
        lookTarget:entity,
        content:"我:你昨晚在餐厅干什么?\n红色太空人:我在餐厅吃饭\n我:你跟谁吃饭?\n红色太空人:我跟蓝色太空人、紫色太空人和绿色太空人一起吃饭\n我:那你们饭后干什么了?\n红色太空人:吃完饭后我扶绿色太空人去厕所里吐,因为他喝多了,然后我就会回房间了\n我:听说你们的电力有时候会不稳定,这件事是真的吗?\n红色太空人:不是呀"
    })
})

const purple1 = world.querySelector("#小紫")
purple1.collides = true;
purple1.fixed = true;
purple1.enableInteract = true;
purple1.interactColor = new Box3RGBColor(1,0,1)
purple1.interactHint = "嫌疑人2(紫色太空人)"
purple1.interactRadius = 1
purple1.onInteract(async({entity})=>{
    const purple1_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:"紫色太空人的对话",
        lookEye:purple1,
        lookTarget:entity,
        content:"我:你昨晚在餐厅干什么?\n紫色太空人:我和小蓝几个人一起吃饭\n我:然后呢?\n紫色太空人:然后我就回房间睡觉了。\n我:听说你们这里的电力有时候不是非常稳定,这件事是不是真的?\n紫色太空人:我不知道。"
    })
})

const blue1 = world.querySelector("#小蓝")
blue1.collides = true;
blue1.fixed = true;
blue1.enableInteract = true;
blue1.interactColor = new Box3RGBColor(1,0,1)
blue1.interactHint = "嫌疑人3(蓝色太空人)"
blue1.interactRadius = 1
blue1.onInteract(async({entity})=>{
    const blue1_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:"蓝色太空人的对话",
        lookEye:blue1,
        lookTarget:entity,
        content:"我:你昨晚在餐厅干什么?\n蓝色太空人:不告诉你!",
    })
})

const police2 = world.querySelector("#警察-2")
police2.collides = true;
police2.enableInteract = true;
police2.interactColor = new Box3RGBColor(1,0,1)
police2.interactHint = "警察"
police2.interactRadius = 2
police2.fixed = true;
police2.onInteract(async({entity})=>{
    if (cehuaan = true){
        const police2_result = await entity.player.dialog({
            type:Box3DialogType.TEXT,
            title:"我与警察的对话w",
            lookEye:police2,
            lookTarget:entity,
            content:"警察:这具尸体,以我判断,他因该是前年死亡\n我:前年?\n警察:那个人太可恶了\n我:绿色天空人被杀的日期\n警察:M413年,你看墙上,这么杂乱的时钟,这就说明,凶手的某个密码与时间有关。"
        })
    }
})

function state_three(){
    door8.collides = true;
    door8.enableInteract = false;
    cehuaan = false;
    police2.enableInteract = false;
}

var candles = 0
var start4 = false
var player_name = 0
const room4_one = world.querySelector("#出生点-1")
room4_one.collides = true
room4_one.fixed = true
const room4_two = world.querySelector("#1出生点-2")

function d(x,y,z){
    voxels.setVoxel(x,y,z,"white")
}
for (const a of world.querySelectorAll(".跑酷点")){
    if (a.id.startsWith("跑酷点")){
        a.collides = true;
        a.fixed = true;
        a.onEntityContact(({other})=>{
            if (a.position !== other.position.spawnPoint){
                other.player.spawnPoint = a.position
            }
        })
    }
}
for (const red1 of world.querySelectorAll("*")){
    if (red1.id.startsWith("红外线")){
        red1.collides = true;
        red1.fixed = true;
    }
}

for (const xsp of world.querySelectorAll(".显示屏")){
    if (xsp.id.startsWith("显示屏")){
        xsp.enableInteract = true;
        xsp.interactColor = new Box3RGBColor(1,0,1)
        xsp.interactHint = "显示屏"
        xsp.interactRadius = 5
        xsp.onInteract(({entity})=>{
            if (xsp.id == "显示屏-1"){
                entity.player.dialog({
                    type:Box3DialogType.TEXT,
                    title:"这家公司的老板",
                    content:"年轻人,就你,还想窃取我公司的文件,想窃取,那就先破我四关\n第一关:过岩浆"
                })
            }
            else if (xsp.id == "显示屏-2"){
                entity.player.dialog({
                    type:Box3DialogType.TEXT,
                    title:"这家公司的老板",
                    content:"可以呀,年轻人,既然破了我的第一关,那就接受我的第二关!"
                })
            }
            else if (xsp.id == "显示屏-3"){
                entity.player.dialog({
                    type:Box3DialogType.TEXT,
                    tite:"这家公司的老板",
                    content:"既然破了我的第三关,接招!",
                })
            }
            else if (xsp.id == "显示屏-4"){
                entity.player.dialog({
                    type:Box3DialogType.TEXT,
                    title:"这家公司的老板",
                    content:"看来是我小瞧你了,接下第四关,得有我亲自出马了!",
                })
            }
        })
    }
}

world.onVoxelContact(({entity, voxel})=>{
    voxelName = voxels.name(voxel)
    if (voxelName === "lava02"){
        entity.position.copy(entity.player.spawnPoint)
        entity.position.y += 1
    }
})  

// 检测玩家脚下的方块是否为石头
world.onVoxelContact(({ entity, voxel, axis,x,y,z }) => {
    if (!entity.isPlayer) return;                // 如果碰到方块的不是玩家,则跳过
    const voxelName = voxels.name(voxel);         // 将方块id转换名称
    if (voxelName === 'white' && axis.y === 1){   // 如果方块名称是石头,并且在玩家下方
        voxels.setVoxel(x,y,z,"lemon")
        candles += 1
    }
});

room4_one.onEntityContact(({other})=>{
    if (candles == 16){
        other.position.copy(room4_two.position)
        other.position.y += 3
    }
    else if (candles !== 16){
        other.player.directMessage("线还没有画完哟,请先把线画完,再来吧")
    }
})

const boss1 = world.querySelector("#BOSS")
boss1.collides = true;
boss1.fixed = true;
boss1.enableInteract = true;
boss1.interactHint = "BOSS"
boss1.interactRadius = 2
boss1.onInteract(async({entity})=>{
    const boss1_result = await entity.player.dialog({
        type:Box3DialogType.SELECT,
        title:"BOSS",
        content:"是否干掉这位老板?",
        options:['是', '否'],
    })
    if (boss1_result.index == 0){
        const boss1_result1 = await entity.player.dialog({
            type:Box3DialogType.SELECT,
            title:"从BOSS身上掉下来的东西",
            content:"公司机密×1",
            options:['收下']
        })
        if (boss1_result1.index == 0){
            entity.position.copy(chushen)
            entity.player.directMessage("恭喜" + entity.player.name + "成功逃脱")
            entity.msdtt += 1
            start4 = false
        }
    }
    else if (boss1_result.index == 1){
        entity.position.copy(room4_two.position)
        entity.position.y += 3
        entity.player.directMessage("BOSS:回去吧你")
    }
})

function state_four(){
    candles = 0
    start4 = true
    candles = 0
    d(197,8,77)
    d(197,8,78)
    d(197,8,79)
    d(196,8,80)
    d(195,8,81)
    d(194,8,81)
    d(193,8,81)
    d(192,8,80)
    d(191,8,79)
    d(191,8,78)
    d(191,8,77)
    d(192,8,76)
    d(193,8,75)
    d(194,8,75)
    d(195,8,75)
    d(196,8,76)
}
const room4 = world.querySelector("#存档点-4")

//黑客大侠房间
const door9 = world.querySelector("#门-11")
door9.collides = true;
door9.fixed = true;
door9.enableInteract = true;
door9.interactHint = "门-11";
door9.interactRadius = 3;
door9.onInteract(async({entity})=>{
    const door9_result = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        title:"门-11",
        content:"请输入密码",
    })
    if (door9_result == "analyze"){
        await entity.player.dialog({
            type:Box3DialogType.TEXT,
            title:"门-11",
            content:"恭喜,密码正确"+entity.player.name+"逃脱成功",
        })
        await sleep(3)
        entity.position.copy(chushen)
        entity.msdtt +=1
    }
})

const zhuji = world.querySelector("#主机")
zhuji.enableInteract = true;
zhuji.interactHint = "主机";
zhuji.interactRadius = 3;
const mima1 = world.querySelector("#密码1")
mima1.enableInteract = true;
mima1.interactHint = "密码1";
mima1.interactRadius = 3;
const mima2 = world.querySelector("#密码2")
mima2.enableInteract = true;
mima2.interactHint = "密码2";
mima2.interactRadius = 3;
const mima3 = world.querySelector("#密码3")
mima3.enableInteract = true;
mima3.interactHint = "密码3";
mima3.interactRadius = 3;
const mima4 = world.querySelector("#密码4")
mima4.enableInteract = true;
mima4.interactHint = "密码4";
mima4.interactRadius = 3;

zhuji.onInteract(async({entity})=>{
    const hacknetzj = await entity.player.dialog({
            type:Box3DialogType.SELECT,
            content:"请选择",
            options:['任务', '教程'],
        })
    if (hacknetzj.index == 0){
        if (entity.password == 1){
            entity.player.dialog({
                type:Box3DialogType.TEXT,
                title:"主机",
                content:"欢迎来到hacknet,现在我有一个任务,你快去完成,先去黑掉密码1"
            })
        }
        else if (entity.password == 2){
            entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:"快去黑掉密码2",
            })
        }
        else if (entity.password == 3){
            entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:"快去黑掉密码3",
            })
        }
        else if (entity.password == 4){
            entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:"快去黑掉密码4"
            })
        }
        else if (entity.password == 5){
            entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:"门的密码就是密码1密码2密码3密码4,快点逃离这里"
            })
        }
    }
    else if (hacknetzj.index == 1){
        entity.player.dialog({
            type:Box3DialogType.TEXT,
            content:"如果在probe里面显示说明需要开放0个端口的话,你就只需要输入porthack进行破解即可/n如果显示需要破解1个或以上数量的端口,那就得先进行破解端口"
        })
    }
})

mima1.onInteract(async({entity})=>{
    const probe = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        content:"请输入probe,进入破解界面",
    })
    if (probe === "probe"){
        const porthack = await entity.player.dialog({
            type:Box3DialogType.INPUT,
            content:"需要开放0个端口,输入porthack,破解"
        })
        if (porthack == "porthack"){
            await entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:'密码:an',
            })
            entity.password +=1
        }
        else{
            await entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:'输入有误,请重新输入'
            })
        }
    }
    else{
        await entity.player.dialog({
            type:Box3DialogType.TEXT,
            content:'输入有误,请重新输入'
        })
    }

})

mima2.onInteract(async({entity})=>{
    const probe = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        content:"请输入probe,进入破解界面",
    })
    if (probe === "probe"){
        const porthack = await entity.player.dialog({
            type:Box3DialogType.INPUT,
            content:"需要开放0个端口,输入porthack,破解"
        })
        if (porthack == "porthack"){
            await entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:'密码:al',
            })
            entity.password +=1
        }
        else{
            await entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:'输入有误,请重新输入'
            })
        }
    }
    else{
        await entity.player.dialog({
            type:Box3DialogType.TEXT,
            content:'输入有误,请重新输入'
        })
    }

})

mima3.onInteract(async({entity})=>{
    const probe = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        content:"请输入probe,进入破解界面",
    })
    if (probe === "probe"){
        const porthack = await entity.player.dialog({
            type:Box3DialogType.INPUT,
            content:"需要开放0个端口,输入porthack,破解"
        })
        if (porthack == "porthack"){
            await entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:'密码:yz',
            })
            entity.password +=1
        }
        else{
            await entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:'输入有误,请重新输入'
            })
        }
    }
    else{
        await entity.player.dialog({
            type:Box3DialogType.TEXT,
            content:'输入有误,请重新输入'
        })
    }

})

mima4.onInteract(async({entity})=>{
    const probe = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        content:"请输入probe,进入破解界面",
    })
    if (probe === "probe"){
        const porthack = await entity.player.dialog({
            type:Box3DialogType.INPUT,
            content:"需要开放0个端口,输入porthack,破解"
        })
        if (porthack == "porthack"){
            await entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:'密码:e',
            })
            entity.password +=1
        }
        else{
            await entity.player.dialog({
                type:Box3DialogType.TEXT,
                content:'输入有误,请重新输入'
            })
        }
    }
    else{
        await entity.player.dialog({
            type:Box3DialogType.TEXT,
            content:'输入有误,请重新输入'
        })
    }

})


//大厅代码
const start_game = world.querySelector("#管家-1")
start_game.enableInteract = true;
start_game.interactHint = "前往密室NPC";
start_game.interactRadius = 2;
start_game.interactColor = new Box3RGBColor(1,0,1)



//管家对话
start_game.onInteract(async({entity})=>{
    const start_game_result = await entity.player.dialog({
        type:Box3DialogType.SELECT,
        title:start_game.id,
        lookEye:entity,
        lookTarget:start_game,
        content:"请问你要去哪间密室?",
        options:['简单级密室', "代码篇(入门)", '贝壳好飞船上的杀人案', '窃取机密','黑客大侠'],
    })
    if (start_game_result){
        if (start_game_result.index == 0){
            entity.position.copy(room1.position)
            state_one()
        }
        else if (start_game_result.index == 1){
            entity.position.copy(room2.position)
            state_two()
        }
        else if (start_game_result.index == 2){
            entity.position.copy(room3.position)
            state_three()
            entity.player.dialog({
                type:Box3DialogType.TEXT,
                title:"作者的话",
                content:"本剧情均为虚构,与现实无关",
            })
        }
        else if (start_game_result.index == 3){
            if (start4 == false){
                start4 = true;
                entity.position.copy(room4.position)
                entity.position.y +=1
                player_name = entity.player.name
                state_four()
            }
            else if (start4 == true){
                entity.player.dialog({
                    type:Box3DialogType.TEXT,
                    content:"此模式暂时有人在玩,请耐心等待,或者去玩玩其他模式"
                })    
            }          
        }
        else if (start_game_result.index == 4){
            entity.password = 1
            entity.position.copy(new Box3Vector3(243,11,92))
            entity.player.dialog({
                type:Box3DialogType.TEXT,
                title:"作者的话",
                content:"本玩法在hacknet游戏下的改版,这类关于黑客的游戏我将会出一个全新的地图来给大家玩耍",
            })
        }
    }
})
const start_game_npc = world.querySelector("#管家-2")
start_game_npc.enableInteract = true;
start_game_npc.interactHint = "大厅的NPC";
start_game_npc.interactRadius = 2;
start_game_npc.interactColor = new Box3RGBColor(1,0,1)

//NPC对话
start_game_npc.onInteract(async({entity})=>{
    const start_game_npc_result = await entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:start_game_npc.id,
        lookEye:entity,
        lookTarget:start_game,
        content:"如果游戏中有什么BUG、有可以改进的地方或者建议,可以在评论区里告诉我。感谢各位测试员!"
    })
})

const music = world.querySelector("#小女孩(头)-1")
music.collides = true;
music.fixed= true;
music.enableInteract = true;
music.interactHint = "小女孩"
music.interactRadius = 3
music.interactColor = new Box3RGBColor(1,0,1)
music.onInteract(async({entity})=>{
    entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:"小女孩",
        content:"在一个月黑凤高的夜晚,我姐姐突然发烧,我父母把她带到MS医院治疗,只留我一人在家。\
        于是他们驱车来到一家医院。。。。。\
        当时这么晚,我一个在家里看电视,电视新闻播报此市有一个杀人犯,他患有精神分裂症,最近在一家名叫MS医院治疗,他的病症非常奇怪,只有在夜晚才会分裂,然后开始乱杀人!请各位市民\
        一定要保护好自己,尽量少出门,如果见到这位杀人犯,请立即报警,谢谢配合!\
        此时小女孩一惊,这不是我姐所在的医院吗!",
    })
})

const floor1 = world.querySelector("#cdd-1")
const bigdoor = world.querySelector("#小区大门-1")
bigdoor.enableInteract = true;
bigdoor.interactHint = "门";
bigdoor.interactRadius = 5
bigdoor.onInteract(async({entity})=>{
    const bigdoor_result = await entity.player.dialog({
        type:Box3DialogType.INPUT,
        title:"大门",
        content:"请输入前往作者密室的密码:",
    })
    if (bigdoor_result == "MSDTT2135649"){
        entity.position.copy(floor1.position)
        entity.player.directMessage("欢迎来到密室展览馆")
    }
    else{
        entity.player.directMessage("快去做任务获取吧")
    }
    
})

const bigdoor2 = world.querySelector("#小区大门-2")
bigdoor2.enableInteract = true;
bigdoor2.interactHint = "门"
bigdoor2.interactRadius = 3
bigdoor2.onInteract(async({entity})=>{
    entity.position.copy(new Box3Vector3(150, 25, 57))
})

const xxg = world.querySelector("#吸血鬼先生-1")
xxg.enableInteract = true;
xxg.interactHint = "吸血鬼";
xxg.interactColor = new Box3RGBColor(1,0,1)
xxg.interactRadius = 5;
xxg.onInteract(async({entity})=>{
    xxg.say("你好呀" + entity.player.name + "欢迎来到展览馆")
})

const chushen = new Box3Vector3(156.2,20.2,59.9)
// 开始
world.onPlayerJoin(async({entity})=>{
    entity.position.copy(chushen)
    //对话
    entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:"更新公告",
        content:"1.修复了玩家无法使用返回大厅后导致窃取机密的地图无法游玩"
    })
    const zuozhe = await entity.player.dialog({
        type:Box3DialogType.SELECT,
        title:"作者的话",
        content:"这里怎么有一个小女孩,她可能需要帮助快去看看!",
        options:['快去看看','不去']
    })
    if (zuozhe){
        if (zuozhe.index == 0){
            entity.position.copy(new Box3Vector3(171,21,61))
        }
        else{}
    }
    entity.msdtt = 0
    world.onPress(async({ button , entity})=>{
        if (button == "action1"){
            const button_result = await entity.player.dialog({
                type:Box3DialogType.SELECT,
                title:"菜单",
                content:"请选择\n注:",
                options:['密室秘钥','我不想玩了,我想回大厅'],
            })
            if(button_result){
                if (button_result.index == 0){
                    if (entity.msdtt <10){
                        await entity.player.dialog({
                            type:Box3DialogType.TEXT,
                            title:"任务栏",
                            content:"玩"+entity.msdtt + "/10次密室可获得前往作者的密室的密码"
                        })
                    }
                    else{
                        await entity.player.dialog({
                            type:Box3DialogType.SELECT,
                            title:"任务栏",
                            content:"密室展览馆密码:MSDTT2135649\n不要告诉别人,否则作者将修改密码哦",
                        })
                    }
                }
                else if (button_result.index  == 1){
                    const move_to_dt_result = await entity.player.dialog({
                        type:Box3DialogType.SELECT,
                        title:"提示",
                        content:"是否返回大厅?",
                        options:['是(将不会增加游玩展览馆密码查看的游戏次数)','否(我在玩一会)']
                    })
                    if (move_to_dt_result){
                        if (move_to_dt_result.index == 0){
                            entity.position.copy(chushen);
                            entity.password = 0
                            if (entity.player.name == player_name){
                                start4 = false;
                                player_name = 0
                                console.log(player_name)
                                console.log(start4)
                            }
                        }
                        else if (move_to_dt_result.index == 1){}
                    }
                }
            }
        }
    })
    //数据初始化
    candles = 0
    entity.player.spawnPoint = chushen
    entity.player.dialog({
        type:Box3DialogType.TEXT,
        content:"如果游戏中有什么BUG、有可以改进的地方或者建议,可以在评论区里告诉我。感谢各位测试员!"
    })
    bug.onEntityContact(async({other})=>{
        other.position.copy(chushen)
        other.player.directMessage("不要再卡了,没用的,此BUG已经修复了")
    })
})

world.onPlayerLeave(({entity})=>{
    if (entity.player.name == player_name){
        start4 = false;
        player_name = 0
    }
})

const bug = world.querySelector("#电梯bug-1")
bug.collides = true;
bug.fixed = true;

const button2 = world.querySelector("#电梯按扭-2")
const button1 = world.querySelector("#电梯按扭-1")
button1.enableInteract = true;
button2.enableInteract = true;
button1.interactHint = "呼唤电梯";
button1.interactRadius = 5;
button2.interactHint = "呼唤电梯";
button2.interactRadius = 5
button1.onInteract(async()=>{
    if (dt.position.y >20){
        dt.velocity.y = -0.1
    }
})

button2.onInteract(async()=>{
    if (dt.position.y <30){
        dt.velocity.y = 0.1
    }
})

const dt = world.querySelector("#电梯")
dt.collides = true;
dt.fixed = true;
var dt_num = 1
world.onEntityContact(({entity, other})=>{
    if (dt_num == 1){
        if (entity.id == "电梯"){
            if (entity.position.y <30){
                entity.velocity.y = 0.1
                
            }
        }
    }
    else if (dt_num == 2){
        if (entity.id == "电梯"){
            if (entity.position.y > 20){
                entity.velocity.y = -0.1
            }
        }
    }
})

world.onTick(async()=>{
    if (dt.position.y >30){
        dt.position.y = 30
        dt.velocity.y = 0
        await sleep(1000)
        dt_num = 2
    }
    else if (dt.position.y <20){
        dt.position.y = 20
        dt.velocity.y = 0
        await sleep(1000)
        dt_num = 1
    }
})

const jt = world.querySelector("#箭头-1")
jt.enableInteract = true;
jt.interactHint = "提示";
jt.interactRadius = 2
jt.onInteract(async({entity})=>{
    entity.player.dialog({
        type:Box3DialogType.TEXT,
        title:"提示",
        content:"下面的地板是电梯"
    })
})

链接: 神奇代码岛: 密室大逃脱 (codemao.cn)

这个地图可以说是我做了这么多地图以来第一个非常完美的地图。

我的主页:神奇代码岛 (codemao.cn)

希望大家多多关注,感谢Thanks♪(・ω・)ノ

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值