Demon Slayers Bot

08/12/2013 03:22 relax90#1
Hallo,
ich hoffe jemand kennt das Spiel somit wäre es einfacher zu erklären was ich vor habe.
Nun meine Fragen sind vll. dumm allerdings weis ich nicht wie ich es anstellen soll.

1. Frage
Ich würde gerne Zeitangaben einstellen wie 11 Uhr 16 Uhr und 22 Uhr wäre das möglich? Ich konnte leider nichts finden.

2. Frage
Ich habe versucht durch Pixelsearch das Symbol anzuklicken allerdings erwies sich das als Problematisch nachdem es darauf keine Farben gibt die sonst nicht zu finden wären ( ich habe wenn ich es richtig verstanden habe die cords angegeben oben links unten rechts was eigtl. ein Fenster bilden sollte dennoch klickte er vieles an was gar nicht in dieser Zone war )
Das Symbol bewegt sich je nachdem welche Aktionen etc. gerade vorhanden sind also kann ich es nicht einfach per Mousemove anklicken wie könnte ich das handhaben?

3. Frage
Beispielsweise ich Klicke nun das Symbol von 2. an nun habe ich 3 Weltbosse zur Auswahl welche alle anders angeklickt werden müssten ( das ist eigtl. egal ich kann auch einfach an alle 3 Stellen klicken ) allerdings weis ich nicht wie ich dem Programm anschließend sagen kann, dass es bereits in dem Raum ist und eine andere Aktion durchführen soll.

Also das wäre erstmal alles.
Für Beispiele links und jegliche Hilfe wäre ich sehr dankbar :-)
08/12/2013 14:53 alpines#2
Versuchst du die Maus im Fullscreen zu bewegen oder ist das Spiel im Fenster, wenn es im Fenster ist musst du die Opt() vornehmen die die Koordinaten auf das Fenster anpasst und nicht die vom gesamten Bildschirm nimmt.
08/12/2013 15:46 relax90#3
Leider funktioniert die Fullscreen Mode nicht in FullHD Auflösung.
Also bleibt es trotz Fullscreen Mode im Fenster.
Allerdings nach zahlreichen versuchen schaue ich mal ob ich jemanden finde der mir womöglich ein Grundgerüst für Geld aufbaut.
Denn mir macht der Anfang große Probleme. Ich weis nicht wie ich es angehen soll trotz der Tutorials schließlich sind diese nicht wirklich darauf zugeschnitten.
Ich habe schon öfter in Bots verschiedene Funktionen eingebaut bzw. umgebaut aber das Grundgerüst aufzusetzen ist ziemlich schwer für einen leihen wie mich ^^
08/12/2013 15:52 alpines#4
Was genau willst du mit dem Bot machen? Eventuell lässt sich das per Memory-Funcs realisieren was schneller und sauberer ist.

Zu dem 1. Zeitangaben einstellen? Meinst du das der Bot um die Uhrzeit sein Werk verrichten soll? @HOUR @MIN @SEC sollten dir etwas sagen.

Zu dem 2. Es ist extrem schwer nur ein Pixel abzuscannen, weil die Wahrscheinlichkeit gering ist, nimm doch paar andere Punkte auf dem Icon um sicher zu gehen.

Zu dem 3. Wenn du dem Programm sagen willst das der damit fertig ist, dann geh aus der (wenn sie vorhanden ist) Schleife raus und mach mit den Sachen weiter die du machen möchtest.
08/12/2013 22:22 relax90#5
Es ist nett, dass du mir hilft allerdings ist es schwer Fragen zu stellen über diese Webside ^^
Also ich habe das mit @Hour @Min @Sec nun so geschrieben

Okay das mit der Zeitangabe hab ich schon mal geschafft ^^
Nur das ich ihm nicht sagen kann, dass er es zu 3 verschiedenen Zeiten tuen soll kann ihm nur eine Uhrzeit vorgeben.
08/13/2013 16:38 alpines#6
Wo liegt denn das Problem? So löst du das mit unterschiedlichen Zeiten:
Code:
If (@HOUR = 14 and @MIN = 30) or (@HOUR = 16 and @MIN = 30) or (@HOUR = 19) Then StartBot()
;-------------- Jetzt zum beenden des Bottes
If (@HOUR = 15 and @MIN = 30) or (@HOUR = 17 and @MIN = 30) or (@HOUR = 20) Then ExitLoop
Du musst das halt anpassen, dein Bot sollte in einer Schleife laufen indem er alles scannt
- was du brauchst,
- welche Uhrzeit es ist (für das Beenden),
- Pixel / Memory abscannt,
- und das tut was er machen soll.
08/13/2013 20:36 Rolle#7
Zu deinem 3. Punkt würde ich einfach ne If Abfrage machen.
Wenn er jetzt Weltboss 1, 2 oder 3 betreten hat dann:
If $Bossarea1 = 1 Then Call Bla
ElseIf Blablubb

So würde ich das lösen.

Grüße
08/13/2013 20:50 alpines#8
Er soll aber die Aktion die er im Moment macht erst vollführen sonst funktioniert der Bot schon nicht mehr.
08/13/2013 21:54 relax90#9
Also beim Progen stoßt man echt auf viele Probleme..
es ist schon schwer genug sich mit der Sprache außeinanderzusetzen aber dann noch so Probleme mit Imagesearch also das es praktisch gar nicht funktioniert.. obwohl man es genauso wie beschrieben in die Ordner gepackt hat.. oder eine Datei wozu ich rein gar nichts finden kann außer die Aussage, dass sie wichtig ist ''#AutoIt3Wrapper_usex64=n''

Mir wäre es ja grundsätzlich egal, das alles auf englisch ist.. allerdings bei so viele Problemen ständig durch das ganze englische Zeug zu wühlen is schon hart ^^

Nachdem ich nun Imagesearch nicht zum laufen bekomme schaue ich mal ob ich was anderes finde mir sagte mal jemand, das dass per directx gehen soll naja schauen wir uns das halt mal an.. ^^ bis ich eventuell doch ne Lösung dafür gefunden habe
08/13/2013 21:59 alpines#10
Zerbrich dir lieber nicht den Kopf mit DirectX sondern nimm einfach auf der Seite PixelGetColor, das ist besser als Dateien abzuscannen und sollte fürs erste ja auch reichen.
08/13/2013 22:00 SpieleHacksInfo#11
Quote:
Originally Posted by relax90 View Post
mir sagte mal jemand, das dass per directx gehen soll naja schauen wir uns das halt mal an.. ^^ bis ich eventuell doch ne Lösung dafür gefunden habe
DirectX ja, aber nicht Autoit und DX. Ich empfehle dann wohl eher eine "Hochsprache".
08/13/2013 23:31 relax90#12
Also ich habe es nun endlich geschafft, dass der Bot die 2 notwendigen Symbole anklickt^^ erstes Erfolgserlebnis ;-)
08/13/2013 23:47 Rolle#13
haste dann noch nen problem =) oder problem gelöst
08/14/2013 00:13 relax90#14
natürlich geht es noch viel weiter bisher hab ich nur

Code:
#include <imagesearch.au3>
HotKeySet ("{NUMPAD1}", "_START")
HotKeySet ("{NUMPAD2}", "_PAUSE")
HotKeySet ("{NUMPAD3}", "_ENDE")

$x1 = 0
$y1 = 0
$x2 = 0
$y2 = 0

Func _START()

   While 1
			   If (@HOUR = 10 and @MIN = 58) or (@HOUR = 15 and @MIN = 58) or (@HOUR = 22 and @MIN = 58) Then
						$res = _imagesearch("Weltenboss2.bmp",1,$x1,$y1,100)
				  If $res = 1 Then
						MouseClick("left",$x1,$y1,1,10)
					 Else
						MsgBox(0,"Fehler","Weltenboss-Symobol nicht gefunden")
				  EndIf
						$res1 = _imagesearch("Betreten1.bmp",1,$x2,$y2,100)
				  If $res1 = 1 Then
						MouseClick("left",$x2,$y2,1,10)
					 Else
						MsgBox(0,"Fehler","Betreten Symbol nicht gefunden")
				  EndIf
			   EndIf
   WEnd


EndFunc

Func _ENDE()
	Exit
 EndFunc

 Func _PAUSE()
	While 1
	Sleep(2000)

	   WEnd
 EndFunc

 While 1
	Sleep(100)
	WEnd
Leider kann ich im Moment nicht weiter machen weil ich erst Screenshots brauche die ich erst um ne bestimmte Uhrzeit machen kann. Ich bin mir nicht ganz sicher ob es so funktioniert wie ich denke also denke der Code ist einfach zu verstehen ^^ nach dem 2. Klick auf das "Eintreten Symbol soll er dann Mouseklicks machen wenn ich nun so weiter schreiben würde sollte es gehen oder?
Code:
 $res2 = _imagesearch("......",1,$x3,$y3,100) <- hier suche ich mir ein Bild das es nur beim                                        Weltenboss gibt
				  If $res2= 1 Then 
					 MouseClick ("left",xxxx,xxxx)<- wenn er es gefunden hat soll er sich dann darauf zu bewegen
denke das sollte funktionieren

Achso und schon mal ein Dankeschön an die Tatkräftigen Helfer^^ ich hätte es ohne die kleinen Stupse in die Richtige Richtung nicht mal soweit gebracht ^^
08/14/2013 12:43 alpines#15
Statt externe UDF + ImageSearch einfach PixelGetColor nutzen!
Du solltest vorher die Opt() auf PixelCoordMode (oder so ähnlich) stellen damit, die Koordinaten vom IE / FF / Chrome Fenster ausgehen und nicht vom Screen (höhere Erfolgswahrscheinlichkeit!). Natürlich musst du dafür ein bisschen rechnen, aber das geht schnell.

Viel Spaß beim weiteren Scripten!