Quote:
Originally Posted by Viron
Der Bot ist in Java programmiert und basiert auf der Klasse "robot".
Diese Klasse führt ganz einfach Mausklicks aus. Das ganze ist natürlich sicherer, da der Bot nicht ins Spiel eingreift, allerdings hat es auch den Nachteil, dass man nebenher nichts anderes machen kann.
|
Punkte zum Thema "kann nebenbei nichts anderes machen".
+ MouseClicks per Controllsend direkt an das Handle des Spiels, damit bleibt die normale Maus unangetastet.
+ Genauso weitere Tastatur eingaben, alles per Controllsend an das Handle, den dann kann man nebenbei machen was man will, der Bot läuft wirklich "paralell".
+ Robot ist im speziellen nicht dafür gedacht solche Controllsends zu machen // wenn du aber über JNI/JNA die Windows API benutzt kannst du das alles machen, was eben auch in AutoIT (AutoHotkey) funktioniert (und gerade in diesem Aspekt des "kann nebenbei nichts anderes machen" viel hilft).
Screenshots machen finde ich eine schöne sache, was man damit gleich machen kann ist das weiter zu nutzen.
Natürlich kann man den Goldwert einfach auslesen, aber vielleicht nur aus "Spaß" kann man auch einen Schrifterkennungsprozes benutzen um daraus die Goldmenge auszulesen, die man dann sogar per SMS verschicken kann, oder per Tweet (ganz witzig sowas, einfach das man es mal gemacht hat).
*Ist eben schon eine Herausforderung auf Memory Read/write zu verzichten, den damit geht vieles weitaus schneller und einfacher.
Vorrausgesetzt du willst mehr zeit investieren und einfach mal viele bereiche abklappern wie und was man alles mit einem bot machen kann (gerade in java ist das noch mal ne Ecke "spezieller" als in C/C++), kann man sich den Programmcode gleich Modular aufbauen, das man wirklich austauschbare teile hat für GUI / Launcher / BotControll / Extras (wie Screenshots etc.), damit kann man dann verschiedenste Konzepte testen ohne das gleich alles von allem Abhängig ist.
Sehr schön um Fehler zu vermeiden ist auch gleich ein Test-Driven Konzept zu verwenden, das geht bei bots sehr gut und erspart viel viel VIELE Stunden Bugsuche (den hat man mal tiefgreifende Bugs die nicht ständig auftreten, findet man die einfach niemals).
Ebenfalls schön für "gut mal gemacht zu haben" einen Kalender, TimeTable.
Da kann man dann Zeiten einstellen wann der Bot etwas tun soll, ob er automatisch ausgehen soll zu einer Zeit, nur 1 Stunde laufen soll, usw. usw.
Das wird besonders interessant wenn die BotControll mehrere Bots unterhält und koordiniert, die nicht nur normale Runs ausführen, sondern auch ab und zu das AH "abchecken", andere Routinen laufen lassen zum Verkaufen von Items oder automatisch "neue" Accounts hochleveln sollen.
Das klingt alles erstmal extrem viel und ist auch einfach "viel zu viel" zum einfach mal nebenbei machen, aber ich spreche aus eigener Erfahrung (und ich habe meine Bots auch in java laufen) man kann wirklich sehr sehr viele Gimmicks einbauen die einem wirklich den "Edge" geben gegen die anderen Bots die unterwegs sind.
Anstelle von hardcoded Abläufen ist es auch sinnvoll diese in xml / jason als Profile abzuspeichern, einfach damit man sie einfacher verarbeiten kann (austauschen, löschen, multiplizieren). Gerade mit einem zeitplan kommen diese Profile richtig zur geltung, da man genau sagen kann wie lange ein Profil dauert, wann es ausgeführt werden soll und auch mehrere Bots die gleichen Profile ausführen können (oder unterschiedliche, auf basis des gleichen Codes).
Kurz gesagt:
+ Nutzung der Windows API für Controllsend, bessere kontrolle über alles auf betriebssystem Ebene (Window des Spiels, Prozesse usw.).
+ Einstellbare Profile
+ TimeTable Option (24h/7d ist nicht sehr sinnvoll)
+ Multi-Account / Multi-Process (benötigt eine BotControll die als Hub dient für weitere Bot Prozesse)
Empfehlung:
Eine schöne Bibliothek für D3 (wenn du Memory Read/Writes nutzen willst) ist D3Advanced.
Die kannst du mit JNI/JNA (ich mag JNA mehr, ist einfach schöner zu benutzen) relativ unproblematisch verwenden und bietet effektiv alles was man braucht (kann man auch selbst machen, aber das ist wirklich sehr viel arbeit so eine Bibliothek zu machen).
Viel spaß dabei ^^