Hilfe bei kleinem Klickbot

03/29/2013 12:28 bass-tii#1
Hallo,
Ich versuche mich gerade daran, einen simplen Klickbot für Grepolis zu programmieren.
Der einfach immer einen Button drückt und dann die entsprechende Zeit wartet
vorerst immer 5 min.
Wenn die Zeit abgelaufen ist ändert sich der Button zum bestätigen, leider nur der Text...

Bisher sieht mein Werk so aus
Code:
$time = 1000
while 1
   
MouseMove(960, 659)
Sleep($time)
 If PixelGetColor (960, 659)== 0x0E1A29 Then
MouseClick("left")
 
		 MouseMove(1175, 786)
		While PixelGetColor ( 1175, 786)=0x070D15 
		   
		 WEnd			
			MouseClick("left")
			Sleep($time)
			
Else
    MsgBox(0,"","Button nicht gefunden!")
 EndIf
 sleep ($time)
 WEnd
Es funktioniert leider nicht viel, er fährt zwar mit der Maus über den Button, bestätigt aber nicht die Farbe die er von Pixelgetcolor erhält und springt somit ins Button nicht gefunden Fenster
03/29/2013 12:36 BladeTiger12#2
Du kannst auch einfach bei MouseClick die
koordinaten einfügen wenn du die schon hast:
Code:
MouseClick("left",1175,786,1)
Dann brauchst du MouseMove nicht mehr.

Komplett:

Und versuch mal die Übersicht mit den Platz zu machen.
Oder drück einfach STRG+T zu drücken für die Übersicht :).

Die 2 Schleife in deiner Haupt-Schleife ist eigentlich wie eine If Abfrage.
Dein MouseClick wird nur nicht durchgeführ weil du die 2 Schleife in
deiner Haupt-Schleife gepackt hast und wartet bis die 2 Schleife abgebrochen wird.

Und welchen Koordinaten erhaltet dein MouseMove?
Das hat nur standart koordinaten.
03/29/2013 12:41 bass-tii#3
Ja okay, dass sind Feinheiten die mir noch nicht geläufig sind, bin absoluter anfänger und hab mich 2 stunden nun eingelesen..

die Frage ist nur, wieso es gar nicht funktioniert.
Die ganze sache wäre auch sicher schöner mit Imgsearch
03/29/2013 12:44 BladeTiger12#4
Wie ich sagte:

Die 2 Schleife in deiner Haupt-Schleife ist eigentlich wie eine If Abfrage.
Dein MouseClick wird nur nicht durchgeführt weil du die 2 Schleife in
deiner Haupt-Schleife gepackt hast.
Deswegen wartet die Haupt-Schleife bis die 2 Schleife abgebrochen wird.
Vorher läuft unten drunter nichts weiter da dein Programm in dieser
Schleife gefangen ist.(Wenn man es so sagen kann)

Wenn du noch mehr hilfe brauchst, und hast Skype kannst mich ja adden: MrBladeTiger12
03/29/2013 12:51 bass-tii#5
Ich weiß nun nicht ob wir anneinander vorbei reden oder so.
Aber die erste If Abfrage hat ja eine Else
und er soringt IMMER in die Else.
Somit müsste die 2 schleife noch gar keine relevanz haben.

Und ich habe mich für die 2. schleife entschieden, dass er solange dort verweilt bis sich der Status ändert des Buttons.
Denn mit dem ersten Mausklick ändert sich das Dialog fenster und somit wäre die erste IF abfrage nach Erfolgreichem klicken erst nach 5 min wieder erfüllt. Deshalb will ich in der ersten IF schleife warten
03/29/2013 12:59 BladeTiger12#6
Schon, aber die 2 Schleife wird ja nie unterbrochen.
Die 2 While-Schleife läuft durch und durch.
Keine Ahnung was du vorher für eine Sprache genutzt hast.
Aber bei Autoit musst du die 2 Schleife abbrechen lassen damit
die andere weiter läuft. Sonst geht alles unter dieser While-Schleife
nicht.
Kannst du ja auch selber Testen in dem eine While machst:
Code:
While True
Sleep(100)
WEnd
MsgBox(64 , "Test" , "Test")
Du wirst diese MessageBox nicht erhalten.
Aber so:
Code:
$timer = TimerInit()
While True
	Sleep(100)
	If TimerDiff($timer) >= 3000 Then
		ExitLoop
	EndIf
WEnd
MsgBox(64 , "Test" , "Test")
03/29/2013 13:05 bass-tii#7
Hmm ich denke ich poste mal einfach die 2 Bilder dann kannst du dir besser vorstellen was ich vorhabe... oder mir beim programmieren helfen :)
einen moment
03/29/2013 13:14 BladeTiger12#8
Hmm.. ImageSearch würde ich da auch nicht nutzen.
Ich würde mir da WinHTTP oder WinTCP anschauen.
Die sind da ganz nützlich.
Da es ein Browsergame ist.
Da würde ich aufjeden fall nicht mit MouseClick/Move arbeiten
weil wenn du das Fenster nur ein Stück bewegst könnte es
zu problemen kommen.
Aber hier dein Script so müsste es gehen:
Code:
$time = 1000
while 1
   
MouseMove(960, 659)
Sleep($time)
 If PixelGetColor (960, 659)== 0x0E1A29 Then
MouseClick("left")
 
		 MouseMove(1175, 786)
		If PixelGetColor ( 1175, 786)=0x070D15 
		   
		 EndIf
			MouseClick("left")
			Sleep($time)
			
Else
    MsgBox(0,"","Button nicht gefunden!")
 EndIf
 sleep ($time)
 WEnd
Einfach nur die 2 While Schleife: While PixelGetColor... ersetzen mit If.
03/29/2013 13:16 bass-tii#9
Ja mit regexp und so habe ich auch schon gearbeitet.... leider ist der HTML code ziemlich "verstrickt" für mich zumindest und ich denke ich werde da nicht weiter kommen...

Okay vielen dank ich werde es mir mal ansehen

EDIT: brauch man nun 2 == oder nur eins bei vergleich auf GLeich
03/29/2013 13:25 BladeTiger12#10
Bei Autoit reicht eins aus.
03/29/2013 13:30 bass-tii#11
geht leider immer noch nicht
in AutoIT steht diese fehlermeldung
If PixelGetColor (996, 672 = 0x060B12 Then
If PixelGetColor (996, 672 = 0x060B12 ^ ERROR

EDIT...
Okay den Fehler habe ich selbst gefunden klammer vergesessen
ABER er findet den Button immernoch nicht..
da scheint wohl was mit der HEx codierung nicht zu passen oder so, kann dass sein?
Ich kenne es nur aus meiner Programmiersprache, dass er vlt ein Int wert verlangt oder so?
03/29/2013 19:20 qkuh#12
Öhm. Versuch mal
If PixelGetColor (996, 672) = Dec("060B12") Then
{...}
End If
07/15/2014 16:54 Dragoongalaxy#13
hallo zusammen ich spiele schn sehr lange grepolis will gerne gold betrag ändern es gibts zwar hack tools zum downloaden aber bei jeden muss mann eine umfrage teilnehmen dass ist schlecht kann mann mit dem autoit ein scrip erstellen mit dem mann denn gold betrag verändern kann zb 600 auf 1500 wenn ja könnt ihr mir ein fertiges scrip schicken dasswere nett danke voraus jedes mal geld bezahlen kann ich auch nicht fürs gold
07/17/2014 03:16 Moneypulation#14
Quote:
Originally Posted by Dragoongalaxy View Post
hallo zusammen ich spiele schn sehr lange grepolis will gerne gold betrag ändern es gibts zwar hack tools zum downloaden aber bei jeden muss mann eine umfrage teilnehmen dass ist schlecht kann mann mit dem autoit ein scrip erstellen mit dem mann denn gold betrag verändern kann zb 600 auf 1500 wenn ja könnt ihr mir ein fertiges scrip schicken dasswere nett danke voraus jedes mal geld bezahlen kann ich auch nicht fürs gold
Das mit den Umfragen ist nur dafür da damit der Ersteller Geld verdient. Und so wie es sich anhört ist das nur ne Verarsche. Man kann bei großen Browserspielen nicht so einfach die Ingamewährung ändern, jedenfalls nicht mit AutoIt :p
07/17/2014 13:04 alpines#15
moneypulation hats schon angesprochen. Das sind Dummy-Dateien die die Größe eines Bots haben um Downloads zu generieren, aber letzendlich ist in dem Archiv nichts drinne was drinne sein sollte.

Mit AutoIt kannst du schon von Browsergames deinen Geldbetrag ändern, allerdings besteht das Problem das Grepolis die Werte serverseitig speichert und du den Hack nur clientsided nutzen kannst. Dein Geldbetrag wäre eventuell höher aber solltest du etwas bauen wollen wozu dein ursprünglicher Geldbetrag nicht gereicht hat, wird dein Hack da nichts ändern können.

Anders sieht es bei Singleplayer Spielen aus wie z.B. Age of War, dort kannst du den Betrag manipulieren und er wird immer übernommen.