Problem mit Gui Inputbox

    Problem mit Gui Inputbox

    Hay bin dabei einen bot für ein browsergame zu schreiben nur habe ich ein Problem mit der Input box in der Gui schaut euch einfach mal den Code an
    Hoffentlich kann mir jemand helfen :) ^.^

    AutoIt Quelltext

    1. #include "data\ImageSearch.au3"
    2. #include <ButtonConstants.au3>
    3. #include <EditConstants.au3>
    4. #include <GUIConstantsEx.au3>
    5. #include <StaticConstants.au3>
    6. #include <TabConstants.au3>
    7. #include <WindowsConstants.au3>
    8. #Region ### START Koda GUI section ### Form=
    9. $hGui = GUICreate("Auto Jumper", 507, 289, 345, 137)
    10. $hInput = GUICtrlCreateInput(IniRead("Test.ini", "Sektion", "Input", ""), 386, 5, 100, 21)
    11. $Input1 = GUICtrlCreateInput(IniRead("Test.ini2", "Sektion2", "Input2", ""), 386, 40, 100, 21)
    12. $Input2 = GUICtrlCreateInput(IniRead("Test.ini3", "Sektion3", "Input3", ""), 386, 75, 100, 21)
    13. $Input3 = GUICtrlCreateInput(IniRead("Test.ini4", "Sektion4", "Input4", ""), 386, 110, 100, 21)
    14. $Input4 = GUICtrlCreateInput(IniRead("Test.ini5", "Sektion5", "Input5", ""), 386, 145, 100, 21)
    15. $Input5 = GUICtrlCreateInput(IniRead("Test.ini6", "Sektion6", "Input6", ""), 386, 180, 100, 21)
    16. $Input6 = GUICtrlCreateInput(IniRead("Test.ini7", "Sektion7", "Input7", ""), 386, 215, 100, 21)
    17. $Input7 = GUICtrlCreateInput(IniRead("Test.ini8", "Sektion8", "Input8", ""), 386, 250, 100, 21)
    18. $Button1 = GUICtrlCreateButton("Start", 24, 16, 75, 25, $WS_GROUP)
    19. $Button2 = GUICtrlCreateButton("Exit", 24, 240, 75, 25, $WS_GROUP)
    20. $Label1 = GUICtrlCreateLabel("Jump Gate", 312, 8, 52, 17)
    21. $Label2 = GUICtrlCreateLabel("Ship", 312, 40, 36, 17)
    22. $Label3 = GUICtrlCreateLabel("Home Tab", 312, 80, 52, 17)
    23. $Label4 = GUICtrlCreateLabel("Jump Cpu", 312, 112, 52, 17)
    24. $Label5 = GUICtrlCreateLabel("Buy", 312, 144, 36, 17)
    25. $Label6 = GUICtrlCreateLabel("Accept Buy", 312, 184, 60, 17)
    26. $Label7 = GUICtrlCreateLabel("Equip Item", 312, 216, 52, 17)
    27. $Label8 = GUICtrlCreateLabel("Space Tab", 312, 248, 60, 17)
    28. GUISetState(@SW_SHOW)
    29. #EndRegion ### END Koda GUI section ###
    30. While 1
    31. $nMsg = GUIGetMsg()
    32. Switch $nMsg
    33. Case $GUI_EVENT_CLOSE
    34. IniWrite("Test.ini", "Sektion", "Input", GUICtrlRead($hInput))
    35. IniWrite("Test.ini2", "Sektion2", "Input2", GUICtrlRead($Input1))
    36. IniWrite("Test.ini3", "Sektion3", "Input3", GUICtrlRead($Input2))
    37. IniWrite("Test.ini4", "Sektion4", "Input4", GUICtrlRead($Input3))
    38. IniWrite("Test.ini5", "Sektion5", "Input5", GUICtrlRead($Input4))
    39. IniWrite("Test.ini6", "Sektion6", "Input6", GUICtrlRead($Input5))
    40. IniWrite("Test.ini7", "Sektion7", "Input7", GUICtrlRead($Input6))
    41. IniWrite("Test.ini8", "Sektion8", "Input8", GUICtrlRead($Input7))
    42. Exit
    43. Case $Button1
    44. HotKeySet ("{q}", "_main")
    45. HotKeySet ("{ESC}", "_exit")
    46. Hotkeyset ("{w}", "_pause")
    47. Local $tast = InputBox("Jump Cpu Button","Bitte taste mit dem Cpu benennen")
    48. Local $coun = 0
    49. ToolTip("Start = q , Pause = w , Exit = esc" & " ; Jump:" & $coun & "/10 ", 806, 2)
    50. IniWrite("Test.ini", "Sektion", "Input", GUICtrlRead($hInput))
    51. IniWrite("Test.ini2", "Sektion2", "Input2", GUICtrlRead($Input1))
    52. IniWrite("Test.ini3", "Sektion3", "Input3", GUICtrlRead($Input2))
    53. IniWrite("Test.ini4", "Sektion4", "Input4", GUICtrlRead($Input3))
    54. IniWrite("Test.ini5", "Sektion5", "Input5", GUICtrlRead($Input4))
    55. IniWrite("Test.ini6", "Sektion6", "Input6", GUICtrlRead($Input5))
    56. IniWrite("Test.ini7", "Sektion7", "Input7", GUICtrlRead($Input6))
    57. IniWrite("Test.ini8", "Sektion8", "Input8", GUICtrlRead($Input7))
    58. _main()
    59. Case $Button2
    60. IniWrite("Test.ini", "Sektion", "Input", GUICtrlRead($hInput))
    61. IniWrite("Test.ini2", "Sektion2", "Input2", GUICtrlRead($Input1))
    62. IniWrite("Test.ini3", "Sektion3", "Input3", GUICtrlRead($Input2))
    63. IniWrite("Test.ini4", "Sektion4", "Input4", GUICtrlRead($Input3))
    64. IniWrite("Test.ini5", "Sektion5", "Input5", GUICtrlRead($Input4))
    65. IniWrite("Test.ini6", "Sektion6", "Input6", GUICtrlRead($Input5))
    66. IniWrite("Test.ini7", "Sektion7", "Input7", GUICtrlRead($Input6))
    67. IniWrite("Test.ini8", "Sektion8", "Input8", GUICtrlRead($Input7))
    68. Exit
    69. EndSwitch
    70. WEnd
    71. Func _main()
    72. IniWrite("Test.ini", "Sektion", "Input", GUICtrlRead($hInput))
    73. $hInput = GUICtrlCreateInput(IniRead("Test.ini", "Sektion", "Input", ""), 386, 5, 100, 21)
    74. HotKeySet ("{q}", "_main")
    75. HotKeySet ("{ESC}", "_exit")
    76. Hotkeyset ("{w}", "_pause")
    77. If $coun < 10 Then
    78. MouseClick("LEFT", ($hInput), 1, 0)
    79. sleep(45000)
    80. MouseClick("LEFT", ($Input1), 1, 0)
    81. Sleep(500)
    82. Send(" j" , 0)
    83. sleep(15000)
    84. send($tast , 0)
    85. Sleep(3000)
    86. $coun = $coun + 1
    87. ToolTip("Start = q , Pause = w , Exit = esc" & " ; Jump:" & $coun & "/10 ", 806, 2)
    88. _CheckMap()
    89. Else
    90. MouseClick("LEFT", ($Input2), 1, 0)
    91. Sleep(3000)
    92. MouseClick("Left", ($Input3), 1, 0)
    93. Sleep(3000)
    94. MouseClick("Left", ($Input4), 1, 0)
    95. Sleep(5000)
    96. MouseClick("Left", ($Input5), 1, 0)
    97. Sleep(5000)
    98. MouseClick("Left", ($Input6), 1, 0)
    99. Sleep(5000)
    100. MouseClick("Left", ($Input7), 1, 0)
    101. Sleep(3000)
    102. $coun = 0
    103. ToolTip("Start = q , Pause = w , Exit = esc" & " ; Jump:" & $coun & "/10 ", 806, 2)
    104. Sleep(3000)
    105. Send("q")
    106. EndIf
    107. EndFunc
    108. Func _CheckMap()
    109. $X = 1867
    110. $Y = 1003
    111. $CheckMap = _ImageSearch(@ScriptDir & "\data\pictures\Map.bmp",1,$X,$Y,0)
    112. If $CheckMap = True Then
    113. _main()
    114. Else
    115. Exit
    116. EndIf
    117. EndFunc
    118. Func _pause()
    119. While 1
    120. Sleep (10)
    121. WEnd
    122. EndFunc
    123. Func _exit()
    124. Exit
    125. EndFunc
    Hi,

    es wäre grundsätzlich besser, wenn du das Problem in einem Post schilderst. Wenn du etwas vergessen hast, gibt es die Möglichkeit, es zu bearbeiten ;)

    Nun zum eigentlichen Problem:
    Jede GuiCtrlCreateX-Funktion (also auch GuiCtrlCreateInput) gibt dir einen Handle, also einen Verweis auf das erstellte Eingabefeld zurück, mit dem du später darauf zugreifen kannst.
    Wenn du den Wert auslesen willst, geht das mit GuiCtrlRead($hInput).

    Da das aber schon bei sämtlichen IniWrite bzw IniRead verwendest, vermute ich stark, dass zumindest diese Teil von irgendwoher kopiert sind. In diesem Fall würde ich dir empfehlen, erst mit den Grundlagen von Autoit anzufangen, dazu gibt es hier auch ein paar gute Tutorials ;)


    MfG,
    SilverHazard
    Cheater!
    Freue mich immer über Bewertungen :)

    Live as if you were to die tomorrow. Learn as if you were to live forever.

    The thing about programming is that the worst developers are the ones who don’t know how much they don’t know.

    Wenn du die x-Koordinate angibst:
    MouseClick("LEFT", GuiCtlrRead($hInput), 1, 0))

    Da aber aktuell die y-Koordinate auf 1 ist und du 0 Klicks ausführst, gibst du vermutlich beide Koordinaten ein. In welchem Format geschieht das?

    MfG,
    SilverHazard
    Cheater!
    Freue mich immer über Bewertungen :)

    Live as if you were to die tomorrow. Learn as if you were to live forever.

    The thing about programming is that the worst developers are the ones who don’t know how much they don’t know.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SilverHazard“ ()

    Mit GUICtrlRead(...) bekommst du den Inhalt des Eingabefeldes.

    MouseClick ( "button" [, x, y [, clicks = 1 [, speed = 10]]] ) möchte x & y als getrennte Werte, nicht als ein Wert.

    Jetzt hast du aber trotzdem einen String der 2 Zahlen enthält die du einzeln haben möchtest und 1-2 Zeichen ", " die du nicht haben möchtest.
    Du musst jetzt also diese 2 Zahlen aus dem String bekommen.
    Da es insofern robust sein sollte, dass es auch nur mit "," oder mit mehren Leerzeichen korrekt arbeiten soll, würde ich dir StringRegExp empfehlen.

    Hier ist ein Tutorial.
    Hier kannst du es online ausprobieren.

    Ansonsten:

    AutoIt Quelltext

    1. StringRegExp($string, "(\d+)", 3)

    Mit IsArray(...) bzw UBound(...) Rückgabe überprüfen.
    Und für Arrays im allgemeinen.

    Schöne Grüße
    Jason

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jason“ ()

    Für diesen Fall habe ich den Punkt "Ansonsten:" eingefügt.
    Der Befehl macht das, was ich oben gesagt habe.

    D.h.

    AutoIt Quelltext

    1. StringRegExp($string, "(\d+)", 3)

    Extrahiert dir die beiden Zahlen.
    Dann musst du dich nur noch damit beschäftigen wie man mit Arrays umgeht [Unterpunkt Arrays].
    Du musst mit IsArray(...) zuerst überprüfen ob die Variable ein Array ist.
    Danach mit UBound(...) ob du auch wirklich 2 Zahlen und nicht nur eine extrahiert hast.
    Sonst bekommst du sehr bald eine Fehlermeldung die so lautet:
    : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

    Dann kannst du auch schon:

    AutoIt Quelltext

    1. MouseClick("left", $array[0], $array[1])
    nutzen.

    Probier es erst mal so, ansonsten hier fehlt weniger:
    Am besten erst selbst probieren, ansonsten ist hier eine Hilfe

    AutoIt Quelltext

    1. Local $string = GUICtrlRead($hInput)
    2. Local $array = StringRegExp($string, "(\d+)", 3)
    3. ;IsArray & UBound nutzen
    4. ;Sonst bekommst du sehr bald eine Fehlermeldung die so lautet:
    5. ;: ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    6. MouseClick("left", $array[0], $array[1])