Найти в Дзене
Артем Милич

Как написать первого бота для Forge of Empires: Автосбор молотков в "Доме охотника" 🛠️

Привет! 👋 Если вы здесь, значит, вы уже устали кликать по одним и тем же кнопкам в Forge of Empires (FoE), или просто хотите научиться писать полезные скрипты. Сегодня мы начнём с простого — автоматизируем сбор ресурсов в "Доме охотника", где можно получить 7 молотков за 30 секунд. Это идеальный стартовый пример, чтобы понять, как работают боты на основе **PyAutoGUI**. 💡 Моя цель — не просто показать рабочий код, а объяснить каждую строчку так, чтобы вы могли написать свой собственный скрипт под свои нужды. Поехали! Установите зависимости: bash pip install pyautogui opencv-python pillow ⚠️ PyAutoGUI работает только на Windows, macOS и Linux с X11. Для других систем потребуются дополнительные инструменты. Весь наш скрипт делится на три части: 🐭 move_mouse_with_offset — добавляем человечность Игры могут блокировать ботов, если они обнаруживают слишком точное поведение. Мы добавляем "случайный шум" к координатам курсора, чтобы он двигался как живой человек. - x, y — центр найденного и
Оглавление

Привет! 👋

Если вы здесь, значит, вы уже устали кликать по одним и тем же кнопкам в Forge of Empires (FoE), или просто хотите научиться писать полезные скрипты. Сегодня мы начнём с простого — автоматизируем сбор ресурсов в "Доме охотника", где можно получить 7 молотков за 30 секунд. Это идеальный стартовый пример, чтобы понять, как работают боты на основе **PyAutoGUI**.

💡 Моя цель — не просто показать рабочий код, а объяснить каждую строчку так, чтобы вы могли написать свой собственный скрипт под свои нужды. Поехали!

🔧 Что нам понадобится?

Установите зависимости:

bash
pip install pyautogui opencv-python pillow

⚠️ PyAutoGUI работает только на Windows, macOS и Linux с X11. Для других систем потребуются дополнительные инструменты.

🧠 Объяснение кода

Весь наш скрипт делится на три части:

  1. Функция `move_mouse_with_offset` — имитирует естественное движение мыши.
  2. Функция `locate_and_click` — ищет изображение на экране и кликает по нему.
  3. Основной цикл `main_loop` — управляет логикой автосбора.

🐭 move_mouse_with_offset — добавляем человечность

-2

Как придать боту человечность

Игры могут блокировать ботов, если они обнаруживают слишком точное поведение. Мы добавляем "случайный шум" к координатам курсора, чтобы он двигался как живой человек.

- x, y — центр найденного изображения.

- offset — максимальное отклонение от центра.

- random.uniform() — генерирует случайное число в заданном диапазоне.

- deltaY — компенсирует возможное смещение интерфейса (например, при изменении разрешения окна игры).

- duration — время перемещения курсора.

---

🔍 locate_and_click — ищем кнопки на экране

-3

Как это работает?

  • pyautogui.locateOnScreen() ищет изображение на экране. Используйте `.png` или `.jpg`.
  • confidence=0.7 — уровень уверенности. Если картинка немного отличается (например, цвет фона), игра всё равно её найдёт.
  • Если кнопка найдена — получаем её центр и вызываем move_mouse_with_offset.
  • После клика добавляем паузу time.sleep() с небольшим рандомом, чтобы поведение казалось естественным.
  • Возвращаем `True` или `False`, чтобы можно было проверить успешность действия.

🔄 main_loop — основная логика работы

-4

Что происходит?

То же самое, что вы играете в FoE вручную:

1. Вы кликаете по **"Дому охотника"** (`target1.jpg`) — открывается его меню.

2. Выбираете "трофеи" (`make1.jpg`). Здесь добавлен `deltaY=100`, потому что нажимать надо не по центру изображения, а на "Произвести".

3. Ждёте 30 секунд, пока производство завершится.

4. Кликаете по молоткам (`farm1.jpg`).

Это повторяется `n` раз (по умолчанию 5). То есть вы можете оставить бота на пару часов — он будет собирать молотки вместо вас.

📸 Подготовка изображений

Чтобы бот работал корректно, вам нужно сделать скриншоты тех кнопок, которые вы хотите найти. Сохраните их в той же директории, что и скрипт:

- target1.jpg — дом охотника на карте.

- make1.jpg — кнопка "Произвести" трофеи.

- farm1.jpg — "Собрать молотки".

-5

⏱️ Почему нужны задержки?

  • time.sleep(2) после клика — даёт время игре обновить статус домика.
  • time.sleep(30) — ждём окончания производства.
  • Рандомизация времени помогает избежать детекции как бота.

🧪 Как запускать?

1. Откройте FoE в окне (не на весь экран).

2. Расположите окно так, чтобы все изображения были видны в том же масштабе, что Вы вырезали скрины.

3. Запустите скрипт (F5)

🧰 Полезные советы

Чтобы остановить бота — просто потяните мышь в угол экрана (PyAutoGUI автоматически прекратит выполнение).

- Также можно использовать Ctrl+C для остановки бота.

✅ Подводим итог

Вы только что написали свой первый примитивный игровой бот, который экономит вам время и силы. Это лишь начало. Дальше мы будем автоматизировать более сложные элементы FoE: поля боя гильдий, экспедиции.

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

Весь наш код выглядит так

-6

Попробуйте создать такой же бот для сбора голда с домиков.

📩 Подписывайтесь на серию

Если понравилось — ставьте ❤️, комментируйте, задавайте вопросы. Я отвечу всем и расскажу больше!

P.S. Используйте ботов на свой страх и риск. И лучше с нового аккаунта. Я не несу ответственности за возможные баны. =))))