Aktuelles Leben als Textlabel anzeigen?

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
  • Hi zusammen,


    ich fass den Beitrag mal kurz und schmerzlos:


    Ich wollte das über dem Spieler das aktuelle Leben angezeigt wird, doch irgendwie will es nicht ganz funktionieren.


    Hier mal der PWN-Code:



    new Text3D:PlayerLabel[MAX_PLAYERS];
    forward UpdateLabel(playerid);


    OnPlayerSpawn:



    new Float:Leben,string2[256];
    GetPlayerHealth(playerid,Leben);
    format(string2,sizeof(string2),"%d HP",Leben);
    PlayerLabel[playerid] = Create3DTextLabel(string2,COLOR_RED,30.0,40.0,50.0,40.0,0);
    Attach3DTextLabelToPlayer(PlayerLabel[playerid], playerid, 0.0, 0.0, 0.7);
    SetTimerEx("UpdateLabel",1000,1,"i",playerid);


    OnPlayerDeath und OnPlayerDisconnect:



    Delete3DTextLabel(PlayerLabel[playerid]);


    Und der Public der alles aktualisieren sollte:



    public UpdateLabel(playerid)
    {
    new Float:Leben,string2[256];
    GetPlayerHealth(playerid,Leben);
    format(string2,sizeof(string2),"%d HP",Leben);
    Update3DTextLabelText(PlayerLabel[playerid], COLOR_RED, string2);
    return 1;
    }


    Jetzt ist nur leider das Problem, dass dann eine kilometerlange Zahl angezeigt wird anstatt das richtige HP.


    Kann da jemand helfen? Danke im Voraus

  • Kann garnicht funktionieren, da:
    new Float:Leben,string2[256];
    GetPlayerHealth(playerid,Leben);
    format(string2,sizeof(string2),"%d HP",Leben);
    PlayerLabel[playerid] = Create3DTextLabel(string2,COLOR_RED,30.0,40.0,50.0,40.0,0);
    Attach3DTextLabelToPlayer(PlayerLabel[playerid], playerid, 0.0, 0.0, 0.7);
    SetTimerEx("UpdateLabel",1000,1,"i",playerid);
    Die Variable Leben ist Float. Und unter string2 bindest du eine Float Variable als Integer ein.
    Also:
    new Float:Leben,string2[256];
    GetPlayerHealth(playerid,Leben);
    format(string2,sizeof(string2),"%0.2f HP",Leben); // Ist jetzt auf 2 Dezimalstellen gerundet.
    PlayerLabel[playerid] = Create3DTextLabel(string2,COLOR_RED,30.0,40.0,50.0,40.0,0);
    Attach3DTextLabelToPlayer(PlayerLabel[playerid], playerid, 0.0, 0.0, 0.7);
    SetTimerEx("UpdateLabel",1000,1,"i",playerid);
    Und der Public:
    new Float:Leben,string2[256];
    GetPlayerHealth(playerid,Leben);
    format(string2,sizeof(string2),"%0.2f HP",Leben);
    Update3DTextLabelText(PlayerLabel[playerid], COLOR_RED, string2);

    Muss das nicht UpdatePlayer3DTextLabelText heißen? Müsste doch ein Warning kommen oder?