Ich habe keine bessere Überschrift gefunden, also habe ich diese genommen.
Das Tutorial soll jedoch nicht erklären, wie ihr euch genau einen Bot schreibt, sondern eher wie einer funktioniert.
Aber glaubt mir, solltet ihr einen Bot schreiben wollen, werdet ihr unweigerlich auf diesen Beitrag stoßen.
Zunächst müssen wir uns fragen, was denn so ein Bot überhaupt macht.
Grundsätzlich erledigt er für uns lästige Dinge um uns bspw. Rohstoffe zu sammeln.
Das heißt, wir müssen jetzt herausfinden, wie der Client mit dem Server kommuniziert und welche "Packets" sich diese zusenden.
Dazu verwende ich mein eigenes Programm, ihr könnt aber auch "WPE Pro" nehmen. Einfach googlen.
Sagen wir, wir fliegen gerade mit unserem Schiff durch die Gegend.
Jetzt sehen wir neben uns eine Bonus Box.
D.h. der Client sendet dem Server seine aktuelle Position.
Der Server sagt dann: "Nenene, stop, du bist gerade in der nähe einer Bonus Box.", und sendet die Informationen der Bonus Box wie ID, Position und Inhalt zu.
Der Client erstellt diese dann und "zeichnet" sie auf den Bildschirm.
Genau dieses Packet müssen wir jetzt abfangen.
Dazu erstellen wir in der Programmiersprache unseres Vertrauens einen "TCPClient" (auch googlen) und verbinden zum Darkorbit Server.
Die aktuelle IP und der aktuelle Port lautet 62.146.191.117 und 8080.
Das Login Packet sieht so aus:
Code:
LOGIN|USERID|SESSIONID|CLIENTVERSION
Code:
LOGIN|120301|123919dkdfkalksdj1j381|3.0.5
Als Beweis, das wir auch wirklich ein Mensch sind, und kein Bot senden wird gleich danach das Packet "PNG", was für "Ping" steht.
Also sieht das bis jetzt so aus:
Code:
LOGIN|120301|123919dkdfkalksdj1j381|3.0.5 PNG
Als Antwort bekommen wir jetzt vom Server ein großes Packet, in dem alles steht, was wir zu beginn brauchen.
Das sieht bspw. so aus:
Code:
0|TX|S|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
0|A|SET|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|3|3|1|1|0|0|1|0|1|1
0|7|WINDOW_SETTINGS,3|0,36,24,1,1,275,21,1,3,1020,520,1,5,90,74,0,10,999,336,1,36,100,400,0,13,269,116,0,20,7,544,1,23,1060,131,1,24,541,21,0
0|7|AUTO_START|0
0|7|SIMPLE_SHIPS|0
0|7|WINDOW_SETTINGS,4|0,424,11,1,1,674,5,1,15,944,0,0,3,1020,700,1,5,10,10,0,24,457,187,0,10,1050,509,1,20,26,712,1,13,315,212,0,23,1059,200,1
0|7|BAR_STATUS|34,0,35,0,23,0,24,0,25,1,26,0,27,0
0|7|DISPLAY_WINDOW_BACKGROUND|1
0|7|SHOW_DRONES|1
0|7|PRELOAD_USER_SHIPS|0
0|7|SLOTMENU_POSITION,3|478,593
0|7|AUTO_REFINEMENT|1
0|7|SLOTMENU_POSITION,4|499,772
0|7|MINIMAP_SCALE,1|10
0|7|SLOTMENU_POSITION,1|312,451
0|7|WINDOW_SETTINGS,1|0,27,12,1,1,250,12,1,24,562,7,0,3,768,380,1,5,5,5,0,10,766,260,1,20,10,395,1,13,187,50,0,23,500,9,1
0|7|DISPLAY_ENGINE_WASTE|1
0|7|CLIENT_RESOLUTION|4,1280,900
0|7|MAINMENU_POSITION,4|536,801
0|7|QUICKBAR_SLOT|3,4,5,6,7,39,11,12,13,57
0|7|MAINMENU_POSITION,1|349,480
0|7|MAINMENU_POSITION,3|514,623
0|7|DOUBLECLICK_ATTACK|1
0|7|ALWAYS_DRAGGABLE_WINDOWS|1
0|7|QUICKSLOT_STOP_ATTACK|1
0|I|USERID|USERNAME|9|273|24480|24480|137732|128000|1200|1200|473|450|1|1|11869|18000|900|3|1|652380|3410|8|1140630|7402|54.25|6|FoS|0|0|0
0|A|CC|2
0|B|673|254|118|1|3384|0
0|3|60|0|417|0|0|0|0|10|0|0|0|0|0|0
0|RL|S|1|9|0
0|RL|R|0|0|155
0|3|60|0|417|0|0|0|0|10|0|0|0|0|0|0
0|TX|S|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0
0|A|ITM|0|1|0|0|2|0|0|0|0|0|0|0|0|0|0|0
0|E|0|0|0|4|0|0|0|0|0
0|m|1|21000|13500
0|s|0|1|Vice Station|1|1500|1000|1000
0|p|1|1|0|18500|11500
0|n|ctb|m|0
0|n|INV|70857960|0
0|S|CFG|1
0|n|w|0
0|g|a|b,1000,1,10000.0,C,2,475.0,U,3,950.0,U,5,950.0,U|r,100,1,10000,C,2,50000,C,3,475.0,U,4,665.0,U
0|9|ini|{case:107,0,1,0,1{cond:372,6,6,14,40,1,1,1}}
0|9|p|107
0|9|ini|{case:200,0,1,0,1{case:201,1,1,1{cond:577,23,0,0,0,1,1,3059,20000,1,1,1}{cond:688,6,1,0,1,0,1,1{subs{cond:689,19,13,0,0,0,1,1}}}}{cond:575,1,21779975,0,1,0,1}}
0|A|BS|0/0/0/0/0/0/0/0/0/0
0|A|FWX|INL|-1
0|A|SET|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|3|3|1|1|0|0|1|0|1|1
0|D|473|450|1|0|0|0|0|0|473|450
0|PET|I|0|0|0
0|A|v|273
0|8
0|K|103500251
0|K|103500266
Zum Beispiel UserID, Username, Hitpoints, Shield und den Cargoinhalt.
Aber jetzt zum eigentlichen Bot.
Dieser soll ja für uns rumfliegen, das heißt er muss irgendwie dem Server mitteilen, das er sich bewegen will.
Das geht wie folgend:
Code:
0|1|PosX|PosY
Code:
0|1|10319|12391
Die Kommastellen sind eigentlich unwichtig.
Erst beim sammeln von Rohstoffen etc. werden sie relevant.
Sobald unser Schiff an der Position angekommen ist, erhalten wir ein weiteres Packet:
Code:
0|D|PosX|PosY
Code:
0|D|10319|12391
Das finden wir heraus, indem wir überprüfen, ob der Server dem Client die Anweisung gibt, ein Item zu erstellen.
Das wäre das Packet dafür:
Code:
0|c|ItemID|PosX|PosY|Content
Code:
0|c|13|11220|12000|500
(Nein, man kann keine Packets an sich selbst senden und den Inhalt verändern).
Dann lassen wir den Client das Item wie folgt aufsammeln:
Code:
0|C|13|11220|12000
Vergleicht einfach die Werte mit denen, von eurem Schiff etc. und schon findet ihr heraus, welche Werte zu welchen gehören.
Ich hoffe das hat euch etwas geholfen.
Und das war nur ein sehr kleiner Einblick in den "Arbeitstag eines Bots".
MfG, Cencel.