GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Flash - 2013. január 05. - 19:15:33

Cím: GetPlayerFPS
Írta: Flash - 2013. január 05. - 19:15:33
Üdv all.
Találtam hiv. fórumon egy fps lekérõ kódot, de legtöbször 0-át ír.. :/
 
stock GetPlayerFPS(playerid) {
    SetPVarInt(playerid, \"DrunkL\", GetPlayerDrunkLevel(playerid));
    if(GetPVarInt(playerid, \"DrunkL\") < 100) {
        SetPlayerDrunkLevel(playerid, 2000);
    }else{
        if(GetPVarInt(playerid, \"LDrunkL\") != GetPVarInt(playerid, \"DrunkL\")) {
            SetPVarInt(playerid, \"FPS\", (GetPVarInt(playerid, \"LDrunkL\") - GetPVarInt(playerid, \"DrunkL\")));
            SetPVarInt(playerid, \"LDrunkL\", GetPVarInt(playerid, \"DrunkL\"));
            if((GetPVarInt(playerid, \"FPS\") > 0) && (GetPVarInt(playerid, \"FPS\") < 256)) {
                return GetPVarInt(playerid, \"FPS\") - 1;
            }
        }
    }
    return 0;
}

 
Mi a hiba?
Cím: GetPlayerFPS
Írta: ZyZu. - 2013. január 05. - 20:31:49
Esetleg probáld meg a 256 -ról 200 -ra tenni.. így 0 - 200 méri.
 

stock GetPlayerFPS(playerid) {
    SetPVarInt(playerid, \"DrunkL\", GetPlayerDrunkLevel(playerid));
    if(GetPVarInt(playerid, \"DrunkL\") < 100) {
        SetPlayerDrunkLevel(playerid, 2000);
    }else{
        if(GetPVarInt(playerid, \"LDrunkL\") != GetPVarInt(playerid, \"DrunkL\")) {
            SetPVarInt(playerid, \"FPS\", (GetPVarInt(playerid, \"LDrunkL\") - GetPVarInt(playerid, \"DrunkL\")));
            SetPVarInt(playerid, \"LDrunkL\", GetPVarInt(playerid, \"DrunkL\"));
            if((GetPVarInt(playerid, \"FPS\") >  0) && (GetPVarInt(playerid, \"FPS\") <  200)) {
                return GetPVarInt(playerid, \"FPS\") - 1;
            }
        }
    }
    return 0;
}
Cím: GetPlayerFPS
Írta: Flash - 2013. január 05. - 20:37:44
Ugyanaz van, hogy 0-át mutat és sokszor áturgik a jó fps-re (nekem 92) és alig látom, mert visszaugrik egybõl.
Cím: GetPlayerFPS
Írta: ZyZu. - 2013. január 05. - 20:40:04
Akkor probáld megnézni ezt: http://forum.sa-mp.com/showthread.php?p=815112

Meg ezt:

 

#include <a_samp>
new pDrunkLevelLast[MAX_PLAYERS];
new pFPS[MAX_PLAYERS];
public OnFilterScriptInit(){
    SetTimer(\"DisplayFPS\",1000,1);
    return 1;
}
public OnPlayerConnect(playerid) {
    pDrunkLevelLast[playerid]   = 0;
    pFPS[playerid]          = 0;
}
public OnPlayerUpdate(playerid) {
    // handle fps counters.
    new drunknew = GetPlayerDrunkLevel(playerid);
    if (drunknew < 100) { // go back up, keep cycling.
        SetPlayerDrunkLevel(playerid, 2000);
    } else {
        if (pDrunkLevelLast[playerid] != drunknew) {
            new wfps = pDrunkLevelLast[playerid] - drunknew;
            if ((wfps > 0) && (wfps < 200))
                pFPS[playerid] = wfps;
            pDrunkLevelLast[playerid] = drunknew;
        }
    }
}
forward DisplayFPS();
public DisplayFPS(){
    new FPSmsg[20];
    for(new i; i < MAX_PLAYERS; i++)if(IsPlayerConnected(i)){
        format(FPSmsg,20,\"Your FPS is: %d\",pFPS);
        //Show it here on-screen and set PVar
    }
}
Cím: GetPlayerFPS
Írta: Flash - 2013. január 05. - 21:19:07
Az eggyik ~180-at ír, a másik -1
Cím: GetPlayerFPS
Írta: kurta999 - 2013. január 05. - 21:23:50

new
g_pDrunkLevelLast[MAX_PLAYERS],
g_pFPS[MAX_PLAYERS];
// lekérés: g_pFPS[jatekosid]
public OnPlayerUpdate(playerid)
{
new
drunknew = GetPlayerDrunkLevel(playerid);
if(drunknew < 100)
{
SetPlayerDrunkLevel(playerid, 2000);
}
else
{
if(g_pDrunkLevelLast[playerid] != drunknew)
{
   new
      wfps = g_pDrunkLevelLast[playerid] - drunknew;
   if(0 <= wfps <= 200)
   {
      g_pFPS[playerid] = wfps;
   }
   g_pDrunkLevelLast[playerid] = drunknew;
}
}
return 1;
}
Cím: GetPlayerFPS
Írta: Flash - 2013. január 05. - 21:32:06
Most az átlag 185
Fraps: 91-92-t mutat, ami igaz.
Itt az egész:
 
function gPlayerFpsPing() {
for(new playerid; playerid < MAX_PLAYERS; playerid++) {
if(!IsPlayerConnected(playerid)) continue;
if(GetPVarInt(playerid, \"fps\") == 1) {
        new drunknew = GetPlayerDrunkLevel(playerid);
        if(drunknew < 100) {
               SetPlayerDrunkLevel(playerid, 2000);
        }else{
               if(g_pDrunkLevelLast[playerid] != drunknew) {
                    new wfps = g_pDrunkLevelLast[playerid] - drunknew;
                    if(0 <= wfps <= 200) {
                      g_pFPS[playerid] = wfps;
                     }
                      g_pDrunkLevelLast[playerid] = drunknew;
                }
        }
   format(string, sizeof(string), \"~b~~h~~h~FPS: ~w~%i~n~~b~~h~~h~Ping: ~w~%i\", g_pFPS[playerid], GetPlayerPing(playerid));
   PlayerTextDrawSetString(playerid, FpsTD, string);
}
}
return 1;
}
Cím: GetPlayerFPS
Írta: kurta999 - 2013. január 05. - 22:25:19
Hát pedig ennek mûködni kell, ugyanez a kód.
Én a módomból másoltam az OnPlayerUpdate részt, azt használom 0.3b óta és mûködik tökéletesen.
http://forum.sa-mp.com/showthread.php?t=172085
Cím: GetPlayerFPS
Írta: ZyZu. - 2013. január 05. - 22:28:42
Esetleg nem ez a hiba? Probáld meg így.. de jónak kell lennie..  :hmmm:
 
if(0 <= wfps <= 200) 

 
helyett
 
 if ((wfps > 0) && (wfps < 200)) 
Cím: GetPlayerFPS
Írta: kurta999 - 2013. január 05. - 22:33:19
Idézetet írta: ZyZu date=1357421322\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"31987\" data-ipsquote-contentclass=\"forums_Topic
Esetleg nem ez a hiba? Probáld meg így.. de jónak kell lennie..  :hmmm:
 
if(0 <= wfps <= 200) 

 
helyett
 
 if ((wfps > 0) && (wfps < 200)) 

 

Ugyan azt jelenti mind a kettõ, csak én leegyszerûsítettem.
Mongyuk azt most veszem észre, hogy az enyém beleszámolja a 0-t és a 200-at is :D
De nekem ez 2 éven keresztül mûködött, itt mással lesz a baj, nem ezzel a feltétellel.
Cím: GetPlayerFPS
Írta: Flash - 2013. január 06. - 00:33:54
Az volt a baj, hogy timer-el csináltam, de így már jó, hogy OnPlayerUpdate alatt van, köszi nektek. :)