Problem mit dem Namen

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
  • Hey Leute,
    ich möchte gern in mein Script einbauen das der Name des Spielers "kontrolliert" wird wenn er auf den Server kommt.
    Ich frage mich nun wie könnte ich das denn am besten machen ?
    Ich möchte gerne das der Name im folgenden Format sein muss: Vorname_Nachname
    Auserdem möchte ich gerne wissen wie ich den Vornamen und den Nachnamen dann einzeln auslesen kann. ?
    Ich hoffe es kann mir jemand helfen.


    Mfg

  • n0skillg3t: Das war mir schon klar, desshalb hab ich ja hier auch gefragt wie ich das mache..
    Haxler: Danke werds gleich versuchen :D könntest du mir auch erklärn für was "p<_>s[15]s[15]" steht.. also was die Zeichen bedeuten ??


    Mfg


    edit:// Könntest du evtl ein kleines Beispiel machen, wie dann das bei "OnPlayerConnect" aussehen sollte, wenn der Name in dem Vorname_Nachname format stehen sollte ?? Verstehe nicht ganz wie ich das machen soll

  • mit p<_> gibst du an, dass " _ " das trennzeichen darstellen soll. Die Stringlänge muss man seit sscanf2 angeben (Eckige Klammern).
    Versuchs mal so:
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    new vorname[15], nachname[15];
    if(sscanf(name,"p<_>s[15]s[15]",vorname,nachname))return SendClientMessage(playerid,rot,"Falscher Name: Vorname_Nachname!");
    printf("Spieler(%d): Vorname: %s, Nachname: %s",playerid, vorname, nachname);
    Wenn du das alte sscanf verwendest (die stock-version) dann musst du die sscanf zeile mit der die ich oben geschrieben hab tauschen.

  • Dankesehr :DD


    Hab´s hinbekommen :D
    Danke für die hilfe, hatte echt den durchblick verloren :D


    Mfg

  • Vor kurzem hat da jemand im englischen Samp Forum ne schöne Funktion dazu gepostet:

    stock IsRPName(const name[], max_underscores = 2)
    {
    new underscores = 0;
    if (name[0] < 'A' || name[0] > 'Z') return false; // First letter is not capital
    for(new i = 1; i < strlen(name); i++)
    {
    if(name[i] != '_' && (name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z')) return false; // a-zA-Z_
    if( (name[i] >= 'A' && name[i] <= 'Z') && (name[i - 1] != '_') ) return false; // unneeded capital letter
    if(name[i] == '_')
    {
    underscores++;
    if(underscores > max_underscores || i == strlen(name)) return false; // More underlines than limit, or underline at the last pos
    if(name[i + 1] < 'A' || name[i + 1] > 'Z') return false; // Not a capital letter after underline
    }
    }
    if (underscores == 0) return false; // No underline detected
    return true;
    }

    Nutzung bsp:
    if(!isRPName("DurtyFree",1) return SendClientMessage(playerid,FARBE,"DurtyFree ist kein RP Name");