Hallo Allerseits
Erst einmal ein paar Informationen zum Problem:
Ich schreibe im Moment einen Bot für ein Spiel. Ich erwarte später von diesem Bot, dass er einer mir mir festgelegten Route folgt und versucht, alle Rohstoffkisten auf dem Weg einzusammeln.
Grundsätzlich soll die Routine dann so aussehen (erstmal nur Pseudocode):
Viele Informationen, wie Koordinaten oder ID dieser Kisten werden mir vom Gameserver gesendet, sobald ich meine Spielfigur in die Sichtweite der Rohstoffkisten bewege. Er verhält sich auch bei Angriffen so: Wenn ich angegriffen werde, meldet der Gameserver es. Befehle, wie Bewegungen oder Angriffe sende ich über einen Socket an den Server.
Nun zum eigentlichen Problem:
Im Moment würde ich es mithilfe von XSocket realisieren. Damit würde ich dann mit der Funktion readStringByDelimiter() in einem eigenen Handler die jeweiligen Befehle des Servers lesen und parallel dazu die oben gezeigte Schleife laufen lassen. Dabei ist es für mich gerade nur problematisch, dass meine Spielfigur während der Bewegung zu Koordinate X oder während des Aufnahme der Kiste beispielsweise angegriffen werden könnte, auf dem Weg zur Koordinate X bereits neue Kisten auftauchen, die auch aufgesammelt werden können oder die Routine wegen etwas anderem unterbrochen und möglicherweise dort wieder fortgeführt werden muss.
Hätte jemand ein paar Ansätze dazu? Ich wäre dankbar.
Mit freundlichen Grüßen,
th3flood
Erst einmal ein paar Informationen zum Problem:
Ich schreibe im Moment einen Bot für ein Spiel. Ich erwarte später von diesem Bot, dass er einer mir mir festgelegten Route folgt und versucht, alle Rohstoffkisten auf dem Weg einzusammeln.
Grundsätzlich soll die Routine dann so aussehen (erstmal nur Pseudocode):
Code:
Wenn eingeloggt und wenn nicht getötet:
Route berechnen
Für jeden Wegpunkt auf Route:
Bewege zu nächstem Wegpunkt
Wenn neue Rohstoffkisten in Reichweite:
Bis keine neuen Rohstoffkisten mehr vorhanden:
Bewege zu nächster Rohstoffkiste
Nehme Rohstoffkiste auf
Wenn Erfolg:
Gib aus, was und wieviel gesammelt wurde
kisten_gesammelt ++
Wenn kein Erfolg:
Gib aus, dass Kiste nicht gesammelt werden konnte
Viele Informationen, wie Koordinaten oder ID dieser Kisten werden mir vom Gameserver gesendet, sobald ich meine Spielfigur in die Sichtweite der Rohstoffkisten bewege. Er verhält sich auch bei Angriffen so: Wenn ich angegriffen werde, meldet der Gameserver es. Befehle, wie Bewegungen oder Angriffe sende ich über einen Socket an den Server.
Nun zum eigentlichen Problem:
Im Moment würde ich es mithilfe von XSocket realisieren. Damit würde ich dann mit der Funktion readStringByDelimiter() in einem eigenen Handler die jeweiligen Befehle des Servers lesen und parallel dazu die oben gezeigte Schleife laufen lassen. Dabei ist es für mich gerade nur problematisch, dass meine Spielfigur während der Bewegung zu Koordinate X oder während des Aufnahme der Kiste beispielsweise angegriffen werden könnte, auf dem Weg zur Koordinate X bereits neue Kisten auftauchen, die auch aufgesammelt werden können oder die Routine wegen etwas anderem unterbrochen und möglicherweise dort wieder fortgeführt werden muss.
Hätte jemand ein paar Ansätze dazu? Ich wäre dankbar.
Mit freundlichen Grüßen,
th3flood