PlayerTextDraws (als Strings)

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
  • Wenn ich eine Leiste unten mit den Stats ausgeben möchte, wie mache ich das dann am besten? Bin jetzt so weit, das die Daten zwar korrekt für jeden Spieler angezeigt werden, allerdings immer nur für einen. Wenn der Nächste connected, verschwindet die Statsleiste bei mir und taucht bei demjenigen auf, der sich frisch mit dem Server verbunden hat. Wie mache ich das für alle?



    new Text:textdrawname[MAX_PLAYERS];
    new Text:textdrawlevel[MAX_PLAYERS];
    new Text:textdrawkills[MAX_PLAYERS];
    new Text:textdrawdeaths[MAX_PLAYERS];
    new Text:textdrawkd[MAX_PLAYERS];
    new Text:textdrawexp[MAX_PLAYERS];


    stock SetPlayerTextDraws(playerid)
    {
    new namestring[30],
    levelstring[30],
    killsstring[30],
    deathsstring[30],
    kdstring[30],
    expstring[30];


    format(namestring,sizeof(namestring),"Name: %s",PlayerName(playerid));
    TextDrawSetString(textdrawname[playerid],namestring);
    TextDrawShowForPlayer(playerid,textdrawname[playerid]);


    format(levelstring,sizeof(levelstring),"Level: %d",GetPlayerScore(playerid));
    TextDrawSetString(textdrawlevel[playerid],levelstring);
    TextDrawShowForPlayer(playerid,textdrawlevel[playerid]);


    format(killsstring,sizeof(killsstring),"Kills: %d", PlayerInfo[playerid][Kills]);
    TextDrawSetString(textdrawkills[playerid],killsstring);
    TextDrawShowForPlayer(playerid,textdrawkills[playerid]);


    format(deathsstring,sizeof(deathsstring),"Deaths: %d", PlayerInfo[playerid][Deaths]);
    TextDrawSetString(textdrawdeaths[playerid],deathsstring);
    TextDrawShowForPlayer(playerid,textdrawdeaths[playerid]);


    format(kdstring,sizeof(kdstring),"K/D: %0.2f",Float:PlayerInfo[playerid][Kills] / Float:PlayerInfo[playerid][Deaths]);
    TextDrawSetString(textdrawkd[playerid], kdstring);
    TextDrawShowForPlayer(playerid,textdrawkd[playerid]);


    format(expstring,sizeof(expstring),"EXP: %d",PlayerInfo[playerid][EXP]);
    TextDrawSetString(textdrawexp[playerid], expstring);
    TextDrawShowForPlayer(playerid,textdrawexp[playerid]);
    return 1;
    }


    unter OnPlayerSpawn ist der Methodenaufruf: SetPlayerTextDraws(playerid)


    -> Wenn Spieler spawnt, sollen die Textdraws angezeigt werden.


    unter OnPlayerDeath ist dieser für die playerid und killerid: SetPlayerTextDraws(killerid); SetPlayerTextDraws(playerid);


    Was stimmt hier nicht? Normalerweise müsste das doch funktionieren...

    2 Mal editiert, zuletzt von Mostey ()

  • Kann dir zwar selber nicht helfen, aber eventuell wird dir ja schneller geholfen, wenn das Topic wieder unter den "letzten 10 Beiträgen" angezeigt wird.
    Hoffe, dass dir jemand bei diesem Problem helfen kann, da ich dasselbe Problem habe und auch gern eine Lösung dazu hätte. :)


    Beste Grüße,
    Aced

  • Wenn du Globale Textrdaw hast musst du


    new Text:blabla;
    machen wenn du aber PlayerTextDraws benutzen willst musst du


    new PlayerText:blabla[MAX:PLAYERS];
    machen da das zwei Verschieden Textdraws sind.
    Und außerdem will er dir Sagen das es das dämlichste ist was man machen kann, den bei den globalen Textdraws hast du irgendwann ein Limit bei PlayerTextDraws ist das Limit um einiges höher und du kannst mehr Textdraws anzeigen lassen (oder so) genau weiß ich es jetzt auch nicht müsstest dich genauer mit PlayerTextDraws beschäftigen da dies wirklich von Vorteil von ist.

  • Stimmt, ist mir jetzt eben nicht aufgefallen.


    Hab das ganze mal an meine bisherige Formatierung angepasst... und der Compiler zeigt mir überall einen tag mismatch an, warum? Kann man PlayerTextDraws nicht so formatieren wie die eigentlichen globalen Textdraws?


    textdrawname[playerid] = CreatePlayerTextDraw(playerid, 10.000000, 436.000000, " "); // -> Name
    TextDrawBackgroundColor(textdrawname[playerid], 255); // <- tag mismatch
    TextDrawFont(textdrawname[playerid], 2); // <- tag mismatch
    TextDrawLetterSize(textdrawname[playerid], 0.330000, 0.799998); // <- tag mismatch
    TextDrawColor(textdrawname[playerid], -16776961); // <- tag mismatch
    TextDrawSetOutline(textdrawname[playerid], 1); //<- tag mismatch
    TextDrawSetProportional(textdrawname[playerid], 1); // <- tag mismatch

  • versuchs mal so


    textdrawname[playerid] = CreatePlayerTextDraw(10.000000, 436.000000, " "); // -> Name
    TextDrawBackgroundColor(textdrawname[playerid], 255); // <- tag mismatch
    TextDrawFont(textdrawname[playerid], 2); // <- tag mismatch
    TextDrawLetterSize(textdrawname[playerid], 0.330000, 0.799998); // <- tag mismatch
    TextDrawColor(textdrawname[playerid], -16776961); // <- tag mismatch
    TextDrawSetOutline(textdrawname[playerid], 1); //<- tag mismatch
    TextDrawSetProportional(textdrawname[playerid], 1); // <- tag mismatch


  • Hab ich mittlerweile auch gemerkt und dementsprechend angepasst. Nun funktioniert das auch, hatte nur überall das "Player" vor dem "Text" vergessen. Danke dir trotzdem. :)