猫史档案馆


【Pro】【dao3.fun】可以呼梯的电梯(详细见视频)

用户:翎with珝翎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;
};


回复

上一页1 页 / 共 1下一页
翎with珝翎with珝

wa

点赞2


评论


CenCen

喵喵

点赞1


评论