|
You last visited: Today at 13:09
Advertisement
[AutoIt] Probleme mit Var und Funktionen
Discussion on [AutoIt] Probleme mit Var und Funktionen within the AutoIt forum part of the Coders Den category.
06/03/2019, 01:13
|
#1
|
elite*gold: 1
Join Date: Apr 2009
Posts: 60
Received Thanks: 1
|
[AutoIt] Probleme mit Var und Funktionen
Hallo zusammen,
ich hoffe mir kann hier jemand helfen.
Ich bastel im Moment an einem kleine AutoIt script/programm das mir Bestimmte bilder anklicken soll. Habe aber für die Bildersuche zwei Funktionen da die eine suche abschaltbar sein soll. Es funktioniert auch wunderbar, nun wollte ich das ganze mit einem GUI versehen und das ganze über ein Button starten. Nun kommt das Problem wenn ich die Funktion auf den button lege sag er mir das die Var nich definiert ist... egal wie ich es mache. Rufe ich die Funktionen aber über eine While schleife beim programm start ab läuft es... Kann mir wer helfen?
Code:
func Farmer()
Dim $Farm[10]
$Farm[0] = 4
$Farm[1] = 'fight.bmp'
$Farm[2] = 'again.bmp'
$Farm[3] = 'select.bmp'
$Farm[4] = 'okay.bmp'
Global $resF = _WaitForImagesSearch($Farm,5,1,$x,$y,100)
Switch $resF
case 0
Case 1
MouseClick('left',$x,$y,1,100)
Case 2
MouseClick('left',$x,$y,1,100)
Case 3
MouseClick('left',$x,$y,1,100)
Case 4
MouseClick('left',$x,$y,1,100)
EndSwitch
EndFunc
das ist die funktion
Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Farmer()
RunenCheck()
Case $Button2
Exit
EndSwitch
WEnd
so ist es auf den button gelegt
das ist der fehler
Bitte um hilfe.
Lg
Nazas
|
|
|
06/03/2019, 17:03
|
#2
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
Du musst $x und $y definiert haben, bevor du sie als Parameter in der ImageSearch Funktion übergibst. Also Local $x,$y bzw. Global $x,$y vor dem Aufruf sollte dein Problem lösen
|
|
|
06/03/2019, 23:33
|
#3
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,117
Received Thanks: 2,436
|
General Coding -> AutoIt
#moved
|
|
|
06/04/2019, 11:37
|
#4
|
elite*gold: 1
Join Date: Apr 2009
Posts: 60
Received Thanks: 1
|
Hi,
ich habe x und y so wie die anderen var als Global gesetzt. Hab auch noch 2 arrays bei einmal 4elemente und einmal 10 elemente, wenn ich sie unter die GUI While schleife setze dann kriege ich den error wenn ich sie über die schleife setze reagiert das GUI nicht/sehr langsam.
lg
Code:
Global $x = 0, $y = 0, $start = 0
Global $get = _ImageSearch('data\rune\get.bmp',1,$x,$y,10)
Global $sell = _ImageSearch('data\rune\sell.bmp',1,$x,$y,10)
Global $lose = _ImageSearch('data\farm\lose.bmp',1,$x,$y,10)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_start()
Case $Button2
Exit
Case $Checkbox4
If (GUICtrlRead($Checkbox4)) = $GUI_CHECKED Then
$start = 1
EndIf
EndSwitch
WEnd
Dim $Farm[9]
$Farm[0] = 8
$Farm[1] = 'data\farm\fight.bmp'
$Farm[2] = 'data\farm\again.bmp'
$Farm[3] = 'data\farm\select.bmp'
$Farm[4] = 'data\farm\okay.bmp'
$Farm[5] = 'data\farm\chest.bmp'
$Farm[6] = 'data\farm\lose.bmp'
$Farm[7] = 'data\farm\nores.bmp'
$Farm[8] = 'data\farm\win.bmp'
Dim $Rune[4]
$Rune[0] = 3
$Rune[1] = 'data\rune\blue.bmp'
$Rune[2] = 'data\rune\purple.bmp'
$Rune[3] = 'data\rune\orange.bmp'
Global $resF = _WaitForImagesSearch($Farm,5,1,$x,$y,100)
Global $resR = _WaitForImagesSearch($Rune,5,1,$x,$y,100)
Func _Start()
While 1
If $start = 1 Then
_farmer()
EndIf
WEnd
EndFunc
ja sieht grade was komisch aus bin noch am basteln^^
wenn ich es so mache reagiert das GUI wunderbar, aber ich kriege bessagten error lege ich die sachen anders rum also die schleife nach unten dann reagiert das gui wieder nicht
|
|
|
06/05/2019, 23:02
|
#5
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
Oh man, wo soll man da anfangen
1. Deine 2 Arrays werden nie definiert, weil sie im Programmcode nach einer Endlosschleife stehen. Das gehört ganz nach oben, wie deine anderen Variablen
2. Du brauchst nicht die Länge deiner Arrays mitspeichern. Das kannst du mit UBound($arr) abfragen
3. Wenn du bei $GUI_CHECKED die Variable $start auf 1 setzt, wäre es logisch, wenn die Checkbox nicht checked ist, sie wieder auf 0 zu setzen, oder nicht?
4. Wenn du $Button1 klickst, gehst du in die _Start() Funktion, aus der du nicht mehr rauskommst, weil darin auch eine Endlosschleife ist => GUI reagiert nicht mehr, weil du aus der GUI Loop raus bist
5. Ich weiß nicht, ob du das Pseudo-Code mäßig hingeschrieben hast, aber falls nicht: Du kannst in die ImageSearch Funktionen nicht einfach ein Array als Bildpfad angeben. Du musst schon durch das Array durchiterieren wie hier z.B.
PHP Code:
For $i = 0 To UBound($Farm)-1 Step 1
$search = _WaitForImageSearch($Farm[$i],5,1,$x,$y,100)
Next
|
|
|
06/08/2019, 04:08
|
#6
|
elite*gold: 1
Join Date: Apr 2009
Posts: 60
Received Thanks: 1
|
Aber ist dafür nicht normal das _WaitForImagesSearch da?
|
|
|
06/08/2019, 16:51
|
#7
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
|
Quote:
Originally Posted by Nazas
Aber ist dafür nicht normal das _WaitForImagesSearch da?
|
Ah lol, wusste gar nicht dass es die Funktion gibt. Ja, dann kannst du Punkt 2 und 5 von mir ignorieren
|
|
|
06/08/2019, 21:35
|
#8
|
elite*gold: 1
Join Date: Apr 2009
Posts: 60
Received Thanks: 1
|
Aber die frage ist ja dann warum er immer wieder auf die position von einem bild fährt und nicht auf die von dem bild das aktuell da ist
|
|
|
All times are GMT +1. The time now is 13:10.
|
|