Autohotkey Tutorial!

  • Guten Tag, da ich schon seid Jahren mit AutoHotkey Arbeite erstelle ich hier mal ein Tutorial damit jeder was davon hat und weiß wie man einen z.B GTA Keybinder macht. Ein Keybinder ist ein Programm das du mit Autohotkey (AHK) selbst erstellen kannst das bewirkt wenn du Ingame die Taste z.B 1 drückst der Satz "Stop Polizei stehen bleiben" kommt und soetwas. Wenn ihr dieses Tutorial richtig liest würdet ihr alle Fehler vermeiden und keine Fragen stellen hierzu mehr.

    1. Vorbereitung
    Du lädst dir AutoHotkey runter (Klick mich)
    Du Installierst Autohotkey


    2. Neues Dokument
    Du kannst nach dem Installieren auf dem Desktop mit "Rechtsklick > Neu > Neu AutoHotkey Script" ein neues AutoHotkey


    3. Dokument Editieren
    Dokument Öffnen. Dies öffnet sich eigentlich durch Rechtsklick "Edit Script" mit einem Normalen Texteditor wie Editor oder Wordpad ich empfehle Editor.


    4. Erste Funktion
    Nun hast du etwas an Text im Editor das löscht du einfach raus da man es nicht braucht.
    Um einen Keybind zu erstellen gilt folgendes Kürzel Schema: "1::" nur halt ohne die " und "
    Diese Funktion bewirkt : Wenn Taste 1 gedrückt wird erhält man folgende aktion:
    Unter der Taste 1 kommt die Funktion wie "Send Guten Tag" (überall ohne die " und "!!!)
    Da diese Funktion auch aufhören soll schreibst du "return" darunter somit ist die erste
    Funktion erfolgreich eingefügt. Nun kannst du das Textdokument speichern, dann das
    Script auf dem Desktop durch Doppelklick oder Rechtsklick "Run Script" laufen lassen.
    Dann gehst du in ein Textdokument egal wo und drückst einmal die Taste 1 und schon
    wird automatisch der Text "Guten Tag" geschrieben.


    5. Send und SendInput
    Der Unterschied zwischen "Send Guten Tag" und "SendInput Guten Tag" ist sehr leicht
    zu verstehen, man kann Send als selbstgeschriebenen Text sehen wenn man die Taste
    drückt und SendInput ist dazu da das man den ganzen Text dort stehen hat aufeinmal.


    6. Keybind Text/Befehl
    So nun Editieren wir erneut das Script und löschen nochmal alles dadrine damit wir neu
    anfangen können. Zunächst erstellen wir einen Befehl für Ingame (GTA) wie /enter der
    fast auf jedem Server nützlich ist. Dies belegen wir auf Taste 2 des NumPads. Und ein
    Text auf Taste U:

    Das {enter} bedeutet das Automatisch Enter gedrückt wird das heißt ohne {enter} steht
    ingame immernoch im Eingabefeld "/enter" und du musst selbst Enter drücken deswegen
    Empfehle ich immer {enter} dahinter zu haben. Nun startet ihr wieder das Script nach
    dem Speichern und geht Ingame oder in ein Textdokument und drückt die Tasten U und
    NumPad zwei einmal oder öfter. Das t nach SendInput bedeutet das er t drückt damit das
    Eingabefeld in GTA startet zum Schreiben ist halt genau so wie ihr es schreibt.


    7. Countdown mit Sonderzeichen
    Es gibt hier auch Timer genau wie im Pawno scripting nur viel leichter gestaltet. Man
    kann durch Sleep "Value" einen Timer starten sprich: "Sleep 1000" bedeutet das ein
    Timer von 1Sekunde gestartet wird dannach folgt unterliegende Aktion. Hier ist ein
    Beispiel ein Countdown auf Taste F6:

    Nun fragt ihr euch sicher warum anstatt nur eines Ausrufezeichens "!" es mit Klammern
    umsetzt wurde "{!}" dies kommt da mit einem bloßen ausrufezeichen würde eine andere
    Funktion abgespielt werden die wir nicht wollen. Die beiden Klammen werden Ingame
    nicht angezeigt aber es ist notwenig sie zu haben sonst geht das Script in Arsch und die
    Keybinds funktionieren nicht.


    8. Keybinder nur in GTA Funktionabel
    Da hier alle die einen Keybinder für GTA Erstellen nicht wollen das er auf dem Desktop
    weiterläuft und nur wenn GTA gestartet ist (Nicht im ESC Menü) müsst ihr oben ins
    Script folgendes eintragen:

    Zitat

    #IfWinActive, GTA:SA:MP

    Dies einfach nach ganz oben ins Script über alles andere.


    9. Doppelbind mit Doppelsatz
    So nun zur Funktion das der Bind (Die Funktion) nur kommt wenn man zwei Tasten
    drückt wie Alt und 1 oder STRG und NumPad2 würde !1:: oder ^NumPad2:: sein. Das ! vor
    der 1 bedeutet das erst Alt UND 1 gedrückt werden muss und das ^ vor NumPad2 das STRG
    und die NumPad Taste 2 gedrückt werden müssen. Die beiden Punkte wieder das die nach-
    -folgende Aktion startet. Nun zwei Sätze wie diese:

    Zitat

    ^NumPad5::
    SendInput t/enter{enter}
    SendInput t/me betritt das Gebäude{enter}
    return

    Das sind zwei Sätze die beide sofort nacheinander abgespielt werden und bringen halt das
    man in ein Gebäude geht und gleichzeitig der Aktions (/me) text das man ein Gebäude betritt
    kommt. Dies könnt ihr sicher beliebig verändern und auch mehr hinzufügen man kann unendlich
    machen einfach untereinander.


    10. Notizen im Script
    In Autohotkey kann man auch Notizen zur Übersicht erstellen wie in Pawno beim Scripten mit //TEXT oder /*TEXT*/ nur halt mit ;Text. Ein Beispiel wäre:

    Zitat

    NumPad2::
    SendInput t/enter{enter} ;Zum reingehen ins Gebäude...
    return

    11. Fehlfunktionen vermeiden
    Damit ihr fehlfunktionen vermeiden könnt müsst ihr oben in das Script folgendes eintragen

    Dies bewirkt folgendes:
    Wenn du t drückst werden alle andere Tasten Funktionen ausgeschaltet sprich wenn du z.B einmal auf Taste 1 den Text Hallo hast und auf Taste 2 den Text tschüß hast und Ingame gerade chattest und z.B /call 112 machst geht dies nichtmehr denn dann kommt aufeinmal /call hallohallotschüß da die Binds aktiviert sind. Dies vermeidest du mit dem ersten Absatz. Dies schaltet sich wieder ein sobald du das zweite drückst. Der Escape:: absatz bringt das wenn du im Menü keine Tasten nutzen kannst damit du wenn du z.B ausversehen 1 drückst nicht Enter gedrückt wird.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

    4 Mal editiert, zuletzt von TPO ()

  • 12. String im Text
    Du kannst nun auch einen Wert in deinen Text setzen wie die Uhrzeit dafür musst du erstmal das Format der Uhrzeit festlegen indem du: "FormatTime,Uhrzeit, HH:mm:ss" nach deinem Kürzel wie "NumPad1::" schreibst. Dannach der Satz indem die Uhrzeit/Datum wiedergespiegelt werden: SendInput t/me guckt auf sein Handy (%Uhrzeit%){Enter} und schon kommt Ingame durch drücken der Taste NumPad1 der Text (/me Text) Name guckt auf sein Handy (Datum - Uhrzeit) wie z.B (01.02.1993 - 15:04) so was das Ungefähr. Hier das Beispiel:

    Zitat

    U::
    FormatTime,Uhrzeit, HH:mm:ss
    SendInput t/me schaut auf die Uhrzeit. (%Uhrzeit%) {Enter}
    return


    13. Tasten sperren (Keybinder aus/einschalten)
    Da man nicht immer zum Aus/Einschalten seines Keybinders das Game minimieren will und beenden kann man dies auch Ingame per Tastendruck erledigen ich setze einfach einen Suspend das bedeutet deaktivierung aller Tasten auf Taste F12 und mache einen /me (Aktions) text dazu damit es schöner aussieht:

    Zitat

    F12::
    Suspend
    SendInput t/me schaltet den Keybinder ein/aus{enter}
    return

    14. Zufallsprinzip
    Manchmal wünscht man sich einfach ein Zufallsprinzip wie wenn man dauernd die Taste 1 z.B für den Zoll (/zoll) drückt soll nicht immer der Text "/me öffnet den Zoll" oder so kommen sondern automatisch eine Abwechslung dies geht per Random Funktion. Dafür müssen wir erstmal den Zufall Definieren auf einem Kürzel wie Taste Z mit: z:: dannach als Definierung für den Zufall von nur 2 Verschiedenen Zufalls texten: Random, Zufall, 1, 2. Damit auch folgende Aktion abgespielt wird einfach darunter noch "GoSub, Zufallsbeispieltest%Zufall%" und ein "return. Nun könnt ihr anstatt mit Kürzel die Funktion nehmen per Zufallsbeispieltest1: und Zufallsbeispieltest2: anstatt 2Doppelpunkten nur einmal da es oben schon genommen wurde. Das Beispiel wäre:

    Damit wir aber mehrere Zufallsmöglichkeiten haben ändern wir die Anzahl von 2 z.B auf 4 das heißt anstatt zwischen 1, und 2 nun zwischen 1 und 4 indem wir Random, Zufall, 1, 2 auf Random, Zufall, 1, 4 ändern. Das würde dann so aussehen:

    Ganz wichtig ist das wenn ihr mehrer Zufallsprinzipien einbaut das ihr den Runnamen wie in Beispiel 1 "Beispiel" oder in Beispiel 2 "Nocheinbeispiel" immer ändert bei jedem Zufallsprinzip sonder werden falsche abgerufen und dies doppel/dreifach und was habt ihr nicht gesehen, dies wollt ihr natürlich vermeiden deswegen immer ändern.



    15. Kurzbind (Eigener Befehl)
    Nun zu einem Klasse Teil nähmlich den Kurzbinds, ein Kurzbind ist zum Beispiel für GTA ein Virtueller Befehl ich mache hier Beispiele einmal einen Kurzbind für GTA und einmal einen Kurzbind für den Internet Browser beim Posten eines Beitrages. Zunächstmal anstatt KÜRZEL:: wie 1:: nähmen wir :?:/neuerbefehlsname:: wie :?:/test:: das heißt nicht ihr Könnt Ingame /test eingeben und dann spielt sich die Aktion wie gewohnt ab leider geht dies noch nicht vllt. in der Nächsten Autohotkey version aber ihr könnt "/test " eingeben das heißt Leertaste anstatt Enter Ingame ist leider so. Hier ist nun ein Beispiel ein Anrufbeantworter für GTA Ingame wenn jemand Anruft einfach T drücken /ab eingeben und Leertaste zum Bestätigen drücken dann kommen die Sätze, das Suspend Permit ist gemacht damit alle anderen Binds ausgeschaltet sind, ist Notwendig!

    Und nun ein anderes Beispiel für ein Post in einem Forum zum Beispiel hier, anstatt das man immer nach jedem Post z.B Mit freundlichen Grüßen MWP schreiben will oder einen anderne Text einfach das man indem man "sign" schreibt die unterschrift und alles kommt macht man folgendes:

    Zitat

    :?:sign::
    Suspend Permit
    SendInput Mit freundlichen Grüßen ihr MWP
    return

    Das g habe ich absichtlich weggelassen damit das Bild jetzt nicht kommt aber so würde dann deine unterschrift kommen du kannst auch BB Codes benutzen halt logisch. Ganz wichtig ist beim GTA Ingame Kurzbind das der erste Satz nach dem eingeben von /test KEIN t/enter hat als kein t vor dem / oder überhaupt t als erstes. Den dieser wird hier nicht benötig.



    16. Zur .ahk Compilen
    Da man nicht will das andere Leute den Keybinder den man selbst erstellt hat editieren können manchmal kann man ihn auch Compilen zur eigenanwendung nicht notwendig aber bei weitergabe würde ich dazu raten. Du drückst einfach nach dem speichern der Datei mit Rechtsklick auf die Datei und wählst "Compile Script" nun kommt ein neues Icon dort wo ein H oder A drauf ist das ist dann das Programm was keiner mehr Editieren kann.



    17. Zur .exe Converten
    Man kann es auch zur .exe Compilen dann ist es noch sicherer dazu braucht man das Programm ahk to exe das beim Download mit dabei ist (Link oben). Dann gehst du einfach auf "Start > Alle Programme > Autohotkey > Convert .exe to .ahk" und schon öffnet sich ein Programm. Beim ersten Browse wählst du dein Script aus. Beim zweiten wohin es gespeichert werden soll mit welchen Namen. Beim dritten nicht notwendig aber wenn man will ein eigenes Icon aussuchen und die letzten beiden Felder mit dem Passwort versehen das du dir ausdenken kannst ich schreibe immer irgendetwas rein wie "möplawlxdomg123testlol" bei beiden damit man es nicht entschlüsseln kann man selbst braucht das Password niewieder da man ja die .ahk hat. Zum Compilen hier auch Converten genannt drückst du auf den Button ">Convert<" und schon erstellt sich innerhalb weniger Millisekunden die Exe.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

    2 Mal editiert, zuletzt von TPO ()

  • 18. GUI Fenster
    So für die fortgeschrittenen nun ein Fenster das sich beim Start des Keybinders/Programms öffnet nehmen wir ein Fenster mit den Maßen höhe 610Pxl und breite 960Pxl. Dazu packen wir GANZ oben in das Script über allem anderen egal was drine ist: Gui, Show, x30 y40 h610 w960, Hier der Fenstertitel. Zu den Koordinaten wird etwas in Punkt 19 erklärt. So nun unter dem Gui einfach ein return setzen und dann den restlichen Code. Das Fenster ist noch leer aber bei Punkt 21 kommen weiter sachen.

    Zitat

    Gui, Show, x30 y40 h610 w960, Hier der Fenstertitel!!!

    19. Koordinaten
    So nun zu den Koordinaten eben hatten wir x30 y40 h610 w960 das ist das gleiche wie in anderen Scriptsprachen eigentlich. Die x Route bedeutet wie weit es nach unten geht die y wie weit es nach rechts geht. Die h wie hoch das Fenster/Der Button oder sonst was ist und w wie breit das Fenster/Der Button oder sonst was ist. Das heißt bei dem Beispiel wie bei Punkt 18 das es 30Pixel unter dem Anfang des Desktop angezeigt wird(Das Fenster) und 40Pixel nach Rechts. Das Fenster ist 610Pixel hoch und 960Pixel breit.



    20. Exit Window
    Da das Programm/Das Script/Der Keybinder oder sonst was sich nicht schließt wenn man das Fenster (GUI) durch das Drücken des Kreuzes (Oben Rechts) drückt muss man unter dem Gui ganz nach unten unter dem Gui aber über dem Code wie #IfWinActive, GTA:SA:MP machen und unter dem return der unter Gui, Show, x30 ... ... ist. Also in prinzip so: Gui, Return, Settings, Binds. Ihr fügt einfach unter dem Return genau das ein:

    Nur das fettgedruckte und die Punkte einfach wegdenken sind Platzhalter. Das bringt wenn man das Kreuz drückt um das Fenster zu schließen das auch das Programm beendet wird. Wenn man nicht will das das Programm durch die schließung des Fensters beendet wird diese 2Zeilen einfach weglassen.



    21. Bilder/Text
    Da das Fenster nicht so leer sein soll könnt ihr es Beliebig verändern/verzieren. Ich würde erstmal mit einem Bild und Textboxen anfangen da es leichter ist wenn ihr es euch einfach selbst anguckt ist hier das Beispiel das Bild kommt imemr direkt unter "Gui, Show, x30 y40 h610 w960, Hier der Fenstertitel!!!" aber über dem return unter dem GUI!!!

    Zitat

    Gui, Add, Picture, x0 y0 h610 w960, Bildname.png

    Die Routen sind die gleichen x0 und y0 bedeuten diesmal das es direkt an der oberen Ecke vom Fenster sitzt. Die h und w Kords einfach die gleichen wie groß das Fenster ist damit das Bild so groß wie das Fenster ist. Es werden nur .png Bilder gelesen und es MUSS .png hinten dranstehen NICHT an der Bilddatei sondern im Script: Wenn das Bild auf dem Desktop ist z.B und "Sonnenblume" heißt muss es im Script so sein: "Sonnenblume.png" dabei muss das Bild auf dem Desktop auch das .png Format haben. Das Bild MUSS im selben Ordner wie z.B im Ordner "Test" auf dem Desktop sein oder direkt auf dem desktop sein wenn das Script da ist! Nun zu den Textboxen oder Listboxen unterschiede werden noch bei Punkt 22 erklärt:

    Zitat

    Gui, Add, Edit, x10 y10 w50 h20 ReadOnly, Text1
    Gui, Add, Edit, x10 y40 w50 h20, Text2
    Gui, Add, Listbox, x10 y70 w50 h20 , Text3

    22. Textbox Arten
    So nun die erklärungen was was ist, die Beispiele sind aus Punkt 21 aus dem Zitat. Das erste (Gui, Add, Edit... ReadOnly...) ist eine Box mit grauen Hintergrund in der der Beliebiger Text steht wie im Beispiel "Text 1" sie ist nicht veränderbar desshalb auch "ReadOnly". Das zweite (Gui, Add, Edit, ..., Text2) ist eine Textbox mit weißen hintergrund wo der Text entfern/veränderbar ist wenn man den Keybinder startet. Das dritte (Gui, Add, Listbox, ..., Text3) ist eine Textbox mit weißen hintergrund wo der Hintergrund bei Anklicken grau oder blau wird (unterschiedlich) mit dem Text Inhalt "Text 3" der während des offenen Keybinders nicht veränder bar ist nur lesbar.


    23. Font/Farbe ändern
    Sicher kann man auch den Font (Schriftart/stil) und die Farbe (Schriftfarbe) ändern indem man einfach über den Buttons/Listboxen/editboxen etc. folgendes hinzufügt:

    Zitat

    Gui, Font, S10 Cblack, Arial
    ;Font ändern / Arial = Schriftart | CBlack = Color Black | S10 = Size 10

    Nur das Fett gedruckte daunter ist meine Erklärung dazu.


    24. Buttonerstellung
    Mit "Gui, Add, Button, x222 y272 w140 h30 , Text auf dem Button" kannst du einen Button erstellen einfach mal mit den Koordinaten rumspielen der Teil kommt unter die List/editboxen oder UNTER aber unter Gui, Add, Picture und Gui, Show!! Das ist wichtig. Der Button ist immer grau aber die Schriftart und Schriftfarbe ist veränderbar. Dies ist nur ein Button wenn man raufklickt passiert noch nichts die Funktion erkläre ich im nächsten Punkt.

    25. Buttonfunktion

    Damit ein Button den wir bei Punkt 25 erstellt haben hat noch keine Funktion wenn man draufklickt derzeitig diese fügen wir aber jetzt hinzu. Nur wir müssen vorher "Gui, Add, Button, x222 y272 w140 h30 , Text auf dem Button" in "Gui, Add, Button, x222 y272 w140 h30 gTestfunktionsname, Testname" ändern. Nun kannst du direkt daunter folgendes machen Testfunktionsname45: um die Funktion auszufügen und eine Nachricht (Message = MSG) an den der rauf drückt. Wir machen es einfach mal so die erklärungen zu Msgboxen (Nachrichten) erkläre ich dannach).

    Zitat

    Testfunktionsname:
    msgbox,0, Titel, Nachrichten Text!
    return

    26. Nachrichtenboxen(msgbox)
    Eine Nachricht funktioniert mit msgbox,STIL,TITEL,TEXT beispiel msgbox,0,Fehler,Es trat Fehler 1234 auf!. Die Styles sind welche Button daunter sind wie Ja und Nein oder nur der Button ok, oder Wiederholen Button. Damit die Nachrichten Box auch eine Funktion hat müsst ihr Punkt 28 genau durchlesen!

    27. Nachrichtenboxfunktion
    Da durch "msgbox,4,Fehler,Es trat Fehler 1234 auf!" eine Nachricht kam passiert aber nichts wenn man auf den Button Ja oder Nein drückt deswegen hier die Funktion, es wird erst gefragt wenn man auf Den Button drückt ob man Beenden will wenn man ja drückt beendet das Programm wenn man nein Drückt passiert nichts außer das die nachricht weg geht.

    28. Gui Creator
    Ihr lädt euch den Gui Creator runter (Hier klicken) mit dem ihr anstatt alles einzelnd mit Buttons/Bildern/Textboxen zu machen in einem Programm erstellen könnt ganz einfach der dann den Code generiert. Es ist wirklich einfach zu bedienen einfach etwas mit rumspielen und die Readme lesen! Oben sind folgende sachen abgebildet in der Reihe wo auch der "Ok" Button abgebildet ist: 1. Ok Button | 2. Checkbox | 3. Radiobox | 4. Textbox | 5. Groupbox | 6. Picture | 7. DropAndDownBox | 8. ComboBox | Listbox | ListView | DateTime | Kalender | Prozess | Slider | Hotkey | Tab | UpDown | ChangeFont. Die einzelnden Präzisen erklärungen folgen woanders. Durch das klicken auf einen dieser Sachen kannst du es auf die Fläche plazieren und die größe und einstellungen verändern auch per Rechtsklick. Genaue erklärungen findest du auch im Autohotkey Forum (Autohotkey.com).

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

    Einmal editiert, zuletzt von TPO ()

  • 29. Klickfunktionen
    Nun kommen wir zur Klickfunktion das heißt wenn man auf einen Button klickt soll etwas bestimmtes Passieren. Zwar habe ich euch schon gezeigt wie es geht das wenn man auf einen Button klickt eine Nachricht kommt aber wie man sich diese Funktion aussucht zeige ich nun hier. Erstmal erstellen wir einen Button: Gui, Add, Button, x40 y40 w100 h20 gNeuesfenstertest, Testbuttonname den Button können wir nun dank gNeuesfenstertest mit "Neuesfenstertest:" ausrufen wenn man das gNeuesfenstertest weglässt kann man den Button durch "ButtonTestbuttonname::" ausrufen ich mache es lieber mit gNeuesfenstertest dieser Name muss bei jedem Button geändert werden sonst würde bei jedem Button die selbe Funktion gestartet werden, und das wollen wir nicht also nun haben wir den button aber keine Funktion die wir nun ausrufen mit:

    Zitat

    Neuesfenstertest:
    ;------Aktion------
    return

    So wir wollen nun die Funktion hinzufügen das ein NEUES Fenster kleines mit etwas Text geöffnet wird. Dafür erstellen wir wie oben die Funktion Gui, Show ... ist eigentlich ganz easy hier ein Beispiel:

    So nun aber das man das Fenster auch schließen kann ist ganz einfach anstatt "GuiClose: und ExitApp" machen wir nun dies:

    Zitat

    GuiClose3:
    WinKill

    Die drei bedeutet das Fenster 3 geschlossen wird. Da es ein neues fenster ist das kommen soll steht auch überall Gui, 3: anstatt nur Gui, Show ... bei jedem Fenster das man erstellt muss man eine andere Zahl nehmen alle Zahlen gehen außer 0 1 und 2 da diese automatisch verlegt sind denn 0 und 1 sind das Hauptfenster und 2 wird für die Close Funktion benötigt vllt. wird das in der nächsten Autohotkey Version geändert.



    30. IniRead und Save
    So nun kommen wir zum iniRead und Save Prinzip erstmal da nicht jeder weiß was das ist damit kannst du z.B eine Edit Box (Weiße Box in der man im Keybinder/Programm Text reinschreiben kann veränderbar) erstellen wenn man dort was reinschreibt wird das in einer Textdatei gespeichert und beim Starten des Keybinders wieder gelesen man kann dies auch z.B Ingame für einen Anrufbeantworter benutzen wenn man /ab macht (Anrufbeantworter) mit Text kann man dann dort z.B %name% eintragen und dann erscheint der Name den man in die Box eingetragen hat oder der Text halt wie man will wenn man nichts einträgt steht dann dort "ERROR" Ingame da es leer ist. Man kann genau wie in anderen Scriptsprachen etwas abrufen per GuiControlGet, IfExist, if und anderen Sachen. Wir nehmen es einfach mal mit Nickname, zunächst brauchen wir eine Editbox und die Readfunktion darunter:

    Zitat

    IniRead, Nickname, Daten.ini, Ingame Daten:, Nickname
    Gui, Add, Edit, x100 y70 w140 h20 vnamen, %Nickname%

    Die Erklärungen sind folgendes "IniRead" bedeutet das er die Datei "Daten.ini" ausliest dort steht in der Datei am Ende [Ingame Daten:] da wir hinter Daten.ini Ingame Daten: stehen haben. Dies kann man beliebig verändern. Das Nickname bedeutet das dort steht unter [Ing....] "Nickname = " ca. bei jedem anders eigentlich da ich ein anderes System nutze. Und damit man das Nickname auch ausrufen kann benötigt man %Nickname% deswegen steht es unten in der Editbox vnamen ist nur die Funktion dafür um sie abzulesen wie gTestbutton nur da hier etwas eingetragen wird was variert ist es ein v. Das ist ja alles schön und gut nur bringt dies noch nichts da man auch das Speichern braucht.
    Mit GuiControlGet,Nickname ,,Namen können wir nun die Editbox auslesen und mit IniWrite, %Nickname%, Daten.ini, Ingame Daten: , Nickname etwas in die Datei reinschreiben. Dies fügen wir unter einen Button damit man es manuel speichern kann. Dazu erstellen wir einfach einen Button mit einer Funktion.

    Zitat

    Gui, Add, Button, x100 y100 w140 h20 gSavetest, Speichern

    Die Buttonfunktion müssen wir nun mit Savetest: abrufen und dann das GuiControlGet und IniWrite einfügen als Funktion und mit einem return versiegeln.

    Zitat

    Save:
    GuiControlGet,Nickname ,,Namen
    IniWrite, %Nickname%, Daten.ini, Ingame Daten: , Nickname
    ;------Weitere Funktionen hier.. ------
    return

    Da man auch wissen will ob man die Daten gespeichert hat kann man eine Nachricht einfügen wo ;--- ... steht. Indem man msgbox,262144,Daten gespeichert, Daten erfolgreich geseichert! hinzufügt ist ein Beispiel probiert es einfach mal. Die 262144 ist eine besondere Art von Msgbox mit einem Icon schaut selbst. Nun brauchen wir auch den Bind auf einem Kürzel wo wir den Nickname auslesen nehmen wir einfach mal einen Kurzbind wie /ab steht für Anrufbeantworter. Hier ist es fertig gemacht:

    Wenn wir nun Ingame /ab eingeben und mit Leertaste anstatt Enter bestätigen kommen diese Sätze und Ingame steht nicht %Nickname% mehr sondern der Name den du in die Box im Keybinder eingetragen hast.


    31. Prozess Balken
    So nun wieder etwas für fortgeschrittene wir erstellen ein Prozess balken auch genannt Progressbar. Erstmal erstellen wir dafür eine Prozessbar indem wir:

    Zitat

    Gui, Add, Progress, x50 y50 w300 h20 cBlue vProgressbarname

    Im Gui im Script einfügen. Mit den Koordinaten halt rumspielen oder den GuiCreator benutzen. Nun haben wir eine Progressbar doch die funktioniert nicht ohne eine Funktion die von vProgressbarname ausgespielt wird. Die Farbe der Progressbar ist Balu (cBlue = color Blue) es gibt fast alle Farben wie white, pink, yellow, black, grey könnt nehmen was ihr wollt ich nehme einfach mal Blau. So Nun können wir meinetwegen 2Buttons erstellen einmal + und einmal - mit der wir der Progressbar den Strich verlängern und verkürzen können.

    Zitat

    Gui, Add, Button, x50 y75 w150 h20 gProzessPlus, +
    Gui, Add, Button, x200 y75 w150 h20 gProzessMinus, -

    So nun haben wir zwei Buttons die aber ohne die Funktion auch nichts bringen diese fügen wir nun hinzu:

    So nun ist es eigentlich feritg man kann auf Plus drücken und die Bar steigt um 10% oder auf Minus und sie sinkt um 10% nun machen wir aber einfach mal eine Progressbar die Automatisch steigt mit einem Hindernis wo sie wieder auf 1% gesetzt wird und Nachrichtenboxen.


    32. Datums/Uhrzeit
    Nun erstellen wir eine Datums anzeige dafür ist wie bei fast allem Gui, Show vorrausgesetzt im Script oben wie es bei nem anderen Punkt steht. Nun denkt ihr sicher das es viel ist aber nein es ist ganz leicht nur eine Zeile:

    Zitat

    Gui, Add, DateTime, x400 y200 w100 h30 ,

    Das wars eigentlich schon aber ihr sollt natürlich mehr wissen als nur ein Datum hinzuzufügen. Man kann es auch anders hinufügen per %A_DD%.%A_MM%.%A_YYYY% Dies bedeutet DD = Tag, MM= Monat und YYYY= Jahr die Punkte halt als Trennzeichen sonst wären alle Zahlen zusammen. Nun intigrieren wir das in verschiedene Boxen:

    Zitat

    Gui, Add, Edit, x657 y10 w78 h18 v1 ReadOnly, %A_DD%.%A_MM%.%A_YYYY%
    Gui, Add, Edit, x657 y10 w78 h18 v1, %A_DD%.%A_MM%.%A_YYYY%
    Gui, Add, Text, x657 y10 w78 h18, %A_DD%.%A_MM%.%A_YYYY%
    Gui, Add, Listbox, x657 y10 w78 h18, %A_DD%.%A_MM%.%A_YYYY%

    Man kann es auch in den Fenster Titel intigrieren dafür schreiben wir einfach bei

    Zitat

    Gui, Show, x30 y40 h610 w960, Testfenstertitel

    Hinten dran mit Datum: %A_DD%.%A_MM%.%A_YYYY% rein das würde so aussehen:

    Zitat

    Gui, Show, x30 y40 h610 w960, Testfenstertitel mit Datum: %A_DD%.%A_MM%.%A_YYYY%

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

    3 Mal editiert, zuletzt von TPO ()

  • 31. Prozess Balken
    So nun wieder etwas für fortgeschrittene wir erstellen ein Prozess balken auch genannt Progressbar. Erstmal erstellen wir dafür eine Prozessbar indem wir:

    Zitat

    Gui, Add, Progress, x50 y50 w300 h20 cBlue vProgressbarname

    Im Gui im Script einfügen. Mit den Koordinaten halt rumspielen oder den GuiCreator benutzen. Nun haben wir eine Progressbar doch die funktioniert nicht ohne eine Funktion die von vProgressbarname ausgespielt wird. Die Farbe der Progressbar ist Balu (cBlue = color Blue) es gibt fast alle Farben wie white, pink, yellow, black, grey könnt nehmen was ihr wollt ich nehme einfach mal Blau. So Nun können wir meinetwegen 2Buttons erstellen einmal + und einmal - mit der wir der Progressbar den Strich verlängern und verkürzen können.

    Zitat

    Gui, Add, Button, x50 y75 w150 h20 gProzessPlus, +
    Gui, Add, Button, x200 y75 w150 h20 gProzessMinus, -

    So nun haben wir zwei Buttons die aber ohne die Funktion auch nichts bringen diese fügen wir nun hinzu:

    So nun ist es eigentlich feritg man kann auf Plus drücken und die Bar steigt um 10% oder auf Minus und sie sinkt um 10% nun machen wir aber einfach mal eine Progressbar die Automatisch steigt mit einem Hindernis wo sie wieder auf 1% gesetzt wird und Nachrichtenboxen.


    32. Datums/Uhrzeit
    Nun erstellen wir eine Datums anzeige dafür ist wie bei fast allem Gui, Show vorrausgesetzt im Script oben wie es bei nem anderen Punkt steht. Nun denkt ihr sicher das es viel ist aber nein es ist ganz leicht nur eine Zeile:

    Zitat

    Gui, Add, DateTime, x400 y200 w100 h30 ,

    Das wars eigentlich schon aber ihr sollt natürlich mehr wissen als nur ein Datum hinzuzufügen. Man kann es auch anders hinufügen per %A_DD%.%A_MM%.%A_YYYY% Dies bedeutet DD = Tag, MM= Monat und YYYY= Jahr die Punkte halt als Trennzeichen sonst wären alle Zahlen zusammen. Nun intigrieren wir das in verschiedene Boxen:

    Zitat

    Gui, Add, Edit, x657 y10 w78 h18 v1 ReadOnly, %A_DD%.%A_MM%.%A_YYYY%
    Gui, Add, Edit, x657 y10 w78 h18 v1, %A_DD%.%A_MM%.%A_YYYY%
    Gui, Add, Text, x657 y10 w78 h18, %A_DD%.%A_MM%.%A_YYYY%
    Gui, Add, Listbox, x657 y10 w78 h18, %A_DD%.%A_MM%.%A_YYYY%

    Man kann es auch in den Fenster Titel intigrieren dafür schreiben wir einfach bei

    Zitat

    Gui, Show, x30 y40 h610 w960, Testfenstertitel

    Hinten dran mit Datum: %A_DD%.%A_MM%.%A_YYYY% rein das würde so aussehen:

    Zitat

    Gui, Show, x30 y40 h610 w960, Testfenstertitel mit Datum: %A_DD%.%A_MM%.%A_YYYY%

    31. Stoppuhr erstellen (Ingame/Desktop)
    Nach einer langen Updatepause hier ein neuer Tutorial Abschnitt. Jeder weiß sicher was eine Stoppuhr ist, doch soetwas für SA:MP benutzen oder für den Desktop als Anwendung? Autohotkey ermöglicht dies! Als erstes bestimmen wir den Tastenkürzel also welche Taste gedrückt werden soll um die Zeit zu stoppen, hier im Beispiel nehme ich mal die Taste 1 (Zehnertastatur nicht Numpad)...

    Code
    1::


    Damit man auch benachrichtigt wird (Ingame):

    Code
    SendInput tStoppuhr gestartet{!}{enter}


    Falls ihr eine Desktop Stoppuhr macht:

    Code
    MsgBox, 4144, Stoppuhr, Zeit gestartet!, 3


    Nun brauchen wir eine Variable das bedeutet eine Zahl die man nicht sieht die bei 0 startet was am Ende die Zeit darstellen soll.

    Code
    Zeit=0


    Doch diese Zahl geht nicht automatisch hoch nun gibt es zwei Möglichkeiten einmal einen Timer wiederholend mit Interval von einer Sekunde oder einfach einen Loop, ich tendiere zum Loop ist einfach und Praktischer.

    Code
    Loop,
    {


    Jetzt haben wir den Loop der muss aber noch bewirken, dass die Variable (Virtuele Zahl) hochgezählt wird jede Sekunde um +1, das bewirken wir fast genau so wie in Pawn mit Variablenname++ oder Variablenname=2 doch wir wollen die Variable nicht höher setzen einmal sondern jedesmal also folgendes:

    Code
    Zeit++


    Das Script kann sich leider keine Variablen merken wie Pawn,C++ etc. deswegen müssen wir die bisherige Zeit in eine Datei schreiben da sich die jede Sekunde vermehrt mehrmals sogar:

    Code
    IniWrite,%Zeit% ,Daten.ini ,Einstellungen,Sek


    %Zeit% ist nun die Neue Zeit die gespeichert wird in der Datei "Daten.ini" in dem Ordner/Verzeichnis wo die .ahk Datei gespeichert ist. Es wurde als Sek (Sekunde) gespeichert das heißt %Zeit% heißt nun erstmal Sek (Sekunde). Doch man muss die Stopuhr auch Stoppen können dafür einfach ein Tastenkürzel auswählen und mit dem KeyWait Prinzip konfriguieren sieht dann so aus:

    Code
    KeyWait, 2, D T1


    Nun kann man die Taste 2 drücken und dann wird ein ErrorLevel versendet doch dieser muss auch aufgerufen werden am besten direkt dannach ohne irgendwelche Verzögerungen!

    Code
    If !ErrorLevel
         {


    So nun kommt alles was passieren soll wenn man die Stopuhr stoppt, erstmal müssen wir die Zeit wieder auslesen aus der Datei "Daten.ini" dies machen wir fast genau so wie wir es reingeschrieben haben nur wir benutzen IniRead.

    Code
    IniRead,Zeit,Daten.ini,Einstellungen,Sek


    Doch man will nicht die gestoppte Zeit in Sekunden alleine haben, man kann es erweitern beliebig auf Stunden, Tage, Monate, Jahre soweit man es brauch doch Minuten reicht meiner ansicht meistens. Dafür ist eine kleine Rechnung die ich gerne erkläre aber nicht wirklich notwendig zu verstehen ist.

    Code
    Min=%Zeit% 
              Min/=60
              Min1=%Min%
              Min1*=60
              Sek=%Zeit%
              Sek-=%Min%


    Das wars auch schon fast, nun fehlt noch die Meldung das man den Keybinder gestoppt hat wieder in zwei Varianten einmal die für Ingame (SA:MP) und die für den Desktop, dabei müssen Minuten und Sekunden aus der Rechnung genommen werden dies ist ganz einfach mit dem %Prinzip%.

    Code
    SendInput, t Stopuhr gestoppt{!} (%Min%Min - %SSek%Sek){enter}


    Und wieder auch für den Desktop verwender:

    Code
    MsgBox, 4144, Stoppuhr, Zeit gestoppt, 10


    Das wars auch schon, doch man will ja nicht das die Stopuhr obwohl sie schon gestoppt ist durch den Loop an Resourcen verbraucht auch wenn es nur minimal ist. Desshalb beendet man den Loop noch vorher, und schließt die Klammern } ...

    Code
    break
         }}

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

    3 Mal editiert, zuletzt von TPO ()

  • Hy ich wollt makl sagen das Tut ist super und hat mir sehr geholfen!


    Aber was mir fehlt ist eine update option so das sich die keybinder meiner freunde updatet wenn ich was neues rein mache.


    Und nun wollte ich mal euch fragen wie das mit der update taste!


    Und eine frage hab ich noch zu denn Buttons


    So erstellt man einen Button



    Zitat

    Gui, Add, Button, x222 y272 w140 h30 , Text auf dem Button



    Und so macht man sie Funktionsfähig



    Zitat

    Gui, Add, Button, x222 y272 w140 h30 gTestfunktionsname, Testname


    Und o iszt da der unterschied??



    Mfg


    ultras

  • Code
    Gui, Add, Button, x222 y272 w140 h30 , Text auf dem Button


    Ist ein Button der dir nichts bringt außer du setzt im Gui unten die Funktion rein mit

    Code
    ButtonText auf dem Button:
    ;Aktion
    return


    Doch dies kann zu Fehlern und missverständnissen führen falls du etwas anderes so genannt hast. Desshalb setzt du einfach ein gFUNKTIONNAME rein und dann ist es anders aufrufbar halt:


    Code
    Gui, Add, Button, x222 y272 w140 h30 gTestfunktionsname, Testname


    Code
    Testname:
    ;Aktion
    return


    Da muss nichtmehr ButtonBUTTONNAME stehen sondern nur Buttonname:


    Das mit dem AutoUpdater (So nenne ich das) habe ich noch auf dem PC liegen irgendwo nur es hier zu erklären wären nochmal 2Seiten mehr. Müsste es mal suchen und erklären hier aber erstmal wenig Zeit zurzeit^^ Guck mal im AutoHotkey Forum da ist es auch...

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Also erstens das Tutorial is echt klasse!
    hat mir sehr geholfen


    da mein chaos ad iwie nich mehr richtig funktioniert (was weiß ich was da nimma geht ^^) hab ich mir auch per AHK einen gemacht
    doch jetzt hab ich 2 probleme damit :/


    1. Problem
    Ich möchte einen Befehl machen, wo er was in die Zeile schreibt und ich dann hinten ne nummer anhängen, hab das so gemacht:

    Code
    1::
    SendInput t/gettrash 
    return


    wenn ich aber dann die zahl eingeben möchte, erscheint der keybind derjenigen zahl :/
    wenn ich aber einfach so ingame t drücke damit das chat ding aufgeht und ne zahl rein schreibe funktioniert es, da kommt dann nicht mein keybinder


    2. Problem
    irgendwie verträgt sich mein AHK Script nicht mit meinen Makro Tasten der Tastatur (Cyborg Keyboard)
    Wenn ich das Script anhabe und auf eine meiner Makro tasten drücke (benutze die auch als keybinder :D) dann öffnet sich nur das chatfenster und nix passiert, wenn ich nochmal die makro taste drücke kommt der keybind der makro taste nur mit einem t vorne dran (Beispiel: t/enter)
    ich muss jedes mal wenn ich eine makro taste drücke erst das script "ausschalten" und danach wieder anschalten
    gibts da nich noch ne andere lösung?^^



    hoffe du kannst mir helfen :>


    Aber wie gesagt, Tutorial is echt klasse, habs mir auch ganz durchgelesen :D



    edit: Hier noch die ersten zeilen vom script:

  • Code
    TASTE/KÜRZEL::
    SendInput t/BEFEHL{Space}
    Suspend On
    Hotkey, Enter, On
    Hotkey, Escape, On
    return

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

    Einmal editiert, zuletzt von TPO ()

  • Hey mache alles wie du meinst also gebe das ein
    1t/carlock
    2t/refill 10
    3t/enter{enter}
    4t/Exit{exit}
    5Return
    also das sind die befehle die ich jetzt ma testen wolte und die ich auch brauche speichare alles dann mache ich run script aber dann komm eror at line 1 bei mir raus kannst du mir helfen


    von Russealex16_