AFK Command

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,


    Ich zeige euch heute wie ihr einen AFK Command erstellt.
    Dies hier ist mein erstes Tutorial zu Scripting und daher ist es auch sehr Simple^^
    Ich hoffe es gefällt euch!




    So dann fangen wir mal an!



    Es gibt viele Möglichkeiten einen AFK befehl zu erstellen,
    aber die hier ist die beste aus meiner sicht.


    Also, ihr definiert erstmal die Farbe womit es ausgeblendet werden soll


    Beispiel


    Dies hier kommt ganz nach oben
    #define COLOR_LIGHTGREEN 0x9ACD32AA // #define [NAME DER FARBE] [FARBCODE]
    #define COLOR_GREY 0xBEBEBEAA
    #define COLOR_RED 0xAA3333AA


    So nun definieren wir das hier


    new AFK[MAX_PLAYERS]; // Hier wird ein new erstellt, womit wir später abfragen können ob er schon afk ist etc.


    So nun suchen wir mal OnPlayerCommandText


    Und Scripten dies da rein !


    if(strcmp(cmd, "/afk", true) == 0)
    {
    if(AFK[playerid] == 0) // Abfrage ob er nicht AFK ist wenn schon Sehe else
    {
    new spieler[MAX_PLAYER_NAME]; // hier wird "spieler" definiert was wir brauchen um den Spielernamen zu erkennen.
    GetPlayerName(playerid, spieler, sizeof(spieler)); // Hier sucht der Server den Namen der den Befehl ausführt
    format(string, sizeof(string), "%s ist AFK!", spieler); // Hier wird die Nahricht generiert bzw. der Name "%s" Wird durch den Namen ersetzt!
    SendClientMessageToAll(COLOR_LIGHTGREEN, string); // Hier wird die Nahricht an allen Spielern geschickt!
    AFK[playerid] = 1;
    }
    else // abfragen ob das if(AFK.....) richtig ist oder nicht falls er schon Afk ist passiert das was hier Steht!!
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist schon AFK! Mach /back!"); // Wenn er schon /afk gemacht hat steht das da!
    }
    return 1;
    }



    So nun kommen wir zu den Back Befehl..


    if(strcmp(cmd, "/back", true) == 0)
    {
    if(AFK[playerid] == 1) // Abfrage ob er AFK ist wenn schon Sehe else
    {
    new spieler[MAX_PLAYER_NAME]; // hier wird "spieler" definiert was wir brauchen um den Spielernamen zu erkennen.
    GetPlayerName(playerid, spieler, sizeof(spieler)); // Hier sucht der Server den Namen der den Befehl ausführt
    format(string, sizeof(string), "%s ist AFK!", spieler); // Hier wird die Nahricht generiert bzw. der Name "%s" Wird durch den Namen ersetzt!
    SendClientMessageToAll(COLOR_LIGHTGREEN, string); // Hier wird die Nahricht an allen Spielern geschickt!
    AFK[playerid] = 0;
    }
    else // abfragen ob das if(AFK.....) richtig ist oder er schon AFK ist!
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht AFK"); // Falls er nicht AFK ist passiert das!
    }
    return 1;
    }


    So nun kommen wir zu OnPlayerText


    public OnPlayerText(playerid, text[])
    {



    if(AFK[playerid] == 1) // Abfrage ob er AFK ist wenn er schreiben möchte!
    {
    SendClientMessage(playerid, COLOR_RED, "Du kannst nicht schreiben, schreibe /back um zu schreiben!"); // Falls er AFK ist , ist er gemutet und kann erst schreiben wenn er /back macht!
    return 0;
    }




    Ist mein erstes Tutorial zu Scripting, freue mich auf die Kritik und Kommentare !



    Ich hoffe es hat geholfen,



    MfG Shooter1995



    Edit:// Hab einen Farbcode vergessen

    3 Mal editiert, zuletzt von ♣♣♣Shooter1995♣♣♣ ()

  • kannst du da vllt einbauen das wenn man sich 4 min net bewegt das man dann afk geht

  • Unsinnig da keine Basis erklärt wird zudem solltest du alles etwas besser beschreiben da das sonst nur eine ständiges Kopieren & Einfügen ergibt,
    auch wenn es dein erstes Tutorial ist, du solltest dann auch schon die Basis der ganzen Dinge erklären, wie Kommandos zurückgegeben werden sprich wie
    man sie erfassen kann & warum man Farben so definiert was aber eine Sache ist die man nicht unbedingt erklären müsste denn den Sinn der Funktionen sollte auch
    so jeder verstehen, so gehört das nur in Code Schnipsel oder in ein FS > Showroom


    Konntest du eventuell ja nicht wissen, ist ja nicht Böse gemeint

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Ich Finde echt es Toll =D
    Habe es auch Gleich eingebaut =D


    10/10 ;)

  • 1. für AFK reicht auch ein bool: ...
    2.
    if(strcmp(cmd, "/afk", true) == 0)
    {
    if(AFK[playerid])return SendClientMessage(playerid,COLOR_GREY,"Du bist schon AFK! Mach /back!");
    new string[128];
    GetPlayerName(playerid,string,sizeof string);
    format(string,sizeof string,"%s ist AFK!",string);
    AFK[playerid] = true;
    return SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    }ist einfacher.


    3. bei OnPlayerText einfach
    if(AFK[playerid])return SendClientMessage(playerid,COLOR_RED,"Du kannst nicht schreiben, schreibe /back um zu schreiben!");

  • Das bei OnPlayerText würde nicht klappen Opa. Wenn SendClientMessage erfolgreich war, wird 1 returnt. Und wenn ein return 1; in OnPlayerText steht, dann wird der Text erst recht gesendet^^


    @Franky0: Ja, du hast es "eingebaut", sprich Copy and Paste. Wäre das ein gutes Tutorial, könntest du das jetzt selber schreiben...


    Edit: Immer wenn ich was posten will, kommt Blackfox =(


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • aso halt
    if(AFK[playerid])return (!SendClientMessage(playerid,COLOR_RED,"Du kannst nicht schreiben, schreibe /back um zu schreiben!"));

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Moin.
    Kannst du vieleicht mal erklären,wie man mit dem befehl /afklist sehen kann, wer afk ist.
    Mfg:Tigerkiller:

  • ich bekomme da immer und immer wieder errors habe das schon 20 mal versucht es geht aba nicht ;(

  • Ich habe ein paar Fehler: C:\Dokumente und Einstellungen\Tom\Eigene Dateien\GTA San Andreas User Files\gamemodes\Neu.pwn(76) : error 017: undefined symbol "DIALOG_REGISTER"
    C:\Dokumente und Einstellungen\Tom\Eigene Dateien\GTA San Andreas User Files\gamemodes\Neu.pwn(107) : error 017: undefined symbol "AFK"
    C:\Dokumente und Einstellungen\Tom\Eigene Dateien\GTA San Andreas User Files\gamemodes\Neu.pwn(107) : warning 215: expression has no effect
    C:\Dokumente und Einstellungen\Tom\Eigene Dateien\GTA San Andreas User Files\gamemodes\Neu.pwn(107) : error 001: expected token: ";", but found "]"
    C:\Dokumente und Einstellungen\Tom\Eigene Dateien\GTA San Andreas User Files\gamemodes\Neu.pwn(107) : error 029: invalid expression, assumed zero
    C:\Dokumente und Einstellungen\Tom\Eigene Dateien\GTA San Andreas User Files\gamemodes\Neu.pwn(107) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.

  • new AFK[MAX_PLAYERS]; // Hier wird ein new erstellt, womit wir später abfragen können ob er schon afk ist etc.
    hier wird eine variable erstellt, die man ändern und abfragen kann.

    atze19:


    Versuche mal das ...

  • Auch wenn das Thema alt ist, ich würde mit TooglePlayerControlable und vorallem auch mit IsPlayerInAnyVehicle arbeiten.
    Da er so nicht bugusen kann, mit TogglePlayerControlable, aber wenn er im Autohaus ect ist, kann er das Auto halt klauen. :D

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