Komenda administratora to słowo kluczowe lub fraza, które użytkownik z określonym poziomem kontroli może wpisać do okna czatu, aby uruchomić akcji.Ta biblioteka wykorzystuje moduły czatu, które umożliwiają łatwe wdrożenie poleceń administratora na górze systemu czatu dziedzictwa.Moduły czatu słuchają wходяcych wiadomości na serwerze i mogą wykonywać działania w oparciu o dowolne kryteria, które są pożądane.
Ustawienie
Za każdym razem, gdy ładowana jest strona Roblox, sprawdza się, czy usługa czatu jest pusta.Jeśli nie znajdzie komponentów, których potrzebuje, miejsce wstawi najnowszą wersję tych komponentów.Oznacza to, że zastąpienie lub wprowadzenie zmian do tych komponentów w doświadczeniu uniemożliwi ich aktualizację.
Pierwszym krokiem w konfiguracji biblioteki poleceń administratora jest dodanie nowego modułu czatu do usługi czatu.Biblioteka w tym samouczku zajmuje się ciężkim podnoszeniem wykonanym przez moduł czatu, więc jedynym obiektem, który musisz dodać do usługi czatu, jest nowy ModuleScript.Nazwa skryptu modułu może być dowolna, ale sugeruję coś intuicyjnego, takiego jak AdminCommands.
Wdroż nowe polecenia
Zamiast wdrażać większość logiki modułu czatu po prostu będziesz potrzebował modułu biblioteki, który wykonuje większość pracy i dodaje dodatkową funkcjonalność.Najprostszym sposobem dodania biblioteki do modułu jest wymaganie jej przez jej ID aktywów na górze skryptu.
local AdminCommands = require(1163352238)
Ten moduł zwraca tabelę funkcji, z funkcją Run jako najważniejszą.Biblioteka ma funkcję Run dla swojego modułu czatu.Ważne jest, aby polecenia administratora zwróciły tę funkcję Run do usługi czatu.Funkcja jest indeksowana przez nazwę, Run , a możesz zwrócić następujące, tak jakby Run było właściwością reprezentacji tablicy komend naszego administratora:
return AdminCommands.Run
Pomiędzy tymi dwoma liniami kodu implementuj własne polecenia i wszelkie niezbędne funkcje pomocnicze.
Aby wiązać funkcję z biblioteką, użyj funkcji BindCommand z AdminCommands.Podczas wiązania polecenia musisz określić tabelę słów kluczowych, które, gdy zostaną wypowiedziane, uruchomią polecenie, funkcję, która zostanie uruchomiona, poziom priorytetu oraz opcjonalnie opis polecenia.Jeśli nie określisz poziomu uprawnień, domyślnie wyniesie on 0.Poziomy priorytetowe są liczbowymi wartościami używanymi przez bibliotekę AdminCommands do przypisywania hierarchii uprawnień wśród użytkowników z odpowiednimi poziomami przyznanych uprawnień.Podczas wykonywania polecenia głośnik musi mieć poziom uprawnień większy lub równy poziomowi polecenia Biblioteka uprawnień.
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandName, 1, "Optional description")
Aby rozwiązać, użyłbyś również UnbindCommand i określił słowo kluczowe do rozwiązania.
AdminCommands:UnbindCommand({"keyword1"})
Ogólnie rzecz biorąc, zawartość skryptu poleceń administratora powinna wyglądać obserwuje:
local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- Kod komendy tutaj
-- Zwraca prawdę, jeśli jest udane, a w przeciwnym razie fałsz
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run
Możesz zauważyć, że funkcja przykładowa bierze parametr o nazwie commandData.Ten parametr jest argumentem tablicy przekazywanym do wszystkich wiązanych funkcji poleceń administratora, gdy są wykonywane przez bibliotekę.Tabela zawiera przydatne informacje o komendzie, która została wypowiedziana, oraz o użytkowniku, który ją wypowiedział.Posiada następujące pola:
- Głośnik: ChatSpeaker
- Wiadomość: string
- Nazwa kanału: string
- Komenda: string
Ważne jest, aby zawsze oczekiwać commandData jako parametr funkcji komendy.Na przykład, jeśli masz polecenie o nazwie "wybuch", które wymaga określenia parametru Player, funkcja będzie wyglądała jak explode(commandData, użytkownik).
| Funkcja | Parametry | Powrót | | --------------- | ------------------------------------------------------------------------------------------------ | ------ | | Komendy: | | | | BindCommand() | table functionIDs, function functionToExecute, number minimumPermissionLevel, string description | bool | | UnbindCommand() | table functionIDs | bool | | Zdobądź komendy() | | table |
Użytki
Biblioteka ma już kilka wbudowanych funkcji pomocniczych o nazwie Utilities, których możesz używać.Przechowywanie polecenia administracyjnego Store.Utilities w zmiennej lub bezpośrednio odwołaj do niego.
local Utilities = AdminCommands.Utilities
Obecne funkcje użytkowe to:
| Funkcja | Parametry | Powrót | | -------------------------- | -------------------------------------------------- | ------ | | Wiadomości z okna czatu: | | | | SendSystemMessage() | table commandData, string content, table extraData | bool | | SendSystemSuccessMessage() | table commandData, string content | bool | | SendSystemWarningMessage() | table commandData, string content | bool | | Niezdefiniowano gracza: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | | | Niezdefiniowano typ danych: | | bool |
Przykładowe komendy
Przydatnym poleceniem, które należałoby mieć, byłoby takie, które drukuje listę wszystkich opcjonalnych poleceń, które użytkownicy mają do dyspozycji.Ta komenda wyświetla każdą komendę związaną z biblioteką i kilka jej właściwości.
-- Wydrukuje listę wszystkich związanych poleceń
function listCommand(commandData)
Utilities:SendSystemMessage(commandData, "The following commands are available:")
-- Powtarzaj przez każde polecenie i wydrukuj je
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.")
Kolejna przydatna komenda pozwala użytkownikom dać sobie błyski.Ta komenda wymaga jednego parametru, gdy jest wypowiedziana - nazwy docelowego użytkownika.Jeśli użytkownik istnieje, polecenie utworzy obiekt Sparkles w HumanoidRootPart tego użytkownika.
-- Daje błyski postaci określonego gracza
function sparklesCommand(commandData)
-- Błąd, jeśli nie podano/wypowiedziano żadnych parametrów
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
-- Pętla przez parametry (wykonaj na każdej podanej nazwie gracza)
for index = 1, #commandData.Parameters do
local parameter = commandData.Parameters[index]
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Jeśli parametr jest mną, użytkownik musi odnosić się do siebie
-- Użyj funkcji pomocniczej, aby znaleźć postać gracza i dodać błyski
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")
Możesz również dodać polecenie wybuchowe z samouczka Tworzenie polecenia administratora. To polecenie również bierze nazwę użytkownika jako parametr.
-- Weryfikuje, że podany model jest postacią i dodaje eksplozję do jego części 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
-- Rozpędza postać określonego gracza
function explodeCommand(commandData)
-- Błąd, jeśli nie podano/wypowiedziano żadnych parametrów
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 -- Jeśli parametr jest mną, użytkownik musi odnosić się do siebie
-- Użyj funkcji pomocniczej, aby znaleźć postać gracza i dodać wybuch
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.")
Biblioteka uprawnień
Jeśli nieadministrator spróbuje wypowiedzieć polecenie takie, które ma wyższy poziom uprawnień niż 0, nie zostanie uruchomione.System komend używa odrębnej biblioteki uprawnień, do której twórca doświadczenia automatycznie otrzymuje poziom uprawnień math.huge.Administratorzy mogą być dodawani za pomocą następujących funkcji na obiekcie modułu AdminCommands:
SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> boolSetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool
| Funkcja | Parametry | Powrót | | ---------------------------- | ---------------------------------------------------------------------------------- | ------ | | Uprawnienie | | | | GetAdmins() | | tabela | | SetUserPermission() | number requesterUserId, number targetUserId, permissionLevel | bool | | GetUserPermission() | number userId | number | | GetGroupRankPermission() | number requesterUserId, number targetGroupId, number targetRankId, permissionLevel | bool | | GetGroupRankPermission() | targetGroupId, targetRankId | int |
Moduł szybkiego uruchamiania
Aby ułatwić konfigurację, możesz również użyć tego Szybkiego startu, który jest modułem, który już wdrożył bibliotekę poleceń administratora.Model to moduł o tym samym formacie, o którym mowa powyżej.Ponadto moduł ma kilka poleceń już włączonych, więc nie musisz ponownie wdrażać.
| Komenda/wiązanie | Parametr mówiony | | -------------------------------- | -------------------------------- | | "list", "commands" | nazwa użytkownika | | "sparkles" | nazwa użytkownika | | "sparkles" | nazwa użytkownika | | "unforcefield", "unff" | nazwa użytkownika | | "explode" | nazwa użytkownika | | "part" | Ścieżka (tj.doświadczenie.Przestrzeń robocza) | | "zamrożenie" | nazwa użytkownika | | "odmrożenie" | nazwa użytkownika | | "dodawać" | nazwa użytkownika | | "usuń" | nazwa użytkownika | | "wyrzuć" | nazwa użytkownika | | "ustawienie uprawnień", "sup" | identyfikator grupy, rangi, uprawnienia |