autoheal/mana mit gui

  • hi leute

    hab ein problem wolte ein autoheal/mana script für ein game machen mit ein gui nur weis ich leider nicht wie ich das mitn gui hinbekommen soll
    hab das gui mit koda form designer gemacht nur weis ich leider nicht wie ich das jetzt alles einbinden soll

    soweit bin ich bis jetzt gekommen

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Mc.Neal\Desktop\gui maker\Forms\AHM.kxf
    $Form1 = GUICreate("AForm1", 181, 221, 401, 206)
    $Health_Checkbox = GUICtrlCreateCheckbox("Health_Checkbox", 16, 19, 17, 17)
    $Health_Box = GUICtrlCreateCombo("Health 10%", 40, 16, 121, 25)
    GUICtrlSetData(-1,"Health 20%|Health 30%|Health 40%|Health 50%|Health 60%|Health 70%|Health 80%|Health 90%")
    $Health_key_select = GUICtrlCreateCombo("F1", 40, 40, 57, 25)
    GUICtrlSetData(-1, "F2|F3|F4|F5|F6|F7|F8|F9|F10")
    ;
    ;
    ;
    $Mana_Checkbox = GUICtrlCreateCheckbox("Mana_Checkbox", 16, 75, 17, 17)
    $Mana_Box = GUICtrlCreateCombo("Mana 10%", 40, 72, 121, 25)
    GUICtrlSetData(-1,"Mana 20%|Mana 30%|Mana 40%|Mana 50%|Mana 60%|Mana 70%|Mana 80%|Mana 90%")
    $Mana_key_select = GUICtrlCreateCombo("F1", 40, 96, 57, 25)
    GUICtrlSetData(-1, "F2|F3|F4|F5|F6|F7|F8|F9|F10")
    ;
    ;
    ;
    $WindSprint_Checkbox = GUICtrlCreateCheckbox("WindSprint_Checkbox", 16, 128, 17, 17)
    $WindSprint_text = GUICtrlCreateLabel("Wind Sprint (Beta)", 40, 128, 90, 17)
    $Start_button = GUICtrlCreateButton("&Start", 24, 168, 41, 17, 0)
    ;
    ;
    $Stop_button = GUICtrlCreateButton("&Stop", 72, 168, 41, 17, 0)
    ;
    ;
    $Exit_button = GUICtrlCreateButton("&Exit", 120, 168, 41, 17, 0)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Exit_button
    Exit
    EndSwitch
    WEnd

    [/autoit]

    das ist was ich einbinden wolte

    [autoit]

    While 1
    $health = PixelGetColor ( 88 , 14 )
    If $health = 0x846963 Then
    Send ("{F9}")
    Sleep (750)
    endif
    $mana = PixelGetColor ( 87 , 27 )
    If $mana = 0x4A496B Then
    Send ("{F10}")
    Sleep (750)
    endif
    Wend

    [/autoit]


    meine frage ist wie mach ich das das man "Send ("{Fkey}")" im gui selber wählbar sowie welche hp %

    beispiel: ich wähle "Health 60%" aus und key nehm ich "F5"
    und die checkbox die allgemein überprüft ob man health oder mana überhaupt haben möchte zum schluss nur noch start und es solte laufen
    kann das mir jemand erklären wie ich das machen könnte solte?
    ich möchte nicht das mir jemand es komplett schreibt möchte eher nur besser verstehn wie ich das machen solte...
    hab von autoit leider nicht so die ahnung eigendlich hab ich garkeine ahnung davon

    danke schonmal

    grez Mc.Neal

    Einmal editiert, zuletzt von Mc.Neal (23. März 2007 um 15:45)

  • Im Prinzip müsstest Du diesen Teil deines Codes

    in die While-Schleife des koda-Codes einfügen, z.B. so:

    Spoiler anzeigen


    #include <GUIConstants.au3>

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Mc.Neal\Desktop\gui maker\Forms\AHM.kxf
    $Form1 = GUICreate("AForm1", 181, 221, 401, 206)
    $Health_Checkbox = GUICtrlCreateCheckbox("Health_Checkbox", 16, 19, 17, 17)
    $Health_Box = GUICtrlCreateCombo("Health 10%", 40, 16, 121, 25)
    GUICtrlSetData(-1,"Health 20%|Health 30%|Health 40%|Health 50%|Health 60%|Health 70%|Health 80%|Health 90%")
    $Health_key_select = GUICtrlCreateCombo("F1", 40, 40, 57, 25)
    GUICtrlSetData(-1, "F2|F3|F4|F5|F6|F7|F8|F9|F10")
    ;
    ;
    ;
    $Mana_Checkbox = GUICtrlCreateCheckbox("Mana_Checkbox", 16, 75, 17, 17)
    $Mana_Box = GUICtrlCreateCombo("Mana 10%", 40, 72, 121, 25)
    GUICtrlSetData(-1,"Mana 20%|Mana 30%|Mana 40%|Mana 50%|Mana 60%|Mana 70%|Mana 80%|Mana 90%")
    $Mana_key_select = GUICtrlCreateCombo("F1", 40, 96, 57, 25)
    GUICtrlSetData(-1, "F2|F3|F4|F5|F6|F7|F8|F9|F10")
    ;
    ;
    ;
    $WindSprint_Checkbox = GUICtrlCreateCheckbox("WindSprint_Checkbox", 16, 128, 17, 17)
    $WindSprint_text = GUICtrlCreateLabel("Wind Sprint (Beta)", 40, 128, 90, 17)
    $Start_button = GUICtrlCreateButton("&Start", 24, 168, 41, 17, 0)
    ;
    ;
    $Stop_button = GUICtrlCreateButton("&Stop", 72, 168, 41, 17, 0)
    ;
    ;
    $Exit_button = GUICtrlCreateButton("&Exit", 120, 168, 41, 17, 0)

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Exit_button
    Exit
    EndSwitch

    ;Hier kommt dein Code rein
    $health = PixelGetColor ( 88 , 14 )
    If $health = 0x846963 Then
    Send ("{F9}")
    Sleep (750)
    EndIf
    $mana = PixelGetColor ( 87 , 27 )
    If $mana = 0x4A496B Then
    Send ("{F10}")
    Sleep (750)
    EndIf
    ;Ende von deinem Code
    WEnd

    Allerdings frage ich mich, ob dein Vorhaben fehlerhaft funktioniert, da Du ja die Pixelfarbe abfragst. Sollte sich an der entsprechenden Stelle einmal versehentlich die Farbe befinden, z.B. in einem anderen Fesnter, würde deine Funktion unbeabsichtigt ausgeführt werden.

  • hallo

    was du wilst ist das in deinem game (wow?!) tastendrücke simuliert werden oder?

    für was du da eine gui brauchst ist fraglich...

    ich würde mir das script aufn desktop machen und dann mit winactivate wow?! hochlegen. dann macht er genau das was du da schon gescriptet hast.


    mfg

    Ps: hey mein erster beitrag :musik2:

  • Zitat

    für was du da eine gui brauchst ist fraglich...

    @derda:
    Er braucht die GUI, weil er es dem User überlassen will, mit welcher Taste Leben bzw. Mana aufgefüllt werden. Allerdings macht das nur Sinn, wenn er das Teil nachher verbreiten will.

    Zitat

    und dann mit winactivate wow?! hochlegen

    @Mc.Neal:
    Die Idee von derda ist nicht schlecht, der einzufügende Code währe dann:

    Spoiler anzeigen


    $health = PixelGetColor ( 88 , 14 )
    If $health = 0x846963 Then
    WinActivate("DerFensterTitel")
    Send ("{F9}")
    Sleep (750)
    EndIf
    $mana = PixelGetColor ( 87 , 27 )
    If $mana = 0x4A496B Then
    WinActivate("DerFensterTitel")
    Send ("{F10}")
    Sleep (750)
    EndIf

    Wie Du den Code in deine GUI einfügst habe ich dir ja vorher schon gesagt.

    Einmal editiert, zuletzt von penta.phoenix (23. März 2007 um 19:58)

  • ok erstmal danke
    das solte schon fehler frei gehn da es immer eine variable gibt

    [autoit]

    $Health_Checkbox = GUICtrlCreateCheckbox("Health_Checkbox", 16, 19, 17, 17)
    $Health_Box = GUICtrlCreateCombo("Health 10%", 40, 16, 121, 25)
    GUICtrlSetData(-1,"Health 20%|Health 30%|Health 40%|Health 50%|Health 60%|Health 70%|Health 80%|Health 90%")

    [/autoit]


    da mit jeden % ein anderer wert genommen werden sollte so würde ja keine ungewohltes healing passiern
    nur da ist ja mein problem
    wie mach ich das das er bei health 40% denn wert für 40% nimt und nicht für 50% oder andere wenn er das auswählt

  • Zitat


    wie mach ich das das er bei health 40% denn wert für 40% nimt und nicht für 50% oder andere wenn er das auswählt

    Du steuerst da ja über eine Kombobox($Health_Box).
    Deren Wert liest Du ein und machst dann eine If-Schleife.

    Spoiler anzeigen


    $Wert_Health_Box = GUICtrlRead($Health_Box)
    If $Wert_Health_Box = "Health 40%" Then
    ;Tue was bei "Health 40%" getan werden muss
    ElseIf $Wert_Health_Box = "Health 50%" Then
    ;Tue was bei "Health 50%" getan werden muss
    EndIf

    Den Code musst Du halt erweitern, bis alle "Health %"-Werte abgedeckt sind.
    Für welches Game machst Du das eigentlich und wie willst Du z.B. bei 40%-igem Leben 60% heilen?

    2 Mal editiert, zuletzt von penta.phoenix (23. März 2007 um 19:55)

  • Hi,
    ah da ist ja dein Prog wieder :)
    Schau mal hier:

    [autoit]


    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("AForm1", 633, 454, 193, 115)
    $Button1 = GUICtrlCreateButton("Health 20%", 64, 48, 65, 25, 0)
    $Button2 = GUICtrlCreateButton("Health 70%", 64, 88, 65, 25, 0)
    $Health_Box = GUICtrlCreateCombo("", 40, 16, 121, 25)
    GUICtrlSetData(-1,"Health 20%|Health 30%|Health 40%|Health 50%|Health 60%|Health 70%|Health 80%|Health 90%")

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    MsgBox(0,"",GUIctrlRead($Button1))
    GUICtrlSetData($Health_Box,GUIctrlRead($Button1))

    Case $Button2
    MsgBox(0,"",GUIctrlRead($Button2))
    GUICtrlSetData($Health_Box,GUIctrlRead($Button2))

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

    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]


    MfG
    Der_Doc

  • Zitat

    Original von penta.phoenix
    Für welches Game machst Du das eigentlich und wie willst Du z.B. bei 40%-igem Leben 60% heilen?


    ich mach das gerade für Scions of Fate
    und mit dem richtigen healpot macht er die 60% hp wieder voll da in allgemein die player wenig leben haben bin zb nen 49er bower und habe gerademal 920hp und die blader (tanker) haben auch nicht viel mehr gerademal 1200-1400hp nehmen wir jetzt denn größten healpot healt er 800hp

    Einmal editiert, zuletzt von Mc.Neal (23. März 2007 um 20:00)

  • Du solltest die F1-F12 Keys einschränken, z.B. F1-F6 für Health und F7-F12 für Mana, da Du sonst eine Überprüfung schreiben musst, damit kein Key doppelt belegt ist.

    Auserdem musst Du deinen Code noch ändern. Anstatt

    Send("{F9}") ;Ist nur ein Beispiel

    benötigst Du:

    Send($Health_key_selected)

    Ansonsten weiß ich nämlich nicht, warum Du die Tastenauswahl in der GUI hast.

    Einmal editiert, zuletzt von penta.phoenix (23. März 2007 um 20:19)

  • game hotkeys sind F1-F10 deswegen wolte ich die auch variable machen
    edit: erstmal danke für die dicke hilfe :D
    nur werd ich jetzt fix nen format c machen... da hat sich was in meine explorer.exe eingeschlichen und kein antivir programm erkennt es...

    so bis später :hammer:

    edit2: währe fast fertig wenn da jetzt nicht noch etwas gekommen währe :(
    der will immer nen "while" haben nur weis ich jetzt nicht wo der fehler liegt

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Mc.Neal\Desktop\gui maker\Forms\AHM.kxf
    $Form1 = GUICreate("AForm1", 181, 221, 401, 206)
    $Health_Checkbox = GUICtrlCreateCheckbox("Health_Checkbox", 16, 19, 17, 17)
    $Health_Box = GUICtrlCreateCombo("Health 10%", 40, 16, 121, 25)
    GUICtrlSetData(-1,"Health 20%|Health 30%|Health 40%|Health 50%|Health 60%|Health 70%|Health 80%|Health 90%")
    $Health_key_select = GUICtrlCreateCombo("F1", 40, 40, 57, 25)
    GUICtrlSetData(-1, "F2|F3|F4|F5|F6|F7|F8|F9|F10")
    ;
    $Mana_Checkbox = GUICtrlCreateCheckbox("Mana_Checkbox", 16, 75, 17, 17)
    $Mana_Box = GUICtrlCreateCombo("Mana 10%", 40, 72, 121, 25)
    GUICtrlSetData(-1,"Mana 20%|Mana 30%|Mana 40%|Mana 50%|Mana 60%|Mana 70%|Mana 80%|Mana 90%")
    $Mana_key_select = GUICtrlCreateCombo("F1", 40, 96, 57, 25)
    GUICtrlSetData(-1, "F2|F3|F4|F5|F6|F7|F8|F9|F10")
    ;
    $WindSprint_Checkbox = GUICtrlCreateCheckbox("WindSprint_Checkbox", 16, 128, 17, 17)
    $WindSprint_text = GUICtrlCreateLabel("Wind Sprint (Beta)", 40, 128, 90, 17)
    $Start_button = GUICtrlCreateButton("&Start", 24, 168, 41, 17, 0)
    $Stop_button = GUICtrlCreateButton("&Stop", 72, 168, 41, 17, 0)
    $Exit_button = GUICtrlCreateButton("&Exit", 120, 168, 41, 17, 0)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Exit_button
    Exit
    EndSwitch
    ;hier kommt noch die anderen sachen rein (Start und Stop)
    ; <------>
    ;Health Script
    ;Health 10%
    $Wert_Health_Box = GUICtrlRead($Health_Box)
    If $Wert_Health_Box = "Health 10%" Then
    $health1 = PixelGetColor ( 88 , 14 )
    If $health1 = 0x846963 Then
    Send($Health_key_select)
    Sleep (750)
    EndIf
    ;Health 20%

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

    ;Health 30%

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

    ;Health 40%

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

    ;Health 50%

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

    ;Health 60%

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

    ;Health 70%

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

    ;Health 80%

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

    ;Health 90%

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

    ;Mana Script
    ;Mana 10%

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

    ;Mana 20%

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

    ;Mana 30%

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

    ;Mana 40%

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

    ;Mana 50%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 50%" Then
    $Mana5 = PixelGetColor ( 87 , 27 )
    If $Mana5 = 0x4A496B Then
    Send($Mana_key_select)
    Sleep (750)
    ;Mana 60%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 60%" Then
    $Mana6 = PixelGetColor ( 98 , 29 )
    If $Mana6 = 0x211C21 Then
    Send($Mana_key_select)
    Sleep (750)
    ;Mana 70%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 70%" Then
    $Mana7 = PixelGetColor ( 114 , 29 )
    If $Mana7 = 0x75A5D84 Then
    Send($Mana_key_select)
    Sleep (750)
    ;Mana 80%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 80%" Then
    $Mana8 = PixelGetColor ( 124 , 29 )
    If $Mana8 = 0x84799C Then
    Send($Mana_key_select)
    Sleep (750)
    ;Mana 90%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 90%" Then
    $Mana9 = PixelGetColor ( 137 , 29 )
    If $Mana9 = 0x7B7594 Then
    Send($Mana_key_select)
    Sleep (750)
    WEnd

    [/autoit]

    edit2.1: könnte mir jemand sagen wo der fehler liegt wegen das "while?

    3 Mal editiert, zuletzt von Mc.Neal (24. März 2007 um 01:38)

  • Das ist ganz einfach, Du hast vergessen ein paar If-Schleifen zu beenden.


    Da fehlen zwei EndIfs, und das in so ziemlicher jeder deiner If-Schleifen.
    Ich gehe davon aus, dass Du die Schleifen verschachteln willst und dass der Sinn der Schleifen folgender ist:
    Wenn der Wert der Manabox = 60%, dann
    hole die Pixelfarbe und überprüfe sie.
    Falls Farbwert in Ordnung, sende key.

    Der Code dafür währe(Achtung, dein kompletter Code, alle Schleifen so bearbeitet):

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

    #Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Mc.Neal\Desktop\gui maker\Forms\AHM.kxf
    $Form1 = GUICreate("AForm1", 181, 221, 401, 206)
    $Health_Checkbox = GUICtrlCreateCheckbox("Health_Checkbox", 16, 19, 17, 17)
    $Health_Box = GUICtrlCreateCombo("Health 10%", 40, 16, 121, 25)
    GUICtrlSetData(-1,"Health 20%|Health 30%|Health 40%|Health 50%|Health 60%|Health 70%|Health 80%|Health 90%")
    $Health_key_select = GUICtrlCreateCombo("F1", 40, 40, 57, 25)
    GUICtrlSetData(-1, "F2|F3|F4|F5|F6|F7|F8|F9|F10")
    ;
    $Mana_Checkbox = GUICtrlCreateCheckbox("Mana_Checkbox", 16, 75, 17, 17)
    $Mana_Box = GUICtrlCreateCombo("Mana 10%", 40, 72, 121, 25)
    GUICtrlSetData(-1,"Mana 20%|Mana 30%|Mana 40%|Mana 50%|Mana 60%|Mana 70%|Mana 80%|Mana 90%")
    $Mana_key_select = GUICtrlCreateCombo("F1", 40, 96, 57, 25)
    GUICtrlSetData(-1, "F2|F3|F4|F5|F6|F7|F8|F9|F10")
    ;
    $WindSprint_Checkbox = GUICtrlCreateCheckbox("WindSprint_Checkbox", 16, 128, 17, 17)
    $WindSprint_text = GUICtrlCreateLabel("Wind Sprint (Beta)", 40, 128, 90, 17)
    $Start_button = GUICtrlCreateButton("&Start", 24, 168, 41, 17, 0)
    $Stop_button = GUICtrlCreateButton("&Stop", 72, 168, 41, 17, 0)
    $Exit_button = GUICtrlCreateButton("&Exit", 120, 168, 41, 17, 0)

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Exit_button
    Exit
    EndSwitch
    ;hier kommt noch die anderen sachen rein (Start und Stop)
    ; <------>
    ;Health Script
    ;Health 10%
    $Wert_Health_Box = GUICtrlRead($Health_Box)
    If $Wert_Health_Box = "Health 10%" Then
    $health1 = PixelGetColor ( 88 , 14 )
    If $health1 = 0x846963 Then
    Send($Health_key_select)
    Sleep (750)
    EndIf
    EndIf
    ;Health 20%

    ;Health 30%

    ;Health 40%

    ;Health 50%

    ;Health 60%

    ;Health 70%

    ;Health 80%

    ;Health 90%

    ;Mana Script
    ;Mana 10%

    ;Mana 20%

    ;Mana 30%

    ;Mana 40%

    ;Mana 50%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 50%" Then
    $Mana5 = PixelGetColor ( 87 , 27 )
    If $Mana5 = 0x4A496B Then
    Send($Mana_key_select)
    Sleep (750)
    EndIf
    EndIf
    ;Mana 60%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 60%" Then
    $Mana6 = PixelGetColor ( 98 , 29 )
    If $Mana6 = 0x211C21 Then
    Send($Mana_key_select)
    Sleep (750)
    EndIf
    EndIf
    ;Mana 70%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 70%" Then
    $Mana7 = PixelGetColor ( 114 , 29 )
    If $Mana7 = 0x75A5D84 Then
    Send($Mana_key_select)
    Sleep (750)
    EndIf
    EndIf
    ;Mana 80%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 80%" Then
    $Mana8 = PixelGetColor ( 124 , 29 )
    If $Mana8 = 0x84799C Then
    Send($Mana_key_select)
    Sleep (750)
    EndIf
    EndIf
    ;Mana 90%
    $Wert_Mana_Box = GUICtrlRead($Mana_Box)
    If $Wert_Mana_Box = "Mana 90%" Then
    $Mana9 = PixelGetColor ( 137 , 29 )
    If $Mana9 = 0x7B7594 Then
    Send($Mana_key_select)
    Sleep (750)
    EndIf
    EndIf
    WEnd

    [/autoit]

    2 Mal editiert, zuletzt von penta.phoenix (24. März 2007 um 08:23)

  • Kleiner Tipp: benutze doch SciTE, das ist ein ganz guter Editor mit Syntax-Highlighting.
    Außerdem zeigt er Fehler an, wenn Du ein Skript aus ihm heraus startest.