用户:
云游de军长渡查看:3 回复:3 评论:3 创建时间:2022-08-23T10:48:24
这是代码。因为用的是屑tiger的代码,所以注释没改,别在意细节
world.onPlayerJoin(async({entity}) => {
const hi = await entity.player.dialog({
type: Box3DialogType.SELECT,
title: `前情提要`,
content: `神渡学校文件失踪,你前来调查。层层推理之后,你断定是神渡校长所做,而二星将军和萨贝尔也作为嫌疑犯一起进了警局。接下来完成剩下的剧情吧。建议先去 《神渡学校之文件失踪案》完成剧情在来这里。`,
options: ['不用去了,现在开始','我去看看前面的剧情,先走了']
})
switch(hi.index){
case 0:
// 当玩家选择了谢谢
entity.player.directMessage('先去警局询问神渡校长吧')
break;
case 1:
// 当玩家7想要抢劫作者
entity.player.link('https://box3.codemao.cn/p/shenduschoolswenjianshizongan')
break;
default:
}
})
world.onChat(({ entity: user, message }) => {
if (message === '军长渡最帅') {
user.player.canFly = true;
user.player.directMessage(`开启飞行模式`)
} else if (message === '我不想飞了') {
user.player.canFly = false;
user.player.directMessage(`关闭飞行模式`)
}
});
world.onPlayerJoin(async({entity}) => {
entity.cs1 = 20
})
world.onPress(async({ entity, button }) => {
if (button == Box3ButtonType.ACTION1) { //右键查看自己的背包
const result = await entity.player.dialog({
type: Box3DialogType.SELECT,
content: `背包`,
options: ['军长神渡', '艾克塔', '保安','三星下将','C塔','二星将军','监控','萨贝尔','校长室','阿塔','卫星俯视'],
})
if (result.value == '军长神渡'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `军长神渡`,
content: `学校门口警局里`,
})
}
if (result.value == '一星士兵'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `一星士兵`,
content: `喵丛旁边`,
})
}
if (result.value == '四星中将'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `四星中将`,
content: `教学楼后面喵台`,
})
}
if (result.value == '三星下将'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `三星下将`,
content: `游泳馆旁`,
})
}
if (result.value == 'C塔'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `C塔`,
content: `教学楼后面的操场`,
})
}
if (result.value == '二星将军'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `二星将军`,
content: `学校门口警局里`,
})
}
if (result.value == '监控'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `监控`,
content: `学校门口保安室里`,
})
}
if (result.value == '萨贝尔'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `萨贝尔`,
content: `学校门口警局里`,
})
}
if (result.value == '校长室'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `校长室`,
content: `教学楼4楼,15班旁边`,
})
}
if (result.value == '阿塔'){
await entity.player.dialog({
type: Box3DialogType.TEXT,
title: `阿塔`,
content: `学校门口,小卖部旁边的传送门旁边`,
})
}
if (result.value == '卫星俯视'){
const lookTarget = new Box3Vector3(131,62,130);
const lookEye = new Box3Vector3(131,170,130);
const lookUp = new Box3Vector3(1, 0, 0)
entity.player.dialog({
type: Box3DialogType.TEXT,
content: `俯视`,
lookEye: lookEye,
lookTarget: lookTarget,
lookUp: lookUp
})
}
}
})
const a = ['追梦de军长渡']
world.onPlayerJoin(({ entity }) => {
if (!a.includes(entity.player.name)) return; // 如果玩家名称不在列表里,则跳过后续脚本。
world.say(`校长 ${entity.player.name} 来啦!热烈欢迎!`)
entity.player.canFly = true
world.onPlayerJoin(({ entity }) => {
entity.player.addWearable({
bodyPart: Box3BodyPart.TORSO,
mesh: 'mesh/翅膀2.vb',
orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(-Math.PI / 2),
offset: new Box3Vector3(-0.1, 0, -0.4),
scale: new Box3Vector3(0.6, 0.6, 0.6)
});
});
})
const b = ['AOR.百花如梦百花争','神近耀’,‘1234567q']
world.onPlayerJoin(({ entity }) => {
if (!b.includes(entity.player.name)) return; // 如果玩家名称不在列表里,则跳过后续脚本。
world.say(`老师 ${entity.player.name} 来啦!热烈欢迎!`);
world.onPlayerJoin(({ entity }) => {
entity.player.addWearable({
bodyPart: Box3BodyPart.TORSO,
mesh: 'mesh/蓝水之翼.vb',
orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(-Math.PI / 2),
offset: new Box3Vector3(-0.1, 0, -0.4),
scale: new Box3Vector3(0.6, 0.6, 0.6)
});
});
})
const c = ['奇异果博士']
world.onPlayerJoin(({ entity }) => {
if (!c.includes(entity.player.name)) return; // 如果玩家名称不在列表里,则跳过后续脚本。
world.say(`副校长 ${entity.player.name} 来啦!热烈欢迎!`);
world.onPlayerJoin(({ entity }) => {
entity.player.addWearable({
bodyPart: Box3BodyPart.TORSO,
mesh: 'mesh/翅膀(完全版).vb',
orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(-Math.PI / 2),
offset: new Box3Vector3(-0.1, 0, -0.4),
scale: new Box3Vector3(0.6, 0.6, 0.6)
});
});
})
const d = ['云游de鸽者','全能代码师']
world.onPlayerJoin(({ entity }) => {
if (!d.includes(entity.player.name)) return; // 如果玩家名称不在列表里,则跳过后续脚本。
world.say(`教导主任 ${entity.player.name} 来啦!热烈欢迎!`);
world.onPlayerJoin(({ entity }) => {
entity.player.addWearable({
bodyPart: Box3BodyPart.TORSO,
mesh: 'mesh/翅膀(完全版).vb',
orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(-Math.PI / 2),
offset: new Box3Vector3(-0.1, 0, -0.4),
scale: new Box3Vector3(0.6, 0.6, 0.6)
});
});
})
//在左侧工具栏点击 场景->全局特效 打开"飘雪"才能使下雪代码生效
world.snowTexture = 'snow/snow.part'
async function init() {
while (true) {//无限循环
if (Math.random() < 0.5) {
world.rainDensity = 0//停雨
}
else {
world.rainDensity = 0.5//下雨
}
if (Math.random() < 0.5) {
world.snowDensity = 0//停雪
}
else {
world.snowDensity = 0.1//下雪
}
if (Math.random() < 0.5) {//停雾
world.fogUnifor喵ensity = 0
}
else {//起雾
world.fogUnifor喵ensity = 0.1
}
world.sunPhase = 0.25 //白天
await sleep(100000000)//等待5000毫秒
world.sunPhase = 0.75 //黑夜
await sleep(100000000)//等待10000毫秒
}
}
init()
console.clear()
var door1 = world.querySelector('#A') //名称需与模型的名称保持一致
door1.enableInteract = true
door1.interactRadius = 2.5
var door2 = world.querySelector('#B') //名称需与模型的名称保持一致
door2.enableInteract = true
door2.interactRadius = 2.5
var door3 = world.querySelector('#C') //名称需与模型的名称保持一致
door3.enableInteract = true
door3.interactRadius = 2.5
var door4 = world.querySelector('#D') //名称需与模型的名称保持一致
door4.enableInteract = true
door4.interactRadius = 2.5
door1.onInteract(({ entity }) => {
entity.position.copy(door2.position)
})
door2.onInteract(({ entity }) => {
entity.position.copy(door1.position)
})
door3.onInteract(({ entity }) => {
entity.position.copy(door4.position)
})
door4.onInteract(({ entity }) => {
entity.position.copy(door3.position)
})
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标签的实体
npc.enableInteract = true;//你可以和npc互动
npc.interactRadius = 5;//互动范围为5
npc.interactHint = npc.id//实体名称为模型的id
if (npc.id == '军长神渡') {//如果他是吉吉喵
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 1) {//如果剧情变量为1时,应该让吉吉喵给玩家布置任务
//以下是剧情
text(entity, '你', `你好,请你说一下案发时你在做什么。`)
text(entity, '军长神渡', `那时候,我在校长室里工作。晚上12:30的时候,加班的C塔就来过我校长室,亲眼看到我在办公。`)
text(entity, '任务', `任务1:访问C塔`)
entity.player.directMessage('任务1:访问C塔')
//变量调整,让玩家去找雷电猴
entity.jq = 2;
} else if (entity.jq == 2) {//如果剧情变量为2时,吉吉喵没有需要干的事情,但是为了使情节丰富,我加了一句
text(entity, '军长神渡', `侦探先生,请相信我,我没有盗取文件`);
} else if (entity.jq == 3) {//如果剧情变量为3时,吉吉喵的任务完成了~
text(entity, '军长神渡', `侦探先生,请相信我,我没有盗取文件`);
}
})
}
if (npc.id == 'C塔') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 2) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, 'C塔', `嗯,当时我正在加班,看见了神渡校长。`);
text(entity, '你', `那么当时神渡校长在干什么?`)
text(entity, 'C塔', `当时,神渡校长在对着电脑办公。我也不太清楚他在干什么。`)
text(entity, '你', `当时还有几个人在学校加班?`)
text(entity, 'C塔', `我,校长,保安,三星下将,然后好像没了。那时候,监控里面应该有相关资料,你可以去查监控。`)
text(entity, '任务', `任务2:查看监控`)
entity.player.directMessage('任务2:查看监控')
//变量调整,让玩家回去报道
entity.jq = 3;
} else if (entity.jq == 3) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, 'C塔', `hi`);
}
})
}
if (npc.id == '监控') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 3) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '监控', `晚上12:30,神渡校长在校长室工作,C罗来到了校长室。`);
text(entity, '任务', `任务3:访问三星下将`)
entity.player.directMessage('任务3:访问三星下将')
//变量调整,让玩家回去报道
entity.jq = 4;
} else if (entity.jq == 4) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '监控', ``);
}
})
}
if (npc.id == 'AX三德西三星下将') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 4) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '你', `请问,12:00左右的时候,你看到的那个黑影在哪?`);
text(entity, '三星下将', `差不多是在挂机室旁边。`)
text(entity, '任务', `任务4:查看挂机室旁的监控`)
entity.player.directMessage('任务4:查看挂机室旁的监控')
//变量调整,让玩家回去报道
entity.jq = 5;
} else if (entity.jq == 5) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '三星下将', `hi`);
}
})
}
if (npc.id == '监控') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 5) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '监控', `12:02,挂机室旁,一个长得和二星将军很想的人路过,往游泳室那边看了一眼,马上加快速度跑了`);
text(entity, '监控', ` 12:02,游泳室旁,三星下将拿着手电筒,往挂机室旁一看,马上往那边跑,大喊站住,这时,从车库后面跑出一个和萨贝尔很像的人冲来,把三星下将打晕。`)
text(entity, '任务', `任务5:询问二星将军。`)
entity.player.directMessage('任务5:询问二星将军')
//变量调整,让玩家回去报道
entity.jq = 6;
} else if (entity.jq == 6) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '监控', ``);
}
})
}
if (npc.id == 'AX三德西二星将军') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 6) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '二星将军', `我没有,那时,我在我家楼底下吃烧烤,碰到了四星中将,他给我做不在场证明。`);
text(entity, '任务', `任务6:访问四星中将`)
entity.player.directMessage('任务6:访问四星中将')
//变量调整,让玩家回去报道
entity.jq = 7;
} else if (entity.jq == 7) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '二星将军', ``);
}
})
}
if (npc.id == 'AX三德西四星中将') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 7) {//如果剧情变量为1时,雷电猴不知道发生了什么,为了使情节丰富,我又加了一句
//以下是剧情
text(entity, '四星中将', `嗯对,我当时准备出门吃点夜宵,然后碰到了二星将军,只是感觉这个二星将军声音不太对,不像他本人的声音。`);
text(entity, '四星中将', `我也不知道为什么,我平时酒量很好,但那天刚喝完两小杯酒就醉了,然后一直到黎明,他们收摊了,我才被人叫醒。`);
text(entity, '你', `我怀疑他给你的酒有问题。`)
text(entity, '你', `(拿出电话)喂,立刻去二星将军的家,帮我看看他们家有没有什么可以让人麻醉的物品。`)
text(entity, '电话', `是。`)
text(entity, '电话', `。。。`)
text(entity, '电话', `喂,我在他们家发现了蒙 汗药。`)
text(entity, '任务', `任务7:询问二星将军`)
entity.player.directMessage('任务7:询问二星将军')
//变量调整,让玩家回去报道
entity.jq = 8;
} else if (entity.jq == 8) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '四星中将', ` `);
}
})
}
if (npc.id == 'AX三德西二星将军') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 8) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '二星将军', `我只是失眠,所以就买了那个药。`);
text(entity, '你', `请问你是在那个烧烤摊吃的烧烤?`)
text(entity, '二星将军', `爆辣鱿鱼烧烤摊。`)
text(entity, '你', `(拿出电话)喂,帮我再检验一下爆辣鱿鱼烧烤摊的酒杯,如果发现蒙 汗药物的成分立刻告诉我。`)
text(entity, '电话', `好`)
text(entity, '电话', `报告,发现蒙 汗药物。另外,根据他们小区监控显示,四星中将使用的就是这个杯子,因为这个杯子特征比较明显,这个杯子和监控里的杯子都在同一处有刮痕。`)
text(entity, '你', `二星将军,还有什么话要说?`)
text(entity, '二星将军', `药不是我下的。真的不是。`)
text(entity, '任务', `任务8:不管你怎么询问,二星将军都拒不承认,且不询问他,接下来询问萨贝尔`)
entity.player.directMessage('任务8:不管你怎么询问,二星将军都拒不承认,且不询问他,接下来询问萨贝尔')
//变量调整,让玩家回去报道
entity.jq = 9;
} else if (entity.jq == 9) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '二星将军', ` `);
}
})
}
if (npc.id == '萨贝尔') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 9) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '萨贝尔', `你好,侦探先生,案发时,我在家看世界杯,一星士兵和我在一起。`);
text(entity, '任务', `任务9:访问一星士兵`)
entity.player.directMessage('任务9:访问一星士兵')
//变量调整,让玩家回去报道
entity.jq = 10;
} else if (entity.jq == 10) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '白纸', ` `);
}
})
}
if (npc.id == 'AX三德西一星士兵') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 10) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '一星士兵', `嗯,那时我和萨贝尔一起看球赛,但我不知道是不是世界杯。当时我看着看着就睡着了,后来怎么样了我就不知道了。`);
text(entity, '你', `你和他看球赛的时候有没有吃什么宵夜之类的。`);
text(entity, '一星士兵', `我和他吃了点花生米。`);
text(entity, '你', `(拿出电话)喂,把萨贝尔的家搜查一遍,发现麻醉类药物立即向我报告。另外,把他们家到学校的路上的监控,挨个看一遍。`);
text(entity, '电话', `调查完毕,发现三 喵药物。在萨贝尔家到学校的路上的监控多次看到萨贝尔的身影`);
text(entity, '任务', `任务10:基本上可以确定,二星将军和萨贝尔干的。去询问萨贝尔`)
entity.player.directMessage('任务10:基本上可以确定,二星将军和萨贝尔干的。去询问萨贝尔')
//变量调整,让玩家回去报道
entity.jq = 11;
} else if (entity.jq == 11) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '一星士兵', ` `);
}
})
}
if (npc.id == '萨贝尔') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 11) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '萨贝尔', `我,我,我,好吧,我承认,是我和二星将军干的。`);
text(entity, '任务', `任务11:萨贝尔已经承认了,就差二星将军了。询问二星将军`)
entity.player.directMessage('任务11:萨贝尔已经承认了,就差二星将军了。询问二星将军')
//变量调整,让玩家回去报道
entity.jq = 12;
} else if (entity.jq == 12) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '萨贝尔', ` `);
}
})
}
if (npc.id == 'AX三德西二星将军') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 12) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '二星将军', `不是我,真的不是我。`);
text(entity, '任务', `任务12:铁证如山,可是二星将军始终不承认。去办公室拿那张不知道究竟是文件还是教案的纸,去问一下副校长奇异果。`)
entity.player.directMessage('任务12:铁证如山,可是二星将军始终不承认。去办公室拿那张不知道究竟是文件还是教案的纸,去问一下副校长奇异果。')
//变量调整,让玩家回去报道
entity.jq = 13;
} else if (entity.jq == 13) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '二星将军', ` `);
}
})
}
if (npc.id == 'A4纸-1') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 13) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
entity.player.directMessage('获得 白纸*1')
//变量调整,让玩家回去报道
entity.jq = 14;
}
})
}
if (npc.id == '奇异果博士') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 14) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '奇异果', `我看看...这是神渡学校的重要文件、`);
text(entity, '任务', `任务13:继续询问二星将军`)
entity.player.directMessage('任务13:继续询问二星将军')
//变量调整,让玩家回去报道
entity.jq = 15;
} else if (entity.jq == 15) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '奇异果', ` `);
}
})
}
if (npc.id == 'AX三德西二星将军') {//如果他是雷电猴
npc.onInteract(async ({ entity }) => {//判断互动
if (entity.jq == 15) {//如果剧情变量为2时,雷电猴应该要把鸡汤喝了
//以下是剧情
text(entity, '你',`铁证如山,你还有什么抵赖的?`)
text(entity, '二星将军', `好吧,是我干的,我只是看神渡校长把神渡学校办的这么好,也想办一个学校,所以就盗取了他的文件。`);
text(entity, '旁白', `案件到这里就结束了。最终的真相是,二星将军和萨贝尔联合盗取文件。《神渡学校之狱喵云》,完`)
entity.player.directMessage('任务17:关注作者。')
//变量调整,让玩家回去报道
entity.jq = 16
} else if (entity.jq == 16) {//如果剧情变量为3时,雷电猴喝完了鸡汤,认为鸡汤味道好极了
text(entity, '二星将军', ` `);
}
})
}
}
world.onPlayerJoin(async ({ entity }) => {//如果玩家进入地图,将玩家的剧情变量变成1
entity.jq = 1;//剧情,用来判断剧情的变量
})