checkname.inc - Dini-based Case insensitive Name-Checker

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
  • Inspiriert von Runcorn bzw durch diesen Thread: [HILFE] User name problem hab ich mich mal fix an eine klitzekleine Include gesetzt.


    Hinweis: Es geht sicherlich besser, aber das war ein 5min-Projekt und es sollte nur funktionieren. ;)


    Was ist checkname.inc?
    Das ist recht schnell erklärt:
    Spieler A registriert sich mit dem Namen "Spieler".
    Spieler B will sich mit dem Namen "spieler" registrieren, wird aber gekickt, da es schon "Spieler" gibt.


    Funktionen
    RegisterPlayerName(playerid, dininame) - Fügt zur Dini-Datei den Spielername in korrekter Groß- und Kleinschreibung hinzu
    CheckPlayerName(playerid) - Prüft den Spielername und ruft nach Bedarf RegisterPlayer(playerid) und LogPlayerIn(playerid) auf.


    Voraussetzungen
    Die Funktionen RegisterPlayer(playerid, dininame[]) und LogPlayerIn(playerid, dininame[]) müssen vorhanden sein. Diese dürfen in der Include gern anders genannt werden.
    Zudem muss die Datei für den Spieler so wie der Spieler heißen, nur alles klein geschrieben. So wird also aus "PlAyEr" "player.txt".
    Und natürlich muss die dini.inc inkludiert sein.


    Ein kleines How-To
    In RegisterPlayer(playerid, dininame[]) muss die Funktion RegisterPlayerName(playerid, dininame[]) aufgerufen werden, um den Spielernamen einzutragen.
    CheckPlayerName(playerid) wird am besten in OnPlayerConnect noch vor jeglichen Login-Funktionen aufgerufen.


    Ein Mini-Beispiel:
    #include <checkname>


    public OnPlayerConnect(playerid)
    {
    CheckPlayerName(playerid);
    return 1;
    }


    //...
    stock RegisterPlayer(playerid, dininame[])
    {
    dini_Create(dininame); //RegisterPlayer wird nur aufgerufen, wenn die Datei nicht existiert.
    //...
    RegisterPlayerName(playerid, dininame);
    return 1;
    }


    stock LogPlayerIn(playerid, dininame[])
    {
    ShowPlayerDialog(); //...
    return 1;
    }
    Beim obigen Beispiel beinhaltet dininame[] den Namen der Spielerdatei.


    Download
    Zum Download gibt es die Include hier: http://download.riditt.de/checkname.inc und auf Pastebin findet man sie hier: http://pastebin.com/uTca8t3M


    Ich würde sagen, dass das alles war. Bei Fragen stehe ich selbstverständlich zur Verfügung. Viel Spaß und tschüss.

    Ich bin Dittis Signatur.

    Einmal editiert, zuletzt von Ditti ()

  • Wenn jetzt jemand schon COLOR_RED als Makro definiert hat, bekommt er einen Warning ;)


    Du solltest es wenn schon so machen:


    #if !defined COLOR_RED
    #define COLOR_RED 0xFF5C33FF //Rote Farbe für SendClientMessage
    #endif


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S