Цикл while

KhanWarden

Участник
Автор темы
42
3
Вот начал изучать пайтон. Написал первый скрипт, который автоматически будет принимать игру в доте. Сделал поиск по картинке на экране в pyautogui, но загвоздка в том, что он отключается через секунду. То есть как включается скрипт в течение секунды если не найдется на экране картинка как на скриншоте, то отключается. Как создать бесконечный цикл, чтобы он работал всегда и не выключался даже после принятия игры?


Python:
import pyautogui

screen = 'C:/Users/Khan/Desktop/start.png' # Местоположение скриншота

start = pyautogui.locateOnScreen(screen, confidence = 0.9)

pyautogui.click(start)
 

Josski Molodoi

Активный
182
85
Попробуй так:

Python:
import pyautogui
import time

screen = 'C:/Users/Khan/Desktop/start.png'

def check_game(screen):
    try:
        start = pyautogui.locateOnScreen(screen, confidence = 0.9)
    except:
        pass
    else:
        pyautogui.click(start)

while True:
    check_game(screen)
    time.sleep(0.5)

Скорее всего закрывается потому, что при отсутствии изображении на экране происходит ошибка ImageNotFoundException (информация из документации pyautogui), а при возникновении ошибок скрипт автоматически прекратит работу. Чтобы не прекращал существуют блоки try-except-else, которые при возникновении ошибок могут их игнорировать, либо принимать какие то действия, в твоём случае ошибка будет игнорироваться зарезервированным словом pass, которое просто ничего не делает.

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

Если будешь в будущем "искать" изображения на экране - используй OpenCV.
Удачи.
 
Последнее редактирование:

Josski Molodoi

Активный
182
85
пайавтогуй и так использует opencv 😉
А зачем усложнять работу скрипту, вызывая одну библиотеку которая использует другую, и предназначена не только для работы с изображениями?
 

Rei

Известный
Друг
1,590
1,607
А зачем усложнять работу скрипту, вызывая одну библиотеку которая использует другую, и предназначена не только для работы с изображениями?
ну тк он с pyatogui не только ищет изображение, а еще и кликает. т.е. зачем городить левую дрочь, если можно той же либой устроить все одной строчкой?

такой вариант плох только тем, что он по всему экрану ищет и производительность будет желать лучшего
 

Josski Molodoi

Активный
182
85
ну тк он с pyatogui не только ищет изображение, а еще и кликает. т.е. зачем городить левую дрочь, если можно той же либой устроить все одной строчкой?

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