SA:MP как получить количество кадров (луа/pawn)?

Решение
pawn drunk level (примерный фпс):
new PlayerFPS[MAX_PLAYERS];
new LastDrunkLevel[MAX_PLAYERS];

public OnPlayerUpdate(playerid)
{
    new drunkLevel = GetPlayerDrunkLevel(playerid);
    
    if (drunkLevel < 100)
    {
        SetPlayerDrunkLevel(playerid, 2000);
    }
    else
    {
        if (LastDrunkLevel[playerid] != drunkLevel)
        {
            new amount = LastDrunkLevel[playerid] - drunkLevel;
            if (amount > 0)
            {
                PlayerFPS[playerid] = amount;
            }
            LastDrunkLevel[playerid] = drunkLevel;
        }
    }
    return 1;
}

насильник42

Новичок
2
0
Пример кода через getTimeStepValue:
local font = renderCreateFont('Arial', 10, 0)
local fps = 0.0

function main()
    while true do
        wait(0)

        local step = getTimeStepValue()
        if step > 0 then
            local current_fps = 50.0 / step
            fps = fps == 0.0 and current_fps or fps * 0.9 + current_fps * 0.1
        end

        local text = string.format('FPS: %d', math.floor(fps + 0.5))
        local screen_x, screen_y = getScreenResolution()
        local text_width = renderGetFontDrawTextLength(font, text)

        renderFontDrawText(
            font,
            text,
            screen_x - text_width - 10,
            10,
            0xFFFFFFFF
        )
    end
end
 

Cloud.

Известный
Автор темы
407
59
Пример кода через getTimeStepValue:
local font = renderCreateFont('Arial', 10, 0)
local fps = 0.0

function main()
    while true do
        wait(0)

        local step = getTimeStepValue()
        if step > 0 then
            local current_fps = 50.0 / step
            fps = fps == 0.0 and current_fps or fps * 0.9 + current_fps * 0.1
        end

        local text = string.format('FPS: %d', math.floor(fps + 0.5))
        local screen_x, screen_y = getScreenResolution()
        local text_width = renderGetFontDrawTextLength(font, text)

        renderFontDrawText(
            font,
            text,
            screen_x - text_width - 10,
            10,
            0xFFFFFFFF
        )
    end
end
Lua:
local fps = 0
local frames = 0
local lastTick = os.clock()

function main()
    while true do
        wait(0)
        frames = frames + 1

        if os.clock() - lastTick >= 1 then
            fps = frames
            frames = 0
            lastTick = os.clock()
        end

    end
end

для pawn только вариант через drunk level, но он не идеальный
спасибо, мужики, но лучше все же на pawn.
 

undefineders

Участник
41
22
pawn drunk level (примерный фпс):
new PlayerFPS[MAX_PLAYERS];
new LastDrunkLevel[MAX_PLAYERS];

public OnPlayerUpdate(playerid)
{
    new drunkLevel = GetPlayerDrunkLevel(playerid);
    
    if (drunkLevel < 100)
    {
        SetPlayerDrunkLevel(playerid, 2000);
    }
    else
    {
        if (LastDrunkLevel[playerid] != drunkLevel)
        {
            new amount = LastDrunkLevel[playerid] - drunkLevel;
            if (amount > 0)
            {
                PlayerFPS[playerid] = amount;
            }
            LastDrunkLevel[playerid] = drunkLevel;
        }
    }
    return 1;
}
 

Cloud.

Известный
Автор темы
407
59
pawn drunk level (примерный фпс):
new PlayerFPS[MAX_PLAYERS];
new LastDrunkLevel[MAX_PLAYERS];

public OnPlayerUpdate(playerid)
{
    new drunkLevel = GetPlayerDrunkLevel(playerid);
   
    if (drunkLevel < 100)
    {
        SetPlayerDrunkLevel(playerid, 2000);
    }
    else
    {
        if (LastDrunkLevel[playerid] != drunkLevel)
        {
            new amount = LastDrunkLevel[playerid] - drunkLevel;
            if (amount > 0)
            {
                PlayerFPS[playerid] = amount;
            }
            LastDrunkLevel[playerid] = drunkLevel;
        }
    }
    return 1;
}
прекрасно!