Написание спам чата для игры Dota 2.
С чего всё началось спросите вы? Всё банально просто. Попросил меня друг написать ему спамера по чату Dota 2 для бесплатной и таргетированной рекламы в этом направлении. Ну думаю я, сделаю ка я обычный кликер с имитированием нажатий нужных клавиш, да напишу ка я это дело на питоне, компильну в exe с помощью pyinstaller да и дело с концом. Ага, как бы не так...
Началось всё с обычного pyautogui
Думал этим и закончится. Но нет же. Оно отказывалось работать и нажимать на enter.
Хорошо подумал я, пойдем дальше... Решил попробовать pynput
Думаете оно работало в игре? Нет, оно там не работало. Оно могло кликать и даже писать текст в чат, но вот нажимать клавишу Enter оно не могло. Да, возможно я криворукий, но, ОНО НЕ НАЖИМАЛО ENTER В ИГРЕ. (Да-да, у меня горит)
Вы уже возможно задались вопросом, а что было дальше? А дальше я пошел писать сие чудо на плюсах.
#include <iostream> #include <Windows.h> int main() { keybd_event('C', 0,0,0); keybd_event('C', 0,KEYEVENTF_KEYUP,0); return 0; }
Вот вам как пример кода на плюсах, сам файл я удалил из-за того что он не работал, то бишь он не мог нажимать enter.
Любой хороший программист вам скажет что определенные языки решают определенные вопросы в плане написания софта.
Что же, я не остановился на этом, я полез в дебри дальше и нашел чудо под названием AutoHotKey
AutoHotkey — свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows. AutoHotkey является языком программирования сценариев, приспособленный к лёгкому назначению и переназначению горячих клавиш, включая кнопки мыши и джойстика.
Спустя 1 час в гугле я смог наконец написать чудо которое работало как я того хотел:
О да, оно работает, это прекрасно.
Компильнуть ahk скрипт в exe довольно таки просто :
Что бы преобразовать AHK в .exe файл нам нужно нажать правой кнопкой мыши на наш AHK скрипт, далее выбрать функцию:"Complite Script"
Вот наш exe файл и готов. Функционал как вы видите скромный. Далее рассмотрим сам код.
#SingleInstance force 1:: Loop { Click 780, 653 Click 1121, 931 sendinput, Привет, мир {enter} Click 918, 653 Click 1121, 931 sendinput, Привет, мир {enter} Click 1029, 653 Click 1121, 931 sendinput, Привет, мир {enter} Click 1127, 653 Click 1121, 931 sendinput, Привет, мир {enter} sleep, 10000 } Return F11:: If not Stop { Stop := True Pause } Return F12:: If Stop { Stop := False Pause } Return
При нажатии клавиши 1
будет выполнятся цикл который кликает на окно чата, затем кликает на строчку ввода и вводит текст после чего нажимает enter. Всё до боли просто.
При нажатии клавиши F11 скрипт будет остановлен, при нажатии клавиши F12 он будет запущен вновь. Так же, таймаут написания сообщений равен 10 секундам. Настолько простой и рабочий скрипт что просто прекрасно...
Что касается координат, их я узнавал с помощью скрипта на питоне.
import pynput.mouse as ms mouse = ms.Controller() while True: print(str(mouse.position)) sleep(0.5)
На этом всё, мой код не идеален и вы всегда можете его модернизировать.