Demon Slayers Bot

08/14/2013 20:27 Rolle#16
würde nicht mit bmp's arbeiten, hatte schon mal das Problem das ich dann das Bild wonach ich gesucht habe nicht gefunden habe obwohl ich mir genau diese Bitmap Datei angeschaut habe =)

mit Png's funktioniert alles gut.

Grüße
08/14/2013 20:59 alpines#17
Das liegt daran, weil bmp komprimiert. PNG ist Lossless Kompirimierung, d.h. es wird so weit komprimiert bis man an die Grenze des Datenverlustes kommt. -> Keine Farbverfälschung!

Niemals für Pixelsuche JPG, GIF, BMP verwenden!!
08/15/2013 03:36 relax90#18
Also nochdem alpines mir schrieb ich soll es mit pixelsearch probieren habe ich das getan und das kam erstmal raus
Code:
HotKeySet ("{NUMPAD1}", "_START")
HotKeySet ("{NUMPAD2}", "_PAUSE")
HotKeySet ("{NUMPAD3}", "_ENDE")

Global $WeltenbossSymbol
Global $WeltenbossBetreten
Global $WeltendbossBekaempfen

;Hauptprogramm=====================================================================================================================================================================================================================================================

Func _START()
While 1
   ;=============================================================WeltenbossSymbol anklicken Hauptprogramm==================================
   $WeltenbossSymbol = PixelSearch(0,0,1920,920,0xBBCBC1)
   if Not @error Then
	  Weltensymbolanklicken()
   EndIf
   ;=============================================================WeltenbossBetreten Hauptprogramm==========================================
   $WeltenbossBetreten = PixelSearch(0,0,1920,920,0xFFE726)
   if Not @error Then
	  WeltenbossBetreten()
   EndIf
   ;=============================================================Weltendboss Laufen Hauptprogramm==========================================
   If Not @error Then
	  WeltendbossLaufen()
   EndIf
   ;=============================================================Weltendboss bekämpfen Hauptprogramm=======================================
   If Not @error Then
	  WeltendbossBekaempfen()
   EndIf
WEnd
EndFunc

;Funktion WeltenbossSymbol Anklicken===============================================================================================================================================================================================================================
Func Weltensymbolanklicken()
   MouseMove($WeltenbossSymbol[0],$WeltenbossSymbol[1],1)
   MouseClick("left")
   Sleep(2000)
EndFunc
;Funktion WeltenbossBetreten Anklicken=============================================================================================================================================================================================================================
Func WeltenbossBetreten()
   MouseMove($WeltenbossBetreten[0],$WeltenbossBetreten[1],1)
   MouseClick("left")
   Sleep(5000)
EndFunc
;Funktion zum Weltenboss laufen====================================================================================================================================================================================================================================
Func WeltendbossLaufen()
   MouseMove ("left",1038,174)
   Sleep(3000)
   MouseMove ("left",1129,270)
EndFunc
;Funktion Weltendboss bekaempfen===================================================================================================================================================================================================================================
Func WeltendbossBekaempfen()
   ;Farbe bekommen
$Gegnerleiste = PixelGetColor( 400, 500)
;In Hex umwandeln und überpüfen
IF Hex($Gegnerleiste, 6) = "84920B" Then
    ;Das heißt er soll weiter angreifen, also senden wir ne taste
    Send( "{1}" )
EndIf





;Programm pausieren===============================================================================================================================================================================================================================================
 Func _PAUSE()
   While 1
	Sleep(2000)
   WEnd
EndFunc
;Programm beenden==================================================================================================================================================================================================================================================
Func _ENDE()
   Exit
EndFunc
Nun kommt dauernd ein Fehler
Code:
C:\Users\Relax\Desktop\Autoit\Demon Slayer Pixel\Demon Slayer.au3 (67) : ==> "Func" statement has no matching "EndFunc".:
Func _PAUSE()
ich probiere da nun seit 2 Stunden rum um das zu lösen ich hab viele Foren durchgesehen die das gleiche Problem auf die ein oder andere Weise hatten aber jedes verdammte mal das gleiche..
Ich gebe ihm den Anfang der Funkion vor mit Func _Pause und beende die Funktion wieder mit EndFunc..
Also wo ist sein Problem?!
Ich habe es in dem vorherigen Script mit Imagesearch genauso gemacht und es funktionierte warum geht es nun nicht mehr?????

Schon mal danke
08/15/2013 10:32 alpines#19
Das liegt daran, weil du bei Weltbossbekaempfen() ein EndFunc vergessen hast :D
Hier ist die korrekte Variante, wie sie laufen sollte - nicht muss!
Code:
HotKeySet ("{NUMPAD1}", "_START")
HotKeySet ("{NUMPAD2}", "_PAUSE")
HotKeySet ("{NUMPAD3}", "_ENDE")

Global $WeltenbossSymbol
Global $WeltenbossBetreten
Global $WeltendbossBekaempfen

;Hauptprogramm=====================================================================================================================================================================================================================================================

Func _START()
While 1
   ;=============================================================WeltenbossSymbol anklicken Hauptprogramm==================================
   $WeltenbossSymbol = PixelSearch(0,0,1920,920,0xBBCBC1)
   if Not @error Then
	  Weltensymbolanklicken()
   EndIf
   ;=============================================================WeltenbossBetreten Hauptprogramm==========================================
   $WeltenbossBetreten = PixelSearch(0,0,1920,920,0xFFE726)
   if Not @error Then
	  WeltenbossBetreten()
   EndIf
   ;=============================================================Weltendboss Laufen Hauptprogramm==========================================
   If Not @error Then
	  WeltendbossLaufen()
   EndIf
   ;=============================================================Weltendboss bekämpfen Hauptprogramm=======================================
   If Not @error Then
	  WeltendbossBekaempfen()
   EndIf
WEnd
EndFunc

;Funktion WeltenbossSymbol Anklicken===============================================================================================================================================================================================================================
Func Weltensymbolanklicken()
   MouseMove($WeltenbossSymbol[0],$WeltenbossSymbol[1],1)
   MouseClick("left")
   Sleep(2000)
EndFunc

;Funktion WeltenbossBetreten Anklicken=============================================================================================================================================================================================================================
Func WeltenbossBetreten()
   MouseMove($WeltenbossBetreten[0],$WeltenbossBetreten[1],1)
   MouseClick("left")
   Sleep(5000)
EndFunc
;Funktion zum Weltenboss laufen====================================================================================================================================================================================================================================

Func WeltendbossLaufen()
   MouseMove ("left",1038,174)
   Sleep(3000)
   MouseMove ("left",1129,270)
EndFunc
;Funktion Weltendboss bekaempfen===================================================================================================================================================================================================================================

Func WeltendbossBekaempfen()
   ;Farbe bekommen
$Gegnerleiste = PixelGetColor( 400, 500)
;In Hex umwandeln und überpüfen
IF Hex($Gegnerleiste, 6) = "84920B" Then
    ;Das heißt er soll weiter angreifen, also senden wir ne taste
    Send( "{1}" )
EndIf
EndFunc

;Programm pausieren===============================================================================================================================================================================================================================================
Func _PAUSE()
   While 1
	Sleep(2000)
   WEnd
EndFunc
;Programm beenden==================================================================================================================================================================================================================================================

Func _ENDE()
   Exit
EndFunc
08/15/2013 11:29 relax90#20
Danke ^^ das hab ich jetzt soweit nun hab ich zwei weitere Fragen
also wäre wichtig für mich, das dass alles richtig ist weil ich es immer nur zu bestimmten Zeiten ( unschwer zu erkennen xD ) testen kann.
hier die neue Fassung

Code:
HotKeySet ("{NUMPAD1}", "_START")
HotKeySet ("{NUMPAD2}", "_PAUSE")
HotKeySet ("{NUMPAD3}", "_ENDE")

Global $WeltenbossSymbol
Global $WeltenbossBetreten
Global $WeltendbossBekaempfen

;Hauptprogramm=====================================================================================================================================================================================================================================================
While 1
   Sleep(1000)
WEnd

Func _START()
While 1
		 ;=============================================================Zeitangabe Hauptprogramm==================================================
	  If (@HOUR = 10 and @MIN = 58) or (@HOUR = 15 and @MIN = 58) or (@HOUR = 22 and @MIN = 58) Then
		 ;=============================================================WeltenbossSymbol anklicken Hauptprogramm==================================
		 $WeltenbossSymbol = PixelSearch(0,0,1920,920,0xBBCBC1)
		 if Not @error Then
			Weltensymbolanklicken()
		 Else
			MsgBox(0,"Fehler", "Konnte WeltenbossSymbol nicht finden)
		 EndIf
		 ;=============================================================WeltenbossBetreten Hauptprogramm==========================================
		 $WeltenbossBetreten = PixelSearch(0,0,1920,920,0x5B8E16)
		 if Not @error Then
			WeltenbossBetreten()
		 Else
			MsgBox(0,"Fehler","Konnte BetretenSymbol nicht finden")
		 EndIf

		 ;=============================================================Weltendboss bekämpfen Hauptprogramm=======================================
		 $Gegnerleiste = PixelGetColor( 1075, 151)
		 If Not @error Then
			WeltenbossBekaempfen()
		 Else
			MsgBox(0,"Fehler","Konnte Weltenboss nicht finden")
		 EndIf
	  EndIf
WEnd
EndFunc

;Funktion WeltenbossSymbol Anklicken===============================================================================================================================================================================================================================
Func Weltensymbolanklicken()
   MouseMove($WeltenbossSymbol[0],$WeltenbossSymbol[1],1)
   MouseClick("left")
   Sleep(2000)
EndFunc
;Funktion WeltenbossBetreten Anklicken=============================================================================================================================================================================================================================
Func WeltenbossBetreten()
   MouseMove($WeltenbossBetreten[0],$WeltenbossBetreten[1],1)
   MouseClick("left")
   Sleep(5000)
EndFunc
;Funktion Weltenboss bekaempfen===================================================================================================================================================================================================================================
Func WeltenbossBekaempfen()
    while 1
        $Gegnerleiste = PixelGetColor( 1551, 149)
        IF Hex($Gegnerleiste, 6) = "0xAF6F3C" Then
            MouseMove("left",965,128)
        Else
            ExitLoop
        EndIf
    wend
EndFunc
Nun meine Fragen
Uhrzeit hab ich schon getestet und funktioniert.

ich hab ja geschrieben er soll ne MsgBox mit Fehler aufmachen wenn er was nicht findet bei der Func WeltenbossBetreten klickt er das Symbol ordnungsgemäß an so kommt er in den Bossraum aber gibt mir dann trotzdem den Fehler von der MsgBox warum? Er hat das Pixel gefunden angeklickt und gewartet.. und macht dann einfach bei "else" weiter

Und das mit dem Pixelgetcolor funktioniert nicht wie würde das richtig aussehen? (also er macht gar nichts) Er soll den Lebenspunktebalken vom Boss lesen dazu hab ich das Pixel nahe ende seines Balkens genommen. Er soll das Pixel vom Lebenspunktebalken erkennen und solange angreifen bis es verschwunden ist.
08/15/2013 17:00 alpines#21
Ehm, das wird dir nicht sehr viel weiterhelfen aber trotzdem.
"MouseMove" hat keinen "left"/"right" Parameter, MouseClick hat es, vielleicht ist dort dein Problem? Mit 128 am Ende sprichst du einen ganz anderen Parameter an als du es bei MouseClick tun würdest.
08/15/2013 17:17 relax90#22
das mit dem MouseMove und MouseClick separat schreiben probiere ich mal allerdings muss ich zuerst das Problem mit dem WeltbossBetreten lösen weil er genau das macht was er soll.. also er findet das Symbol per Pixelsearch klickt es an und wartet paar sec.. allerdings macht er dann bei "else" weiter so als hätte er das Symbol oder auch Pixel nicht gefunden obwohl er es zuvor ja angeklickt hat
08/15/2013 17:42 alpines#23
MouseMove kannst du dir sparen weil MouseClick("left", xxx, xxx) das gleiche tut.
Schau mal was du beim Else hast und ob der Befehl der beim Else steht außerhalb der If-Schleife steht, dann liegts daran.
12/17/2013 09:49 Visstick#24
When will there be a world boss bot? I am missing out both WB's due to timezone. It really sucks. Also make the world boss bot work on 2 screens (if possible). TY
02/07/2014 19:28 12AKIKILLER55#25
kann mir jemand einen bot erstellen für die heldengeister?
Meine auflösung ist 1280 x 1024

Wäre nett, bräuchte ihn morgen
02/07/2014 20:30 alpines#26
Ja ist klar, brauchst du noch was? Wenn du einen Bot willst geh in den Requests Thread oder in den Coding TBM, bis morgen kriegst du sicherlich nichts.