Chatlog auslesen - anschließend einen Befehl ausgeben - GTA SAMP

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
  • Hallo,
    ich bin neu, komplett neu beim scripten mit AHK.
    Habe noch nie einen script alleine geschrieben.
    Habe aber durch Google-Recherche erfahren, dass man mit AHK einen Chatlog auslesen kann, und anschließend nach der letzten Zeile ein Befehl ausgegeben wird.


    Folgendes:
    Ich spiele auf einem GTA-SAMP-Server. Dort gibt es den Job Bestatter.
    Wenn also einer stirbt, ist es mein Auftrag, diese Leiche zu bestatten.
    Wenn einer stirbt steht es so im Chat: ** NAME ist gestorben und die Leiche muss beseitigt werden. Tippe: /accept corpse - Auftrag annehmen


    Ich möchte nun, dass der Script, wenn so eine Nachricht erscheint, diesen Auftrag automatisch direkt annimmt.


    Ich habe viel im Internet gesucht. Und immer wieder was von einer API.dll und API.ahk gelesen. Ich habe davon überhaupt keine Ahnung. Und bitte deshalb um Hilfe.


    Folgenden Script habe ich gefunden:


    Code
    Reperatur:
    GetChatLine(0, Chat)
    If InStr(Chat, "Reperatur")
    {
    Sendchat("/accept repair")
    Sendchat("Ich danke dir mein Freund")
    sleep 3000
    }
    return



    Dieser Script wurde für jemanden geschrieben, der automatisch eine Reparaturanfrage annehmen möchte.
    Das ist ja im Prinzip das gleiche. Ich habe dies dann in mein Beispiel umgesetzt. Das sah dann so aus:



    Code
    Bestatter:
    GetChatLine(0, Chat)
    If InStr(Chat, "**")
    {
    Sendchat("/accept corpse")
    sleep 3000
    }
    return


    Nach dem Ausführen des AHK-Scripts erscheint dann aber folgende Fehlermeldung:


    Error: Call to nonexistent function.


    Specifially: GetChatLine(0, Chat)


    Dass das Problem in der 2. Zeile an GetChatLine liegt, ist mir bewusst.
    Da ich aber keine AHK-Kenntnisse habe, kann ich dieses Problem schlecht lösen.


    Ich bitte um eure Hilfe, meine Vorstellung umzusetzen. Scheint ja wohl möglich zu sein :)


    mit freundlichen Grüßen


    XcLuSivE

  • API.dll und API.AHK (so wie die restlichen datein) sollten in dem Ordner mit deinem AHK-Script gelegt werden.


    Sobald dies gatan ist, Includes du am anfang des Scriptes die API (#include API.ahk) nun solltest du die API-Funktionen nutzen können.
    Wenn dein Script soweit fertig ist, musst du sicherstellen, dass die API.dll der .Exe beiliegt, ansonsten wird dein Keybinder am ende nicht Funktionieren.



    Grüße Newbie23.
    (Bin schlecht im erklären, weiß ich selber :P)

    AHK grundkrenntnisse, (mit MySQL & SAMP-UDF)

  • Ich sehe gerade, dass ich gar keine API.dll und API.AHK im Ordner habe.



    Ich habe die Dateien, die ich gefunden hatte und meinen Script in einen Ordner geschoben.
    Anschließen habe ich meinen Script ausgeführt.
    Folgender Fehler erschien.
    Ich gehe davon aus, dass das nicht die Dateien sind, die ich benötige.
    Kann mir jemand einen Link senden, wo ich alle benötigten Dateien downloaden kann?


  • Die Open-SAMP hat noch kein GetChatLine. Gegebenfalls einmal *hier* klicken. Dass führt dich direkt zu SAMP-UDF. Da gibt es auch eine Dokumentation(Wiki) zu den Funktionen.



    /edit:
    Die API hat keine .DLL einfach die file includen und schon sollte es los gehen.

    AHK grundkrenntnisse, (mit MySQL & SAMP-UDF)

  • Sorry, aber leider kann ich dir irgendwie nicht folgen. Ich finde mich dort nicht zu recht. Und weiß nicht was ich mit der Seite anfangen soll.
    Ich habe versucht die api.dll zu includen, dass sah dann so aus:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • okay danke.


    Habe diese samp.ahk jetzt mit meinem Script in einen Ordner gepackt und die samp.ahk included.


    Beim ausführen des Scripts erscheint nun zwar keine Fehlermeldung mehr, aber es öffnet sich nichts.
    Unten in der leiste erscheint auch kein AHK-Symbol.

  • wow, danke dir.


    Ich kann nun das Programm ausführen.


    Ich kann auch das Programm deaktivieren und wieder aktivieren.
    Aber /accept corpse gibt er nicht ein.


    Kann es dein, dass der Code, wo er die LETZTE zeile aus dem Chatlog ausliest falsch ist?
    Wenn es nicht daran liegt, worin dann? Habe die richtige AHK-Version.
    Bin dir trotzdem mega dankbar.


    Bestatter:
    Getchatline(1, Chatline) --> muss hier nicht statt die 1 eine 0 stehen, damit er die letzte Zeile ausliest?
    if(instr(Chatline, "ist gestorben und die Leiche muss beseitigt werden. Tippe: /accept corpse "))
    {
    Sendchat("/accept corpse")
    AddChatMessage(0xFFFFFF,"{00FF00}Du hast den Auftrag angenommen!")
    sLeep 1000
    }
    return


    mfg XcLuSivE

  • Werde es nachher versuchen. Danke.



    /edit


    Es Funktioniert!


    Den text den er auslesen soll war tatsächlich falsch. Dort hatte am Ende "- Auftrag annehmen" gefehlt.
    Außerdem stimmt das, dass er mit der 1 die vorletzte Zeile ausliest und nicht die letzte.
    Habe es mit der 0 ausprobiert.
    Klappt nun wunderbar.


    Ich danke euch allen :)


    /edit2


    Sorry, mega missverständnis.
    Ich habe gedacht, man kann den ahk script einfach ändern und direkt mit der exe ausführen.
    Habe den Script also doch nicht geändert.
    Kannt du mir bitte den script ändern? und zwar die 1 durch eine 0 ersetzen? @ryaN.jeZoo
    Ich habe es versucht zu ändern. Bzw die ahk in eine exe umzuwandeln, nachdem ich es geändert hatte.
    Dann steht da aber ahk.dll nicht gefunden.



    So soll er aussehen.


    Danke im Vorraus :S

    2 Mal editiert, zuletzt von XcLuSivE ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen