[INCLUDE] GetPlayerFPS

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Es gibt Neuigkeiten! Ab sofort könnt ihr dem Donators Club auf Lebenszeit beitreten.
    Weitere Infos im Thema Donator's Club ab heute wieder verfügbar!

    • [INCLUDE] GetPlayerFPS

      Hallöle an Alle,

      ja, das Thema ist ein alter Schuh, schon aus dem Jahr 2010: forum.sa-mp.com/showthread.php?t=172085

      Ist mir bewusst, allerdings habe ich gesehen, dass es kein Include gibt für diese Funktion.

      Zwar gibt es viele Beispiele, wie es implementiert wurde, aber meistens nicht gut bzw nicht direkt nutzbar.

      Der Clue daran ist, dass die Berechnung kontinuierlich stattfinden muss, was bei einer einzelnen Funktion nicht gegeben ist.

      Viele updaten das über OnPlayerUpdate, was viel zu übertrieben ist, da das nur jede Sekunde theoretisch geupdatet wird und nicht 1000x in der Sekunde.

      Der Punkt ist, da die Timer nicht ganz akkurat laufen in Pawn (ohne Timerfix), muss man den Timer etwas frequentierter ansetzen, aber das ist dennoch wesentlich performanter (also 4x die Sekunde, anstatt über 1000x).

      Oftmals wird das auch über PVars gelöst, was in diesem Fall nicht unbedingt eine gute Wahl wäre, da der Wert oft geupdatet wird und immer benötigt wird.

      Source-Code: PasteBin
      Direkter-Download: MediaFire

      Will man die Include in einem Filterscript nutzen, muss man #define FILTERSCRIPT übers Include packen :)

      Die Include macht die Funktion direkt nutzbar, ohne dass man sich um das Updaten sorgen machen muss.

      In diesem Sinne, vielleicht hilft es ja dem Ein oder Anderem.

      Viel Spaß noch allen beim Skripten und einen schönen Tag! :good:


      Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
    • Naja, dafür eine Include zu schreiben, erachte ich als doch wenig sinnvoll, vor allem weil es eigentlich einen passenden Thread für etwas in dieser Größe gibt: breadfish.de/index.php?thread/…%BCtzliche-codeschnipsel/
      Wenn jetzt jeder anfangen würde, eine einzige Funktion als Include zu basteln, dann herrscht das reine Chaos. Zudem eine einzelne Funktion ohne große Logik dahinter als Standalone-Include sinnlos ist.
      Davon abgesehen ist das ja bei weitem nichts neues, nur weil es jetzt in einer Include steht, macht es das nicht besser.

      Für solche Schnipsel macht man sich eine Sammel-Include und gut ist. Das ganze Gehooke (nur damit es überaus kompliziert aussieht mit den ganzen Sonderzeichen) kann man sich auch sparen.

      Außerdem noch zwei Punkte zum Code:
      1. Das Array drunk sollte nicht global sondern nur local static deklariert werden, es wird ja nur dort genutzt.
      2. Im Loop sollte noch abgefragt werden, ob der Spieler auch online ist, sonst führst du den Code auch für Spieler durch, die nicht online sind, das ist kein gutes Doing.


      Ich empfehle Folgendes:
      OnGameModeInit:

      PAWN-Quellcode

      1. SetTimer("FPS", 251, true);


      Und das hier in eine Sammel-Include (oder die Deklaration unter die normalen Include und den public ganz unten in den Gamemode).

      PAWN-Quellcode

      1. #define GetPlayerFPS(%0) public_fps{%0}
      2. new public_fps[MAX_PLAYERS char];
      3. forward FPS();
      4. public FPS()
      5. {
      6. static olddrunk[MAX_PLAYERS], d, fps;
      7. for(new i = GetPlayerPoolSize(); i > -1; i--)
      8. {
      9. if(!IsPlayerConnected(i)) continue;
      10. d = GetPlayerDrunkLevel(i);
      11. if(d < 100) SetPlayerDrunkLevel(i,2000);
      12. fps = olddrunk[i] - d;
      13. if(fps > 0) public_fps{i} = fps;
      14. olddrunk[i] = d;
      15. }
      16. return 1;
      17. }
      Alles anzeigen


      Mehr ist es nicht. Da braucht es keine Include.

      PS: OnPlayerUpdate wird nicht über 1000x pro Sekunde aufgerufen, im Gegenteil, sehr weit darunter (in der Regel zwischen 30 und 50 mal).
    • Jeffry schrieb:

      PAWN-Quellcode

      1. format(string, sizeof(string), "FPS: %d", GetPlayerFPS(playerid));

      Deine metode geht super grade ebend textdrwas erstellt und eingebaut und ging sofort und das auch sehr genau danke dafür

      @t

      Denoch finde ich die Include auch nicht schlecht wenn man in sein GM platz sparen möchte :thumbup:
      20Fps in GTA in Full HD
      Grafikkarte 512MB Spiecher 2000 iwas Baujahr

      St**** schrieb:

      Hat nichts mit Grafikkarte zu tuhen.
    • Super! :)

      Hog schrieb:

      Denoch finde ich die Include auch nicht schlecht wenn man in sein GM platz sparen möchte
      Wie gesagt, in dem Fall dann eine Sammel Include nutzen, in die du alles auslagerst, was du aus Platzgründen nicht im Gamemode haben willst. Das ist besser als jede Funktion in eine eigene Include zu packen, spart den Hook Wahnsinn und ist deutlich sauberer.