Name zu id

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
  • stock GetPlayerIdFromName(playername[])
    {
    for(new i=0;i<GetMaxPlayers();i++)
    {
    if(IsPlayerConnected(i))
    {
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(i, playername2, sizeof(playername2));
    if(strcmp(playername2, playername, true, strlen(playername)) == 0)
    {
    return i;
    }
    }
    }
    return INVALID_PLAYER_ID;
    }

  • for(new i, p=GetMaxPlayers();i<=p;i++)


    Das Gleich Zeichen einfügen damit auch der letzte Spieler abgefragt wird und das GetMaxPlayers vorher in einer Variable speichern, damit die Funktion GetMaxPlayers nicht nochmal ausgeführt wird.

  • Nur mal zwei andere möglichkeiten die besser sind:


    Falls du sscanf benutzt ( gehe ich mal stark von aus )
    stock GetPlayerID(find[])
    {
    new playerid = INVALID_PLAYER_ID;
    sscanf(find,"u",playerid);
    return playerid;
    }


    Falls nicht

    stock GetPlayerID(find[])
    {
    new pName[MAX_PLAYERS];
    for(new playerid, j = GetPlayerPoolSize(); playerid <= j; playerid++)
    {
    if(!IsPlayerConnected(playerid))
    continue;
    GetPlayerName(playerid,pName,sizeof(pName));
    if(!strcmp(find,pName,false,strlen(find)))
    return playerid;
    }
    return INVALID_PLAYER_ID;
    }


    Warum GetPlayerPoolSize und nicht GetMaxPlayers bzw. MAX_PLAYERS ?
    GetMaxPlayers gibt die maximale anzahl von spielern zurück, GetPlayerPoolSize gibt die derzeit höchste ID zurück.

  • Ich schmeiße auch mal eine Idee von 'ner GetPlayerID Funktion in die Runde :D.



    Vorteil ist halt, dass ein Funktionsausruf wegfällt & GetPlayerName 0 zurückgibt, wenn der Spieler nicht existiert ist. Inwieweit das tauglich und sinnvoller ist stell ich mal mit einem Fragezeichen in den Raum, wollte aber mal eine Alternative bieten :D.