Autohotkey_L + SAMP-API für Anfänger

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

    Es gibt Neuigkeiten! Ab sofort könnt ihr dem Donators Club auf Lebenszeit beitreten.
    Weitere Infos im Thema Donator's Club ab heute wieder verfügbar!

    • Autohotkey_L + SAMP-API für Anfänger

      Guten Tag,

      Zuerst braucht ihr Autohotkey_L, dies ist eine verbesserte Version von Autohotkey. Autohotkey_L könnt ihr euch auf dieser Seite downloaden: **Klick**, dort einfach auf Download klicken.
      Bei der Installation ist es wichtig das ihr auf "Costum Installation" geht:


      Dann auf ANSI 32-bit:


      Den Rest einfach so lassen wie es dort angekreuzt ist.

      Dies funktioniert mit der SAMP-API, die man auf **Klick** bekommt.
      Auf dieser Seite: samp-api.net/index.php/Downloads findet ihr immer die neuste Version der API, die ihr euch runterladen müsst.
      Die API.ahk & API.dll muss dabei im selben Ordner sein wie euer Script. Nun erstellt ihr euch ein neues Script:


      In die erste Zeile müsst ihr nun

      Quellcode

      1. #include API.ahk

      schreiben, damit die API in das Script "geladen" bzw included wird.

      Da drunter schreibt ihr folgendes. (Dies dient dazu das euer Keybinder nicht aktiviert ist wenn ihr z.B. auf dem Desktop seid oder wenn der Chat offen ist)

      Quellcode

      1. #IfWinActive, GTA:SA:MP
      2. #UseHook
      3. #SingleInstance, Force
      4. +T::
      5. ~t::
      6. Suspend On
      7. Hotkey, Enter, On
      8. Hotkey, Escape, On
      9. Hotkey, t, Off
      10. return
      11. ~NumpadEnter::
      12. ~Enter::
      13. Suspend Permit
      14. Suspend Off
      15. Hotkey, t, On
      16. Hotkey, Enter, Off
      17. Hotkey, Escape, Off
      18. return
      19. ~Escape::
      20. Suspend Permit
      21. Suspend Off
      22. Hotkey, t, On
      23. Hotkey, Enter, Off
      24. Hotkey, Escape, Off
      25. return
      Alles anzeigen


      Nun kann es auch schon mit dem eigentlich Teilen los gehen, den Keybinds und Befehlen.
      Hier findet ihr mal ein Beispiel:

      Quellcode

      1. 1:: ; Dies ist die Keybindtaste.
      2. if(IsChatOpen() == 1 || IsDialogOpen() == 1) {
      3. SendInput, {%A_ThisHotkey%}
      4. return
      5. } ; Bis hier hin ist eine if-Abfrage, die Abfragt ob ein Menü oder der Chat offen ist und wenn es so ist, das der dann die normale Taste in das Textfeld sendet. In diesem Beispiel wäre das die Taste 1.
      6. GetPlayerName(pName) ; Dies ist eine Funktion aus der SAMP-API. Diese ließt den Spielernamen aus und speichert in als Variable (pName).
      7. SendChat("/pickup") ; Die Funktion SendChat ist ebenfalls aus der SAMP-API, dadurch wird ein Befehl/Text direkt an den Chat gesendet.
      8. SendChat("Guten Tag, Sie sprechen mit " pName ",") ; Das Gleiche wie bei /pickup, Zusätzlich wird aber noch die Variable ausgeben via " pName "
      9. SendChat("Wie kann ich Ihnen behilflich sein?") ; Das Gleiche wie bei /pickup
      10. return ; Das Return beendet den Befehl



      Der Keybindquellcode ohne Erklärung:

      Quellcode

      1. 1::
      2. if(IsChatOpen() == 1 || IsDialogOpen() == 1) {
      3. SendInput, {%A_ThisHotkey%}
      4. return
      5. }
      6. GetPlayerName(pName)
      7. SendChat("/pickup")
      8. SendChat("Guten Tag, Sie sprechen mit " pName ",")
      9. SendChat("Wie kann ich Ihnen behilflich sein?")
      10. return


      Weitere Funktionen findet ihr hier: samp-api.net/index.php/Kategorie :Funktionen.

      Nun kommen wir zu einem Chatbefehl den ihr dann z.B. via "/pick" macht.
      Dabei ändert sich eig. nicht viel, außer das ihr das mit der if-Abfrage nicht mehr braucht.

      Quellcode

      1. :?:/pick::
      2. Suspend Permit
      3. GetPlayerName(pName)
      4. SendChat("/pickup")
      5. SendChat("Guten Tag, Sie sprechen mit " pName ",")
      6. SendChat("Wie kann ich Ihnen behilflich sein?")
      7. return


      - - - - - - - -: Hier sind nochmal Alle Links aufgelistet :- - - - - - - -
      l.autohotkey.net/
      samp-api.net/index.php/Downloads
      samp-api.net/index.php/Hauptseite
      samp-api.net/index.php/Kategorie

      - - - - -: EDIT :- - - - - -
      1.) Alle Links aufgelistet

      Ich hoffe es ist für viele verständlich und ich konnte helfen.

      Mit freundlichen Grüßen
      C0laMix
      Mit freundlichen Grüßen.
      C0laMix

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

    • Hallo nochmal :)

      Nun gibt es auch Keybinds um z.B. seine Waffen schnell zu verstauen (Dies funktioniert mit der SendChat-Funktion und mit Sendinput)
      (Funktioniert wenn der server ein Inventar system hat)

      Quellcode

      1. 2:: ; Dies ist die Keybindtaste.
      2. if(IsChatOpen() == 1 || IsDialogOpen() == 1) {
      3. SendInput, {%A_ThisHotkey%}
      4. return
      5. } ; Bis hier hin ist eine if-Abfrage, die Abfragt ob ein Menü oder der Chat offen ist und wenn es so ist, das der dann die normale Taste in das Textfeld sendet. In diesem Beispiel wäre das die Taste 2.
      6. SendChat("/inventory") ; Die Funktion SendChat aus der SAMP-API sendet nun /inventory und dadurch wird euer Inventar geöffnet.
      7. sleep 500 ; Die Sleep-Timer müssen vorhanden sein, da man sonst zu schnell durch das Menü klickt und dadurch oft in ein falsches Menü kommt.
      8. sendinput {down 4} ; Durch down 4, geht man in dem Inventar-Menü 4 Zeilen nach unten. In diesem Fall zu dem Menüpunkt Waffen.
      9. sleep 500 ; Die Sleep-Timer müssen vorhanden sein, da man sonst zu schnell durch das Menü klickt und dadurch oft in ein falsches Menü kommt.
      10. sendinput {enter} ; Durch das enter kommt man ins nächste Menü. In diesem Fall zu dem Menü Waffen.
      11. sleep 500 ; Die Sleep-Timer müssen vorhanden sein, da man sonst zu schnell durch das Menü klickt und dadurch oft in ein falsches Menü kommt.
      12. sendinput {down 1} ; Durch das down 1 geht man in dem Waffen-Menü 1 Zeile nach unten. In diesem Fall zu dem Menüpunkt Waffen einstecken.
      13. sleep 500 ; Die Sleep-Timer müssen vorhanden sein, da man sonst zu schnell durch das Menü klickt und dadurch oft in ein falsches Menü kommt.
      14. sendinput {enter} ; Durch das enter kommt man ins nächste Menü. In diesem Fall zu dem Menü Waffe einstecken.
      15. sleep 500 Die Sleep-Timer müssen vorhanden sein, da man sonst zu schnell durch das Menü klickt und dadurch oft in ein falsches Menü kommt.
      16. sendinput {enter} ; Durch das enter kommt man ins nächste Menü. In diesem Fall zu dem Menü in dem man die Waffe auswählt die man einstecken möchte.
      17. return
      Alles anzeigen


      Der Keybindquellcode ohne Erklärung:

      Quellcode

      1. 2::
      2. if(IsChatOpen() == 1 || IsDialogOpen() == 1) {
      3. SendInput, {%A_ThisHotkey%}
      4. return
      5. }
      6. SendChat("/inventory")
      7. sleep 500
      8. sendinput {down 4}
      9. sleep 500
      10. sendinput {enter}
      11. sleep 500
      12. sendinput {down 1}
      13. sleep 500
      14. sendinput {enter}
      15. sleep 500
      16. sendinput {enter}
      17. return
      Alles anzeigen


      Mit freundlichen Grüßen
      C0laMix
      Mit freundlichen Grüßen.
      C0laMix

    • Thema ist zwar schon älter, aber wenn ich diesen Befehl ins Script schreibe

      PAWN-Quellcode

      1. :?:/ab::Suspend PermitSendChat("/pickup")SendChat("Hallo " GetPlayerName())return


      Kann ich Ingame nicht den /ab (leertaste) Befehl benutzen, funktioniert einfach nichts und passiert auch nichts.
      Hat irgendwer eine Idee ;-)? (kann es an der SA:MP Version liegen?)



      lg
      -

      Beitrag von Janes ()

      Dieser Beitrag wurde vom Autor gelöscht ().
    • PAWN-Quellcode

      1. :?:/ab::
      2. Suspend Permit
      3. SendChat("/pickup")
      4. SendChat("Hallo " . GetPlayerName())
      5. return
      Es kann an vielen Dingen liegen. Funktioniert nur '/ab' nicht, oder dein gesamtes Script.
      Zudem ergibt dein '/ab' keinen Sinn. Denn dein 'GetPlayerName()' wird dir nicht den Namen des Anrufers ausgeben,
      lediglich deinen eigenen Namen.

      Außerdem lege ich dir ans Herz, wie Janes bereits geschrieben hatte, dass du auf die Syntax ordentlich achtest.
      Ich habe es noch nie ausprobiert, aber ich kann mir gut vorstellen, dass alles in eine Zeile zu werfen, nicht funktionieren wird.
      Mit freundlichen Grüßen,
      Jumpy Jr.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jumpy Jr. ()

    • Jumpy Jr. schrieb:

      PAWN-Quellcode

      1. :?:/ab::
      2. Suspend Permit
      3. SendChat("/pickup")
      4. SendChat("Hallo " . GetPlayerName())
      5. return
      Es kann an vielen Dingen liegen. Funktioniert nur '/ab' nicht, oder dein gesamtes Script.
      Zudem ergibt dein '/ab' keinen Sinn. Denn dein 'GetPlayerName()' wird dir nicht den Namen des Anrufers ausgeben,
      lediglich deinen eigenen Namen.

      Außerdem lege ich dir ans Herz, wie Janes bereits geschrieben hatte, dass du auf die Syntax ordentlich achtest.
      Ich habe es noch nie ausprobiert, aber ich kann mir gut vorstellen, dass alles in eine Zeile zu werfen, nicht funktionieren wird.
      Nur /ab funktioniert nicht und ich hab das nur übergangsweise so rein geschrieben um die Funktion zu testen, der Anrufbeantworter sieht anders aus, soll auch nicht den Anrufer auslesen(Text würde natürlich noch verändert werden ;-))

      Alles klar dann hol ich mir mal den R1 Client, thx.
      Mit diesem "http://files.sa-mp.com/sa-mp-0.3.DL-R1-install.exe" Client hier kann ich leider nicht auf den Server connecten wo ich den Keybinder benutzen wollte, hoffentlich ist es überhaupt der richtige b.b finde aber keinen anderen tbh.
      -

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Yung_Hurn () aus folgendem Grund: A>

    • Quellcode

      1. :?:/ab::
      2. Suspend Permit
      3. SendChat("/pickup")
      4. SendChat("Hallo " . GetPlayerName())
      5. return
      Du hast hier einige Fehler.
      Erstens kannst/darfst du nach dem /ab keine "leertaste" drücken, da der Keybinder dann nach dem /ab ne Leertaste ausließt der so ja im Befehl nicht existiert.

      Zweitens kann dein Code nicht stimmen.
      1. :?:/ab::
      2. Suspend Permit
      3. SendChat("/pickup")
      4. SendChat("Hallo " . "GetPlayerName()" ")
      5. return
      Du hast beim GetPlayerName die " vergessen.
      Dadurch würd er deinen Namen net auslesen.

      Gib mal im Chat /ab ein ohne eine Leertaste zu drücken :)
      mapping-studio.net ..
    • Muzoris schrieb:

      Quellcode

      1. :?:/ab::
      2. Suspend Permit
      3. SendChat("/pickup")
      4. SendChat("Hallo " . GetPlayerName())
      5. return
      Du hast hier einige Fehler.
      Erstens kannst/darfst du nach dem /ab keine "leertaste" drücken, da der Keybinder dann nach dem /ab ne Leertaste ausließt der so ja im Befehl nicht existiert.

      Zweitens kann dein Code nicht stimmen.
      1. :?:/ab::
      2. Suspend Permit
      3. SendChat("/pickup")
      4. SendChat("Hallo " . "GetPlayerName()" ")
      5. return
      Du hast beim GetPlayerName die " vergessen.
      Dadurch würd er deinen Namen net auslesen.

      Gib mal im Chat /ab ein ohne eine Leertaste zu drücken :)
      Ohne Leertaste bei /ab also danach oder sonst was passiert einfach nichts leider, ich habs jetzt erstmal über Hotkeys gelöst aber würd es trotzdem gern als Keybinder Command gern drin haben.
      -
    • Muzoris schrieb:

      Quellcode

      1. :?:/ab::
      2. Suspend Permit
      3. SendChat("/pickup")
      4. SendChat("Hallo " . GetPlayerName())
      5. return
      Du hast hier einige Fehler.
      Erstens kannst/darfst du nach dem /ab keine "leertaste" drücken, da der Keybinder dann nach dem /ab ne Leertaste ausließt der so ja im Befehl nicht existiert.

      Zweitens kann dein Code nicht stimmen.
      1. :?:/ab::
      2. Suspend Permit
      3. SendChat("/pickup")
      4. SendChat("Hallo " . "GetPlayerName()" ")
      5. return
      Du hast beim GetPlayerName die " vergessen.
      Dadurch würd er deinen Namen net auslesen.

      Gib mal im Chat /ab ein ohne eine Leertaste zu drücken :)
      Ich sehe hier keinen Fehler. Es kann lediglich sein, dass er eine API-Version verwendet, die nicht oder nur teilweise mit der neuesten SA:MP-Version funktioniert.
      Die Anführungszeichen sind absolut nicht falsch gesetzt. Deine Syntax ist die falsche Syntax, denn du hast da nun ein " zu viel. Und das mit der Leertaste ist auch
      der größte Schwachsinn, du kannst Enter oder Leertaste drücken, das ist komplett dir überlassen.

      //Edit:
      Hier einmal eine API für die R2, solltest du die noch nicht verwenden:
      https://gist.github.com/Ashkan-N/54a5f3c8b3a75fff8b0d79579e48a59a
      Mit freundlichen Grüßen,
      Jumpy Jr.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jumpy Jr. ()