Einfacher Java Clicker Bot am Beispiel des Spiels World of Warcraft 3.3.5a

Dieser Mechanismus wurde ausschließlich auf einem Raubkopienserver getestet, daher kann seine Leistung auf offiziellen Servern nicht garantiert werden.

Alle Nutzungsversuche - ausschließlich auf eigene Gefahr und Gefahr.

Die Implementierung ist für Windows-Desktops.

Erstellen Sie also einen einfachen Bot, dessen Zweck Folgendes sein wird:

1) betrete das Spiel;
2) Melden Sie sich bei Ihrem Konto an.
3) betrete die Spielwelt;
4) Öffnen Sie die Mailbox.
5) einen Brief generieren und an einen anderen Spieler senden;

1) Betreten Sie das Spiel


Um an dem Spiel teilnehmen zu können, benötigen wir einen zuvor heruntergeladenen Spielclient.
In unserer Arbeit verwenden wir die exe-Datei Wow.exe. Wir schreiben seinen Weg wie folgt:

String WowPatch="D:/Wow/Wow.exe"; 

Hier haben wir den Pfad zur ausführbaren Wow-Datei aufgezeichnet. Dieser Weg wird für Sie wahrscheinlich anders sein.

Der Weg ist sicherlich gut, aber dies reicht nicht aus, um das Spiel zu starten.

Zum Ausführen benötigen wir diesen Code:

 String WowPatch="D:/Wow/Wow.exe"; File file =new File(WowPatch); try { Desktop.getDesktop().open(file); } catch (IOException e1) { e1.printStackTrace(); } 

Aufgrund der Anwendung des obigen Codes sollte WoW auf Ihrem Computer gestartet werden.

Wir haben WoW gestartet und waren sofort mit einem neuen Problem konfrontiert: Wie kann der Bot das Login und das Passwort automatisch über das Konto eingeben?

2) Melden Sie sich bei Ihrem Konto an


Jetzt? Wir müssen zwei weitere Textvariablen schreiben.

 String Login="YourLogin"; String Password="YourPassword"; 

Hier haben wir den Login und das Passwort von dem Konto notiert, das wir eingeben werden. Wenn wir jedoch unmittelbar nach dem Teil des Codes verwenden, in dem wir das Spiel betreten, wird es Probleme geben. Und das alles, weil unser Bot den Code unabhängig davon ausführt, ob Warcraft gestartet wurde und das Spiel einige Zeit zum Laden benötigt. Wenn Sie auf einem schwachen PC arbeiten, dauert es noch länger.

Damit der Login und das Passwort nicht im Voraus "eingegeben" werden, halten wir in unserem Code an:

 String WowPatch="D:/Wow/Wow.exe"; File file =new File(WowPatch); try { Desktop.getDesktop().open(file); } catch (IOException e1) { e1.printStackTrace(); } Thread.sleep(20000); String Login="YourLogin"; String Password="YourPassword"; 

Hier machten wir 20 Sekunden Pause. Ich habe mehr als genug Zeit, um WoW zu starten. Es ist erwähnenswert, dass unmittelbar nach dem Laden von WoW bereits das Standard-Anmeldefeld ausgewählt ist. Jetzt müssen wir nur noch die Anmeldung von unserer Variablen in die Zwischenablage kopieren und in das Anmeldefeld einfügen:

 Robot rb= new Robot(); StringSelection stringSelection = new StringSelection(Login); Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

Hier haben wir unser Login in die Zwischenablage kopiert und das Drücken von Strg + V simuliert, das Login in das entsprechende Fenster eingefügt.

Jetzt müssen wir zum Passwortfeld wechseln. Es gibt zwei Möglichkeiten, dies zu tun:

- Wir können die Mausbewegung simulieren und auf das zweite Fenster klicken.
- Wir können wechseln, indem wir das Drücken der Tabulatortaste simulieren.

Wir werden die zweite Option verwenden, da es einfacher ist:

 rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

Kopieren Sie anschließend unser Passwort in die Zwischenablage und fügen Sie es ein:

 StringSelection stringSelection2 = new StringSelection(Password); Clipboard clpbrd2 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd2.setContents(stringSelection2, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

Hurra !!! Wir haben das Zeichenauswahlmenü aufgerufen. Jetzt müssen Sie die Spielwelt betreten.

3) Betreten Sie die Spielwelt


Jetzt sehen wir das Zeichenauswahlmenü auf dem Bildschirm. Wir werden uns wahrscheinlich nicht wirklich darum kümmern und zum ersten Charakter gehen, der auftaucht.

Um einzutreten, können wir zwei verschiedene Optionen verwenden:

- Bewegen Sie den Mauszeiger auf die Schaltfläche "Anmelden" und simulieren Sie einen Klick.
- Simulieren Sie das Drücken der Eingabetaste.

Die zweite Option ist einfacher, aber wenn wir den Klick unmittelbar nach der Eingabefunktion hinzufügen, tritt erneut ein Problem auf. Daher werden wir erneut pausieren, damit das Spiel ruhig zum Charakterauswahlmenü wechseln kann:

 Thread.sleep(5000); rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); 

Ich bin 5 sek. fehlt mit einem Kopf.

Oh Wunder, das Laden der Spielwelt hat begonnen!

4) Öffnen Sie die Mailbox


Hier müssen wir noch einmal pausieren, damit WoW Zeit hat, die Spielwelt zu laden. Es ist auch ratsam, den Charakter vorzubereiten:

- Maximieren Sie die Kamera;
- Werden Sie eine Stirn in Ihrem Posteingang;

Um ein Postfach zu öffnen, müssen Sie es mit der rechten Maustaste rufen. Dazu bewegen wir den Mauszeiger und simulieren einen Klick:

 Thread.sleep(30000); rb.mouseMove(700, 350); rb.mousePress(InputEvent.BUTTON3_MASK); rb.mouseRelease(InputEvent.BUTTON3_MASK); 

Beachten Sie, dass die von mir angegebene Mausposition für eine Bildschirmauflösung von 1366 x 768 ausgelegt ist.
BUTTON3 ist genau die rechte Maustaste.

Wir haben die Mailbox geöffnet und gehen jetzt zur Registerkarte "Senden":

 rb.mouseMove(200, 550); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK); 

Hier haben wir nicht nur die Mausbewegung auf dem Bildschirm nachgeahmt, sondern auch mit der linken Maustaste geklickt.

Jetzt ist es an der Zeit, eine E-Mail auszufüllen und zu senden!

5) Bilden Sie einen Brief und senden Sie ihn an einen anderen Spieler


Jetzt müssen wir die Punkte ausfüllen:

- Name des Empfängers;
- Betreff der Nachricht;
- Der Text der Nachricht;

 String Name="Name"; String Theme="Theme"; String Text="Text"; 

Fügen Sie zunächst den Namen des Zeichens in die Zwischenablage ein und fügen Sie ihn in die entsprechende Spalte ein:

 StringSelection stringSelection3 = new StringSelection(Name); Clipboard clpbrd3 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd3.setContents(stringSelection3, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

Wir haben den Empfängernamen eingefügt und in eine andere Spalte gewechselt. Jetzt müssen Sie den Betreff der Nachricht einfügen:

 StringSelection stringSelection4 = new StringSelection(Theme); Clipboard clpbrd4 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd4.setContents(stringSelection4, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

Wir haben den Betreff der Nachricht eingefügt und in die dritte Spalte gewechselt - Nachrichtentext:

 StringSelection stringSelection5 = new StringSelection(Text); Clipboard clpbrd5 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd5.setContents(stringSelection5, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

Nachrichtentext einfügen. Jetzt müssen Sie nur noch auf die Schaltfläche "Senden" klicken:

 rb.mouseMove(200, 520); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK); 

Bewegen Sie den Cursor und klicken Sie mit der linken Maustaste auf "Senden".

Das ist alles Ich hoffe es war zumindest jemandem nützlich. Ich hoffe auch sehr, dass dieser Artikel nicht als Leitfaden für Maßnahmen akzeptiert wurde und nicht zu einer Erhöhung der Spam-Menge im Spiel führt.

Source: https://habr.com/ru/post/de434218/


All Articles