[Tutorial #2.2] Keybinder & weitere Funktionen

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

  • [Tutorial #2.2] Keybinder & weitere Funktionen

    Hallo,
    nun gehts weiter mit dem Keybinder aus Tutorial 2.1.
    Wir erstellen uns noch einen weiteren Button und nennen unser Label 1 -> Taste 1, bei Input 1 machen wir aus "Input1" -> ""
    Nun erstellen wir uns eine Funktion, die unseren Keybinder startet:
    Funktionen beginnen zur Übersicht mit einem _
    [autoit]func _Starten()

    endfunc[/autoit]
    In dieser Funktion fragen wir nun ab, ob GTA:SA:MP geöffnet ist und setzen eine Variable auf true (= an)

    [autoit] If WinExists("GTA:SA:MP") Then
    MsgBox(0, "", "Keybinder gestartet")
    $gestartet = true ; wir erstellen noch am Anfang die Variable mit Dim $gestartet
    Else
    MsgBox(0,"","Keybinder konnte nicht gestartet werden, GTA:SA:MP ist nicht offen.")
    Endif[/autoit]
    Die If-Abfrage habt ihr schon kennengelernt, WinExists prüft einfach ob ein Fenster geöffnet ist ;)
    Nun haben wir unsere Starten-Funktion.

    Und vergisst nicht: Am besten nach jeden paar Schritten mal euer Programm Starten (F5) oder Tools -> Go ;)

    Jetzt geht es an das Speichern der Felder (Inputs) und das ausgeben von den Nachrichten.

    Wir erstellen uns noch eine Funktion und Speichern den Text aus den Inputs in eine Datei, die im Verzeichnis des Scriptes liegt.
    [autoit]func _Speichern()
    IniWrite($configfile,"Keybinder","1",guictrlread($Input1))
    #cs
    Parameter 1: Die Datei, wir definieren sie mit $configfile = @ScriptDir & "\Config.ini" am Anfang des Scriptes.
    Parameter 2: Die Sektion in der .ini Datei
    Parameter 3: Der Key in der .ini Datei
    Parameter 4: Der Text, der in die Datei geschrieben werden soll.

    Die Datei sieht dannach so aus:

    [Keybinder]
    1=tText von Taste 1

    #ce
    EndFunc[/autoit]
    Das ganze macht ihr jetzt noch für das Input 2 (Taste 2).

    Nun weisen wir unseren 2 Buttons 2 Funktionen zu, dies machen wir indem wir nach
    [autoit] Case $GUI_EVENT_CLOSE
    Exit[/autoit]
    suchen und das hier einfügen:[autoit]
    Case $button
    _Starten()
    Case $button2
    _Speichern()[/autoit]
    Das heißt soviel wie "Wenn $button gedrückt, dann führe die Funktion _Starten() aus."

    Nun wollen wir aber noch, dass unsere .ini beim Programmstart ausgelesen wird, dies machen wir mit IniRead, die Parameter sind (fast) die gleichen wie bei IniWrite.
    [autoit]
    If FileExists($configfile) Then
    $1 = IniRead($configfile,"Keybinder","1",""); parameter: Dateiname | Sektion | Key | Der Wert, der angegeben soll, wenn der Key nicht gefunden wird
    guictrlsetdata($input1, $1)
    Endif[/autoit]
    Wir checken erstmal ob es die Datei gibt, dann lesen wir den Inhalt aus und setzen diesen in unser Inputfeld.
    Das ganze macht ihr mit dem 2ten Key und Inputfeld.
    Dieser Code kommt am besten nach #EndRegion ### END Koda GUI section ###.

    Nun gehts an das Schreiben.
    [autoit]HotKeySet("1","_1")[/autoit] Sagt soviel wie: Setze mir ein HotKey auf Taste 1 für die Funktion _1, Tasten wie F1 usw werden mit "{F1}" angegeben.

    Die Funktion dazu lautet nun
    [autoit]func _1()
    if $gestartet = true AND WinActive("GTA:SA:MP") Then ;wenn gestartet = ja UND gta:sa:mp fenster aktiv, dann
    ControlSend("GTA:SA:MP", "", "", guictrlread($input1)) ;parameter: titel | text, der in unserem fenster steht (bei uns keiner) | Die ControlID an die es gesendet werden soll (bei uns auch keine) | und der Text, der gesendet werden soll
    Endif
    endfunc
    [/autoit]
    Und das ganze wieder mit Input 2 ;)

    Das wars erstmal, bis zum nächsten Tutorial.
    Hier nochmal der Code bis jetzt:
    i.03d.eu/tut2.2.PNG
    Musste es verkleinern damit alles reinpasst ;)
  • [autoit]func _Starten()

    If WinExists("GTA:SA:MP") Then
    MsgBox(0, "", "Keybinder by 'playerid' erfolgreich gestartet.")
    $gestartet = true ; wir erstellen noch am Anfang die Variable mit Dim $gestartet
    Else
    MsgBox(0,"","Keybinder konnte nicht gestartet werden, GTA:SA:MP ist nicht offen.")
    Endif


    endfunc

    func _Speichern()
    IniWrite($configfile,"Keybinder","1",guictrlread($Input1))
    #cs
    Parameter 1: Die Datei, wir definieren sie mit $configfile = @ScriptDir & "\Config.ini" am Anfang des Scriptes.
    Parameter 2: Die Sektion in der .ini Datei
    Parameter 3: Der Key in der .ini Datei
    Parameter 4: Der Text, der in die Datei geschrieben werden soll.

    Die Datei sieht dannach so aus:

    [Keybinder]
    1=tText von Taste 1

    #ce
    EndFunc

    Case $GUI_EVENT_CLOSE
    Exit

    Case $button
    _Starten()
    Case $button2
    _Speichern()

    If FileExists($configfile) Then
    $1 = IniRead($configfile,"Keybinder","1",""); parameter: Dateiname | Sektion | Key | Der Wert, der angegeben soll, wenn der Key nicht gefunden wird
    guictrlsetdata($input1, $1)
    Endif

    HotKeySet("1","_1")

    func _1()
    if $gestartet = true AND WinActive("GTA:SA:MP") Then ;wenn gestartet = ja UND gta:sa:mp fenster aktiv, dann
    ControlSend("GTA:SA:MP", "", "", guictrlread($input1)) ;parameter: titel | text, der in unserem fenster steht (bei uns keiner) | Die ControlID an die es gesendet werden soll (bei uns auch keine) | und der Text, der gesendet werden soll
    Endif
    endfunc[/autoit]

    was is hierran falsch? :D
  • Die Tutorials knüpfen aneinander an, schau mal hier: [Tutorial #2.1] Umgang mit Koda -> GUI

    edit: Die Bilder sind grad down, einen moment ;)
    edit2: gehen wieder

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