FPS anzeige

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,
    Wo liegt der error?


    //FPS Textdraw
    new b1[200];
    format(b1,200,"%d FPS ", pFPS[playerid]);
    TextDrawSetString(Textdraw0,b1);
    Textdraw0 = TextDrawCreate(491.000000, 118.000000,b1);
    TextDrawBackgroundColor(Textdraw0, -1);
    TextDrawFont(Textdraw0, 3);
    TextDrawLetterSize(Textdraw0, 0.529999, 1.600000);
    TextDrawColor(Textdraw0, 65535);
    TextDrawSetOutline(Textdraw0, 0);
    TextDrawSetProportional(Textdraw0, 1);
    TextDrawSetShadow(Textdraw0, 0);
    TextDrawUseBox(Textdraw0, 1);
    TextDrawBoxColor(Textdraw0, 255);
    TextDrawTextSize(Textdraw0, 608.000000, 0.000000);



    C:\Dokumente und Einstellungen\Gian-Luca Koberstein\Desktop\Life Of Sun By ROnNNNY\Life Of Sun By ROnNNNY [VERÖFFENTLICHT]\gamemodes\Life-Of-Fun.pwn(67) : error 017: undefined symbol "playerid"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • Da es ja für jeden Spieler sein soll, musst du die TextDraws durch SpielerTextDraws austauschen.
    Der Error ist da, weil du es anscheinend in einem Callback/Funktion gemacht hast, wo es den Parameter "playerid" nicht gibt (OnGameModeInit?)
    Erstellt die SpielerTextDraws für den Spieler, wenn dieser den Server betritt (OnPlayerConnect).

  • Lass mich raten du lässt den Textdraw unter OnGameModeInit generieren? Falsch da gibts keine Playerid muss man mit einer forschleife lösen MAX_PLAYERS
    und dann überall i z.B rein machen. oder Du nimmst OnPlayerConnect dafür

  • Spieler-Variable instantiieren: Oben im Code
    new Text:FPSTextDraw[MAX_PLAYERS] = {Text:-1, ...};


    Textdraw erstellen: OnPlayerConnect
    FPSTextDraw[playerid] = TextDrawCreate(491.000000, 118.000000,"-- FPS");
    TextDrawBackgroundColor(FPSTextDraw[playerid], -1);
    TextDrawFont(FPSTextDraw[playerid], 3);
    TextDrawLetterSize(FPSTextDraw[playerid], 0.529999, 1.600000);
    TextDrawColor(FPSTextDraw[playerid], 65535);
    TextDrawSetOutline(FPSTextDraw[playerid], 0);
    TextDrawSetProportional(FPSTextDraw[playerid], 1);
    TextDrawSetShadow(FPSTextDraw[playerid], 0);
    TextDrawUseBox(FPSTextDraw[playerid], 1);
    TextDrawBoxColor(FPSTextDraw[playerid], 255);
    TextDrawTextSize(FPSTextDraw[playerid], 608.000000, 0.000000);
    TextDrawShowForPlayer(playerid, FPSTextDraw[playerid]);


    Textdraw löschen: OnPlayerDisconnect
    if(FPSTextDraw[playerid] != Text:-1)
    {
    //Textdraw existiert.
    TextDrawDestroy(FPSTextDraw[playerid]);
    FPSTextDraw[playerid] = Text:-1;
    }



    Anzeige: Dort wo du die FPS-Anzeige aktualisierst
    new b1[16];
    format(b1,sizeof(b1),"%d FPS ", pFPS[playerid]);
    TextDrawSetString(FPSTextDraw[playerid],b1);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Du brauchst ja einen Timer um aktuell zu bleiben, richtig ?
    pFPS[playerid] returnt ja nicht automatisch die FPS, die musst du selbst gette, schaffste selbst (Wiki) ?
    So, dann updatest du alle X MS (so wie du es willst), und schon, da hast du deine aktuelle FPS.

  • Wenn die FPS Anzeige für einen Spieler gemacht werden soll, dann währe SetTimerEx am klügsten.


    Bitte bitte tue uns allen einen Gefallen und lerne erstmal die Grundlagen.
    Das was du hier ablieferst ist unter aller sau bzw. überhaupt kein Verständnis für Pawno.

  • Er hat auch bei seinen Timer den repeating auf false (0), was also heißen würde:
    Einmal den Timer in einer Sekunde aufrufen, FPS ausgeben, und dann nicht mehr.
    Die FPS Anzeige würde danach still stehen, also muss der Parameter repeating auf true (1).
    SetTimer("fpstimer",1000,1);
    oder halt:
    SetTimerEx("fpstimer",1000,1,"d",playerid);