Anhand der playerid überprüfen, ob Spieler online/offline ist

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
  • Ich habe ein kleines Problem bei meinem Freundschaftssystem.
    Und zwar möchte ich anhand der playerid überprüfen, ob der Spieler online oder offline ist.
    Das Problem ist jedoch, dass mir die Spieler ständig als online angezeigt werden, diese jedoch nicht online sind.


    Ich verwende leicht veränderte Funktionen aus der Include von 8D.



    COMMAND:friends(playerid)
    {
    new string[MAX_PLAYER_FRIENDS*MAX_PLAYER_NAME];
    for(new slot=0;slot!=MAX_PLAYER_FRIENDS;slot++)
    {
    if(!strcmp(GetFriendBySlot(playerid,slot), "-1", false))continue;
    else{
    if(GetIdByName(GetFriendBySlot(playerid,slot))!=INVALID_PLAYER_ID)format(string,sizeof(string),"%s\n%s - Online",string,GetFriendBySlot(playerid,slot));
    else if(GetIdByName(GetFriendBySlot(playerid,slot))==INVALID_PLAYER_ID)format(string,sizeof(string),"%s\n%s - Offline",string,GetFriendBySlot(playerid,slot));
    }
    }
    ShowPlayerDialog(playerid,DIALOG_FRIENDS,DIALOG_STYLE_LIST,"Freundesliste",string,"Schließen","");
    return 1;
    }


    stock GetFriendBySlot(playerid,slot)
    {
    new name[MAX_PLAYER_NAME];
    if(strcmp(Freunde[playerid][slot],"0",true) != 0)
    {
    return Freunde[playerid][slot];
    }
    else
    {
    format(name,MAX_PLAYER_NAME,"-1");
    return name;
    }
    }



    stock GetIdByName(name[])
    {
    for(new i = 0; i != MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(strcmp(name,PlayerName,true) == 0)
    {
    return i;
    }
    }
    }
    return INVALID_PLAYER_ID;
    }


    Mit freundlichen Grüßen

  • Wie gesagt, die Funktionen stammen aus der Include von 8D.
    Das hilft mir jetzt aber nicht bei der Fehlerbehebung. :S


    //edit Rechtschreibfehler

    Einmal editiert, zuletzt von k4biX ()

  • wieso nimmst du eig. nicht IsPlayerConnected oder INVALID_PLAYER_ID ? oder wie meinste das jetzt? also mit den ersten fragst du ja ab ob der spieler online ist(connected) mit dem zweiten z.B. bei einen befehl ob es diese id gibt wenn nicht ist er also off^^

  • Ja, ich überprüfe zunächst mit IsPlayerConnected(i) ob der Spieler verbunden ist, danach gleich ich den Namen von dem Spieler, mit der aus der Freundesliste ab, falls sich die beiden nicht unterscheiden, dann return ich die ID, falls die Schleife beendet ist und es keine Übereinstimmung gab return ich: INVALID_PLAYER_ID


    //edit: Problem habe ich bereits gelöst!

    Einmal editiert, zuletzt von k4biX ()