advanced clientless metin2 botting system
EN:
<will follow soon>
DE:
Liebe Metin2-Spieler,
nach harter Arbeit, vielen durchgemachten Nächten, viel Pizza und vieeelen Dosen Monster ist es endlich soweit. und ich starten bald mit unserem Metin2-Bot in die Beta!
Kleine Anmerkung von mir - Bitte lesen!
Der hBot2 ermöglicht es euch, endlich ohne euren PC laufen lassen zu müssen zu botten. Er ist über ein übersichtliches Web-Interface ansteuerbar und benötigt von euch lediglich Scripts und Proxies (Socks4, später auch Socks5).Quote:
Ich weiß, dass sich die Entwicklung mittlerweile viel zu lang hinzieht. Mir ist bewusst, dass ihr nicht so lange warten wollt und wir geben unser Bestes, den Bot so schnell wie möglich zum Laufen zu bekommen. Wir haben jedoch eine Bitte an euch. Ihr werdet damit HeavyHacker und mir einen großen Gefallen tun. Bitte unterlasst in Zukunft Posts wie "Der wird doch eh nix" - "Der Bot wird nie fertig werden" - "Ich will mein Geld zurück, is eh nur fake". Ihr könnt euch nicht vorstellen, wieviel unserer privaten Freizeit wir in diesen Bot investieren. Ich (nico_w) arbeite dazu auch noch, was mir teilweise nicht all zu viel Zeit für den Bot lässt.
Wir sind kurz davor, den Bot zu starten, es fehlen quasi nur noch Kleinigkeiten aber bitte lasst uns die Zeit, die wir brauchen um euch einen guten Bot zu liefern! Ihr werdet sicherlich nicht enttäuscht werden, das verspreche ich euch! Nur zieht das ganze unsere Motivation immer ziemlich in den Keller, wenn wir sowas lesen...
Wir bieten einige Standardscripts (während der Beta: Level-Bot, Pickup-Bot) und ihr könnt dazu auch noch eure komplett eigenen Scripts erstellen!
Beachtet bitte, dass sich der Bot derzeit noch in der Entwicklung befindet und noch nicht für euch verfügbar ist! Jegliche Statusupdates werden wir hier posten!
Auch wenn der Bot noch nicht für die Öffentlichkeit zugänglich ist, hier mal ein paar Informationen über den Bot (gelten noch nicht!):
- Wie kann ich den Bot benutzen?
Das ist ganz einfach - du brauchst als Erstes einen Account auf unserer Seite (). Nachdem du dir dort hCoins zugelegt hast, kannst du dir Botzeit und Slots kaufen.
Während der Beta wird das ganze günstiger sein, undzwar kostet ein Monat Botten mit 8 Slots nur 10€, nach der Beta wird dies 25€ kosten. Du sparst also 15€, das sind 150%.
Um den Bot zu starten loggst du dich ein, wählst für den Bot ein zu verwendendes Script aus und startest ihn einfach.
- Eigene Scripts erstellen? Was bringt mir das?
Mit eigenen Scripts bist du quasi in der Lage, dir einen komplett eigenen Bot zu erstellen. Du kannst als Vorlage gerne unsere Standardscripts verwenden. Eine Dokumentation zu allen Funktionen findest du weiter unten im Thread und bei uns im CP.
- Wozu muss ich einen Proxy benutzen?
Da der Bot bei uns auf dem Server läuft, müsst ihr einen Socks4-Proxy (später folgt auch noch Socks5) verwenden. Ganz einfach aus dem Grund, dass ansonsten alle User, die unseren Bot verwenden, dieselbe IP haben. Dass das nicht gut ist, kann sich jeder normal denkende Mensch schon denken .
- Wie lange dauert die Beta?
Das kommt ganz darauf an, wie lange wir brauchen, um den Bot perfekt zum Laufen zu bekommen.
Ihr könnt uns dabei unterstützen, indem ihr uns Bugreports an schickt und jegliche Fehler, die ihr bemerkt, an uns meldet.
- Wo kann ich botten? Geht der Bot auf den GF-Servern?
Du kannst momentan auf Metin2.SG, Metin2.PH und so ziemlich jedem PServer mit aktuellen Serverfiles botten.
Auf GF-Servern würde das Ganze theoretisch auch schon funktionieren, jedoch fehlt uns dazu leider noch ein vollständig funktionierender Hackshield-Emulator. Dieser ist in Arbeit und wird kurz vor Ende der Beta implementiert werden .
- Aber der Bot ist doch auffällig, oder?
Nunja.. der Bot ist so auffällig, wie ihr ihn macht. Unser Standard-Levelbot ist ziemlich auffällig, allerdings ist dieser auch am effektivsten.
Wir werden demnächst auch eine vollständige Liste zu allen Scriptfunktionen veröffentlichen.
Der Bot wird durch Scripts gesteuert, welche in der Sprache AngelScript geschrieben werden.
Von der Syntax her ist diese sehr an C angelehnt, hier mal ein Beispiel-Script:
Code:
string g_current_ip = ""; // temporäre server daten, sollten nur vom default script verwendet werden uint16 g_current_port = 0; // ^ string g_auth_ip = ""; // die ip vom auth server uint16 g_auth_port = 0; // der port vom auth server string g_char_ip = ""; // die ip vom char server uint16 g_char_port = 0; // der port vom char server string g_account = "accountname"; // genau so auch default user daten string g_password = "passwort"; // ^ uint g_auth_key = 0; // dient hinterher dem login uint g_selected_char = 0; // dient dazu mit dem richtigen char ingame zu kommen bool OnStartup() // diese funktion wird aufgerufen sobald der bot gestartet wird { g_current_ip = g_auth_ip; g_current_port = g_auth_port; net.connect(g_current_ip,g_current_port); // wenn es einen default server gibt, wird direkt drauf connected return true; } bool OnCleanup() // und diese funktion wird aufgerufen sobald der bot beendet wird { return true; } bool OnDisconnected() // wenn man einen kick oder einfachen disconnect hat landet man in der funktion hier, wenn die funktion false returned wird der bot beendet { net.connect(g_current_ip,g_current_port); // einen reconnect versuchen return true; // wenn eine invalide ip angegeben wurde soll der bot trotzdem weiter laufen, ja ziemlich dirty } [OnTick] // markiert die folgende funktion als callback (in dem fall für OnTick) void on_tick(uint client_time, uint server_time) // wird dauerhaft in der main loop aufgerufen, was also den eigentlichen botcode angeht, gehört das in einen OnTick callback { } [OnChangePhase] // markiert die folgende funktion als callback (in dem fall für OnChangePhase) void basic_change_phase(uint8 phase) // die funktion wird aufgerufen, wenn der server ein phase packet sendet { if(phase == 10) { // bei phase 10 muss man sich z.b. beim auth server anmelden net.send_auth(g_account,g_password); } else if(phase == 2) { // bei phase 2 muss man die antwort vom auth server an den char oder game server senden (auf den man in dem fall schon verbunden ist) net.send_login(g_account,g_auth_key); } } [OnLoginFailure] // markiert die folgende funktion als callback (in dem fall für OnLoginFailure) void basic_login_failure_log(string reason) // die funktion wird immer aufgerufen, wenn ein login fehlschlägt! { SYSERR(reason); } [OnAuthSuccess] // markiert die folgende funktion als callback (in dem fall für OnAuthSuccess) void basic_auth_success(uint auth_key) // diese funktion wird aufgerufen, wenn der login beim auth server erfolgreich war, danach connected man zum char server! { g_auth_key = auth_key; g_current_ip = g_char_ip; g_current_port = g_char_port; net.connect(g_current_ip,g_current_port); } [OnLoginSuccess] // markiert die folgende funktion als callback (in dem fall für OnLoginSuccess) void basuc_login_success(simple_player p1, simple_player p2, simple_player p3, simple_player p4) { if(g_selected_char == 0) { g_current_ip = p1.addr(); g_current_port = p1.port(); g_selected_char = 1; SYSLOG("Connect: " + g_current_ip + ":" + g_current_port); net.connect(g_current_ip,g_current_port); } else { net.send_select_character(g_selected_char-1); } } [OnChangeEmpire] void test_change_empire(uint8 empire) { SYSLOG("Empire changed to: " + empire); } [OnChatMessage] void receive_chat(uint32 type, uint32 empire, uint32 id, string msg) { SYSLOG("Received Chat: " + type + ", " + empire + ", " + id + ", " + msg); }
Changelog:
Code:
06.04.2013 - now: ongoing development!
Code:
Stability fixes Improving stuff Fix nullptr exception Fix and add several packets which are still missing Fully working control panel Fully working payment system Creating sample scripts
Code:
Fixing bugs which will occur during the beta Implementing the HackShield emulator [...] more to follow...