Keybinder

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Keybinder-Tutorial
    by Vincent

    Geehrte Spieler,
    heute möchte ich euch Step-By-Step zeigen wie ihr euch einen eigenen Keybinder mit GUI Fenster und INI Speicherungen und Ausgabe erstellen könnt. Als erstes überlegen wir uns natürlich, was für eine Art von Keybinder wir scripten möchten (das ist eine Script- keine Programmiersprache). Ich entscheide mich zu einem Zivilistenkeybinder.

    Wir laden uns den SciTE4AutoHotkey runter, klick!
    Wir laden uns den AHK Compiler runter, klick!

    Unsere erste Zeile schaut dann so aus:

    Quellcode

    1. #IfWinActive, GTA:SA:MP

    Darin enthalten ist die Abfrage/Angabe, das der Keybinder nur geht wenn GTA SA:MP aktiv ist.

    Dann folgen die zwei Zeilen:

    Quellcode

    1. #UseHook
    2. #SingleInstance, Force

    direkt unter der ersten Zeile.

    Im Prinzip können wir jetzt schon mit dem GUI anfangen, Befehle machen wir im nachhinein.
    Die erste Zeile schaut wie folgt aus:

    Quellcode

    1. Gui, Show, x30 y40 h200 w600, Zivilistenkeybinder

    Das bedeutet also, wir erstellen bzw. zeigen demjenigen, der den Keybinder öffnet ein GUI-Fenster mit der Höhe von 200 und der Breite von 600 (x & y zeigen, bei mir zumindest, keine Wirkung, aber am besten auf x30 und y40 lassen).

    Wir haben nun ein, leider noch, komplett leeres GUI-Fenster mit den Maßen 200x600.
    Erstellen wir nun ein kleines Bild für den Hintergrund.
    -> WICHTIG: Das Bild muss eine .png Datei sein und in dem gleichen Ordner wie der Keybinder sein!
    Mein Bild heißt "Keybinderhintergrund.png".

    Quellcode

    1. Gui, Add, Picture, x0 y0 h200 w600, Keybinderhintergrund.png

    Das Bild sollte zum gutaussehen die gleichen Maße (h,w) wie die des GUI-Fensters haben, indem Falle 200x600.

    Zur Übersicht arbeite ich schon seit Anfang meiner Keybinderzeit am liebsten mit kleinen, sogenannten "Listboxen". Diese sieht man und verschwinden nicht zwischen verschiedenen Hintergrundbildfarben.
    Ich erstelle die erste Listbox.

    Quellcode

    1. Gui, Font, S10 Cred, Arial
    2. Gui, Add, Listbox, x50 y50 w150 h25 ReadOnly, Test123

    Die erste Zeile "Gui, Font ..." ist dazu da um die Textfarbe/Art zu bestimmen. Ich nehme immer Arial, euch überlassen. S10 heißt, Schriftgröße 10, ihr könnt es beliebig verändern. Cred heißt das die Schriftfarbe Rot ist, belieb wählbar, auch "Cblue" oder "Cblack" möglich uvm. Ihr müsst nicht über jede "Gui, Add, Listbox ..." eine Zeile mit diesen Cblue ect erstellen. Erstellt ihr eine ist das ok und er macht es für alle Zeilen. Beispiel:

    Quellcode

    1. Gui, Font, S10 Cred, Arial
    2. Gui, Add, Listbox, x25 y25 w150 h25 ReadOnly, Überschrift
    3. Gui, Font, S08 Cblue, Arial
    4. Gui, Add, Listbox, x50 y25 w150 h25 ReadOnly, Test1
    5. Gui, Add, Listbox, x75 y25 w150 h25 ReadOnly, Test2
    6. Gui, Add, Listbox, x100 y25 w150 h25 ReadOnly, Test3
    7. Gui, Add, Listbox, x125 y25 w150 h25 ReadOnly, Test4
    8. Gui, Add, Listbox, x150 y25 w150 h25 ReadOnly, Test5
    9. Gui, Font, S12 Cyellow, Arial
    10. Gui, Add, Listbox, x175 y25 w150 h25 ReadOnly, Große Überschrift
    11. ...
    Alles anzeigen

    In der zweiten Zeile sieht man "Gui, Add, Listbox ..."
    Bedeutungen der x,y,w,h:
    • x: Verschiebt die Box nach rechts/links (je nach Wert)
    • y: Verschiebt die Box nach oben/unten (je nach Wert)
    • w: Ist die länge der Box
    • h: Ist die Höhe der Box
    Ich positioniere meine Box nun auf der x-Koordinate "25" und der y-Koordinate "25" und ändere "Test123" in "/fill". Ich speichere die AHK und öffne sie, sehe eine GUI mit einer Listbox und dem Text "/fill".Ich erstelle, nur zwecks der Demonstration für euch noch eine zweite Listbox.Auf Koordinate x50 und y25 (50 da Sie sich sonst überlappen, da die Höhe der ersten Box ja 25 war).

    Quellcode

    1. Gui, Add, Listbox, x50 y25 w150 h25 ReadOnly, /repair
    Ein einfaches "return" in der nächsten Zeil sagt dem ganzen das die GUI-Phase für's erste beendet ist...
    Und dahinter machen wir jetzt erstmal einen kleinen Stopp und schauen ob wir auf dem gleichen Stand sind:

    Quellcode

    1. #IfWinActive, GTA:SA:MP
    2. #UseHook
    3. #SingleInstance, Force
    4. Gui, Show, x500 y0 h200 w600,Zivilistenkeybinder
    5. Gui, Add, Picture, x0 y0 h200 w600, Keybinderhintergrund.png
    6. Gui, Font, S10 Cred, Arial
    7. Gui, Add, Listbox, x25 y25 w150 h25 ReadOnly, /fill
    8. Gui, Add, Listbox, x50 y25 w150 h25 ReadOnly, /repair
    9. return

    Genau so weit? Gut, weiter gehts!

    Kommen wir nun schon zu der INI-Speicherung, Befehle als letztes (so mach ich das zumindest).
    Wir erstellen einen Button, das geht wie folgt:

    Quellcode

    1. Gui, Add, Button, x75 y25 w150 h25 gSave, Speichern

    Wir adden also im Gui einen Button mit der x-Koordinate 75, der y-Koordinate 25 und der Länge von 150 sowie der Höhe von 25. Die Funktion dazu nennen wir "Save", das g fällt später weg, denn das sagt nur das es eine Funktion beinhaltet. Auf dem Button steht nun "Speichern", könnt ihr ändern wenn ihr wollt.

    Nur, was soll er jetzt speichern?
    Ja geht ja nicht, wir müssen ja erstmal ein kleines Feld für ihn erstellen wo man, ich nehme das Beispiel "Namen" eingeben kann.

    Quellcode

    1. Gui,Add,Edit,x100 y25 w150 h25 vName, %Nickname%

    Wir adden diesmal ein "Edit"-Feld (man kann das Feld also beliebig editieren im Keybinder) Koordinaten x100 y25 sowie Breite von 150 und Höhe 25 mit der Variable (ich glaub dafür ist das v) "Name" und wir können es dann später beliebig mit "%Nickname%" wiedergeben.

    Öffnen wir nun den Keybinder neu sehen wir zwei Listbox mit "/fill" und "/repair" sowie ein "Speichern"-Button und ein "Edit-"Feld wo nichts drin steht man aber was reinschreiben kann (noch ohne Funktion).

    Jetzt fügen wir die Funktionen zum Button und Editfeld ein:

    Quellcode

    1. Save:
    2. Gui, Submit
    3. IniWrite, %Nickname%, Optionen.ini, settings, Name
    4. Gui, Show
    5. return

    Man sieht also dort "Writet" (dt.: schreibt) er in die Ini den Nicknamen aus dem Editfeld und speichert den in der (müssen wir erstellen) "Optionen.ini" Datei.

    So schauts also aus:

    Quellcode

    1. #IfWinActive, GTA:SA:MP
    2. #UseHook
    3. #SingleInstance, Force
    4. Gui, Show, x500 y0 h200 w600,Zivilistenkeybinder
    5. Gui, Add, Picture, x0 y0 h200 w600, Keybinderhintergrund.png
    6. Gui, Font, S10 Cred, Arial
    7. Gui, Add, Listbox, x25 y25 w150 h25 ReadOnly, /fill
    8. Gui, Add, Listbox, x25 y50 w150 h25 ReadOnly, /repair
    9. Gui, Add, Button, x25 y125 w150 h20 gSave, Name
    10. Gui,Add,Edit,x25 y75 w150 h20 vName, %Nickname%
    11. return
    12. Save:
    13. Gui, Submit
    14. IniWrite, %Nickname%, Optionen.ini, settings, Name
    15. Gui, Show
    16. Return
    Alles anzeigen


    Noch machen wir noch folgendes hinzu, damit auch alles funktioniert...

    Quellcode

    1. ~Escape::
    2. Suspend Permit
    3. Suspend Off
    4. Hotkey, t, On
    5. Hotkey, Enter, Off
    6. Hotkey, Escape, Off
    7. return
    8. +T::
    9. ~t::
    10. Suspend On
    11. Hotkey, Enter, On
    12. Hotkey, Escape, On
    13. Hotkey, t, Off
    14. return
    15. ~NumpadEnter::
    16. ~Enter::
    17. Suspend Permit
    18. Suspend Off
    19. SendInput {Enter}
    20. Hotkey, t, On
    21. Hotkey, Enter, Off
    22. Hotkey, Escape, Off
    23. return
    24. GuiClose:
    25. {
    26. Gui, +Lastfound
    27. fadeout1 = 255
    28. fadeout2 = 20
    29. loop 20
    30. {
    31. WinSet, Transparent, %fadeout1%
    32. sleep %fadeout2%
    33. fadeout1 -= 10
    34. fadeout2 -= 1
    35. }
    36. Gui, -Lastfound
    37. }
    38. exitapp
    39. return
    Alles anzeigen

    Einfach drunterklatschen. 8)
    Damit legt der Keybinder nicht automatisch los usw., ich denke wenn man das kurz liest, versteht man es. :)

    So.
    Jetzt machen wir noch schnell einen Bind mit einem Beispiel des Namens.

    Quellcode

    1. 1::
    2. SendInput tHallo, mein Name ist %Nickname%.{enter}
    3. return

    Wenn man also die 1 drückt dann wird inGame folgendes ausgegeben:
    Hallo, mein Name ist Vincent.
    Aber nur, wenn ich auch "Vincent" in die Editbox eingegeben habe.

    Ich denke es sollte alles klar sein.
    Ich wünsche euch viel Spaß beim scripten & probieren.
    Bei Fragen/Problemen bitte eine PN, und "bedanken" nicht vergessen.

    Grüße.
    - Vincent
    "Das müsste jetzt funktionieren..."

    ---
    Mit freundlichen Grüßen,
    Vincent Petritz
  • schönes tutorial nur habe ich einen Fehler:

    Quellcode

    1. keybinder 1.ahk (62) : ==> This parameter contains a variable name missing its ending percent sign.


    Zeile:

    Quellcode

    1. WinSet, Transparent, údeout1%


    Würde mir wünschen das du
    ~Escape::
    Suspend Permit
    Suspend Off
    Hotkey, t, On
    Hotkey, Enter, Off
    Hotkey, Escape, Off
    return

    +T::
    ~t::
    Suspend On
    Hotkey, Enter, On
    Hotkey, Escape, On
    Hotkey, t, Off
    return

    ~NumpadEnter::
    ~Enter::
    Suspend Permit
    Suspend Off
    SendInput {Enter}
    Hotkey, t, On
    Hotkey, Enter, Off
    Hotkey, Escape, Off
    return

    GuiClose:
    {
    Gui, +Lastfound
    fadeout1 = 255
    fadeout2 = 20
    loop 20
    {
    WinSet, Transparent, údeout1%
    sleep údeout2%
    fadeout1 -= 10
    fadeout2 -= 1
    }
    Gui, -Lastfound
    }
    exitapp
    return


    das vielleicht auch noch erklärt... denn den rest habe ich verstanden nur das nicht

    MfG
  • Ja gut, das liegt an der Formatierung, sorry! :)
    Ergänze das "GuiClose" mal mit:
    [pwn]
    GuiClose:
    {
    Gui, +Lastfound
    fadeout1 = 255
    fadeout2 = 20
    loop 20
    {
    WinSet, Transparent, %fadeout1%
    sleep %fadeout2%
    fadeout1 -= 10
    fadeout2 -= 1
    }
    Gui, -Lastfound
    }
    exitapp
    return [/pwn]
    "Das müsste jetzt funktionieren..."

    ---
    Mit freundlichen Grüßen,
    Vincent Petritz
  • Jetzt reichts mal, klärt das per PN!


    Und @Vincent:
    GuiClose:
    {
    Gui, +Lastfound
    fadeout1 = 255
    fadeout2 = 20
    loop 20
    {
    WinSet, Transparent, údeout1%
    sleep údeout1%
    fadeout1 -= 10
    fadeout2 -= 1
    }
    Gui, -Lastfound
    }
    exitapp
    return

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SSL ()

  • [pwn]Gui, Show, x30 y40 h200 w600, Easy Keybinder

    Gui, Add, Picture, x0 y0 h200 w600, Keybinderhintergrund.png

    Gui, Font, S10 Cred, Arial
    Gui, Add, Listbox, x25 y25 w150 h25 ReadOnly, Easy Keybinder
    Gui, Font, S08 Cblue, Arial
    Gui, Add, Listbox, x50 y25 w150 h25 ReadOnly, Befehl 1
    Gui, Add, Listbox, x75 y25 w150 h25 ReadOnly, Befehl 2
    Gui, Add, Listbox, x100 y25 w150 h25 ReadOnly, Befehl 3
    Gui, Add, Listbox, x125 y25 w150 h25 ReadOnly, Befehl 4
    Gui, Add, Listbox, x150 y25 w150 h25 ReadOnly, Befehl 5
    Gui, Font, S12 Cyellow, Arial
    Gui, Add, Listbox, x175 y25 w150 h25 ReadOnly, EASY KEYBINDER BY G-MAC_X3(nach einem Tutorial auf easy-scripting.net)

    Gui, Add, Button, x75 y25 w150 h25 gSave, Speichern
    Gui,Add,Edit,x100 y25 w150 h25 vName, %Nickname%[/pwn]
  • Also wenn ich die bei mir einfüge geht es, dein Fehler liegt darin:

    Quellcode

    1. Gui, Show, x30 y40 h200 w600, Easy Keybinder
    2. Gui, Add, Picture, x0 y0 h200 w600, Keybinderhintergrund.png
    3. Gui, Font, S10 Cred, Arial
    4. Gui, Add, Listbox, x25 y25 w150 h25 ReadOnly, Easy Keybinder
    5. Gui, Font, S08 Cblue, Arial
    6. Gui, Add, Listbox, x50 y0 w150 h25 ReadOnly, Befehl 1
    7. Gui, Add, Listbox, x50 y25 w150 h25 ReadOnly, Befehl 2
    8. Gui, Add, Listbox, x50 y50 w150 h25 ReadOnly, Befehl 3
    9. Gui, Add, Listbox, x50 y75 w150 h25 ReadOnly, Befehl 4
    10. Gui, Add, Listbox, x50 y100 w150 h25 ReadOnly, Befehl 5
    11. Gui, Font, S12 Cyellow, Arial
    12. Gui, Add, Listbox, x50 y125 w150 h25 ReadOnly, EASY KEYBINDER BY G-MAC_X3(nach einem Tutorial auf easy-scripting.net)
    13. Gui, Add, Button, x50 y150 w150 h25 gSave, Speichern
    14. Gui,Add,Edit,x50 y175 w150 h25 vName, %Nickname%
    Alles anzeigen
    "Das müsste jetzt funktionieren..."

    ---
    Mit freundlichen Grüßen,
    Vincent Petritz