Titel ganz Einfach: es funktioniert nicht

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,


    die Funktion IsPlayerNameOnline funktioniert manchmal nicht, manchmal sagt er das ein Spieler online ist obwohl ers gar nicht ist. Das ist immer unterschiedlich.


    stock GetPlayerId(playername[])
    {
    for(new i = 0; i <= MAX_PLAYERS; 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;
    }
    stock IsPlayerNameOnline(PName[])
    {
    if(GetPlayerId(PName) != INVALID_PLAYER_ID)
    {
    if(IsPlayerConnected(GetPlayerId(PName)))
    {
    return 1;
    }
    else return 0;
    }
    else return 0;
    }

    Ich hoffe jemand kann mir helfen.
    :)

  • Hier, die habe ich mal in den Code Schnipseln gepostet.
    stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
    {
    new l_name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(!strcmp(l_name,l_PlayerName, true)) return i;
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(strfind(l_name,l_PlayerName,true)!=-1) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }


    Wenn du nur nach dem ganzen Name suchen willst, mache die zweite Schleife weg.


  • Dann bekomme ich einen Fehler in der Zeile:


    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))

    Code
    error 033: array must be indexed (variable "NC_GetPlayerName")
  • stock NC_GetPlayerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    if(strfind(name, "[", true) != -1 || strfind(name, "]", true) != -1)
    {
    format(name, sizeof(name), "%s", name[5]);
    }
    return name;
    }


    Ist eine Funktion die den Clantag entfernt.

  • Dann müsstest du es so schreiben:
    stock ReturnPlayerID(l_PlayerName[])
    {
    new l_name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(!strcmp(NC_GetPlayerName(i),l_PlayerName, true)) return i;
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(strfind(NC_GetPlayerName(i),l_PlayerName,true)!=-1) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }