用户:
云游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:
}
});
代码较乱,不喜勿喷