@fife

Может ли робот не успевать выполнить свои действия, и переходить к следующей задаче?

Привет, пишу бота для игры, для этого создаю три потока, один читает лог(туда приходят сообщения которые бот должен обрабатывать), второй обрабатывает сообщение(принимает решение что надо делать) и заносит в очередь, и третий берет из очереди обработанное сообщение, и начинает его выполнение, а попутно в очередь добавляются другие задачи.
В третьем потоке активно использую класс Robot для установления курсора на нужные координаты, и выполняя действия.
public static void dropToStashFromInventory(){
        try {
            closeAllWindows();//закрывает открытые окна в игре
            Robot robot = new Robot();

            robot.mouseMove(977, 486); //открывает сундук
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            //x=1316, y=588 1 inventory slot
            for (int i = 0;i<12;i++){//тут бежит по всем слотам инвентаря 12х5
                robot.mouseMove(1316 + (50 *i), 578);
                for (int j = 0; j<5;j++){
                    robot.mouseMove(1316 + (50 * i), 578 + (50 * j));
                    robot.keyPress(KeyEvent.VK_CONTROL);//зажимая control и кликая на слот
                    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
                    robot.keyRelease(KeyEvent.VK_CONTROL);
                }
            }
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }


Дело в том, что иногда перед тем как перейти к следующей ячейки инвентаря, он не успевает отжать control, и получается что вместо быстрого скидывания в сундук(с control), он берет вещь под курсор, конечно же это ломает логику бота.

Как мне это исправить/какие альтернативы можно использовать?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@Cheypnow
Как вариант использовать метод waitForIdle() или поставить задержку на какое-то время чтобы дождаться пока нужная логика отработает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект