Привет всем любителям игр и особенно тем, кто, как и я, близок к вселенной Варкрафт 3. Представляем бота, в котором собраны самые популярные реплики игровых юнитов из мира Warcraft 3.

Зачем я создал такого бота?

Общаясь в разных чатах с разными людьми, я начал замечать, что в определенном контексте отправить мемную реплику персонажа, которая будет понятна людям, весьма далеким от игр, — бесценно!

Это поможет вам чтобы разрядить обстановку, скрасить любой шутка, отличный Способ уйти от неловких разговоров, стать Главная хулиган в команде и многое другое.

Вот, представьте себе следующее: вам навязывают Вербовщик В ТЧ со своей не интересной работой, а вы ей/ему в ответ:

И все вопросы о вашей профпригодности и заинтересованности в работе сразу отпадают!

Все старожилы, думаю, помнят видеопародию на озвучку персонажей Warcraft 3.

Источник: vc.ru

Как сделать ИИ для Warcraft 3 — Создание AI {guide}

Простой Java бот кликер на примере игры World of Warcraft 3.3.5a

Данный механизм был протестирован исключительно на пиратском сервере, поэтому его работоспособность на официальных серверах не гарантируется.

Все попытки применения осуществляются исключительно на свой страх и риск.

Реализация приведена для настольных компьютеров Windows.

Итак, давайте создадим простого бота, цель которого будет заключаться в следующем:

1) Войдите в игру;
2) войти в аккаунт;
3) Войдите в игровой мир;
4) откройте почтовый ящик;
5) создайте и отправьте письмо другому игроку;

1) Войдите в игру

Для того чтобы войти в игру, нам необходимо предварительно скачать клиент игры.
В нашей работе мы используем exe файл Wow.exe. Запишем его путь следующим образом:

String WowPatch=»D:/Wow/Wow.exe.»

Здесь мы записали путь к исполняемому файлу игры Wow. Возможно, у вас будет другой путь.

Путь, конечно, хороший, но его недостаточно для запуска игры.

Для начала нам понадобится следующий код:

String WowPatch=»D:/Wow/Wow.exe»; File file =new File(WowPatch); try < Desktop.getDesktop().open(file); >catch (IOException e1)

В результате применения приведенного выше кода на вашем компьютере должен быть запущен WoW.

WoW мы запустили и сразу же столкнулись с новой проблемой — Как заставить бота автоматически вводить имя пользователя и пароль от вашего аккаунта?

2) Войдите в свою учетную запись

Сейчас? нам нужно записать еще две текстовые переменные.

String Login=»YourLogin»; String Password=»YourPassword»;

Здесь мы записали Логин и Пароль учетной записи, в которую собираемся войти. Однако, если мы используем from сразу после той части кода, где мы входим в игру — возникнут проблемы. И все потому, что наш бот будет запускать код независимо от того, загружен ли Warcraft, а игре требуется некоторое время для загрузки, если вы на слабом ПК, это займет еще больше времени.

Cоздание Бота в Warcraft 3

Чтобы имя пользователя и пароль не были «введены» раньше времени, мы сделаем паузу в нашем коде:

String WowPatch=»D:/Wow/Wow.exe»; File file =new File(WowPatch); try < Desktop.getDesktop().open(file); >catch (IOException e1) < e1.printStackTrace(); >Thread.sleep(20000); String Login=»YourLogin»; String Password=»YourPassword»;

Читайте также:  Повелитель тьмы варкрафт кто такой

Здесь мы делаем паузу на 20 секунд. Этого времени более чем достаточно для загрузки WoW. Стоит отметить, что сразу после загрузки WoW у нас по умолчанию уже выбрано поле для входа в систему. Теперь нам остается только скопировать логин из нашей переменной в буфер обмена и вставить его в поле входа:

Robot rb = new Robot(); StringSelection stringSelection = new StringSelection(Login); Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL);

Здесь мы скопировали наш логин в буфер обмена и с помощью имитации Ctrl+V вставляем его в соответствующее окно.

Теперь нам нужно переключиться на поле ввода пароля. Это можно сделать двумя способами:

— Мы можем имитировать движение мыши и кликнуть по второму окну.
— Мы можем переключаться, имитируя нажатие кнопки Tab.

Мы будем использовать второй способ, потому что он проще:

rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB);

Затем копируем наш пароль в буфер обмена и вставляем его:

StringSelection stringSelection2 = new StringSelection(Password); Clipboard clpbrd2 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd2.setContents(stringSelection2, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL);

Ура. Мы вошли в меню выбора персонажа. Теперь нам нужно войти в игровой мир.

3) Перейти в игровой мир

Теперь мы видим меню выбора экранного символа. Мы не будем долго искать и просто кликнем на первого встречного персонажа.

Для того чтобы войти в систему, мы можем использовать два различных варианта:

— Подведите курсор мыши к кнопке «Вход» и имитируйте нажатие;
— Имитируем нажатие клавиши Enter;

Второй вариант проще, но если мы добавим нажатие клавиши сразу после функции ввода, то снова возникнут проблемы, поэтому мы снова поставим паузу, дав игре возможность спокойно войти в меню выбора персонажа:

Thread.sleep(5000); rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER);

У меня есть 5 сек. достаточно хорошо.

О боже, игровой мир загружается!

4) Открыть почтовый ящик

Здесь нам снова придется сделать паузу, чтобы WoW успел загрузить игровой мир. Желательно также заранее подготовить персонажа:

— Максимизируйте камеру;
— Станьте лбом почтового ящика;

Чтобы открыть почтовый ящик, нам нужно щелкнуть по нему правой кнопкой мыши. Для этого мы перемещаем курсор мыши и имитируем щелчок:

Thread.sleep(30000); rb.mouseMove(700, 350); rb.mousePress(InputEvent.BUTTON3_MASK); rb.mouseRelease(InputEvent.BUTTON3_MASK);

Обратите внимание, что указанное мной положение мыши предназначено для разрешения 1366×768.
BUTTON3 — правая кнопка мыши.

Мы открыли почтовый ящик, теперь переходим на вкладку «Отправить»:

rb.mouseMove(200, 550); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK);

Здесь мы не только имитировали движение мыши по экрану, но и сделали щелчок левой кнопкой мыши.

Теперь пришло время заполнить и отправить письмо!

5) Создайте и отправьте сообщение другому игроку

Теперь нам нужно заполнить элементы:

— Имя получателя;
— Тема сообщения;
— Текст сообщения;

String Name=»Имя»; String Theme=»Тема»; String Text=»Текст»;

Прежде всего, занесем имя персонажа в буфер обмена и вставим его в соответствующую колонку:

StringSelection stringSelection3 = new StringSelection(Name); Clipboard clpbrd3 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd3.setContents(stringSelection3, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB);

Мы вставили имя получателя и переключились на другой ящик. Теперь нам нужно вставить тему сообщения:

Читайте также:  Как авторизоваться в world of warcraft

StringSelection stringSelection4 = new StringSelection(Theme); Clipboard clpbrd4 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd4.setContents(stringSelection4, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB);

Мы вставили тему сообщения и переключились на третью графу — текст сообщения:

StringSelection stringSelection5 = new StringSelection(Text); Clipboard clpbrd5 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd5.setContents(stringSelection5, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL);

Вставленное текстовое сообщение. Теперь осталось только нажать на кнопку отправки:

rb.mouseMove(200, 520); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK);

Переместите курсор и щелкните левой кнопкой мыши на «Отправить».

Вот и все. Надеюсь, это было полезно хотя бы одному человеку. Также, надеюсь, что данная статья не была воспринята как руководство к действию и не приведет к еще большему спаму в игре.

  • Java
  • Eclipse
  • Игры и игровые приставки

Источник: хабр.com

Простой бот-кликер на примере World of Warcraft 3.3.5a

Для того чтобы войти в игру, нам необходимо предварительно скачать игровой клиент.
В нашей работе мы используем exe-файл Wow.exe. Запишем его путь следующим образом:

String WowPatch=»D:/Wow/Wow.exe»;

Здесь мы прописали путь к исполняемому файлу Wow. Ваш путь, вероятно, будет другим.

Путь, конечно, хорош, но его недостаточно для запуска игры.
Для его запуска нам нужен этот код:

String WowPatch=»D:/Wow/Wow.exe»; File file =new File(WowPatch); try < Desktop.getDesktop().open(file); >catch (IOException e1)

В результате выполнения приведенного выше кода у вас на компьютере должен запуститься WoW.

Мы запустили WoW и сразу же столкнулись с новой проблемой — Как сделать так, чтобы бот автоматически вводил имя пользователя и пароль от аккаунта?

2) Войдите в свою учетную запись.

Теперь? нам нужно написать еще две текстовые переменные.

String Login=»YourLogin»; String Password=»YourPassword»;

Здесь мы помещаем Логин и Пароль от учетной записи, в которую мы собираемся войти. Однако, если мы используем его сразу после той части кода, где мы входим в игру, возникнут проблемы. Все потому, что наш бот будет выполнять код независимо от того, загружен ли Warcraft, а игре требуется некоторое время для загрузки, если вы работаете на слабом ПК, то времени потребуется еще больше.
Чтобы логин и пароль не были «введены» раньше времени, мы сделаем паузу в нашем коде:

String WowPatch=»D:/Wow/Wow.exe»; File file =new File(WowPatch); try < Desktop.getDesktop().open(file); >catch (IOException e1) < e1.printStackTrace(); >Поток.sleep(20000); String Login=»YourLogin»; String Password=»YourPassword»;

Здесь мы сделали паузу на 20 сек. Этого времени более чем достаточно, чтобы загрузить WoW. Стоит отметить, что сразу после загрузки WoW у нас уже есть выбранное по умолчанию окно для входа в систему. Теперь нам остается только скопировать логин из нашей переменной в буфер обмена и вставить его в поле логина:

Robot rb = new Robot(); StringSelection stringSelection = new StringSelection(Login); Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL);

Здесь мы скопировали наш логин в буфер обмена, сымитировали нажатие Ctrl+V и вставили его в соответствующее окно.
Теперь нам нужно переключиться на поле ввода пароля. Это можно сделать двумя способами:
— Мы можем имитировать движение мыши и щелкнуть по второму окну.
— Мы можем переключаться, имитируя нажатие кнопки Tab.

Читайте также:  World of warcraft где фармить

Мы будем использовать второй вариант, так как он проще:

rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB);

Затем копируем в буфер обмена наш пароль и вставляем его:

StringSelection stringSelection2 = new StringSelection(Password); Clipboard clpbrd2 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd2.setContents(stringSelection2, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL);

Ура. Мы вошли в меню выбора символов. Теперь вам нужно войти в игровой мир.

3) Перейдите в игровой мир.

Теперь мы видим меню выбора персонажа. Мы не будем слишком долго искать и возьмем первый попавшийся символ.
Чтобы войти в систему, мы можем использовать два различных варианта:
— Подведите курсор мыши к кнопке «Войти» и имитируйте нажатие;
— Имитируем нажатие на кнопку Enter;

Второй вариант проще, но если мы завершим нажатие сразу после функции login, то снова возникнут проблемы, поэтому снова делаем паузу, позволяя игре спокойно войти в меню выбора персонажа:

Thread.sleep(5000); rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER);

I 5 сек. достаточно.

О боже, игровой мир загружается!

4) Открыть почтовый ящик.

Здесь мы снова должны сделать паузу, чтобы WoW успел загрузить игровой мир. Также желательно заранее подготовить персонажа:
— Подведите камеру как можно ближе;
— Становится лбом почтового ящика;

Чтобы открыть почтовый ящик, нужно щелкнуть по нему правой кнопкой мыши. Для этого мы перемещаем курсор мыши и имитируем щелчок:

Thread.sleep(30000); rb.mouseMove(700, 350); rb.mousePress(InputEvent.BUTTON3_MASK); rb.mouseRelease(InputEvent.BUTTON3_MASK);

Обратите внимание, что положение мыши, указанное мной, рассчитано на разрешение экрана 1366х768.
BUTTON3 — правая кнопка мыши.

Мы открыли почтовый ящик, теперь перейдем на вкладку «Отправить»:

rb.mouseMove(200, 550); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK);

Здесь мы не только имитируем движение мыши по экрану, но и делаем клик левой кнопкой мыши.
Теперь пришло время заполнить и отправить электронное письмо!

5) Сформируйте и отправьте письмо другому игроку.

Теперь нам нужно заполнить пункты:
— Имя получателя;
— Тема сообщения;
— Текст сообщения;

String Name=»Имя»; String Theme=»Тема»; String Text=»Текст»;

Сначала поместим имя персонажа в буфер обмена и вставим его в соответствующую колонку:

StringSelection stringSelection3 = new StringSelection(Name); Clipboard clpbrd3 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd3.setContents(stringSelection3, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB);

Мы вставили имя получателя и переключились на другую графику. Теперь нам нужно вставить тему сообщения:

StringSelection stringSelection4 = new StringSelection(Theme); Clipboard clpbrd4 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd4.setContents(stringSelection4, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB);

Мы вставили тему сообщения и переключились на третью колонку — текст сообщения:

StringSelection stringSelection5 = new StringSelection(Text); Clipboard clpbrd5 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd5.setContents(stringSelection5, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL);

Вставьте текст сообщения. Теперь осталось только нажать кнопку отправки:

rb.mouseMove(200, 520); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK);

Наводим курсор и нажимаем левой кнопкой мыши на «Отправить».

Вот и все. Я надеюсь, что это было полезно хотя бы одному человеку. Также, я очень надеюсь, что эта статья не была воспринята как руководство к действию и не приведет к еще большему спаму в игре.

Источник: se7en.ws