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.
Empfohlener Dateispeicherort
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 = ""
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:
| Wert | Bedeutung |
|---|---|
30 | Reaktionsfreudiger. Nützlich für geschäftige Hubs. |
60 | Empfohlene Standardeinstellung. |
300 | Geringere 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
Empfohlene Produktionseinstellungen
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.