Keybinder-Tutorial
by Vincent
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:
Darin enthalten ist die Abfrage/Angabe, das der Keybinder nur geht wenn GTA SA:MP aktiv ist.
Dann folgen die zwei Zeilen:
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:
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".
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.
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
- Gui, Font, S10 Cred, Arial
- Gui, Add, Listbox, x25 y25 w150 h25 ReadOnly, Überschrift
- Gui, Font, S08 Cblue, Arial
- Gui, Add, Listbox, x50 y25 w150 h25 ReadOnly, Test1
- Gui, Add, Listbox, x75 y25 w150 h25 ReadOnly, Test2
- Gui, Add, Listbox, x100 y25 w150 h25 ReadOnly, Test3
- Gui, Add, Listbox, x125 y25 w150 h25 ReadOnly, Test4
- Gui, Add, Listbox, x150 y25 w150 h25 ReadOnly, Test5
- Gui, Font, S12 Cyellow, Arial
- Gui, Add, Listbox, x175 y25 w150 h25 ReadOnly, Große Überschrift
- ...
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
Und dahinter machen wir jetzt erstmal einen kleinen Stopp und schauen ob wir auf dem gleichen Stand sind:
Quellcode
- #IfWinActive, GTA:SA:MP
- #UseHook
- #SingleInstance, Force
- Gui, Show, x500 y0 h200 w600,Zivilistenkeybinder
- Gui, Add, Picture, x0 y0 h200 w600, Keybinderhintergrund.png
- Gui, Font, S10 Cred, Arial
- Gui, Add, Listbox, x25 y25 w150 h25 ReadOnly, /fill
- Gui, Add, Listbox, x50 y25 w150 h25 ReadOnly, /repair
- 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:
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.
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:
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:
Alles anzeigen
Noch machen wir noch folgendes hinzu, damit auch alles funktioniert...
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.
Wenn man also die 1 drückt dann wird inGame folgendes ausgegeben:
Wir erstellen einen Button, das geht wie folgt:
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.
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:
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
- #IfWinActive, GTA:SA:MP
- #UseHook
- #SingleInstance, Force
- Gui, Show, x500 y0 h200 w600,Zivilistenkeybinder
- Gui, Add, Picture, x0 y0 h200 w600, Keybinderhintergrund.png
- Gui, Font, S10 Cred, Arial
- Gui, Add, Listbox, x25 y25 w150 h25 ReadOnly, /fill
- Gui, Add, Listbox, x25 y50 w150 h25 ReadOnly, /repair
- Gui, Add, Button, x25 y125 w150 h20 gSave, Name
- Gui,Add,Edit,x25 y75 w150 h20 vName, %Nickname%
- return
- Save:
- Gui, Submit
- IniWrite, %Nickname%, Optionen.ini, settings, Name
- Gui, Show
- Return
Noch machen wir noch folgendes hinzu, damit auch alles funktioniert...
Quellcode
- ~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, %fadeout1%
- sleep %fadeout2%
- fadeout1 -= 10
- fadeout2 -= 1
- }
- Gui, -Lastfound
- }
- exitapp
- return
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.
Wenn man also die 1 drückt dann wird inGame folgendes ausgegeben:
Aber nur, wenn ich auch "Vincent" in die Editbox eingegeben habe.Hallo, mein Name ist Vincent.
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
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
---
Mit freundlichen Grüßen,
Vincent Petritz