[Need-Help!] Textdraws switchen zwischen den Spielern hin und her..

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
  • Hallo Leute,


    mein Problem sieht folgendermaßen aus:


    Ich lasse die Stats (ID,Kills,Tode usw.) von den Spielern in Textdraws anzeigen und jede Sekunde aktualisieren.
    Wenn aber mehr als 1 Spieler auf meinen Server sind, switchen die ausgelesenen Daten von den Spielern hin und her.
    Die Spieler sehen in einem Moment die Stats von ID 0 und im nächsten die Stats von ID 1 usw..


    Ich weiß da einfach nicht weiter, ich finde den Fehler einfach nicht..


    Hier mal das Public vom Timer für das Spieler/Stats-Update wo ich den Fehler vermute:


    forward SpielerUpdate(playerid);
    public SpielerUpdate(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    SetPVarInt(playerid,"OnlineSeit",GetPVarInt(playerid,"OnlineSeit")+1);
    if(GetPVarInt(playerid,"OnlineSeit")==60)
    {
    SpielerInfo[playerid][pSpielminuten] += 1;
    SetPVarInt(playerid,"OnlineSeit",0);
    SetPVarInt(playerid,"ZeitSeitLogin",GetPVarInt(playerid,"ZeitSeitLogin")+1);
    SendClientMessage(playerid,ROT,"Deine Stats wurden aktualisiert!");
    }
    new strID[10]; format(strID, sizeof(strID), "ID: %d",playerid); TextDrawSetString(StatsID, strID); TextDrawShowForPlayer(playerid, StatsID);
    new strKills[24]; format(strKills, sizeof(strKills), "Kills: %d", SpielerInfo[playerid][pKills]); TextDrawSetString(StatsKills, strKills); TextDrawShowForPlayer(playerid, StatsKills);
    new strDeaths[24]; format(strDeaths, sizeof(strDeaths), "Tode: %d", SpielerInfo[playerid][pTode]); TextDrawSetString(StatsDeaths, strDeaths); TextDrawShowForPlayer(playerid, StatsDeaths);
    new Float:health; GetPlayerHealth(playerid,health); new strHP[14]; format(strHP, sizeof(strHP), "Health: %f",health); TextDrawSetString(StatsHealth, strHP); TextDrawShowForPlayer(playerid, StatsHealth);
    new Float:armour; GetPlayerArmour(playerid,armour); new strARMOUR[14]; format(strARMOUR, sizeof(strARMOUR), "Armour: %f", armour); TextDrawSetString(StatsArmour, strARMOUR); TextDrawShowForPlayer(playerid, StatsArmour);
    new strSkin[13]; format(strSkin, sizeof(strSkin), "Skin-ID: %d", GetPlayerSkin(playerid)); TextDrawSetString(StatsSkin, strSkin); TextDrawShowForPlayer(playerid, StatsSkin);
    new strZSL[50]; format(strZSL, sizeof(strZSL), "Minuten seit Login: %d", GetPVarInt(playerid,"ZeitSeitLogin")); TextDrawSetString(StatsZeitSeitLogin, strZSL); TextDrawShowForPlayer(playerid, StatsZeitSeitLogin);
    new strZG[50]; format(strZG, sizeof(strZG), "Spielminuten: %d", SpielerInfo[playerid][pSpielminuten]); TextDrawSetString(StatsZeitGesammt, strZG); TextDrawShowForPlayer(playerid, StatsZeitGesammt);
    {
    new i = 0;
    for(;i<GetMaxPlayers();i++)
    {
    if(GetPVarInt(i,"Prem1")==1)
    {
    SetPVarInt(i,"Navi",8);
    SetPVarInt(i,"Prem1",0);
    }
    if(GetPVarInt(i,"Brob")==1)
    {
    if(GetPVarInt(i,"Bank")==0)
    {
    SetPVarInt(i,"Brob",0);
    SendClientMessageToAll(ROT,"[Achtung] Der Bankraub ist fehlgeschlagen!");
    }
    }
    }
    }
    }
    return true;
    }


    Ich hoffe jemand kann mir zeigen was ich falsch gemacht habe.




    Mit freundlichen Grüßen
    AlphaGen!

    DIVIDE ET IMPERA

  • Du updatest playerid, loopst dann aber mittels GetMaxPlayers() ? Übersehe ich grad was oder hat das einen bestimmten Sinn?

    Ich habe den Oberen Abschnitt versucht mit GetMaxPlayers() zu updaten, doch dann wurden überhaupt keine Textdraws mehr angezeigt.


    (Mal davon abgesehen werden dort keine Textdraws verändert)?

    Die Textdraws selbst verändern sich nicht, aber die Infos (was in %d usw. angezeigt wird) switcht ständig hin und her..

    DIVIDE ET IMPERA