Creado: 2026/07/02 19:41:27 America/Chicago
Por: admin
Modificado: 2026/07/03 13:19:11 America/Chicago
Por: admin

El hub-stats.lua El script crea una entrada de lista de usuarios similar a un bot que muestra las estadísticas actuales del centro. Un centro puede mostrar usuarios en línea, operadores, participación total o un marcador de estado compacto sin ejecutar un proceso de bot externo separado.

Este script se centra únicamente en la visualización. Lee contadores simples, crea un nombre corto como !_Stats_128U_4Ops y deja un trabajo costoso fuera del proceso central.

Qué hace este guión

El script crea un nombre para mostrar a partir de las estadísticas del centro configurado.

Ejemplos de nombres para mostrar:

!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB

Los usos comunes incluyen:

  • Mostrando usuarios actuales en línea.
  • Mostrando operadores en línea.
  • Mostrando la participación total del centro cuando la API Lua la expone de forma económica.
  • Mostrar usuarios máximos cuando su compilación expone ese contador.
  • Mostrar a los usuarios registrados cuando su compilación expone ese contador.
  • Creación de un marcador de estado de concentrador compacto.
  • Agregar una entrada de estadísticas en vivo a la lista de usuarios.

Los contadores exactos disponibles dependen de la API del complemento Verlihub Lua expuesta por su versión Verlihub.

Requisitos

Este script requiere:

  • Verlihub instalado y funcionando.
  • El complemento Verlihub Lua instalado.
  • El complemento Lua habilitado en Verlihub.
  • Permiso para cargar y descargar scripts Lua.
  • Un directorio de script grabable para archivos Verlihub Lua.
  • Una compilación Verlihub Lua que puede exponer datos de visualización de la lista de usuarios o llamar a una función de generación de nombres desde una entrada de visualización.

Antes de cargar el script, confirme que el complemento Lua esté activo:

!pluglist

Si el complemento Lua no aparece en la lista, cárguelo o habilítelo primero desde el artículo de configuración principal Lua.

Utilice un directorio de script dedicado:

mkdir -p /PATH/TO/HUB/scripts

Coloque el guión en:

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

Para sistemas de producción, solo los administradores de confianza o el usuario del servicio Verlihub deben escribir en ese directorio. No utilice permisos de escritura mundial.

Comandos de carga y descarga

Cargue el guión:

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

Descargar el guión:

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

Si edita el script, descárguelo y cárguelo nuevamente:

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

Utilice la ruta absoluta completa a menos que la configuración del complemento Verlihub Lua admita rutas relativas.

Código de secuencia de comandos

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

Opciones de configuración

name

name = ""

El valor del nombre base para la entrada tipo bot.

En este script, el nombre visible es generado por GetName(), entonces name normalmente puede permanecer vacío.

class

class = 3

Controla la clase mostrada o el nivel de perfil de la entrada tipo bot.

El significado de los valores de clase depende de la configuración del concentrador. Utilice un valor que coincida con cómo debería aparecer la entrada de estadísticas en la lista de usuarios.

description

description = "Hub Stats Bot"

La descripción que se muestra para la entrada tipo bot.

Ejemplos:

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

speed

speed = "100"

El valor de velocidad de conexión que se muestra para la entrada tipo bot. Esto es cosmético. No controla la frecuencia con la que se actualiza el script.

email

email = ""

El campo de correo electrónico que se muestra para la entrada tipo bot. Déjelo vacío a menos que desee mostrar una dirección de contacto.

share

share = "0"

El tamaño compartido que se muestra para la entrada tipo bot. Para un robot de visualización de estadísticas, 0 es apropiado a menos que desee que la entrada muestre un valor de acción decorativo.

prefix

prefix = "!_Stats_"

Texto colocado antes de las estadísticas generadas.

Ejemplos:

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

Elija un prefijo que se clasifique claramente en la lista de usuarios del concentrador.

postfix

postfix = ""

Texto colocado después de las estadísticas generadas.

Ejemplos:

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

interval

interval = 60

Controla la frecuencia con la que se debe actualizar la entrada de la pantalla.

Valores recomendados:

ValorSignificado
30Más receptivo. Útil para centros ocupados.
60Valor predeterminado recomendado.
300Menor actividad. Útil para centros silenciosos.

Evite valores bajos. No es necesario actualizar las estadísticas del centro cada segundo.

counter

counter = 0

Contador interno utilizado por el script. No cambie esto a menos que esté modificando la lógica del script.

show_users

show_users = true

Controla si el nombre para mostrar incluye el recuento actual de usuarios en línea.

Salida de ejemplo:

!_Stats_128U

show_ops

show_ops = true

Controla si el nombre para mostrar incluye el recuento de operadores actual.

Salida de ejemplo:

!_Stats_128U_4Ops

show_share

show_share = false

Controla si el nombre para mostrar incluye el recurso compartido total del centro.

Salida de ejemplo:

!_Stats_128U_4Ops_24.5TB

Habilite esto solo cuando su API Verlihub Lua exponga un valor compartido total confiable.

Notas de compatibilidad de API

El script de ejemplo utiliza estas funciones:

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

Su versión del complemento Verlihub Lua puede exponer diferentes nombres de funciones. Si el script se carga pero siempre muestra cero, ajuste las llamadas API utilizadas por las funciones de contador.

Las principales funciones para editar son:

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

Reemplace esas llamadas con las funciones admitidas por su versión del complemento Verlihub Lua.

Configuraciones de ejemplo

Sólo recuento de usuarios

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

Visualización de ejemplo:

!_Users_128U_Online

Usuarios y operadores

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

Visualización de ejemplo:

!_Stats_128U_4Ops

Pantalla de participación total

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

Visualización de ejemplo:

!_Share_24.5TB

Estado del concentrador compacto

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

Visualización de ejemplo:

!_Hub_128U_4Ops_24.5TB

Para la mayoría de los centros, comience solo con usuarios y operadores:

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

Esto mantiene la pantalla lo suficientemente corta para las listas de usuarios normales.

Si la lista de usuarios del concentrador está abarrotada, utilice una visualización más corta:

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

Si el cálculo de participación total es costoso o no confiable en su versión Verlihub, manténgalo deshabilitado:

show_share = false

Probando el guión

Después de cargar el script, consulte la lista de usuarios del centro para ver la entrada de estadísticas generadas.

Confirma que:

  • La entrada aparece sólo una vez.
  • El recuento de usuarios mostrado es correcto.
  • El recuento de operadores mostrado es correcto.
  • El porcentaje total se muestra correctamente si está habilitado.
  • El nombre no es demasiado largo para la lista de usuarios.
  • El intervalo de actualización es razonable.
  • La entrada desaparece después de descargar el script.
  • Recargar el script no crea duplicados.

Si la pantalla siempre muestra cero, revise la sección de compatibilidad de API.

Solución de problemas

El guión no se carga

Compruebe que el complemento Lua esté activo:

!pluglist

Verifique la ruta del archivo:

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

Utilice la ruta absoluta si las rutas relativas no funcionan.

Las estadísticas siempre muestran cero

Esto generalmente significa que los nombres de las funciones API Lua no coinciden con la versión del complemento Verlihub.

Compruebe las funciones utilizadas en:

GetUserCount()
GetOperatorCount()
GetTotalShare()

Luego reemplace el ejemplo VH:* llamadas con las funciones soportadas por su instalación.

El nombre de la entrada es demasiado largo

Deshabilite algunos campos o acorte el prefijo.

Ejemplo:

prefix = "!_S_"
show_share = false

Mostrar actualizaciones con demasiada frecuencia

Aumente el intervalo.

Recomendado:

interval = 60

Para centros silenciosos:

interval = 300

Aparecen entradas duplicadas

Descargar el guión:

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

Luego cárgalo nuevamente:

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

Si continúan los duplicados, reinicie el complemento Lua o el servicio Verlihub durante una ventana de mantenimiento.

Notas de seguridad

Este script debe ser liviano. No agregue:

  • Solicitudes HTTP externas.
  • Consultas a la base de datos en cada actualización.
  • Escaneo de archivos.
  • Bucles largos.
  • Bloquear llamadas de sueño.
  • Cálculos costosos por usuario.

Los scripts de visualización de estadísticas deben leer contadores centrales simples y actualizar el nombre para mostrar. Si un valor es costoso de calcular, guárdelo en caché fuera del proceso central.

Notas de mantenimiento

Mantenga una copia de seguridad antes de cambiar el script:

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

Si usa Git:

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

Cuando se cambia solo el prefijo, el sufijo, el intervalo o las estadísticas habilitadas, no se requieren cambios lógicos.

Mejoras futuras sugeridas

Posibles versiones posteriores podrían agregar:

  • Visualización del recuento máximo de usuarios.
  • Visualización del recuento de usuarios registrados.
  • Visualización del tiempo de actividad del concentrador.
  • Visualización de participación total por unidad.
  • Separe las entradas de visualización para los usuarios y compártalas.
  • Comando de estadísticas exclusivo del operador.
  • Seguimiento diario de la marca máxima.
  • Registro de instantáneas de estadísticas basadas en archivos.

Agregue solo las estadísticas que leerán los usuarios u operadores. Demasiada información hace que la entrada de la lista de usuarios sea más difícil de escanear.

Página Superior