Никитенко Максим (Sets88)

Личная страница

Python - Автокликер

Недавно товарищ рассказал мне о том как в одной онлайн игре ему тяжело приходится крафтя какие-либо вещи, приходится очень нудно нажимать мышкой в одно и то же место по многу раз, не долго думая решил облегчить его труд, чтобы компьютер сам мог кликать за него, ему останется лишь сидеть, пить кофе и наблюдать как налаживается его жизнь в игре :)

Что-бы его не заподозрили в мошенничестве внедрил некий механизм чтобы время между кликами всегда было разное.

Для товарища я собрал этот скрипт в standalone exe файл с помощью py2exe.

Для работы скрипта нужен Python и pymouse

Исходный код:
#!/usr/bin/python

from pymouse import PyMouse
import time
import random
import argparse
import signal
import sys


def main():
    parser = argparse.ArgumentParser(description='')
    parser.add_argument('-t', metavar='TIMEOUT', type=int, default=1000, help='Set clicking timeout (in miliseconds 1000ms = 1s)(Default = 1000)')
    parser.add_argument('-r', metavar='RANDOMTO', type=int, default=0, help='Randomly add or sub random time (in miliseconds 1000ms = 1s)(Default = 0)')
    parser.add_argument('-f', action='store_true', help='Follow the mouse while clicking(Off by default)')
    args = parser.parse_args()

    timeout = args.t
    rand = args.r

    m = PyMouse()
    x, y = m.position()
    while 1:
        time.sleep(sleeptime(timeout, rand))
        if args.f:
            x, y = m.position()
            if sys.platform == 'win32':
                m.press(x, y)
            else:
                m.click(x, y)
        else:
            x1, y1 = m.position()
            if sys.platform == 'win32':
                m.press(x, y)
            else:
                m.click(x, y)
            m.move(x1, y1)


def sleeptime(timeout, rand):
    r = random.randint(0, rand)
    if random.randint(0, 1):
        return (timeout / 1000.0 + r / 1000.0)
    else:
        return (timeout / 1000.0 - r / 1000.0)


def signal_exit(signal, frame):
    sys.exit(0)


if __name__ == "__main__":
    signal.signal(signal.SIGINT, signal_exit)
    main()

Яндекс.Метрика