这个程序我放在了神奇代码岛
想玩的可以直接免费进去玩,地图非常简陋,但是我还会继续后续的更新。
这是我的源代码:
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)
希望大家多多关注,感谢Thanks♪(・ω・)ノ