Creat: 2026/07/02 19:41:27 America/Chicago
De: admin
Modificat: 2026/07/03 13:19:11 America/Chicago
De: admin

The hub-stats.lua script-ul creează o intrare de listă de utilizatori asemănătoare unui bot care afișează statisticile actuale ale centrului. Un hub poate afișa utilizatori online, operatori, cota totală sau un marcator de stare compact fără a rula un proces bot extern separat.

Acest script se concentrează numai pe afișare. Citește contoare simple, construiește un nume scurt, cum ar fi !_Stats_128U_4Ops, și lasă muncă costisitoare în afara procesului hub.

Ce face acest script

Scriptul creează un nume afișat din statisticile hub configurate.

Exemple de nume afișate:

!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB

Utilizările comune includ:

  • Se afișează utilizatorii actuali online.
  • Se afișează operatori online.
  • Se afișează cota totală de concentrare atunci când API-ul Lua o expune ieftin.
  • Afișarea utilizatorilor de vârf atunci când versiunea dvs. expune acel contor.
  • Afișarea utilizatorilor înregistrați atunci când versiunea dvs. expune acel contor.
  • Crearea unui marcator de stare compact hub.
  • Adăugarea unei intrări de statistici live la lista de utilizatori.

Contoarele exacte disponibile depind de API-ul pluginului Verlihub Lua expus de versiunea dvs. Verlihub.

Cerințe

Acest script necesită:

  • Verlihub instalat și în funcțiune.
  • Pluginul Verlihub Lua este instalat.
  • Pluginul Lua este activat în Verlihub.
  • Permisiune de încărcare și descărcare Lua scripturi.
  • Un director de script care poate fi scris pentru Verlihub Lua.
  • O versiune Verlihub Lua care poate expune datele de afișare a listei de utilizatori sau poate apela o funcție de generare a numelui dintr-o intrare de afișare.

Înainte de a încărca scriptul, confirmați că pluginul Lua este activ:

!pluglist

Dacă pluginul Lua nu este listat, încărcați-l sau activați-l mai întâi din articolul de configurare Lua.

Utilizați un director de script dedicat:

mkdir -p /PATH/TO/HUB/scripts

Plasați scriptul la:

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

Pentru sistemele de producție, numai administratorii de încredere sau utilizatorul serviciului Verlihub ar trebui să scrie în acel director. Nu utilizați permisiuni de scriere în lume.

Comenzi de încărcare și descărcare

Încărcați scriptul:

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

Descărcați scriptul:

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

Dacă editați scriptul, descărcați-l și încărcați-l din nou:

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

Utilizați calea absolută completă, cu excepția cazului în care configurația pluginului dvs. Verlihub Lua acceptă căi relative.

Cod script

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

Opțiuni de configurare

name

name = ""

Valoarea numelui de bază pentru intrarea asemănătoare botului.

În acest script, numele vizibil este generat de GetName(), deci name poate rămâne de obicei goală.

class

class = 3

Controlează clasa afișată sau nivelul de profil al intrării asemănătoare botului.

Semnificația valorilor clasei depinde de configurația hub-ului. Utilizați o valoare care se potrivește cu modul în care ar trebui să apară intrarea de statistici în lista de utilizatori.

description

description = "Hub Stats Bot"

Descrierea afișată pentru intrarea asemănătoare botului.

Exemple:

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

speed

speed = "100"

Valoarea vitezei de conectare afișată pentru intrarea de tip bot. Acesta este cosmetic. Nu controlează cât de des se actualizează scriptul.

email

email = ""

Câmpul de e-mail afișat pentru intrarea asemănătoare botului. Lăsați-l necompletat dacă nu doriți să afișați o adresă de contact.

share

share = "0"

Mărimea cotei afișată pentru intrarea asemănătoare botului. Pentru un bot de afișare a statisticilor, 0 este adecvat, cu excepția cazului în care doriți ca intrarea să arate o valoare cota decorativă.

prefix

prefix = "!_Stats_"

Text plasat înaintea statisticilor generate.

Exemple:

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

Alegeți un prefix care se sortează clar în lista de utilizatori hub.

postfix

postfix = ""

Text plasat după statisticile generate.

Exemple:

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

interval

interval = 60

Controlează cât de des ar trebui să se actualizeze intrarea de pe afișaj.

Valori recomandate:

ValoareSens
30Mai receptiv. Util pentru hub-urile aglomerate.
60Implicit recomandat.
300Activitate mai scăzută. Util pentru hub-uri silențioase.

Evitați valorile scăzute. Statisticile hub nu trebuie actualizate în fiecare secundă.

counter

counter = 0

Contor intern utilizat de script. Nu modificați acest lucru decât dacă modificați logica scriptului.

show_users

show_users = true

Controlează dacă numele afișat include numărul curent de utilizatori online.

Exemplu de ieșire:

!_Stats_128U

show_ops

show_ops = true

Controlează dacă numele afișat include numărul de operator curent.

Exemplu de ieșire:

!_Stats_128U_4Ops

show_share

show_share = false

Controlează dacă numele afișat include cota totală de hub.

Exemplu de ieșire:

!_Stats_128U_4Ops_24.5TB

Activați acest lucru numai atunci când Verlihub Lua API-ul dvs. expune o valoare totală de încredere.

Note de compatibilitate API

Exemplul de script folosește următoarele funcții:

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

Versiunea dvs. de plugin Verlihub Lua poate expune diferite nume de funcții. Dacă scriptul se încarcă, dar afișează întotdeauna zero, ajustați apelurile API utilizate de funcțiile contor.

Principalele funcții de editat sunt:

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

Înlocuiți aceste apeluri cu funcțiile acceptate de versiunea dvs. de plugin Verlihub Lua.

Exemple de configurații

Număr de utilizatori

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

Exemplu de afișare:

!_Users_128U_Online

Utilizatori și operatori

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

Exemplu de afișare:

!_Stats_128U_4Ops

Afișare cotă totală

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

Exemplu de afișare:

!_Share_24.5TB

Stare Compact Hub

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

Exemplu de afișare:

!_Hub_128U_4Ops_24.5TB

Pentru majoritatea hub-urilor, începeți numai cu utilizatori și operatori:

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

Acest lucru menține afișajul suficient de scurt pentru listele normale de utilizatori.

Dacă lista de utilizatori hub este aglomerată, utilizați un afișaj mai scurt:

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

Dacă calcularea cotei totale este costisitoare sau nesigură în versiunea dvs. Verlihub, păstrați-l dezactivat:

show_share = false

Testarea scenariului

După încărcarea scriptului, verificați lista de utilizatori hub pentru intrarea de statistici generată.

Confirmați că:

  • Intrarea apare o singură dată.
  • Numărul de utilizatori afișat este corect.
  • Numărul operatorului afișat este corect.
  • Cota totală se afișează corect dacă este activată.
  • Numele nu este prea lung pentru lista de utilizatori.
  • Intervalul de actualizare este rezonabil.
  • Intrarea dispare după descărcarea scriptului.
  • Reîncărcarea scriptului nu creează duplicate.

Dacă afișajul arată întotdeauna zero, consultați secțiunea de compatibilitate API.

Depanare

Scriptul nu se încarcă

Verificați dacă pluginul Lua este activ:

!pluglist

Verificați calea fișierului:

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

Utilizați calea absolută dacă căile relative nu funcționează.

Statisticile arată întotdeauna zero

Aceasta înseamnă, de obicei, că numele funcțiilor API Lua nu se potrivesc cu versiunea dvs. de plugin Verlihub.

Verificați funcțiile utilizate în:

GetUserCount()
GetOperatorCount()
GetTotalShare()

Apoi înlocuiți exemplul VH:* apeluri cu funcțiile acceptate de instalația dvs.

Numele intrării este prea lung

Dezactivează unele câmpuri sau scurtează prefixul.

Exemplu:

prefix = "!_S_"
show_share = false

Afișează actualizările prea des

Măriți intervalul.

Recomandat:

interval = 60

Pentru hub-uri silențioase:

interval = 300

Apar intrările duplicate

Descărcați scriptul:

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

Apoi încărcați-l din nou:

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

Dacă duplicatele continuă, reporniți pluginul Lua sau serviciul Verlihub în timpul unei ferestre de întreținere.

Note de siguranță

Acest script ar trebui să rămână ușor. Nu adăugați:

  • Solicitări HTTP externe.
  • Interogări de bază de date la fiecare actualizare.
  • Scanarea fișierelor.
  • Bucle lungi.
  • Blocarea apelurilor de somn.
  • Calcule costisitoare pentru fiecare utilizator.

Scripturile de afișare a statisticilor ar trebui să citească contoare simple și să actualizeze numele afișat. Dacă o valoare este costisitoare de calculat, memorați-o în cache în afara procesului hub.

Note de întreținere

Păstrați o copie de rezervă înainte de a schimba scriptul:

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

Dacă folosești Git:

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

Când schimbați numai prefixul, postfixul, intervalul sau statisticile activate, nu sunt necesare modificări de logică.

Îmbunătățiri viitoare sugerate

Versiunile ulterioare posibile ar putea adăuga:

  • Afișarea numărului maxim de utilizatori.
  • Afișarea numărului de utilizatori înregistrați.
  • Afișarea timpului de funcționare al hub-ului.
  • Afișare cotă totală pe unitate.
  • Separați intrările de afișare pentru utilizatori și partajați.
  • Comanda statistici numai pentru operator.
  • Urmărirea zilnică a nivelului de apă mare.
  • Înregistrare instantanee cu statistici bazate pe fișiere.

Adăugați doar statisticile pe care utilizatorii sau operatorii le vor citi. Prea multe informații fac ca intrarea din lista de utilizatori să fie mai greu de scanat.

Pagină Părinte