Un comando de administrador es una palabra clave o frase que un usuario con un cierto nivel de control puede escribir en la ventana de chat para desencadenar una acción. Esta biblioteca usa módulos de chat, que permite una implementación fácil de los comandos de administrador en el sistema de chat legado. Los módulos de chat escuchan mensajes entrantes en el servidor y pueden ejecutar acciones basadas en cualquier criterio deseado.
Configuración
Cada vez que un lugar de Roblox carga, verifica si el servicio de chat está vacío. Si no encuentra los componentes que necesita, el lugarInsertará la versión más reciente de esos componentes. Esto significa que sobrescribir o hacer cambios en estos componentes en una experiencia los impedirá de ser actualizados.
El primer paso en la configuración de la biblioteca de comandos de administrador es agregar un nuevo módulo de chat al servicio de chat. La biblioteca en este tutorial se encarga del trabajo pesado hecho por un módulo de chat, por lo que el único objeto que necesita agregar al servicio de chat es un nuevo ModuleScript . El nombre de su script de módulo puede ser cualquier cosa, pero te recomiendo algo intuitivo como AdminCommands .
implementando nuevos comandos
En lugar de implementar la mayoría de la lógica del módulo de chat, solo requerirás el módulo de biblioteca que hace un montón de trabajo y agrega funciones adicionales. La manera más sencilla de agregar la biblioteca a tu módulo es requerirla por su ID de activo en la parte superior de tu script.
local AdminCommands = require(1163352238)
Este Módulo返回一个包含 funciones importantes, como la función Run , como la más importante. La biblioteca tiene una función Run para su módulo de chat. Es importante que AdminCommands返回这个 Run función para el servicio de chat. La función está indexada por su nombre, 1> Run1>
return AdminCommands.Run
Entre estas dos líneas de código, implementa tus propios comandos y cualquier función de ayuda necesaria.
Para vincular una función a la biblioteca, usa la función BindCommand de AdminCommands. Cuando vinculas una función, necesitarás especificar una tabla de claves que, cuando se
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandName, 1, "Optional description")
Para desвяzarlo, usaría similarmente UnbindCommand y especificaría una palabra clave para desвяzar.
AdminCommands:UnbindCommand({"keyword1"})
En general, el contenido de su script AdminCommands debería parecerse a lo siguiendo:
local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- Código de comando aquí
-- Regresa verdadero si es exitoso y falso de lo contrario
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run
Puede notar que la función de ejemplo toma un parámetro llamado commandData . Este parámetro es un argumento de tabla pasado a todos los comandos de administrador vinculados cuando se ejecutan por la biblioteca. La tabla contiene información útil sobre el comando que se habló y el usuario que habló. Tiene los siguientes campos:
- Altavoz: ChatSpeaker
- Mensaje: string
- ChannelName: string
- Comando: string
Es importante siempre esperar commandData como parámetro de funciones de comando. Por ejemplo, si tiene un comando llamado "explode", que requiere un parámetro de Player para ser especificado, la función se vería como explode (comando de datos de usuario).
| Función | Parámetros | | Retorno | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Utilidades
La biblioteca ya tiene algunas funciones de ayudante de construcción llamadas Utilidades que puedes usar. Almacenar Comandos de Administrador.Utilities en una variable o referencia directamente.
local Utilities = AdminCommands.Utilities
Las funciones actuales de la utilidad son:
| Función | Parámetros | Ret
Ejemplos de Comandos
Un comando útil para tener sería uno que imprime una lista de todos los comandos opcionales que los usuarios tienen disponibles. Este comando imprime cada comando vinculado a la biblioteca y algunas de sus propiedades.
-- Imprime una lista de todos los comandos vinculados
function listCommand(commandData)
Utilities:SendSystemMessage(commandData, "The following commands are available:")
-- Iterate a través de cada comando y imprímelos
for id, command in PublicAPI:GetCommands() do
Utilities:SendSystemMessage(commandData, string.format("%* requires permission %*.", id, command.Permission))
end
return true
end
AdminCommands:BindCommand({"list"}, listCommand, 0, "Prints a list of commands.")
Otro comando útil permite a los usuarios darse bríos. Este comando requiere un parámetro cuando se habla – el nombre del usuario objetivo. Si el usuario existe, el comando creará un objeto de bríos en la Raíz Humanoide de ese usuario.
-- Da brújulas de personaje a un jugador específico
function sparklesCommand(commandData)
-- Error si no se dan/hablan parámetros
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
-- Loop a través de los parámetros (ejecutar en cada nombre de jugador dado)
for index = 1, #commandData.Parameters do
local parameter = commandData.Parameters[index]
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Si el parámetro es yo, el usuario debe estar haciendo referencia a sí mismo
-- Usa una función de ayudante para encontrar el personaje del jugador y agregar los brillos
local character = Utilities:GetCharacter(parameter)
if character then
local sparkles = Instance.new("Sparkles")
sparkles.Parent = character:FindFirstChild("HumanoidRootPart")
Utilities:SendSystemSuccessMessage(commandData, string.format(commandData.Speaker.Name .. "added sparkles to " .. parameter))
else
Utilities:SendSystemErrorMessage(commandData, string.format("%* is not a valid player.", parameter))
return false
end
end
return true
end
AdminCommands:BindCommand({"sparkles"}, sparklesCommand, 1, "Gives the specified player sparkles")
También puedes incluir un comando de explosión del tutorial de Crea un Comando de Administrador. Este comando también toma el nombre de un usuario como parámetro.
-- Verifica que el modelo dado es un Personaje y añade una explosión a su HumanoidRootPart
local function makeExplosion(character)
if character and character:FindFirstChild("HumanoidRootPart") then
local explosion = Instance.new("Explosion")
explosion.Position = character.HumanoidRootPart.Position
explosion.Parent = character.HumanoidRootPart
return true
end
return false
end
-- Hace que el personaje de un jugador específico explote
function explodeCommand(commandData)
-- Error si no se dan/hablan parámetros
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
for index = 1, #commandData.Parameters do
local parameter = tostring(commandData.Parameters[index])
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Si el parámetro es yo, el usuario debe estar haciendo referencia a sí mismo
-- Usa una función de ayudante para encontrar el personaje del jugador y agregar la explosión
local character = Utilities:GetCharacter(parameter)
local success = makeExplosion(character)
if success then
Utilities:sendSystemSuccessMessage(commandData, string.format(commandData.Speaker.Name .. " made" .. parameter .. " explode."))
else
Utilities:SendSystemErrorMessage(commandData, string.format("%* is not a valid player.", parameter))
return false
end
end
return true
end
AdminCommands:BindCommand({"explode"}, explodeCommand, 1, "Makes the specified player explode.")
Biblioteca de permisos
Si un no administrador intenta hablar un comando como este, que tiene un nivel de permiso más alto que 0, no se activará. El sistema de comandos usa una biblioteca de permisos separada, a la que el creador de la experiencia se le otorga el nivel de permiso matemático. Los administradores se pueden agregar usando las siguientes funciones en su objeto de objeto de AdminCommands:
SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> boolSetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool
| Función | Parámetros | Return | | ---------------- | |
Módulo de Inicio Rápido
Para un mejor setup puedes usar este Inicio rápido, que es un módulo que ya implementó la biblioteca de comandos de administrador. El modelo es un módulo con el mismo formato que se describe arriba. Además, el módulo tiene algunos comandos ya incluidos para que no tengas que re-implementar.
| Comando/Vínculo | Parámetro hab