Как реализовать алгоритм бота?

Есть одна онлайн игра и я там когда-то написал скрипт на кликермане для фарма ресурсов. Но он баговал, он был палевным. А сейчас мне захотелось написать что-то адекватное и мне это поможет закрыть один предмет в универе. Реализовать я это решил на Python. Там есть библиотеки Opencv и autogui - это то что мне нужно.

Какая должна быть логика: есть миникарта и нужно сканировать её каждую секунду. Если там появляется кто-то из других игроков, нужно выполнить другую логику(это остановка процесса фарма). Если карта чистая, то нужно запустить процесс фарма и заниматься дальше своими делами. Как я понял, это можно решить потоками. Но я не понял как на питоне убивать потоки. И далее я почитал и запутался: эту задачу решать нужно через многопоточность или многопроцессорность? Логика фарма: Есть отдельный поток это клик стрельбы. Есть отдельный поток сбор ресурсов. Я зациклил функции по условию флага. Но чтобы обратно запустить, я заставляю функцию вызывать саму себя. И из-за этого ломается спустя несколько минут скрипт. Слишком много рекурсий. И я не могу понять, это я с потоками недоразобрался или есть адекватное решение задачи? Ещё сложно всё это правильно описать. У меня в голове есть задача и я её решал по этапах и в целом наверное сделал кашу и ошибки. Помогите, пожалуйста, понять как это правильно сделать и как вообще работают такого рода задачи.

https://github.com/Brodja/bot_sky2fly main


Ответы (1 шт):

Автор решения: Psyperception

Потоки на питоне не убиваются нативным способом. Создавай флаги конкретно для циклов, которые работают в отдельном потоке, в случае изменения условий(пришел игрок) - меняешь флаг. Цикл останавливается.

→ Ссылка