. und _ im Namen auslesen?

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
  • Guten Tag,


    ich habe vor, dass jeder Spieler, der sich auf meinem Server registriert, einen Roleplay Namen hat. Beispielsweise John.Baum.


    Nun möchte ich abfragen, sobald er den Server betritt, ob er ein "." oder ein "_" im Namen hat.
    Wenn nicht -> Kicken sowie schreiben, er soll ein Roleplay Namen benutzen. ( krieg ich selber hin )


    Leider habe ich keine Ahnung, wie man diese Zeichen im Namen abfragt.
    Wenn ein "." oder "_" bestehen ist, soll er weiter zur Registration geführt werden. ( krieg ich auch hin )


    Danke im voraus.


    MfG


    Kevin

  • Die einfachste Variante wäre die strfind() Funktion.
    http://wiki.sa-mp.com/wiki/Strfind


    Beispiel:


    new bool: legit = false; //Variable, die festlegt, ob der Name korrekt ist
    if(strfind(name, ".") != -1){ //Prüfen, ob ein "." im Namen vorhanden ist
    if(strfind(name, ".") != (strlen(name) -1) && strfind("name", ".") != 0) legit = true;//Prüfen, ob der Punkt auch nicht an letzter oder erster Stelle ist.
    }else if(strfind(name, "_") != -1){ Prüfen, ob ein "_" im Namen vorhandne ist
    if(strfind(name, "_") != (strlen(name) -1) && strfind("name", "_") != 0)legit = true; //Prüfen, ob der Unterstrich auch nicht an letzter oder erster Stelle ist.
    }


    if(legit){ //Wenn legit == true
    //Entspricht den Anforderungen
    }else{ //Wenn legit == false
    //Entspricht nicht den Anforderungen
    }


    Ungetestet, wenn etwas nicht klappt oder unverständlich ist, sag Bescheid.
    Alternativ kannst du noch prüfen, ob vor und nach dem Punkt eine bestimmte Anzahl an Zeichen vorhanden ist.
    Das kannst du ebenfalls mit der strfind() Funktion erledigen. Sie returnt die Position des Zeichens im Text.


    //E: Fehler korrigiert
    //E2: Code optimiert

  • Huhu Jack,


    erstmal danke für eine Sinnvolle und Hilfreiche Antwort.
    Grade dein Code schnipsel und getestet, funktioniert einwandfrei.
    Du meintest, dass man die Zeichen vor und nach dem punkt bzw. unterstrich auslesen kann.
    Könntest du mir zeigen bzw den Code geben, wie ich abfragen kann, dass min 3 Buchstaben vor und nach dem Punkt sind?
    Natürlich inkl. deinem Code oben :)
    Wäre echt nett :)


    MfG


    Kevin-


    //E: Text editiert

  • Den Code übernommen sieht das dann so aus:
    new bool: legit = false; //Variable, die festlegt, ob der Name korrekt ist
    if(strfind(name, ".") != -1){ //Prüfen, ob ein "." im Namen vorhanden ist
    if(strfind(name, ".") < (strlen(name) - 3) && strfind("name", ".") > 2) legit = true;//Prüfen, ob der Punkt auch nicht an letzter oder erster Stelle ist.
    }else if(strfind(name, "_") != -1){ Prüfen, ob ein "_" im Namen vorhandne ist
    if(strfind(name, "_") < (strlen(name) - 3) && strfind("name", "_") > 2)legit = true; //Prüfen, ob der Unterstrich auch nicht an letzter oder erster Stelle ist.
    }

  • Guten Abend,


    gerade alles getestet, wenn man mehr als 3 Buchstaben besitzt ( vor und nachname ) ist alles ok.
    Sobald man aber unter 3 Buchstaben hat, zeigt er dennoch die registration an.
    Habe den Fehler selber gefunden:
    strfind("name", ".") > 2)


    Der Fehler liegt hierbei bei ">" dies muss in "< 3" umgeändert werden.


    Ich danke dennoch euch beiden :)


    MfG


    Kevin


    /e: text verändert

    Einmal editiert, zuletzt von kreetkev ()