Вопрос Вопрос по асинку(хотя честно хз в асинке ли дело)

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
3 Окт 2020
Сообщения
17
Реакции
0
У меня вызывается хуйня, которая по факту должна работать 1 раз, но происходит какой то пиздец

JavaScript:
Expand Collapse Copy
@Override
    public void onUpdate() {
        if (ModuleManager.autoFarm.repairing) {
            Managers.ASYNC.run(() -> {
                if (mc.player.experienceLevel < expLevel.getValue() && switchToExp()) {
                    if (timer.every(500)) {
                        mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND);
                        sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
                    }
                }

                mc.player.getInventory().selectedSlot = 6;
                sendPacket(new UpdateSelectedSlotC2SPacket(6));

                if (mc.player.experienceLevel >= expLevel.getValue() && mc.currentScreen == null) {
                    sendChatCommand("shop");
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(21);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    mc.player.closeHandledScreen();
                }


                if (anP != null && mc.player.experienceLevel >= expLevel.getValue() && !(mc.player.currentScreenHandler instanceof AnvilScreenHandler)) {
                    float[] angle = calculateAngle(anP.toCenterPos());
                    mc.player.setYaw(angle[0]);
                    mc.player.setPitch(angle[1]);
                    sendMessage("112");
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, new BlockHitResult(anP.toCenterPos(), Direction.UP, anP, false));
                    sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 38, 0, SlotActionType.QUICK_MOVE, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 30, 0, SlotActionType.QUICK_MOVE, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 2, 0, SlotActionType.PICKUP, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 30, 0, SlotActionType.PICKUP, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.player.closeHandledScreen();
                    ModuleManager.autoFarm.repairing = false;
                    sendMessage("end");
                }
            });
        }
                    mc.player.getInventory().selectedSlot = 0;
                    sendPacket(new UpdateSelectedSlotC2SPacket(0));
    }



вопрос, как лучше сделать бля, и почему у меня выполняется всё непоочерёдно
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У меня вызывается хуйня, которая по факту должна работать 1 раз, но происходит какой то пиздец

JavaScript:
Expand Collapse Copy
@Override
    public void onUpdate() {
        if (ModuleManager.autoFarm.repairing) {
            Managers.ASYNC.run(() -> {
                if (mc.player.experienceLevel < expLevel.getValue() && switchToExp()) {
                    if (timer.every(500)) {
                        mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND);
                        sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
                    }
                }

                mc.player.getInventory().selectedSlot = 6;
                sendPacket(new UpdateSelectedSlotC2SPacket(6));

                if (mc.player.experienceLevel >= expLevel.getValue() && mc.currentScreen == null) {
                    sendChatCommand("shop");
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(21);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    mc.player.closeHandledScreen();
                }


                if (anP != null && mc.player.experienceLevel >= expLevel.getValue() && !(mc.player.currentScreenHandler instanceof AnvilScreenHandler)) {
                    float[] angle = calculateAngle(anP.toCenterPos());
                    mc.player.setYaw(angle[0]);
                    mc.player.setPitch(angle[1]);
                    sendMessage("112");
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, new BlockHitResult(anP.toCenterPos(), Direction.UP, anP, false));
                    sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 38, 0, SlotActionType.QUICK_MOVE, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 30, 0, SlotActionType.QUICK_MOVE, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 2, 0, SlotActionType.PICKUP, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 30, 0, SlotActionType.PICKUP, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.player.closeHandledScreen();
                    ModuleManager.autoFarm.repairing = false;
                    sendMessage("end");
                }
            });
        }
                    mc.player.getInventory().selectedSlot = 0;
                    sendPacket(new UpdateSelectedSlotC2SPacket(0));
    }



вопрос, как лучше сделать бля, и почему у меня выполняется всё непоочерёдно
Че за асинк
 
У меня вызывается хуйня, которая по факту должна работать 1 раз, но происходит какой то пиздец

JavaScript:
Expand Collapse Copy
@Override
    public void onUpdate() {
        if (ModuleManager.autoFarm.repairing) {
            Managers.ASYNC.run(() -> {
                if (mc.player.experienceLevel < expLevel.getValue() && switchToExp()) {
                    if (timer.every(500)) {
                        mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND);
                        sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
                    }
                }

                mc.player.getInventory().selectedSlot = 6;
                sendPacket(new UpdateSelectedSlotC2SPacket(6));

                if (mc.player.experienceLevel >= expLevel.getValue() && mc.currentScreen == null) {
                    sendChatCommand("shop");
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(21);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    clickSlot(23);
                    AsyncManager.sleep(delay.getValue());
                    mc.player.closeHandledScreen();
                }


                if (anP != null && mc.player.experienceLevel >= expLevel.getValue() && !(mc.player.currentScreenHandler instanceof AnvilScreenHandler)) {
                    float[] angle = calculateAngle(anP.toCenterPos());
                    mc.player.setYaw(angle[0]);
                    mc.player.setPitch(angle[1]);
                    sendMessage("112");
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, new BlockHitResult(anP.toCenterPos(), Direction.UP, anP, false));
                    sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND));
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 38, 0, SlotActionType.QUICK_MOVE, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 30, 0, SlotActionType.QUICK_MOVE, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 2, 0, SlotActionType.PICKUP, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, 30, 0, SlotActionType.PICKUP, mc.player);
                    AsyncManager.sleep(delay.getValue());
                    mc.player.closeHandledScreen();
                    ModuleManager.autoFarm.repairing = false;
                    sendMessage("end");
                }
            });
        }
                    mc.player.getInventory().selectedSlot = 0;
                    sendPacket(new UpdateSelectedSlotC2SPacket(0));
    }



вопрос, как лучше сделать бля, и почему у меня выполняется всё непоочерёдно
Да потому что async manager это непонятно что за хуйня и она не останавливает выполнение кода, а что бы приостановить код нужно юзать метод Thread.sleep но он весь поток будет заморожен на определенное время
 
работать не с потоками, а написать скрипт.класс ( с грамотным билдером ) у которого будет метод tick() вызываться он будет каждый тик и либо от количества тиков будет исполнять ту или иную хуйню, либо использовать timer (StopWatch) и так же в зависимости от того скок времени прошло исполнять ту или иную хуйня. Во первых ты сможешь в любой момент остановить исполнение ( без убийства и созданий anatomic переменных), во вторых избежать говно кода на потоках
 
Назад
Сверху Снизу