Un commande d'admin est un mot-clé ou une phrase qu'un utilisateur avec un certain niveau de contrôle peut taper dans la fenêtre de chat pour déclencher une action. Cette bibliothèque utilise des modules de chat, ce qui permet une implémentation facile des commandes d'admin au-dessus du système de chat légadoire. Les modules de chat écoutent les messages entrants sur le serveur et peuvent exécuter des actions en fonction des critères souhaités.
Mise en place
Chaque fois qu'un lieu Roblox se charge, il vérifie si le service de chat est vide. Si il ne trouve pas les composants dont il a besoin, le lieu insérera la dernière version de ces composants. Cela signifie que l'écriture ou les modifications apportées à ces composants dans une expérience les empêcheront de se mettre à jour.
La première étape dans le déploiement de la bibliothèque de commandes d'administration est d'ajouter un nouveau module de chat au service de chat. La bibliothèque dans ce tutoriel prend soin du travail acharné effectué par un module de chat, afin que le seul objet que vous devez ajouter au service de chat est un nouveau ModuleScript . Le nom de votre script de module peut être n'importe lequel, mais je suggère quelque chose d'intuitif comme AdminCommands
Mise en œuvre de nouveaux commandes
Au lieu d'implémenter la plupart de la logique du module de chat, vous aurez simplement besoin du module de bibliothèque qui fait le plus gros du travail et ajoute des fonctionnalités supplémentaires. La façon la plus simple d'ajouter la bibliothèque dans votre module est d'y requérir par son Id de ressource au sommet de votre script.
local AdminCommands = require(1163352238)
Ce module renvoie une table de fonctions, avec la fonction Run comme la plus importante. La bibliothèque a une fonction Run pour son module de chat. Il est important que AdminCommands renvoie cette fonction Run au service de chat. La fonction est indexée par son nom, 2> Run2>, et vous pouvez renvoyer la suivante
return AdminCommands.Run
Entre ces deux lignes de code, implémentez vos propres commandes et toutes les fonctions d'assistant nécessaires.
Pour lier une fonction à la bibliothèque, utilisez la fonction BindCommand de AdminCommands. Lorsque vous lierez une commande, vous devrez spécifier une table de mots-clés qui,
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandName, 1, "Optional description")
Pour vous débinder, vous utiliseriez également UnbindCommand et spécifieriez un mot-clé pour débinder.
AdminCommands:UnbindCommand({"keyword1"})
Dans l'ensemble, le contenu de votre script AdminCommands devrait ressembler à ce qui suivre:
local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- Code d'invitation ici
-- Retourne vrai si réussi et faux sinon
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run
Vous remarquerez que la fonction d'exemple prend un argument nommé commandData. Cet argument est un argument de table passé à tous les commandes d'administration liées lorsque exécutées par la bibliothèque. La table contient des informations utiles sur le commande qui a été parlé et l'utilisateur qui l'a parlé. Il a les champs suivants :
- Orateur : ChatSpeaker
- Message : string
- ChannelName : string
- Commande : string
Il est important de toujours s'attendre à commandData comme argument des fonctions de commande. Par exemple, si vous avez un commande nommé «explode», qui nécessite un Player parameter pour être spécifié, la fonction ressemblerait à l'explosion(Commande de données, utilisateur).
| Fonction | Paramètres | Retour | | | | | | | | | | | | | | | | | | | |
Utilités
La bibliothèque a déjà quelques fonctions d'aide intégrées appelées Utilities que vous pouvez utiliser. Store AdminCommand.Utilities dans une variable ou une référence directement.
local Utilities = AdminCommands.Utilities
Les fonctions utilitaires actuelles sont :
| Fonction | Paramètres | Retour | |
Exemples de commandes
Un commande utile à avoir serait un qui imprime une liste de tous les commandes optionnelles que les utilisateurs ont disponibles. Ce commande produit chaque commande liée à la bibliothèque et quelques-unes de ses propriétés.
-- Imprime une liste de tous les commandes liées
function listCommand(commandData)
Utilities:SendSystemMessage(commandData, "The following commands are available:")
-- Itérez par commande et imprimez-le
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.")
Un autre commande utile permet aux utilisateurs de se donner des étincelles. Ce commande nécessite un paramètre lorsqu'il est parlé – le nom de l'utilisateur cible. Si l'utilisateur existe, le commande créera un objet Sparkles dans la partie HumanoidRootPart de cet utilisateur.
-- Donne des étincelles de personnage spécifiées
function sparklesCommand(commandData)
-- Erreur si aucun paramètre n'est donné/oral
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
-- Loop à travers les paramètres (Executez sur chaque nom de joueur donné)
for index = 1, #commandData.Parameters do
local parameter = commandData.Parameters[index]
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Si le paramètre est moi, l'utilisateur doit se référer à lui-même
-- Utilisez une fonction d'aide pour trouver le personnage du joueur et ajouter les étincelles
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")
Vous pouvez également inclure un commande d'explosion dans le tutoriel de création d'un commande d'admin. Ce commande prend également le nom d'un utilisateur comme argument.
-- Vérifie que le modèle donné est un personnage et ajoute une explosion à sa partie racine humanoïde
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
-- Fait exploser le personnage d'un joueur spécifié
function explodeCommand(commandData)
-- Erreur si aucun paramètre n'est donné/oral
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 le paramètre est moi, l'utilisateur doit se référer à lui-même
-- Utilisez une fonction d'aide pour trouver le personnage du joueur et ajouter l'explosion
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.")
Bibliothèque d'autorisations
Si un non-admin essaie de parler un commande comme celui-ci, qui a un niveau d'autorisation plus élevé que 0, il ne sera pas déclenché. Le système de commandes utilise une bibliothèque d'autorisation séparée, à laquelle le créateur d'expérience est automatiquement donné le niveau de mathématisation de l'autorisation. Les administrateurs peuvent être ajoutés en utilisant les fonctions suivantes sur votre objet objet AdminCommands :
SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> boolSetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool
| Fonction | Paramètres | Retour | | Permission | Lire les administrateurs | | <
Module de démarrage rapide
Pour un meilleur déploiement, vous pouvez également utiliser ce Quick Start, qui est un module qui a déjà implémenté la bibliothèque des commandes d'administration. Le modèle est un module avec le même format que décrit ci-dessus. De plus, le module a quelques commandes déjà incluses afin que vous n'ayez pas à les ré-importer.
| Command/Bind | Spoken Parameter | |