Badwords und Badnames

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
  • Hi,
    vielleicht kennt ihr es, irgendein Noob kommt auf den Server mit dem Namen z.B. Trottel und schreibt sofort Penner huso und so einen Mist. Das Könnt ihr verhindern!


    Zitat

    Was sind Badnames?


    Badnames sind nicht erlaubte Namen z.B. Trottel^^


    Zitat

    Was sind Badwords?


    Badwords sind nicht erlaubte Wörter z.B. Huso oder Penner oder so


    Zitat

    Wie kann man das verhindern?


    Jetzt zeige ich es euch :)
    Badnames:


    Geht zu OnPlayerConnect, damit wir den n00b gleich am Anfang schon kicken können wenn der Name unerlaubt ist.


    So sieht alles aus


    public OnPlayerConnect(playerid)
    {
    new playrname[16]; //Macht playrname womit wir später gucken ob der Name verboten ist
    GetPlayerName(playerid, playrname, sizeof(playrname)); //kriegt den Namen des Spielers
    new string[255];
    if(!strfind(playrname,"trottel",true)) //wenn der Server im playrname trottel findet
    {
    SendClientMessage(playerid,Rot,"Du wurdest gekickt weil du einen nicht erlaubten Namen hast"); //Sendet ihm eine Nachricht
    Kick(playerid); //kickt den Spieler
    format(string, sizeof(string), "´%s wurde vom Server gekickt. Grund: Unerlaubter Name", playrname); //macht einen String, %s ist der Name anderes Bsp. %d ist eine Zahl^^
    SendClientMessageToAll(Rot,string); //Sendet den String den wir oben gemacht haben an alle
    return 0;
    }
    return 1;
    }


    Prima das kann man mit mehreren Namen machen


    public OnPlayerConnect(playerid)
    {
    new playrname[16]; //Macht playrname womit wir später gucken ob der Name verboten ist
    new string[255];
    GetPlayerName(playerid, playrname, sizeof(playrname)); //kriegt den Namen des Spielers
    if(!strfind(playrname,"trottel",true)) //wenn der Server im playrname trottel findet
    {
    SendClientMessage(playerid,Rot,"Du wurdest gekickt weil du einen nicht erlaubten Namen hast"); //Sendet ihm eine Nachricht
    Kick(playerid); //kickt den Spieler
    format(string, sizeof(string), "´%s wurde vom Server gekickt. Grund: Unerlaubter Name", playrname); //macht einen String, %s ist der Name anderes Bsp. %d ist eine Zahl^^
    SendClientMessageToAll(Rot,string); //Sendet den String den wir oben gemacht haben an alle
    return 0;
    }
    if(!strfind(playrname,"idiot",true)) //wenn der Server im playrname idiot findet
    {
    SendClientMessage(playerid,Rot,"Du wurdest gekickt weil du einen nicht erlaubten Namen hast"); //Sendet ihm eine Nachricht
    Kick(playerid); //kickt den Spieler
    format(string, sizeof(string), "´%s wurde vom Server gekickt. Grund: Unerlaubter Name", playrname); //macht einen String, %s ist der Name anderes Bsp. %d ist eine Zahl^^
    SendClientMessageToAll(Rot,string); //Sendet den String den wir oben gemacht haben an alle
    return 0;
    }
    if(!strfind(playrname,"cheater",true)) //wenn der Server im playrname cheater findet
    {
    SendClientMessage(playerid,Rot,"Du wurdest gekickt weil du einen nicht erlaubten Namen hast"); //Sendet ihm eine Nachricht
    Kick(playerid); //kickt den Spieler
    format(string, sizeof(string), "´%s wurde vom Server gekickt. Grund: Unerlaubter Name", playrname); //macht einen String, %s ist der Name anderes Bsp. %d ist eine Zahl^^
    SendClientMessageToAll(Rot,string); //Sendet den String den wir oben gemacht haben an alle
    return 0;
    }
    return 1;
    }


    Gut, jetzt kommen wir zu Badwords - verbotene Wörter
    Die müssen bei OnPlayerText eingefügt werden


    public OnPlayerText(playerid,text[])
    {
    if(!strfind(text,"fuck",true)) //wenn er im Text fuck findet
    {
    SendClientMessage(playerid,Rot," Keine Schimpfwörter sonst wirst du gekickt!");
    return 0;
    }
    if(!strfind(text,"arsch",true))
    {
    SendClientMessage(playerid,Rot," Keine Schimpfwörter sonst wirst du gekickt!");
    return 0;
    }
    if(!strfind(text,"huso",true))
    {
    SendClientMessage(playerid,Rot," Keine Schimpfwörter sonst wirst du gekickt!");
    return 0;
    }
    if(!strfind(text,"hure",true))
    {
    SendClientMessage(playerid,Rot," Keine Schimpfwörter sonst wirst du gekickt!");
    return 0;
    }
    if(!strfind(text,"penner",true))
    {
    SendClientMessage(playerid,Rot," Keine Schimpfwörter sonst wirst du gekickt!");
    return 0;
    }
    if(!strfind(text,"wixxer",true))
    {
    SendClientMessage(playerid,Rot," Keine Schimpfwörter sonst wirst du gekickt!");
    return 0;
    }
    if(!strfind(text,"wichser",true))
    {
    SendClientMessage(playerid,Rot," Keine Schimpfwörter sonst wirst du gekickt!");
    return 0;
    }
    if(!strfind(text,"schwanz",true))
    {
    SendClientMessage(playerid,Rot," Keine Schimpfwörter sonst wirst du gekickt!");
    return 0;
    }
    return 1;
    }


    Fertig, nun habt ihr Badnames und Badwords! Man kann es auch aus Dateien lesen aber das is zu kompliziert find ich


    MfG


    zombie.modder


    PS: Sry für diese Schimpfwörter :P






    (c)zombie.modder

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

    Einmal editiert, zuletzt von zombie.modder ()

  • Aber dumm gecodet. Ganz ehrlich. Ich würde eher die "Badwords" in einem Array speichern und dann abfragen lassen:
    new gBadWords[] = {"lalilu", "lolali", "lulile"};


    public OnPlayerText(playerid, text[]) {
    if(!strfind(text,gBadWords,true)) return 0;
    return 1;
    }

  • Bright seine methode ist wesentlicher einfacher und übersichtlicher....^^

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • In einem Teil kickst du den Spieler und schickst erst danach die Nachricht.
    Ich in mir aber sehr sicher, dass eine Kick-Nachricht vor dem Kick kommen muss, da Ereignisse vom Server ja nach einem Kick nichtmehr gehandelt werden...

  • Also das von Zombie.Modder finde ich sehr Simple und es verbaucht viel platz.
    Ich würde es wie Bright machen, in einem Arrey und fertig.
    Logisch denken hilft sehr oft.
    Sehr Sehr viele Scripter machen dinge, wo sie sich vorher nichts gedacht haben.

  • Äh sorry, meine Methode war bisschen falsch hab ich im Nachhinein gemerkt.


    So dürfte es richtig funktionieren ^^
    new gBadWords[][16] = {"...", ",,,", ":::", ";;;", "(((", ")))"} // Na na, dürft ihr schon selbst rein schreiben ^^


    public OnPlayerText(playerid, text[]) {
    if(strfind(text, gBadWords)) return 0;
    return 1;
    }


    Ist btw ungetestet.