用户:
翎with珝查看:0 回复:2 评论:0 创建时间:2024-06-30T20:33:17
视频
代码
const leftLiftDoor = world.querySelector('#电梯门左');
const rightLiftDoor = world.querySelector('#电梯门右');
const levelY = [8, 18, 28];
var call = [false, false, false];
var liftLevel = 1;
var runLift = false;
var clossingDoor = false;
world.onClick(async ({ entity, clicker, button, distance }) => {
if (runLift == false) {
if (clossingDoor !== true) {
if (!entity.isPlayer && entity.id == '呼梯-1') {
if (button == GameButtonType.ACTION0 && distance <= 8) {
if (call[0] === false) {
if (call[1] == false && call[2] == false) {
call[0] = true;
clicker.player.directMessage('呼梯成功');
startTurnOnTheLiftToSomeLevel(1);
} else {
clicker.player.directMessage('其它楼层已被呼梯')
};
} else {
clicker.player.directMessage('该楼层已被呼梯');
};
};
} else if (!entity.isPlayer && entity.id == '呼梯-2') {
if (button == GameButtonType.ACTION0 && distance <= 8) {
if (call[1] === false) {
if (call[0] == false && call[2] == false) {
call[1] = true;
clicker.player.directMessage('呼梯成功');
startTurnOnTheLiftToSomeLevel(2);
} else {
clicker.player.directMessage('其它楼层已被呼梯');
};
} else {
clicker.player.directMessage('该楼层已被呼梯');
};
};
} else if (!entity.isPlayer && entity.id == '呼梯-3') {
if (button == GameButtonType.ACTION0 && distance <= 8) {
if (call[2] === false) {
if (call[0] == false && call[1] == false) {
call[2] = true;
clicker.player.directMessage('呼梯成功');
startTurnOnTheLiftToSomeLevel(3);
} else {
clicker.player.directMessage('其它楼层已被呼梯');
};
} else {
clicker.player.directMessage('该楼层已被呼梯');
};
};
};
} else {
clicker.player.directMessage('电梯正在开关门');
};
} else {
clicker.player.directMessage('电梯正在运行');
}
});
world.onClick(async ({ entity, clicker, button }) => {
if (runLift === false) {
if (clossingDoor === false) {
if (!entity.isPlayer && button == GameButtonType.ACTION0) {
if (call[0] == call[1] == call[2] == false) {
if (entity.mesh == 'mesh/1层.vb') {
startTurnOnTheLiftToSomeLevel(1);
clicker.player.directMessage('电梯正在前往1楼');
} else if (entity.mesh == 'mesh/2层.vb') {
startTurnOnTheLiftToSomeLevel(2);
clicker.player.directMessage('电梯正在前往2楼');
} else if (entity.mesh == 'mesh/3层.vb') {
startTurnOnTheLiftToSomeLevel(3);
clicker.player.directMessage('电梯正在前往3楼');
};
} else {
clicker.player.directMessage('当前电梯已被呼梯');
};
};
} else {
clicker.player.directMessage('电梯正在开关门');
};
} else {
clicker.player.directMessage('电梯正在运行');
};
});
world.querySelectorAll('*').forEach(async (e) => {
if (e.hasTag('down')) {
while (true) {
for (let i = 0; i < 50; i++) {
e.position.y -= 0.0025;
await sleep(24);
};
for (let i = 0; i < 50; i++) {
e.position.y += 0.0025;
await sleep(24);
};
};
} else if (e.hasTag('up')) {
while (true) {
for (let i = 0; i < 50; i++) {
e.position.y += 0.0025;
await sleep(24);
};
for (let i = 0; i < 50; i++) {
e.position.y -= 0.0025;
await sleep(24);
};
};
} else if (e.hasTag('level')) {
while (true) {
e.mesh = `mesh/${Math.round((leftLiftDoor.position.y - 10) / 10) + 1}.vb`;
await sleep(24);
};
};
});
async function openLiftDoor(openLevelOutdoorNumber) {
for (let i = 0; i < 120; i++) {
leftLiftDoor.position.x -= 2 / 120;
rightLiftDoor.position.x += 2 / 120;
world.querySelector(`#电梯外门左-${openLevelOutdoorNumber}`).position.x -= 2 / 120;
world.querySelector(`#电梯外门右-${openLevelOutdoorNumber}`).position.x += 2 / 120;
await sleep(25);
};
};
async function closeLiftDoor(closeLevelOutdoorNumber) {
for (let i = 0; i < 120; i++) {
leftLiftDoor.position.x += 2 / 120;
rightLiftDoor.position.x -= 2 / 120;
world.querySelector(`#电梯外门左-${closeLevelOutdoorNumber}`).position.x += 2 / 120;
world.querySelector(`#电梯外门右-${closeLevelOutdoorNumber}`).position.x -= 2 / 120;
await sleep(25);
};
};
async function useOnLift(num, time, outdoorNumber) {
clossingDoor = true;
for (let i = 0; i < num; i++) {
openLiftDoor(outdoorNumber);
await sleep(1000 * (time + 3));
closeLiftDoor(outdoorNumber);
};
clossingDoor = false;
};
async function turnOnLiftToLevel(levels) {
world.querySelectorAll('*').forEach(async (e) => {
if (liftLevel < levels) {
if (e.hasTag('down')) {
e.meshInvisible = true;
} else if (e.hasTag('up')) {
e.meshInvisible = false;
};
} else if (liftLevel > levels) {
if (e.hasTag('up')) {
e.meshInvisible = true
} else if (e.hasTag('down')) {
e.meshInvisible = false;
};
};
});
for (let i = 0; i < Math.abs(levels - liftLevel) * 320; i++) {
leftLiftDoor.position.y += levels - liftLevel > 0 ? 10 / 320 : -10 / 320;
rightLiftDoor.position.y += levels - liftLevel > 0 ? 10 / 320 : -10 / 320;
world.querySelectorAll('.电梯轿厢').forEach(async (car) => {
car.position.y += levels - liftLevel > 0 ? 10 / 320 : -10 / 320;
});
world.querySelectorAll('.电梯控制面板').forEach(async (e) => {
e.position.y += levels - liftLevel > 0 ? 10 / 320 : -10 / 320;
});
await sleep(25);
};
await sleep(1000);
liftLevel = levels;
world.querySelectorAll('*').forEach(async (e) => {
if (e.hasTag('down')) {
e.meshInvisible = false;
} else if (e.hasTag('up')) {
e.meshInvisible = false;
};
});
};
async function startTurnOnTheLiftToSomeLevel(floor) {
runLift = true;
turnOnLiftToLevel(floor);
await sleep(8000 * Math.abs(liftLevel - floor) + 1000);
useOnLift(1, 7, floor);
await sleep(15000);
call[floor - 1] = false;
runLift = false;
};