Schadensanzeige

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


    ich habe ein Problem, und zwar steht bei mir keine Schadensanzeige.
    Folgendes Script:


    #define DMGTIMER 10
    forward DmgTimer();


    for(new i=0;i<MAX_PLAYERS;i++)
    {
    Dmg[i] = TextDrawCreate(547.0, 390.0, "Schaden:---");
    TextDrawLetterSize(Dmg[i], 0.4, 1.1);
    TextDrawFont(Dmg[i], 1);
    TextDrawSetShadow(Dmg[i], 2);
    TextDrawSetOutline(Dmg[i], 1);
    }
    SetTimer("DmgTimer",DMGTIMER,1);


    public DmgTimer()
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new Float:Dmg1;
    GetVehicleHealth(GetPlayerVehicleID(i),Dmg1);
    new DmgString[128];
    format(DmgString,sizeof(DmgString), "Schaden: %.1f", Dmg1);
    TextDrawSetString(Dmg[i],DmgString);
    TextDrawShowForPlayer(i, Dmg[i]);
    }
    else
    {
    TextDrawHideForPlayer(i, Tacho[i]);
    }
    }
    return 1;
    }


    Hoffe jemand kann helfen :S
    :thumbup:

    Mit freundlichen Grüßen
    Zeuto


  • new Float:Dmg1;
    GetVehicleHealth(GetPlayerVehicleID(i),Dmg1);
    new DmgString[128];
    format(DmgString,sizeof(DmgString), "Schaden: %.1f", Dmg1);
    TextDrawSetString(Dmg[i],DmgString);
    TextDrawShowForPlayer(i, Dmg[i]);


    TextDrawHideForPlayer fehlt in dem Absatz, Die änderungen sind immer erst nach einem Refresh sichtbar.

    RFT

  • TextDrawHideForPlayer(i,Dmg[i]);
    new Float:Dmg1;
    GetVehicleHealth(GetPlayerVehicleID(i),Dmg1);
    new DmgString[128];
    format(DmgString,sizeof(DmgString), "Schaden: %.1f", Dmg1);
    TextDrawSetString(Dmg[i],DmgString);
    TextDrawShowForPlayer(i, Dmg[i]);


    so?
    sry, wenn ich euch falsch verstanden hab..

    Mit freundlichen Grüßen
    Zeuto

  • for(new i=0;i<MAX_PLAYERS;i++)
    Also für jeden Spieler - da empfehle ich CreatePlayerTextDraw und dazugehörige Funktionen, da es bei normalen Textdraws eine Begrenzung von maximal 2048 gibt und bei Player-Textdraws dieses Limit nicht existiert - und dafür wurden diese Funktionen eingebaut. :)


    new PlayerText:dmg[MAX_PLAYERS], dmgtimer[MAX_PLAYERS];
    //...
    public OnPlayerConnect(playerid)
    {
    dmg[playerid] = CreatePlayerTextDraw(playerid, dmg[playerid], 547.0, 390.0, "Schaden:---");
    PlayerTextDrawLetterSize(playerid, dmg[playerid], 0.4, 1.1);
    PlayerTextDrawFont(playerid, dmg[playerid], 1);
    PlayerTextDrawSetShadow(playerid, dmg[playerid], 2);
    PlayerTextDrawSetOutline(playerid, dmg[playerid], 1);
    }
    //...
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    switch(newstate)
    {
    case PLAYER_STATE_DRIVER, PLAYER_STATE_PASSENGER:
    {
    PlayerTextDrawShow(playerid, dmg[playerid]);
    dmgtimer[playerid] = SetTimerEx("DmgTimer",DMGTIMER,1, "i", playerid);
    }
    case PLAYER_STATE_ONFOOT:
    {
    PlayerTextDrawHide(playerid, dmg[playerid]);
    KillTimer(dmgtimer[playerid]);
    }
    }
    }
    //...
    forward DmgTimer(playerid);
    public DmgTimer(playerid)
    {
    new Float:health, DmgString[128];
    GetPlayerVehicleHealth(GetPlayerVehicleID(playerid), health);
    format(DmgString, sizeof(DmgString), "Schaden: %.1f", health);
    PlayerTextDrawSetString(playerid, dmg[playerid]);
    }


    Mal komplett auf PlayerTextDraw umgeschrieben und angepasst, um es möglichst ressourcenschonend zu gestalten - sollte funktionieren, ist jedoch ungetestet. :thumbup:


    //Edit by RFT: Völlig richtig diesen Beitrag bitte beachten und auf Player Textdraw´s umschreiben.

    Ich bin Dittis Signatur.

    Einmal editiert, zuletzt von iRFT ()