Noobfragen

03/18/2012 16:46 -JPS-#1
Hallo,

ich habe "versucht" mir ein Skript zu basteln. Leider läuft dieses garnicht.
Wenn ich es starte passiert nichts, auch die Hotkeys nimmt er nicht an.

Kann mir vll. jemand sagen was ich falsch mache ?

Code:
Hotkeyset('{F1}','start')
Hotkeyset('{F2}','pause')
Hotkeyset('{F3}','ende')

Func pause()
while 1
    sleep(100000000)
WEnd
EndFunc

Func start()
   while 1   
	  $a = 0
	  Do
	  MouseClickDrag ( "left", 232, 154, 92, 270)
	  mouseclick("left",330,186,1)
	  Sleep(100)
	  $a = $a + 1
	  Until $a = 99
 
	  mouseclick("left",440,185,1)
	  Sleep(100)
   WEnd
EndFunc

Func ende()
   Exit
EndFunc
03/18/2012 16:55 BotofWar#2
versuchs mal hiermit.
Läuft bei mir in allen Bots einwandfrei.

Code:
HotKeySet("^q", "verlassen")
$dll = DllOpen("user32.dll")

Func XY

EndFunc

Func verlassen() 
	
	DllClose($dll)		
	exit

EndFunc
03/18/2012 17:43 .shaco#3
hallo, ich habe auch eine noobfrage und möchte keinen eigenen thread aufmachen.
ich benutze
PHP Code:
If PixelGetColor(xxxxxx) = farbe Then 
um eine farbe auf einer position zu finden und dann auf etwas zu klicken.
kann ich auch
PHP Code:
If PixelSearch(xxxxxxxxxxxxfarbe0Then 
benutzen, um etwas von einer farbe in einem bereich abhängig zu machen (die farbe erscheint nicht immer am selben fleck)?
und welchen befehl benutze ich dafür, um auf das ändern einer farbe zu warten?
03/18/2012 17:52 -JPS-#4
Hat Funktioniert, danke !
03/18/2012 19:47 BotofWar#5
@shaco
hab zwar nicht so ganz im detail gecheckt was Du vorhast, aber hier mal n bissel Pixelsearch was Du dir zurecht friemeln kannst.

Code:
$counter = 0
While $counter < 5000
	Pixelsearch($X+360,$Y+477,$X+390,$Y+490,0xFBFBFB,1,1)
	if not @error then
		$anzeigetext="blabla"
		ToolTip("Bot läuft" & @CR & _ 
		"MSG : " & $anzeigetext,1,50)
		mouseclick("left", $X+504, $Y+482,1,0)
		$counter=$counter+1
		$counter=10000
	Else
		$anzeigetext="blabla2"
		ToolTip("Bot läuft" & @CR & _ 
		"MSG : " & $anzeigetext,1,50)
	EndIf
	$counter=$counter+1
wend
03/19/2012 09:08 .shaco#6
hey hey danke, benutzt du die $counter nur um aus der while schleife zu kommen? würde das nicht auch mit einem Exitloop gehen?
03/19/2012 12:42 BotofWar#7
Frage 1: Nicht nur, ist noch n Übrerrest von was anderem
Frage 2: Ja
03/19/2012 14:04 jacky919#8
Quote:
Originally Posted by BotofWar View Post
Frage 1: Nicht nur, ist noch n Übrerrest von was anderem
Frage 2: Ja
Warum keine for-Schleife?
03/19/2012 15:46 -JPS-#9
Ich habe das nächste Problem, nachdem ich mehr oder weniger ein GUI drum gebastelt habe, ist dieses nicht mehr klickbar (die buttons) nachdem das skript mit f2 in pause geschickt wurde. Gibt es da einen Trick ?

Code:
Hotkeyset('{F3}','ende')
Hotkeyset('{F2}','pause')
Hotkeyset('{F1}','start')
$dll = DllOpen("user32.dll")

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("AcoDB Scanner", 211, 125, 301, 386)
GUISetBkColor(0x000000)
$Button1 = GUICtrlCreateButton("Jetzt starten", 0, 0, 210, 33)
$Button2 = GUICtrlCreateButton("Beenden", 0, 32, 210, 31)
$Button3 = GUICtrlCreateButton("Hilfe", 0, 62, 210, 33)
$Button4 = GUICtrlCreateButton("Credits", 0, 91, 210, 33)
GUICtrlSetBkColor(-1, 0x3399FF)
GUISetState(@SW_SHOW)
while 1
$msg = guigetmsg()
if $msg = $button1 then start()
if $msg = $button2 then ende()
if $msg = $button3 then hilfe()
if $msg = $button4 then credits()
If $msg = $GUI_EVENT_CLOSE Then Exit   
wend

Func start() 
 while 1   
   $a = 0
   Do
   MouseClickDrag ( "left", 232, 154, 92, 270, 4)
   mouseclick("left",330,186,1)
   Sleep(100)
   $a = $a + 1
   Until $a = 99
   mouseclick("left",440,185,1)
   Sleep(100)
   WEnd
EndFunc

Func pause()
   while 1
   Sleep(100)
   WEnd
EndFunc

Func ende()
   DllClose($dll)
   Exit
EndFunc

Func hilfe()
   MsgBox(64, "Hilfe", "F1 Start" &@CRLF& "F2 Pause" &@CRLF& "F3 Beenden")
EndFunc

Func credits()
   MsgBox(64, "Credits", "Blub")
EndFunc
03/19/2012 20:24 lolkop#10
Quote:
Originally Posted by -JPS- View Post
Ich habe das nächste Problem, nachdem ich mehr oder weniger ein GUI drum gebastelt habe, ist dieses nicht mehr klickbar (die buttons) nachdem das skript mit f2 in pause geschickt wurde. Gibt es da einen Trick ?

Code:
Func pause()
   while 1
   Sleep(100)
   WEnd
EndFunc
überleg doch mal was da passiert, wenn du die pause funktion aufrufst...
03/19/2012 20:45 BotofWar#11
Code:
Func Pause()
	$anzeigetext="Pause- Weiter mit ENDE-Taste"
	Anzeige()
	While 1
		Sleep ( 300 )
		If _IsPressed("23", $dll) Then; Ende Taste
			ExitLoop
		EndIf
	WEnd
	
EndFunc

@Jacky: Das sind noch Fragmente von meinen aller ersten Bots die sich über die Jahre hinweg gehalten haben. Wenn ich sowas heute neu schreibe benutze ich auch for-Schleifen. Aber letztendlich isses mir Wurst solange es funzt.
03/20/2012 14:39 -JPS-#12
Das habe ich soweit verstanden, gibt es eine möglichkeit ihn statt in "exit" in eine andere schleife zu schicken, in dem fall die "start".

Bitte nicht böse sein, beschäftige mich erst seit 2 tagen mit autoit, bisher hat google mir alles beigebracht nun komm ich selbst damit nicht weiter :)
03/20/2012 15:58 BotofWar#13
Such mal in der Autoit -Hilfe nach _IsPressed und such dir was nettes aus.
Dann ersetzt Du ExitLoop einfach mit dem funktionsnamen.
Müsste eigentlich funzen. Hab sowas selbst noch nie gemacht aus ner pause raus was anderes aufgerufen.
03/20/2012 16:05 lolkop#14
man arbeitet in scriptsprachen nie mit mehr als EINER endlosschleife...

willst du eine pause in deine hauptschleife einbauen, so erstellst du dir einfach einen zustand $pause. ist $pause Wahr, so wird die aktion nicht ausgeführt. ist $pause Falsch, so wird sie ausgeführt.

deine pause funktion setzt dann nur $pause = Not $pause, also wenn $pause Wahr ist, ist $pause danach Falsch. War $pause Falsch, so ist der zustand nun Wahr.

beispiel code:
Code:
Dim $pause = True
GuiCreate(...)
$button = GuiCtrlCreateButton(...)

While True
    $msg = GuiGetMsg()
    If $msg=$button Then $pause = Not $pause

    If Not $pause Then
        [aktionen]
    EndIf
WEnd