Erstellt: 2026/07/02 19:41:27 America/Chicago
Von: admin
Geändert: 2026/07/03 13:19:11 America/Chicago
Von: admin

Der hub-stats.lua Das Skript erstellt einen Bot-ähnlichen Benutzerlisteneintrag, der aktuelle Hub-Statistiken anzeigt. Ein Hub kann Online-Benutzer, Betreiber, die Gesamtfreigabe oder eine kompakte Statusmarkierung anzeigen, ohne einen separaten externen Bot-Prozess auszuführen.

Dieses Skript konzentriert sich nur auf die Anzeige. Es liest einfache Zähler und erstellt einen Kurznamen wie z !_Stats_128U_4Ops und lässt teure Arbeit außerhalb des Hub-Prozesses.

Was dieses Skript macht

Das Skript erstellt einen Anzeigenamen aus konfigurierten Hub-Statistiken.

Beispiele für Anzeigenamen:

!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB

Zu den häufigen Verwendungszwecken gehören:

  • Aktuelle Benutzer online anzeigen.
  • Betreiber online anzeigen.
  • Zeigt den gesamten Hub-Anteil an, wenn die API Lua ihn kostengünstig verfügbar macht.
  • Spitzenbenutzer werden angezeigt, wenn Ihr Build diesen Zähler verfügbar macht.
  • Registrierte Benutzer werden angezeigt, wenn Ihr Build diesen Zähler verfügbar macht.
  • Erstellen einer kompakten Hub-Statusmarkierung.
  • Hinzufügen eines Live-Statistikeintrags zur Benutzerliste.

Die genauen verfügbaren Zähler hängen von der Plugin-API Verlihub Lua ab, die von Ihrer Verlihub-Version bereitgestellt wird.

Anforderungen

Dieses Skript erfordert:

  • Verlihub installiert und läuft.
  • Das Plugin Verlihub Lua ist installiert.
  • Das Plugin Lua ist in Verlihub aktiviert.
  • Berechtigung zum Laden und Entladen von Lua-Skripten.
  • Ein beschreibbares Skriptverzeichnis für Verlihub Lua Dateien.
  • Ein Verlihub Lua Build, der Benutzerlisten-Anzeigedaten verfügbar machen oder eine Namensgenerierungsfunktion aus einem Anzeigeeintrag aufrufen kann.

Stellen Sie vor dem Laden des Skripts sicher, dass das Plugin Lua aktiv ist:

!pluglist

Wenn das Plugin Lua nicht aufgeführt ist, laden oder aktivieren Sie es zuerst aus dem übergeordneten Setup-Artikel Lua.

Verwenden Sie ein dediziertes Skriptverzeichnis:

mkdir -p /PATH/TO/HUB/scripts

Platzieren Sie das Skript unter:

/PATH/TO/HUB/scripts/hub-stats.lua

Bei Produktionssystemen sollten nur vertrauenswürdige Administratoren oder der Dienstbenutzer Verlihub in dieses Verzeichnis schreiben. Verwenden Sie keine weltweit schreibbaren Berechtigungen.

Befehle zum Laden und Entladen

Laden Sie das Skript:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

Entladen Sie das Skript:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua

Wenn Sie das Skript bearbeiten, entladen Sie es und laden Sie es erneut:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua

Verwenden Sie den vollständigen absoluten Pfad, es sei denn, Ihre Plugin-Konfiguration Lua unterstützt relative Pfade.

Skriptcode

-- Script: hub-stats.lua
-- Purpose: Displays hub statistics as a bot-like user-list entry.
-- Scope: Lightweight display bot only.
-- Notes: Available statistics depend on the Verlihub Lua API exposed by your build.

name = ""
class = 3
description = "Hub Stats Bot"
speed = "100"
email = ""
share = "0"
prefix = "!_Stats_"
postfix = ""
interval = 60
counter = 0
show_users = true
show_ops = true
show_share = false

function SafeCall(callback, fallback)
    local ok, result = pcall(callback)

    if ok and result ~= nil then
        return result
    end

    return fallback
end

function FormatShare(bytes)
    local value = tonumber(bytes)

    if value == nil then
        return "0B"
    end

    if value >= 1099511627776 then
        return string.format("%.1fTB", value / 1099511627776)
    end

    if value >= 1073741824 then
        return string.format("%.1fGB", value / 1073741824)
    end

    if value >= 1048576 then
        return string.format("%.1fMB", value / 1048576)
    end

    if value >= 1024 then
        return string.format("%.1fKB", value / 1024)
    end

    return tostring(value) .. "B"
end

function GetUserCount()
    -- Replace this function body if your Verlihub Lua API uses a different call.
    return SafeCall(function()
        return VH:GetUsersCount()
    end, 0)
end

function GetOperatorCount()
    -- Replace this function body if your Verlihub Lua API uses a different call.
    return SafeCall(function()
        return VH:GetOperatorsCount()
    end, 0)
end

function GetTotalShare()
    -- Replace this function body if your Verlihub Lua API uses a different call.
    return SafeCall(function()
        return VH:GetTotalShare()
    end, 0)
end

function GetStatsText()
    local parts = {}

    if show_users then
        table.insert(parts, tostring(GetUserCount()) .. "U")
    end

    if show_ops then
        table.insert(parts, tostring(GetOperatorCount()) .. "Ops")
    end

    if show_share then
        table.insert(parts, FormatShare(GetTotalShare()))
    end

    if table.getn(parts) == 0 then
        return "Online"
    end

    return table.concat(parts, "_")
end

function GetName()
    return prefix .. GetStatsText() .. postfix
end

Konfigurationsoptionen

name

name = ""

Der Basisnamenswert für den Bot-ähnlichen Eintrag.

In diesem Skript wird der sichtbare Name generiert von GetName(), Also name kann in der Regel leer bleiben.

class

class = 3

Steuert die angezeigte Klasse oder Profilebene des Bot-ähnlichen Eintrags.

Die Bedeutung der Klassenwerte hängt von der Hub-Konfiguration ab. Verwenden Sie einen Wert, der mit der Darstellung des Statistikeintrags in der Benutzerliste übereinstimmt.

description

description = "Hub Stats Bot"

Die für den Bot-ähnlichen Eintrag angezeigte Beschreibung.

Beispiele:

description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"

speed

speed = "100"

Der für den Bot-ähnlichen Eintrag angezeigte Verbindungsgeschwindigkeitswert. Das ist kosmetisch. Es steuert nicht, wie oft das Skript aktualisiert wird.

email

email = ""

Das für den Bot-ähnlichen Eintrag angezeigte E-Mail-Feld. Lassen Sie es leer, es sei denn, Sie möchten eine Kontaktadresse anzeigen.

share

share = "0"

Die für den Bot-ähnlichen Eintrag angezeigte Freigabegröße. Für einen Statistikanzeige-Bot: 0 ist angemessen, es sei denn, Sie möchten, dass der Eintrag einen dekorativen Aktienwert anzeigt.

prefix

prefix = "!_Stats_"

Text, der vor den generierten Statistiken platziert wird.

Beispiele:

prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "

Wählen Sie ein Präfix, das in der Hub-Benutzerliste eine klare Sortierung ermöglicht.

postfix

postfix = ""

Text, der nach den generierten Statistiken platziert wird.

Beispiele:

postfix = ""
postfix = "_Online"
postfix = "_Hub"

interval

interval = 60

Steuert, wie oft der Anzeigeeintrag aktualisiert werden soll.

Empfohlene Werte:

WertBedeutung
30Reaktionsfreudiger. Nützlich für geschäftige Hubs.
60Empfohlene Standardeinstellung.
300Geringere Aktivität. Nützlich für leise Hubs.

Vermeiden Sie niedrige Werte. Hub-Statistiken müssen nicht jede Sekunde aktualisiert werden.

counter

counter = 0

Interner Zähler, der vom Skript verwendet wird. Ändern Sie dies nicht, es sei denn, Sie ändern die Skriptlogik.

show_users

show_users = true

Steuert, ob der Anzeigename die aktuelle Online-Benutzerzahl enthält.

Beispielausgabe:

!_Stats_128U

show_ops

show_ops = true

Steuert, ob der Anzeigename die aktuelle Operatoranzahl enthält.

Beispielausgabe:

!_Stats_128U_4Ops

show_share

show_share = false

Steuert, ob der Anzeigename die gesamte Hub-Freigabe enthält.

Beispielausgabe:

!_Stats_128U_4Ops_24.5TB

Aktivieren Sie dies nur, wenn Ihre API Verlihub Lua einen zuverlässigen Gesamtanteilwert bereitstellt.

Hinweise zur API-Kompatibilität

Das Beispielskript verwendet diese Funktionen:

VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()

Ihre Plugin-Version Verlihub Lua weist möglicherweise andere Funktionsnamen auf. Wenn das Skript geladen wird, aber immer Null anzeigt, passen Sie die von den Zählerfunktionen verwendeten API-Aufrufe an.

Die wichtigsten zu bearbeitenden Funktionen sind:

function GetUserCount()
    return SafeCall(function()
        return VH:GetUsersCount()
    end, 0)
end

function GetOperatorCount()
    return SafeCall(function()
        return VH:GetOperatorsCount()
    end, 0)
end

function GetTotalShare()
    return SafeCall(function()
        return VH:GetTotalShare()
    end, 0)
end

Ersetzen Sie diese Aufrufe durch die Funktionen, die von Ihrer Plugin-Version Verlihub Lua unterstützt werden.

Beispielkonfigurationen

Nur Benutzeranzahl

prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false

Beispielanzeige:

!_Users_128U_Online

Benutzer und Betreiber

prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false

Beispielanzeige:

!_Stats_128U_4Ops

Gesamtanteilsanzeige

prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true

Beispielanzeige:

!_Share_24.5TB

Kompakter Hub-Status

prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true

Beispielanzeige:

!_Hub_128U_4Ops_24.5TB

Beginnen Sie bei den meisten Hubs nur mit Benutzern und Betreibern:

prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false

Dadurch bleibt die Anzeige kurz genug für normale Benutzerlisten.

Wenn die Hub-Benutzerliste überfüllt ist, verwenden Sie eine kürzere Anzeige:

prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false

Wenn die Berechnung des Gesamtanteils in Ihrer Version Verlihub teuer oder unzuverlässig ist, lassen Sie sie deaktiviert:

show_share = false

Testen des Skripts

Überprüfen Sie nach dem Laden des Skripts die Hub-Benutzerliste auf den generierten Statistikeintrag.

Bestätigen Sie Folgendes:

  • Der Eintrag erscheint nur einmal.
  • Die angezeigte Benutzerzahl ist korrekt.
  • Die angezeigte Bedieneranzahl ist korrekt.
  • Der Gesamtanteil wird korrekt angezeigt, wenn er aktiviert ist.
  • Der Name ist nicht zu lang für die Benutzerliste.
  • Das Aktualisierungsintervall ist angemessen.
  • Der Eintrag verschwindet nach dem Entladen des Skripts.
  • Durch das Neuladen des Skripts werden keine Duplikate erstellt.

Wenn die Anzeige immer Null anzeigt, lesen Sie den Abschnitt zur API-Kompatibilität.

Fehlerbehebung

Das Skript wird nicht geladen

Überprüfen Sie, ob das Plugin Lua aktiv ist:

!pluglist

Überprüfen Sie den Dateipfad:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

Verwenden Sie den absoluten Pfad, wenn relative Pfade nicht funktionieren.

Statistiken zeigen immer Null

Dies bedeutet normalerweise, dass die API-Funktionsnamen Lua nicht mit Ihrer Plugin-Version Verlihub übereinstimmen.

Überprüfen Sie die verwendeten Funktionen in:

GetUserCount()
GetOperatorCount()
GetTotalShare()

Ersetzen Sie dann das Beispiel VH:* Aufrufe mit den von Ihrer Installation unterstützten Funktionen.

Der Eintragsname ist zu lang

Deaktivieren Sie einige Felder oder kürzen Sie das Präfix.

Beispiel:

prefix = "!_S_"
show_share = false

Updates zu oft anzeigen

Erhöhen Sie das Intervall.

Empfohlen:

interval = 60

Für leise Hubs:

interval = 300

Es erscheinen doppelte Einträge

Entladen Sie das Skript:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua

Dann laden Sie es erneut:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

Wenn weiterhin Duplikate auftreten, starten Sie das Plugin Lua oder den Dienst Verlihub während eines Wartungsfensters neu.

Sicherheitshinweise

Dieses Skript sollte leichtgewichtig bleiben. Nicht hinzufügen:

  • Externe HTTP-Anfragen.
  • Datenbankabfragen bei jedem Update.
  • Scannen von Dateien.
  • Lange Schleifen.
  • Schlafrufe blockieren.
  • Teure Berechnungen pro Benutzer.

Skripte zur Anzeige von Statistiken sollten einfache Hub-Zähler lesen und den Anzeigenamen aktualisieren. Wenn die Berechnung eines Werts aufwändig ist, sollten Sie ihn außerhalb des Hub-Prozesses zwischenspeichern.

Wartungshinweise

Erstellen Sie ein Backup, bevor Sie das Skript ändern:

cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak

Bei Verwendung von Git:

cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"

Wenn nur das Präfix, Postfix, Intervall oder die aktivierten Statistiken geändert werden, sind keine logischen Änderungen erforderlich.

Vorgeschlagene zukünftige Verbesserungen

Mögliche spätere Versionen könnten Folgendes hinzufügen:

  • Anzeige der höchsten Benutzerzahl.
  • Anzeige der Anzahl der registrierten Benutzer.
  • Anzeige der Hub-Verfügbarkeit.
  • Gesamtanteilanzeige nach Einheit.
  • Separate Anzeigeeinträge für Benutzer und Freigabe.
  • Nur für den Bediener gültiger Statistikbefehl.
  • Tägliche Verfolgung der Hochwassermarke.
  • Dateibasierte Statistik-Snapshot-Protokollierung.

Fügen Sie nur die Statistiken hinzu, die Benutzer oder Betreiber lesen. Zu viele Informationen erschweren das Scannen des Benutzerlisteneintrags.

Übergeordnete Seite