Willkommen bei

FPSmeter

Analysiere die Leistung deiner Gameserver in Echtzeit – präzise und zuverlässig.

Tutorial: FPSMeter den Zugriff auf die Performance-Daten Ihres FiveM/RedM-Servers erlauben

Dieses Skript ist erforderlich, um die Performance Ihrer FiveM/RedM-Server zu analysieren

Sie möchten die Leistung Ihres FiveM/RedM-Servers mit FPSMeter analysieren? Hier finden Sie eine Anleitung zur Installation eines kleinen Skripts, mit dem FPSMeter folgende Daten abrufen kann:

  1. ✅ Reelle Server-FPS (Tickrate)
  2. ✅ Anzahl der verbundenen Spieler
  3. ✅ Durchschnittlicher Ping
  4. ✅ Uptime (Laufzeit des Servers)

⚠️ Dieses Skript hat keinen Einfluss auf die Leistung, sammelt keine sensiblen Daten und kann jederzeit entfernt werden.

✅ Schritt 1: Skript herunterladen

Erstellen Sie einen Ordner in Ihrem Serververzeichnis mit dem Namen fpsmeter_server

Erstellen Sie darin zwei Dateien:

fxmanifest.lua


fx_version 'cerulean'
game { 'gta5', 'rdr3' }

author 'FPSMeter'
description 'Plugin de monitoring FPS pour FiveM / RedM'
version '1.1.0'

server_script 'server.lua'
				

server.lua


local fps = 0
local ticks = 0
local lastSecond = GetGameTimer()
local startTime = os.time()

local fpsHistory = {}
local pingHistory = {}
local maxHistory = 120 -- 120 secondes d'historique (2 minutes)

local minFPS, maxFPS = nil, nil
local minPing, maxPing = nil, nil

local tickDurations = {}
local waitCounter = 0
local lastClock = os.clock()

-- Moyenne
local function average(t)
    if #t == 0 then return 0 end
    local sum = 0
    for _, v in ipairs(t) do sum = sum + v end
    return sum / #t
end

-- Écart-type
local function standardDeviation(t)
    if #t == 0 then return 0 end
    local avg = average(t)
    local sum = 0
    for _, v in ipairs(t) do
        sum = sum + ((v - avg) ^ 2)
    end
    return math.sqrt(sum / #t)
end

CreateThread(function()
    while true do
        Wait(0) -- plus proche de la vraie cadence
        ticks = ticks + 1
        waitCounter = waitCounter + 1
        local now = GetGameTimer()

        if now - lastSecond >= 1000 then
            local currentFPS = ticks
            fps = currentFPS
            table.insert(fpsHistory, currentFPS)
            if #fpsHistory > maxHistory then table.remove(fpsHistory, 1) end

            minFPS = (minFPS == nil or currentFPS < minFPS) and currentFPS or minFPS
            maxFPS = (maxFPS == nil or currentFPS > maxFPS) and currentFPS or maxFPS

            -- Ping
            local pingSum = 0
            local pings = {}
            local players = GetPlayers()
            for _, id in ipairs(players) do
                local ping = GetPlayerPing(id)
                pingSum = pingSum + ping
                table.insert(pings, ping)
            end
            local avgPing = #pings > 0 and math.floor(pingSum / #pings) or 0
            table.insert(pingHistory, avgPing)
            if #pingHistory > maxHistory then table.remove(pingHistory, 1) end

            for _, v in ipairs(pings) do
                if minPing == nil or v < minPing then minPing = v end
                if maxPing == nil or v > maxPing then maxPing = v end
            end

            -- Tick duration (temps réel écoulé entre deux ticks par os.clock)
            local nowClock = os.clock()
            local duration = nowClock - lastClock
            lastClock = nowClock
            table.insert(tickDurations, duration)
            if #tickDurations > maxHistory then table.remove(tickDurations, 1) end

            ticks = 0
            lastSecond = now
        end
    end
end)

RegisterCommand("fpsmeter", function(source, args, raw)
    if source ~= 0 and not IsPlayerAceAllowed(source, "fpsmeter.use") then
        TriggerClientEvent("chat:addMessage", source, {
            args = {"[FPSMeter]", "Vous n’êtes pas autorisé à utiliser cette commande."}
        })
        return
    end

    local players = #GetPlayers()
    local uptime = os.time() - startTime
    local avgPing = average(pingHistory)
    local avgFPS = average(fpsHistory)
    local stddevFPS = standardDeviation(fpsHistory)
    local avgTickTime = average(tickDurations)

    local output = {
        fps_avg   = math.floor(avgFPS),
        fps_min   = minFPS or avgFPS,
        fps_max   = maxFPS or avgFPS,
        fps_std   = tonumber(string.format("%.2f", stddevFPS)),
        players   = players,
        avg_ping  = math.floor(avgPing),
        min_ping  = minPing or 0,
        max_ping  = maxPing or 0,
        uptime    = uptime,
        wait_calls = waitCounter,
        avg_tick_time = tonumber(string.format("%.4f", avgTickTime))
    }

    print(json.encode(output))
end, true)

print("[fpsmeter_server] Plugin FPSMeter amélioré chargé ✅ (historique, ping, ticks, stddev, uptime).")
				

✅ Schritt 2: Ressource zur server.cfg hinzufügen

Fügen Sie am Ende Ihrer server.cfg folgende Zeile hinzu:

ensure fpsmeter_server

Starten Sie anschließend Ihren Server neu.

✅ Schritt 3: RCON-Zugang konfigurieren

Stellen Sie sicher, dass in Ihrer server.cfg ein RCON-Passwort gesetzt ist:

rcon_password "votre_mot_de_passe_rcon"

FPSMeter verbindet sich darüber sicher, um den Befehl "fpsmeter" auszuführen.

✅ Schritt 4: Analyse über FPSMeter starten

Sobald Ihr Server online ist:

  1. Gehen Sie zu https://fpsmeter.esport-cms.net/benchmark.php
  2. Wählen Sie FiveM aus der Spieleliste
  3. Geben Sie die IP, den RCON-Port und das Passwort Ihres Servers ein
  4. Starten Sie die Analyse!

⚠️ Ihre Firewall muss TCP-RCON-Verbindungen auf dem Server-Port (normalerweise 30120) zulassen.


ℹ️ Wofür dient dieses Skript?

Dieses kleine Skript stellt den Befehl "fpsmeter" bereit, den FPSMeter per RCON aufrufen kann. Bei jedem Aufruf liefert es folgende Werte:

  1. Die tatsächlichen FPS des Servers
  2. Die Anzahl der verbundenen Spieler
  3. Den durchschnittlichen Ping
  4. Die Uptime des Servers

Diese Werte werden anschließend in Echtzeit-Grafiken angezeigt, um die Stabilität und Performance Ihres Servers zu bewerten – insbesondere nach:

  1. einem Update
  2. dem Hinzufügen eines ressourcenintensiven Skripts
  3. einem Wechsel des Hosting-Anbieters

🔐 Sicherheit & Datenschutz

  1. Das Skript sammelt keine personenbezogenen Daten.
  2. Während der Analyse werden keine Daten an andere Dienste als FPSMeter gesendet.
  3. Das Skript ist vollständig Open Source und kann jederzeit deaktiviert werden.

❌ Deinstallation

So deaktivieren Sie das Skript:

  1. Löschen Sie den Ordner fpsmeter_server
  2. Entfernen Sie die Zeile start fpsmeter_server aus der server.cfg
  3. Starten Sie Ihren Server neu

- ✍️ Verfasst am: 02/07/2025 à 17h32
- 🔄 Zuletzt aktualisiert am: 04/07/2025 à 11h13
- 🧠 Autor: Slymer
- 💬 Community-Diskussion: Diskussion anzeigen