hBot2 - Advanced (Clientless) Metin2 Botting System

05/26/2013 20:10 .Meep#106
wenn der bot auf euren servern läuft wie kann man dann darauf zugreifen oder ist es wie im video das in der console nur die befehle aufgelistet werden?
Denke mal nicht also wie greift man drauf zu^^
05/26/2013 21:12 [uLow]TheCraftingMan#107
Quote:
Originally Posted by UnkrautLP View Post
Hey, könnt ihr mir vill. erklären wie dieses "Angelscript" Funktioniert? Ich würde gerne selber ein Bot machen und das auf ein Server bringen aber ich bin da eher ein "Noobi"


Leute... noch etwas bitte beleidigt nicht oderso jeder hat Klein angefangen seit nicht so streng zu mir :( will ja auch Nett sein.

PS: Danke :P
Angelscript ist lediglich eine Art zusatzsprache für C++. Damit lässt sich alleine wenig anfangen.

BTW: Es wäre mal ganz cool zu sehen wie das Interface vom bot so aussieht.
05/26/2013 21:18 UnkrautLP#108
Kann mir das jemand erklären dieses angelscirpt und dafür brauch ich doch visual basic 2012 oder ich habe das jetzt auch
05/27/2013 06:07 TyFox#109
Quote:
Originally Posted by UnkrautLP View Post
Kann mir das jemand erklären dieses angelscirpt und dafür brauch ich doch visual basic 2012 oder ich habe das jetzt auch
Zu Angelscript gibts ne recht gute Dokumentation, für die wichtigen Bot Funktionen gibt es dann später noch was!

Kleiner Statusupdate: Wir sind am arbeiten!
[Only registered and activated users can see links. Click Here To Register...]
05/27/2013 14:58 Ðεadhαwk™#110
Wie lange nehmt ihr eigentlich noch Vorbestellungen an, damit ich weiß, bis wann ich mich entscheiden muss, oder ist schon abgelaufen ?
05/27/2013 15:19 nico_w#111
Quote:
Originally Posted by TyFox View Post
:p

Wir versuchen jetzt auf jeden Fall, den Bot zu Anfang des nächsten Monats lauffähig zu bekommen.
Was soweit problemlos funktioniert:
  • Login
  • Charakter-Auswahl
  • Scriptinterface (Bot-Scripts)
  • Multithreading (mehrere Instanzen in einem Prozess)
  • Laden von Map-Infos
  • Einträge aus der Item/Mob-Proto lesen

Was in Arbeit ist:
  • User-CP
  • Webseite
  • HackShield Emulator
  • Standard-Botscripts (Levelbot, Angelbot, Farmbot)

Der HackShield Emulator ist derzeit in Arbeit, dürfte nicht mehr allzulange dauern (ist halt ne Menge Reversing-Arbeit).
Alles andere ist recht trivial und schnell erledigt :)

Mal eine kleine Übersicht an (momentanen) Funktionen für die Bot-Scripts:
Code:
// BASISFUNKTIONEN
void DEVLOG(string t); // DEVLOG-Message (Ausgabe in Log-Datei erfolgt nur, wenn der Devmode auf true ist)
void SYSLOG(string t); // SYSLOG-Message
void SYSERR(string t); // SYSERR-Message
string addr_to_string(uint addr); // Konvertiert eine uint IP-Adresse zu einem String
uint string_to_addr(string addr); // Konvertiert eine als String vorliegende IP-Adresse zu einer vom Bot verwertbaren IP-Adresse
uint rand(); // Generiert eine Zufallszahl
uint (uint min, uint max); // Generiert eine Zufallszahl zwischen min und max

// OBJEKTE

simple_player; // Eine Spieler-Instanz
// Funktionen für simple_player:
string get_name(); // Returned den Spielernamen als String
// Properties für simple_player
uint id; // VID des Spielers
uint8 race; // Klasse des Spielers (Krieger, Ninja etc.)
uint8 level; // Selbsterklärend..
uint gametime; // Spielzeit
uint8 strength; // STR-Wert des Spielers
uint8 vitality; // VIT-Wert des Spielers
uint8 dexterity; // DEX-Wert des Spielers
uint8 intelligence; // INT-Wert des Spielers
uint armor; // VNum der getragenen Rüstung
uint hair; // VNum der Haare
int x; // X-Position (global)
int y; // Y-Position (global)
uint addr; // IP-Adresse, auf welcher der Spieler connected ist
uint16 port; // Port
uint8 skillgroup; // Skillgroup (Körper-/Mentalkrieger; Magie-/Waffensura etc.)

// ----------------

// Klasse: config
config;

// Methoden für config
string get_string(string key, string def = ""); // Holt einen String-Wert aus der Config
uint get_int(string key, uint def = 0); // Holt einen Integer-Wert aus der Config
float get_float(string key, float def = 0.0f); // Holt einen Float-Wert aus der Config
bool get_bool(string key, bool def = false); // Holt einen Boolean-Wert aus der Config

// ----------------

// ENum: entity_type
entity_type;

// Werte
entity_none;
entity_player;
entity_mob;
entity_npc;
entity_building;
entity_object;
// (noch nicht vollständig!)

// ----------------

// Klasse: entity
entity;

// Methoden
entity_type get_type(); // Returned den Objekttyp
uint get_vid(); // Returned die VID des Objekts
int get_x(); // Returned die X-Koordinaten des Objekts
int get_y(); // Returned die Y-Koordinaten des Objekts
int get_z(); // Returned die Z-Koordinaten des Objekts
float get_angle(); // Returned den Blickwinkel des Objekts
uint16 get_race(); // Returned die Klasse des Objekts (idr. VNum)
uint get_moving_speed(); // Returned die Bewegungsgeschwindigkeit
uint get_attack_speed(); // Returned die Angriffsgeschwindigkeit
uint64 get_affect_flag(); // Returned die Affect-Flag für dieses Objekt (Effekte)
string get_name(); // Returned den Namen des Objekts als String
uint16 get_part(uint8 index); // Returned die VNum eines Ausrüstungsteils
uint8 get_empire(); // Returned die ID des Reiches
uint get_guild_id(); // Returned die Gilden-ID
uint get_level(); // Returned das Level
int16 get_alignment(); // Returned das Karma
uint8 get_pk_mode(); // Returned den PvP-Modus
uint get_mount_vnum(); // Returned das Mount, auf welchem sich das Objekt befindet

// ----------------

// Klasse: item
item;

// Methoden
uint get_vid(); // Returned die VID des Items
uint get_vnum(); // Returned die VNum des Items
int get_x(); // Returned die X-Koordinate des Items
int get_y(); // Returned die Y-Koordinate des Items
int get_z(); // Returned die Z-Koordinate des Items
uint get_owner(); // Returned die VID des Item-Besitzers

// ----------------

// Klasse: network_stream
network_stream;

// Methoden
bool is_connected(); // True wenn verbunden
void disconnect(); // Disconnected vom Server
bool connect(string ip, uint16 port); // Connected zu einem Server
void flush(); // Flushed den Networkstream
string get_ip(); // Returned die IP als String
uint16 get_port(); // Returned den Port

void send_select_character(uint8 idx); // Charakter-Auswahl Packet senden
void send_version(string filename, string timestamp); // Version-Packet senden
void send_chat(uint8 chat_type, string msg); // Chatnachricht senden
void send_create_character(uint8 idx, string name, uint16 job, uint8 shape, uint8 con, uint8 intr, uint8 str, uint8 dex); // Character-Create Packet senden
void send_delete_character(uint8 idx, string code); // Character-Delete Packet senden
void send_select_empire(uint8 empire); // Reich für neu erstellte Charaktere wählen
void send_move(int x, int y, uint8 rot, uint8 func, uint8 arg); // Zu x, y bewegen
void send_pick_up(uint vid); // Hebt ein Item auf
void send_attack(uint8 type, uint vid); // Sendet ein Attack-Packet
void send_on_click(uint vid); // "Klickt" einen NPC an
void send_hack(string text); // Hack-Packet senden (sinnlos :p)
void send_fishing(); // Angeln
void send_answer_make_guild(string name); // Gilde erstellen
void send_item_use(uint8 pos); // Verwendet Item

// Globale Funktionen
entity& find_entity(uint vid); // Erstellt ein Entity-Objekt von vid
entity& get_entity(uint index); // Erstellt ein Entity-Objekt von index
uint get_entity_count(); // Returned die Anzahl der Entities
item& find_item(uint vid); // Erstellt ein Item-Objekt von vid
item& get_item(uint index); // Erstellt ein Item-Objekt von index
uint get_item_count(); // Returned die Anzahl der Items
string item_proto_get(uint vnum, string field); // Holt einen Wert aus der Item-Proto
string mob_proto_get(uint vnum, string field); // Holt einen Wert aus der Mob-Proto
Die Liste ist noch nicht vollständig, aber wie ihr seht werden wir eine Menge Funktionen haben. Zu den Callbacks gibt's später auch noch mehr Infos.
Hier findet ihr eine Dokumentation zu AngelScript: [Only registered and activated users can see links. Click Here To Register...]

Ich hoffe ich konnte mal ein bisschen Licht ins Dunkle bringen :3

Quote:
Originally Posted by Ðεadhαwk™ View Post
Wie lange nehmt ihr eigentlich noch Vorbestellungen an, damit ich weiß, bis wann ich mich entscheiden muss, oder ist schon abgelaufen ?
Ca. bis Anfang nächsten Monats
05/27/2013 17:31 Zwawo#112
Sieht schonmal ziehmlich nice aus!
Die Pizza von nico_w kommt mir irgendwie sehr bekannt vor, vielleicht liegts aber auch nur daran, dass es eine Pizza ist...
Benutzt ihr eigentlich für die C++ Funktionen die Python Funktionen aus dem Client? Oder wie macht ihr das mit den ganzen Funktionen, weil der Bot ja Clientlos ist?
05/27/2013 21:34 nico_w#113
Quote:
Originally Posted by Zwawo View Post
Benutzt ihr eigentlich für die C++ Funktionen die Python Funktionen aus dem Client? Oder wie macht ihr das mit den ganzen Funktionen, weil der Bot ja Clientlos ist?
Wir haben die ganzen Funktionen des Clients komplett selbst nachgebaut, Python nutzen wir allerdings nirgendwo ;)
05/27/2013 21:55 Parace#114
key vorbestellt, wieder einmal alles ohne probleme verlaufen

man sieht sich :)
05/29/2013 16:18 Seenzu#115
Krass. Ich überlege mir es zu holen bei wem kann ich mich melden ?
05/30/2013 00:23 TyFox#116
Das mit den Keys regelt alles nico_w! Also eine PN an ihn ;)
05/30/2013 15:38 UnkrautLP#117
Quote:
Originally Posted by nico_w View Post
:p

Wir versuchen jetzt auf jeden Fall, den Bot zu Anfang des nächsten Monats lauffähig zu bekommen.
Was soweit problemlos funktioniert:
  • Login
  • Charakter-Auswahl
  • Scriptinterface (Bot-Scripts)
  • Multithreading (mehrere Instanzen in einem Prozess)
  • Laden von Map-Infos
  • Einträge aus der Item/Mob-Proto lesen

Was in Arbeit ist:
  • User-CP
  • Webseite
  • HackShield Emulator
  • Standard-Botscripts (Levelbot, Angelbot, Farmbot)

Der HackShield Emulator ist derzeit in Arbeit, dürfte nicht mehr allzulange dauern (ist halt ne Menge Reversing-Arbeit).
Alles andere ist recht trivial und schnell erledigt :)

Mal eine kleine Übersicht an (momentanen) Funktionen für die Bot-Scripts:
Code:
// BASISFUNKTIONEN
void DEVLOG(string t); // DEVLOG-Message (Ausgabe in Log-Datei erfolgt nur, wenn der Devmode auf true ist)
void SYSLOG(string t); // SYSLOG-Message
void SYSERR(string t); // SYSERR-Message
string addr_to_string(uint addr); // Konvertiert eine uint IP-Adresse zu einem String
uint string_to_addr(string addr); // Konvertiert eine als String vorliegende IP-Adresse zu einer vom Bot verwertbaren IP-Adresse
uint rand(); // Generiert eine Zufallszahl
uint (uint min, uint max); // Generiert eine Zufallszahl zwischen min und max

// OBJEKTE

simple_player; // Eine Spieler-Instanz
// Funktionen für simple_player:
string get_name(); // Returned den Spielernamen als String
// Properties für simple_player
uint id; // VID des Spielers
uint8 race; // Klasse des Spielers (Krieger, Ninja etc.)
uint8 level; // Selbsterklärend..
uint gametime; // Spielzeit
uint8 strength; // STR-Wert des Spielers
uint8 vitality; // VIT-Wert des Spielers
uint8 dexterity; // DEX-Wert des Spielers
uint8 intelligence; // INT-Wert des Spielers
uint armor; // VNum der getragenen Rüstung
uint hair; // VNum der Haare
int x; // X-Position (global)
int y; // Y-Position (global)
uint addr; // IP-Adresse, auf welcher der Spieler connected ist
uint16 port; // Port
uint8 skillgroup; // Skillgroup (Körper-/Mentalkrieger; Magie-/Waffensura etc.)

// ----------------

// Klasse: config
config;

// Methoden für config
string get_string(string key, string def = ""); // Holt einen String-Wert aus der Config
uint get_int(string key, uint def = 0); // Holt einen Integer-Wert aus der Config
float get_float(string key, float def = 0.0f); // Holt einen Float-Wert aus der Config
bool get_bool(string key, bool def = false); // Holt einen Boolean-Wert aus der Config

// ----------------

// ENum: entity_type
entity_type;

// Werte
entity_none;
entity_player;
entity_mob;
entity_npc;
entity_building;
entity_object;
// (noch nicht vollständig!)

// ----------------

// Klasse: entity
entity;

// Methoden
entity_type get_type(); // Returned den Objekttyp
uint get_vid(); // Returned die VID des Objekts
int get_x(); // Returned die X-Koordinaten des Objekts
int get_y(); // Returned die Y-Koordinaten des Objekts
int get_z(); // Returned die Z-Koordinaten des Objekts
float get_angle(); // Returned den Blickwinkel des Objekts
uint16 get_race(); // Returned die Klasse des Objekts (idr. VNum)
uint get_moving_speed(); // Returned die Bewegungsgeschwindigkeit
uint get_attack_speed(); // Returned die Angriffsgeschwindigkeit
uint64 get_affect_flag(); // Returned die Affect-Flag für dieses Objekt (Effekte)
string get_name(); // Returned den Namen des Objekts als String
uint16 get_part(uint8 index); // Returned die VNum eines Ausrüstungsteils
uint8 get_empire(); // Returned die ID des Reiches
uint get_guild_id(); // Returned die Gilden-ID
uint get_level(); // Returned das Level
int16 get_alignment(); // Returned das Karma
uint8 get_pk_mode(); // Returned den PvP-Modus
uint get_mount_vnum(); // Returned das Mount, auf welchem sich das Objekt befindet

// ----------------

// Klasse: item
item;

// Methoden
uint get_vid(); // Returned die VID des Items
uint get_vnum(); // Returned die VNum des Items
int get_x(); // Returned die X-Koordinate des Items
int get_y(); // Returned die Y-Koordinate des Items
int get_z(); // Returned die Z-Koordinate des Items
uint get_owner(); // Returned die VID des Item-Besitzers

// ----------------

// Klasse: network_stream
network_stream;

// Methoden
bool is_connected(); // True wenn verbunden
void disconnect(); // Disconnected vom Server
bool connect(string ip, uint16 port); // Connected zu einem Server
void flush(); // Flushed den Networkstream
string get_ip(); // Returned die IP als String
uint16 get_port(); // Returned den Port

void send_select_character(uint8 idx); // Charakter-Auswahl Packet senden
void send_version(string filename, string timestamp); // Version-Packet senden
void send_chat(uint8 chat_type, string msg); // Chatnachricht senden
void send_create_character(uint8 idx, string name, uint16 job, uint8 shape, uint8 con, uint8 intr, uint8 str, uint8 dex); // Character-Create Packet senden
void send_delete_character(uint8 idx, string code); // Character-Delete Packet senden
void send_select_empire(uint8 empire); // Reich für neu erstellte Charaktere wählen
void send_move(int x, int y, uint8 rot, uint8 func, uint8 arg); // Zu x, y bewegen
void send_pick_up(uint vid); // Hebt ein Item auf
void send_attack(uint8 type, uint vid); // Sendet ein Attack-Packet
void send_on_click(uint vid); // "Klickt" einen NPC an
void send_hack(string text); // Hack-Packet senden (sinnlos :p)
void send_fishing(); // Angeln
void send_answer_make_guild(string name); // Gilde erstellen
void send_item_use(uint8 pos); // Verwendet Item

// Globale Funktionen
entity& find_entity(uint vid); // Erstellt ein Entity-Objekt von vid
entity& get_entity(uint index); // Erstellt ein Entity-Objekt von index
uint get_entity_count(); // Returned die Anzahl der Entities
item& find_item(uint vid); // Erstellt ein Item-Objekt von vid
item& get_item(uint index); // Erstellt ein Item-Objekt von index
uint get_item_count(); // Returned die Anzahl der Items
string item_proto_get(uint vnum, string field); // Holt einen Wert aus der Item-Proto
string mob_proto_get(uint vnum, string field); // Holt einen Wert aus der Mob-Proto
Die Liste ist noch nicht vollständig, aber wie ihr seht werden wir eine Menge Funktionen haben. Zu den Callbacks gibt's später auch noch mehr Infos.
Hier findet ihr eine Dokumentation zu AngelScript: [Only registered and activated users can see links. Click Here To Register...]

Ich hoffe ich konnte mal ein bisschen Licht ins Dunkle bringen :3



Ca. bis Anfang nächsten Monats
Aber das erklärt nicht wie man sowas macht :( würde auch gerne sowas können sogar das er nur mobs angreift oderso aber ich weiß nichtma wie man ein bot erstellt der potts oderso benutzt
05/30/2013 22:39 nico_w#118
- Liberty Reserve als Zahlungsmöglichkeit entfernt
- Amazon-Gutscheine als Zahlungsmöglichkeit hinzugefügt

Ab dem Wochenende gehen die Arbeiten am User-CP los, wahrscheinlich wird es sogar eine Android-Version geben mit welcher ihr auch euer Handy als Proxy verwenden könnt!
05/31/2013 00:41 TyFox#119
Quote:
Originally Posted by UnkrautLP View Post
Aber das erklärt nicht wie man sowas macht :( würde auch gerne sowas können sogar das er nur mobs angreift oderso aber ich weiß nichtma wie man ein bot erstellt der potts oderso benutzt
Du kannst dir später die Scripte die dabei sind anschauen und ändern wie du willst! Zusammen mit der AS Dokumentation und unserer auch noch dazu, sollte das dann gehen.
Ich werde auch, wenn es soweit ist einen extra Thread dafür öffnen!
05/31/2013 23:55 #Saiirex#120
Habt ihr schon ein ungefähren Plan wann es rauskommt?