Ein Admin-Befehl ist ein Keyword oder eine Phrase, die ein Benutzer mit einer bestimmten Ebene der Kontrolle in das Chat-Fenster eingeben kann, um eine Actionauszulösen. Diese Bibliothek verwendet Chat-Module, die die einfache Umsetzung von Admin-Befehlen auf dem Legacy-Chat-System ermöglichen. Chat-Module hören auf eingehende Nachrichten auf dem Server und können Aktionen basierend auf den gewünschten Kriterien ausführen.
Einstellungen
Wenn ein Roblox-Ort geladen wird, prüft er, ob der Chat-Dienst leer ist. Wenn er keine Komponenten findet, die er braucht, fügt der Ort die neueste Version dieser Komponenten ein. Dies bedeutet, dass das Überschreiben oder Ändern dieser Komponenten in einem Erlebnis sie verhindert, dass sie aktualisiert werden.
Der erste Schritt in der Einrichtung der Admin-Befehls-Bibliothek ist, ein neues Chat-Modul zum Chat-Dienst hinzuzufügen. Die Bibliothek in diesem Tutorial kümmert sich um die schwere Arbeit, die ein Chat-Modul erledigt hat, so dass das einzige, was Sie zum Chat-Dienst hinzufügen müssen, ein neues ModuleScript ist. Der Name Ihres Modul-Skripts kann beliebig sein, aber ich sch
Neue Befehle implementieren
Statt die meiste der Chat-Modul-Logik zu implementieren, benötigen Sie einfach das Bibliothek-Modul, das die meiste Arbeit erledigt und zusätzliche Funktionen hinzufügt.Die einfachste Möglichkeit, die Bibliothek in Ihr Modul einzufügen, ist, sie durch ihr AssetId oben in Ihrem Skript, das. PL: die Skriptszu benötigen.
local AdminCommands = require(1163352238)
Dieses Modul gibt eine Tabelle von Funktionen zurück, mit der die Run Funktion als die wichtigste Funktion angesehen wird. Die Bibliothek hat eine Run Funktion für ihr Chat-Modul. Es ist wichtig, dass AdminCommands diese Funktion als Run Funktion für den Chat-Service zurückg
return AdminCommands.Run
Zwischen diesen beiden Zeilen Codesimplementieren Sie Ihre eigenen Befehle und alle notwendigen Hilfsfunktionen.
Um eine Funktion an die Bibliothek zu binden, verwenden Sie die Funktion BindCommand von AdminCommands. Wenn Sie eine Funktion binden, müssen Sie eine Tabelle von Schlüssel
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandName, 1, "Optional description")
Um dich zu entsperren, verwendest du ähnlich UnbindCommand und gib ein Schlüsselwort an, um zu entsperren.
AdminCommands:UnbindCommand({"keyword1"})
Insgesamt sollte der Inhalt Ihres AdminCommands-Skripts wie gefolgte Profileaussehen:
local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- Befehlscode hier
-- Kehrt wahr zurück, wenn erfolgreich und falsch sonst
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run
Sie möchten bemerken, dass die Beispielfunktion ein Parameter namens commandData nimmt. Dieses Parameter ist ein Tab-Argument, das an alle gebunden Admin-Befehlsfunktionen übergeben wird, wenn sie von der Bibliothek ausgeführt werden. Die Tabelle enthält nützliche Informationen über den Befehl, der gesprochen und der Benutzer, der gesprochen hat. Es hat die folgenden Felder:
- Lautsprecher: ChatSpeaker
- Nachricht: string
- ChannelName: string
- Befehl: string
Es ist wichtig, immer commandData als參數 von Befehlsfunktionen zu erwarten. Zum Beispiel, wenn Sie eine Befehlsfunktion namens "explode" haben, die ein Player -Argument erfordert, würde die Funktion so aussehen, wie explode(commandData, Benutzer).
| Funktion | Argumente | Rückgabe | | --- | | Return | | --- | | BindCommand() | Tabelle funktionIDs, FunktionsfunktionToExecute, erforderliches MinimumPermissionLevel, Zeichenbeschreibung | boole | | UnbindCommand() | Tabelle funktionIDs |
Utility
Die Bibliothek hat bereits einige integrierte Hilfsfunktionen, die Sie verwenden können, wie z. B. Utilities, die Sie verwenden können. Store AdminCommand.Utilities in einer Variable oder Referenz direkt.
local Utilities = AdminCommands.Utilities
Aktuelle Utility-Funktionen sind:
| Funktion | Argumente | Rückgabe | |
Beispielfehler
Ein nützlicher Befehl, den man haben könnte, wäre ein Befehl, der eine Liste aller verfügbaren Optionen druckt, die Benutzer haben. Dieser Befehl gibt jeden Befehl, der an die Bibliothek gebunden ist, und einige seiner Eigenschaften aus.
-- Druckt eine Liste aller gebundenen Befehle
function listCommand(commandData)
Utilities:SendSystemMessage(commandData, "The following commands are available:")
-- Durchlaufen Sie jeden Befehl und drucken Sie ihn aus
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.")
Ein weiteres nützliches Kommando erlaubt Benutzern, sich selbst Funkeln zu geben. Dieses Kommando erfordert einen Parameter, wenn es gesprochen wird – der Name des Ziels. Wenn der Benutzer existiert, wird das Kommando ein Funkeln-Objekt in der HumanoidRootPart des Benutzers erstellen.
-- Gibt dem Charakter eines bestimmten Spieler:inGlitzern
function sparklesCommand(commandData)
-- Fehler, wenn keine Parameter gegeben/gesprochen werden
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
-- Loop durch die Parameter (Execute on every given Spieler:in's name)
for index = 1, #commandData.Parameters do
local parameter = commandData.Parameters[index]
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Wenn der Parameter mich ist, dann muss der Benutzer sich auf sich selbst beziehen
-- Verwenden Sie eine Hel助-Funktion, um den Charakter des Spieler:inzu finden und die Sparkles hinzuzufügen
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")
Du kannst auch einen Explosionsbefehl aus dem Tutorial "Erstellen eines Admin-Kommands" enthalten. Dieser Befehl nimmt auch den Namen des Benutzers als Parameter.
-- Überprüft, dass das gegebene Modell ein Charakter ist, und fügt einer Explosion in seinem HumanoidRootPart hinzu
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
-- Lässt den Charakter eines bestimmten Spieler:inexplodieren
function explodeCommand(commandData)
-- Fehler, wenn keine Parameter gegeben/gesprochen werden
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 -- Wenn der Parameter mich ist, dann muss der Benutzer sich auf sich selbst beziehen
-- Verwenden Sie eine Hel助-Funktion, um den Charakter des Spieler:inzu finden und die Explosion hinzuzufügen
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.")
Berechtigungsbibliothek
Wenn ein nicht-Admin versucht, einen Befehl wie dies zu sprechen, der eine höhere Berechtigungsebene als 0 hat, wird er nicht ausgelöst. Das Befehls-System verwendet eine separate Berechtigungs-Bibliothek, zu der der Ersteller der Erfahrung die Berechtigungsstufe math.huge automatisch gewährt wird. Benutzer können über die folgenden Funktionen auf Ihrem AdminCommands-Objekt hinzugefügt werden:
SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> boolSetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool
| Funktion | Argumente | Rückgabe | | ---------------- | | table | | SetUserPermission
Schnellstart-Modul
Für ein einfaches Setup kannst du auch diesen Schnellen Start verwenden, der ein Modul ist, das die Admin-Befehle-Bibliothek bereits implementiert hat. Das Modul ist ein Modul mit demselben Format wie oben beschrieben. Darüber hinaus hat das Modul einige Befehle bereits enthalten, sodass du keine Neu-Implementierung benötigst.
| Command/Bindung | Spoken Parameter | |