Aangemaakt: 2026/07/02 19:41:27 America/Chicago
Door: admin
Gewijzigd: 2026/07/03 13:19:11 America/Chicago
Door: admin

De hub-stats.lua script bouwt een botachtig gebruikerslijstitem dat de huidige hubstatistieken weergeeft. Een hub kan online gebruikers, operators, het totale aandeel of een compacte statusmarkering weergeven zonder een afzonderlijk extern botproces uit te voeren.

Dit script richt zich alleen op weergave. Het leest eenvoudige tellers, bouwt een korte naam op, zoals !_Stats_128U_4Ops, en laat duur werk buiten het hubproces.

Wat dit script doet

Het script bouwt een weergavenaam op op basis van geconfigureerde hubstatistieken.

Voorbeeld weergavenamen:

!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB

Veel voorkomende toepassingen zijn onder meer:

  • Huidige gebruikers online tonen.
  • Operators online weergeven.
  • Het totale hubaandeel wordt weergegeven wanneer de Lua API dit goedkoop openbaar maakt.
  • Toont piekgebruikers wanneer uw build die teller blootlegt.
  • Geregistreerde gebruikers tonen wanneer uw build die teller blootlegt.
  • Een compacte hubstatusmarkering creëren.
  • Een livestatistiekitem toevoegen aan de gebruikerslijst.

De exacte beschikbare tellers zijn afhankelijk van de Verlihub Lua plugin API die wordt weergegeven door uw Verlihub-versie.

Vereisten

Dit script vereist:

  • Verlihub geïnstalleerd en actief.
  • De plug-in Verlihub Lua is geïnstalleerd.
  • De plug-in Lua is ingeschakeld in Verlihub.
  • Toestemming om Lua-scripts te laden en te verwijderen.
  • Een beschrijfbare scriptmap voor Verlihub Lua bestanden.
  • Een Verlihub Lua-build die weergavegegevens van gebruikerslijsten kan weergeven of een functie voor het genereren van namen kan aanroepen vanuit een weergave-item.

Controleer voordat u het script laadt of de plug-in Lua actief is:

!pluglist

Als de plug-in Lua niet in de lijst staat, laadt of schakelt u deze eerst in via het bovenliggende installatieartikel Lua.

Gebruik een speciale scriptdirectory:

mkdir -p /PATH/TO/HUB/scripts

Plaats het script op:

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

Voor productiesystemen mogen alleen vertrouwde beheerders of de Verlihub-servicegebruiker naar die map schrijven. Gebruik geen wereldschrijfbare machtigingen.

Opdrachten voor laden en lossen

Laad het script:

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

Het script uitladen:

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

Als u het script bewerkt, verwijdert u het en laadt u het opnieuw:

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

Gebruik het volledige absolute pad tenzij uw plug-inconfiguratie Verlihub Lua relatieve paden ondersteunt.

Scriptcode

-- 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

Configuratie-opties

name

name = ""

De basisnaamwaarde voor het botachtige item.

In dit script wordt de zichtbare naam gegenereerd door GetName(), Dus name kan meestal leeg blijven.

class

class = 3

Beheert het weergegeven klasse- of profielniveau van het botachtige item.

De betekenis van klassewaarden is afhankelijk van de hubconfiguratie. Gebruik een waarde die overeenkomt met hoe de statistiekeninvoer in de gebruikerslijst moet verschijnen.

description

description = "Hub Stats Bot"

De beschrijving die wordt weergegeven voor het botachtige item.

Voorbeelden:

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

speed

speed = "100"

De verbindingssnelheidswaarde die wordt weergegeven voor het botachtige item. Dit is cosmetisch. Het bepaalt niet hoe vaak het script wordt bijgewerkt.

email

email = ""

Het e-mailveld dat wordt weergegeven voor de botachtige invoer. Laat het leeg tenzij u een contactadres wilt weergeven.

share

share = "0"

De gedeelde grootte die wordt weergegeven voor het botachtige item. Voor een bot voor het weergeven van statistieken, 0 is geschikt tenzij u wilt dat de vermelding een decoratieve aandelenwaarde weergeeft.

prefix

prefix = "!_Stats_"

Tekst geplaatst vóór de gegenereerde statistieken.

Voorbeelden:

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

Kies een voorvoegsel dat duidelijk wordt gesorteerd in de hubgebruikerslijst.

postfix

postfix = ""

Tekst geplaatst na de gegenereerde statistieken.

Voorbeelden:

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

interval

interval = 60

Bepaalt hoe vaak het schermitem moet worden bijgewerkt.

Aanbevolen waarden:

WaardeBetekenis
30Responsiever. Handig voor drukke hubs.
60Aanbevolen standaard.
300Lagere activiteit. Handig voor stille hubs.

Vermijd lage waarden. Hubstatistieken hoeven niet elke seconde te worden bijgewerkt.

counter

counter = 0

Interne teller gebruikt door het script. Wijzig dit niet tenzij u de scriptlogica wijzigt.

show_users

show_users = true

Bepaalt of de weergavenaam het huidige aantal online gebruikers bevat.

Voorbeelduitvoer:

!_Stats_128U

show_ops

show_ops = true

Bepaalt of de weergavenaam het huidige aantal operators bevat.

Voorbeelduitvoer:

!_Stats_128U_4Ops

show_share

show_share = false

Bepaalt of de weergavenaam het totale hub-aandeel omvat.

Voorbeelduitvoer:

!_Stats_128U_4Ops_24.5TB

Schakel dit alleen in als uw Verlihub Lua API een betrouwbare totale aandelenwaarde weergeeft.

Opmerkingen over API-compatibiliteit

Het voorbeeldscript gebruikt deze functies:

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

Uw plug-inversie Verlihub Lua kan verschillende functienamen bevatten. Als het script wordt geladen maar altijd nul weergeeft, past u de API-aanroepen aan die door de tellerfuncties worden gebruikt.

De belangrijkste functies om te bewerken zijn:

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

Vervang deze oproepen door de functies die worden ondersteund door uw plug-inversie Verlihub Lua.

Voorbeeldconfiguraties

Alleen gebruikerstelling

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

Voorbeeldweergave:

!_Users_128U_Online

Gebruikers en operators

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

Voorbeeldweergave:

!_Stats_128U_4Ops

Weergave totaal aandeel

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

Voorbeeldweergave:

!_Share_24.5TB

Compacte hubstatus

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

Voorbeeldweergave:

!_Hub_128U_4Ops_24.5TB

Begin bij de meeste hubs alleen met gebruikers en operators:

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

Hierdoor blijft de weergave kort genoeg voor normale gebruikerslijsten.

Als de hub-gebruikerslijst druk is, gebruik dan een kortere weergave:

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

Als de berekening van het totale aandeel duur of onbetrouwbaar is in uw Verlihub-versie, laat deze dan uitgeschakeld:

show_share = false

Het script testen

Controleer na het laden van het script de hubgebruikerslijst voor de gegenereerde statistieken.

Bevestig dat:

  • De vermelding verschijnt slechts één keer.
  • Het weergegeven aantal gebruikers is correct.
  • Het weergegeven aantal operators is correct.
  • Het totale aandeel wordt correct weergegeven als dit is ingeschakeld.
  • De naam is niet te lang voor de gebruikerslijst.
  • Het update-interval is redelijk.
  • De invoer verdwijnt na het verwijderen van het script.
  • Als u het script opnieuw laadt, ontstaan ​​er geen duplicaten.

Als het display altijd nul weergeeft, raadpleeg dan het gedeelte over API-compatibiliteit.

Problemen oplossen

Het script wordt niet geladen

Controleer of de plug-in Lua actief is:

!pluglist

Controleer het bestandspad:

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

Gebruik het absolute pad als relatieve paden niet werken.

Statistieken tonen altijd nul

Dit betekent meestal dat de Lua API-functienamen niet overeenkomen met uw plug-inversie Verlihub.

Controleer de functies die worden gebruikt in:

GetUserCount()
GetOperatorCount()
GetTotalShare()

Vervang dan het voorbeeld VH:* bellen met de functies die door uw installatie worden ondersteund.

Naam van item is te lang

Schakel enkele velden uit of verkort het voorvoegsel.

Voorbeeld:

prefix = "!_S_"
show_share = false

Geef updates te vaak weer

Verhoog het interval.

Aanbevolen:

interval = 60

Voor stille hubs:

interval = 300

Er verschijnen dubbele vermeldingen

Het script uitladen:

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

Laad het vervolgens opnieuw:

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

Als er nog steeds duplicaten voorkomen, start u de plug-in Lua of de service Verlihub opnieuw tijdens een onderhoudsperiode.

Veiligheidsopmerkingen

Dit script moet lichtgewicht blijven. Voeg niet toe:

  • Externe HTTP-verzoeken.
  • Databasequery's bij elke update.
  • Bestanden scannen.
  • Lange lussen.
  • Slaapoproepen blokkeren.
  • Dure berekeningen per gebruiker.

Statistiekenweergavescripts moeten eenvoudige hubtellers lezen en de weergavenaam bijwerken. Als het berekenen van een waarde duur is, kunt u deze buiten het hubproces in de cache opslaan.

Onderhoudsopmerkingen

Bewaar een back-up voordat u het script wijzigt:

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

Als je Git gebruikt:

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

Als u alleen het voorvoegsel, het achtervoegsel, het interval of de ingeschakelde statistieken wijzigt, zijn er geen logische wijzigingen vereist.

Voorgestelde toekomstige verbeteringen

Mogelijke latere versies kunnen toevoegen:

  • Weergave van piekgebruikerstelling.
  • Weergave van geregistreerde gebruikerstelling.
  • Weergave van hub-uptime.
  • Weergave van het totale aandeel per eenheid.
  • Afzonderlijke weergave-items voor gebruikers en delen.
  • Commando voor statistieken alleen voor operators.
  • Dagelijkse tracking van hoogwatermarkeringen.
  • Op bestanden gebaseerde momentopnameregistratie van statistieken.

Voeg alleen de statistieken toe die gebruikers of operators zullen lezen. Te veel informatie maakt het moeilijker om de vermelding in de gebruikerslijst te scannen.

Bovenliggende Pagina