AFK-SYSTEM + Erweiterungen - [HOW TO]

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 fische :)


    Was lernen wir in diesem Tutorial?

    • ein AFK-System zu bauen
    • es zu erweitern

    Let's start with the System!


    Was wird benötigt?

    • 1ne Variable
    • 2 Commands

    Die Varable wird bei uns "IstAFK" heißen.
    Wir definieren eine Variable mit "new" aber
    wir definieren einen Bool da der nur 1 oder 0 returnen kann! (1 = true ; 0 = false)


    //Am Anfang des Scriptes kommt
    new bool:IstAFK[MAX_PLAYERS];
    Beim Definieren ist der Standardwert eines Bools 0, also false.


    Nun warum Bool?
    Eine normale Variable reserviert ein stückchen Speicher im RAM.
    Und da wir nur 1 / 0 benutzen ist der wohl sinnvoller.

    Nun der CMD "/afk".


    // Dies kommt unter "OnPlayerCommand"
    if(strcmp(cmdtext, "/afk", true, 4) == false)


    Zu Deutsch:
    Überprüft ob der String "cmdtext" mit "/afk" übereinstimmt. Das "true" ist ein Bool und
    entscheidet darüber ob zwischen Groß- und Kleinschreibung unterschieden werden muss.
    Die "4" gibt dabei die Länge des Strings an, welcher mit "cmdtext" verglichen wird.
    Das "== false" am Ende frägt ab ob die Abfrage false returnt.


    {
    Die Geschweifte-Klammer "eröffnet" den Codeblock sozusagen.


    if(IstAFK[playerid] == false)
    Überprüft ob "IstAFK" bei "playerid" zu false gleicht


    {
    Die Geschweifte-Klammer "eröffnet" den Codeblock sozusagen.


    new str[20], pname[20];
    GetPlayerName(playerid, pname, 20);


    new str[20],
    Definiert eine Variable mit max. 20 Zeichen die enthalten sein können.


    pname[20];
    Definiert ebenfalls eine Variable mit max 20 Zeichen.


    GetPlayerName(playerid, pname, 20);
    "fischt" sozusagen den Namen des Spielers raus und speichert diesen im string "pname" ab der
    max. 20 Zeichen* enthält sonst kommt ein Error/Warning.

    * Der Name darf max 20 Charaktere enthalten...


    format(str, 256, "%s ist nun AFK!", pname, cmdtext[4]);
    SendClientMessageToAll(0x4682B4AA, str);


    [SYNTAX]: format(output[], len, const format[], {Float,_}:...)
    Formatiert
    eine Zeichenkette in die Variable rein.

    SendClientMessageToAll(0x4682B4AA, str);
    [SYNTAX]: SendClientMessageToAll((color, const message[]);

    Sendet dem Clienten eine Message und das "ToAll" bedeutet, dass die Message an jeden Spieler gesendet wird.


    IstAFK[playerid] = true;
    TogglePlayerControllable(playerid, false);

    IstAFK[playerid] = true;

    Setzt den Inhalt des Bool's auf true.


    TogglePlayerControllable(playerid, false);
    Der Spieler wird gefreezed.
    able = "fähig" also der Spieler wird nicht fähig
    seinen Charackter zu Kontrollieren.

    } else {

    wenn die Variable "IstAFK" nicht false ist soll


    SendClientMessage(playerid, COLOR_RED, "[ERROR]: Du bist schon AFK!");
    }
    return true;
    }


    eine Message zum Player rausgesendet werden wo drin steht "[ERROR]: Du bist schon AFK!".



    Wir haben den ersten CMD bereits fertig er sollte funktionstüchtig sein!
    Den /back CMD kann man auf die selbe Art&Weise coden nur, dass die Zahlen bei "IstAFK" auf 0 gesetzt werden müssen!


    Zitat

    Ihr benutzt doch nur Copy&Paste

    Aus diesem Grund sollt ihr selbst den /back CMD
    coden.
    Ich bitte alle erfahrenen Scripter dabei nicht zu helfen ausser es nochmal zu erklären und
    ich hoffe, dass jemand aus diesem Tutorial was gelernt hat!


    TEIL 2 - COMMING SOON!!

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


    3 Mal editiert, zuletzt von Johann_x3 ()

  • Danke dir, teil 2 kommt baldauch da erklär ich arrays da die auch vorkamen im 1.teil ^^
    aber die erweiterubgensbeispiele auch :) Danach n neues tut worüber kA . xP

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • Ganz gut erklärt, sieht man - leider - bei wenigen "Tutorials"^^ Aber du könntest besser PVars statt den alt eingesessenen Variablen nehmen - und das ganze /afk hat keine weitere Funktion (bzw es gibt kein /back xD)

  • Den /back CMD kann man auf die selbe Art&Weise coden nur, dass die Zahlen bei "IstAFK" auf 0 gesetzt werden müssen!


    Zitat
    Ihr benutzt doch nur Copy&Paste


    Aus diesem Grund sollt ihr selbst den /back CMD
    coden.

    ich möchte, dass anfänger lernen und nicht kopieren!!
    absichtlich ausgelassen

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • Danke dir für das Positive Feedback :>


    Als ich Script Noob war, musste ich ein AFK-System
    suchen dann iwann gefunden :<
    Hoffe morgen schaffe ich teil 2 und n neues tut dazu :>

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • Naja, gibt besseres zum Download. Aber da es ein Tutorial ist.


    6/10: Mehr ist leider nicht drin.

  • Es soll kein Release oÄ. sein man soll lernen selbst zu scripten und nicht einfach fremdes Zeug zu nehmen.

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Es sind aber auch einige nachteile enthalten es reseviert zB wiederrum ram das wir nicht gebrauchen...

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • in diesem fall würde ich den bool nehmen da der nur true oder false returnen kann und nicht wie eine normale varable speicher reserviert (fällt auch zu pvar zu).

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • Da du ja Bool als Typ für die Variablen verwendest, wäre es bestimmt übersichtlicher für Einige wenn du auch falsch und true benutzt,anstatt 0 und 1 ;).

    *changed


    Danke, Goldkiller diesmal meckerst du ja nicht rum :)

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • Yeah :)
    Habe das Tutorial durchgearbeitet, und konnte nach das /back selber schreiben :)


    Vielen Vielen Dank, TakeitEasy =)
    PS: Wäre sehr nett von dir, wenn du deine Tutorial-Reihe weiterführen könntest!