Fehler: Subscript used with non-Array variable

  • Ich habe gestern angefangen mit AutoIt zu scripten, und bin mit dem ersten Script eigentlich auch schon fertig, aber bekomme bei Zeile 48 den Fehler "Subscript used with non-Array variable".
    Hier der Code:

    [autoit]

    HotKeySet("a", "Start")

    [/autoit][autoit][/autoit][autoit]

    While 1
    Sleep(50)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func Start()
    While 1
    $Hohe = PixelSearch(745, 273, 783, 666, 0x91D6F3)
    $RelUR = $Hohe[0] + 85
    $RelOR = $Hohe[1] - 40
    $RolUR = $Hohe[0] + 85
    $RolOR = $Hohe[1] + 40
    $HNUnten = PixelGetColor($RelUR, $RelOR)
    $HNOben = PixelGetColor($RolUR, $RolOR)

    [/autoit][autoit][/autoit][autoit]

    Sleep(10)
    Send("{UP down}")
    Sleep(110)
    Send("{UP up}")

    [/autoit][autoit][/autoit][autoit]

    If $HNUnten = 0x031E31 Then
    Call("GoUp")
    EndIf

    [/autoit][autoit][/autoit][autoit]

    If $HNOben = 0x031E31 Then
    Call("GoDown")
    EndIf

    [/autoit][autoit][/autoit][autoit]

    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func GoUp()
    Send("{UP down}")
    sleep(1500)
    Send("{UP up}")
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func GoDown()
    Send("{DOWN down}")
    sleep(1500)
    Send("{DOWN up}")
    EndFunc

    [/autoit]


    Ideen?

  • Ist das nur ein Ausschnitt des eigentlichen Codes?

    Und welchen Zweck soll dieses Script eigentlich erfüllen?

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Also:

    • Was ist der Sinn des Skriptes? Das ist das wichtigste, denke ich. Und lies' dir vorher bitte nochmal die Forenregeln durch und überlege, ob dein Vorhaben auch mit ebendieses vereinbar ist. ;)
    • Bitte stelle das ganze Skript ein. Sonst können wir dir nicht helfen, sondern nur raten.
    • Benutze bitte kein Call. Anstatt Call("Funktion") kannst du auch Funktion() schreiben, so wie man das normalerweise macht. :P

    lg chess

  • Spoiler anzeigen
    [autoit]

    HotKeySet("a", "Start")

    [/autoit] [autoit][/autoit] [autoit]

    Global $HNUnten
    Global $HNOben

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Start()
    While 1
    $Hohe = PixelSearch(745, 273, 783, 666, 0x91D6F3)
    If IsArray($Hohe) Then
    $RelUR = $Hohe[0] + 85
    $RelOR = $Hohe[1] - 40
    $RolUR = $Hohe[0] + 85
    $RolOR = $Hohe[1] + 40
    $HNUnten = PixelGetColor($RelUR, $RelOR)
    $HNOben = PixelGetColor($RolUR, $RolOR)
    Else
    MsgBox(0, 0, "PixelSearch Error!")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(10)
    Send("{UP down}")
    Sleep(110)
    Send("{UP up}")

    [/autoit] [autoit][/autoit] [autoit]

    If $HNUnten = 0x031E31 Then
    GoUp()
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $HNOben = 0x031E31 Then
    GoDown()
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    WEnd
    EndFunc ;==>Start

    [/autoit] [autoit][/autoit] [autoit]

    Func GoUp()
    Send("{UP down}")
    Sleep(1500)
    Send("{UP up}")
    EndFunc ;==>GoUp

    [/autoit] [autoit][/autoit] [autoit]

    Func GoDown()
    Send("{DOWN down}")
    Sleep(1500)
    Send("{DOWN up}")
    EndFunc ;==>GoDown

    [/autoit]
    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D