관리자 명령은 특정 수준의 제어를 가진 사용자가 채팅 창에 입력할 수 있는 키워드 또는 문구입니다. 이 라이브러리는 채팅 모듈을 사용하여 사용자가 서버의 기본 채팅 시스템 위에 관리자 명령을 수행할 수 있도록 합니다. 채팅 모듈은 서버에서 수신된 메시지를
설정
Roblox 장소가 로드할 때마다 채팅 서비스가 비어 있는지 확인합니다. 필요한 구성 요소를 찾지 못하면 장소는 해당 구성 요소의 최신 버전을 삽입합니다. 이렇게 하면 경험에서 이 구성 요소를 덮어쓰거나 변경하면 업데이트되지 않습니다.
관리자 명령 라이브러리를 설정하는 첫 번째 단계는 채팅 서비스에 새로운 채팅 모듈을 추가하는 것입니다. 이 튜토리얼의 라이브러리는 Chat Module에서 수행되는 대량 작업을 처리하므로 채팅 서비스에 추가할 유일한 개체는 새로운 Class.ModuleScript
새 명령 구현
대부분의 채팅 모듈 로직을 구현하는 대신 모듈 라이브러리는 일을 많이 하고 추가 기능을 추가하는 라이브러리 모듈을 필요로 합니다. 모듈에 라이브러리를 추가하는 가장 간단한 방법은 스크립트 顶部에 있는 자산Id로 라이브러리를 요구하는 것입니다.
local AdminCommands = require(1163352238)
이 모듈은 가장 중요한 Run 함수를 포함하는 함수 테이블을 반환합니다. 라이브러리에는 Run 함수의 채팅 모듈에 대한 라이브러리의 함수를 반환합니다. 관리 명령이
return AdminCommands.Run
이 두 줄의 코드 사이에서 사용자 지정 명령을 구현하고 필요한 모든 도우미 함수를 구현합니다.
라이브러리에 함수를 바인딩하려면 BindCommand 함수의 AdminCommands 에 함수를 지정해야 합니다. 명령을
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandName, 1, "Optional description")
해제하려면 UnbindCommand 을 사용하고 해제할 키워드를 지정합니다.
AdminCommands:UnbindCommand({"keyword1"})
결합하여 관리 명령 스크립트의 콘텐츠는 팔로잉같이 보여야 합니다.
local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- 여기에 명령 코드
-- 성공적인 경우 반환 true, 그렇지 않으면 false
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run
예시 함수에서 commandData라는 매개 변수가 사용되는 경우가 있습니다. 이 매개 변수는 라이브러리에서 실행할 때 모든 바인딩된 관리자 명령 함수에 전달되는 테이블 인수입니다. 테이블에는 사용된 명령의 내용과 사용자가 말한 내용에 대한 유용한 정보가 포함되어 있습니다. 다음 필드가 있습니다.
- 스피커: ChatSpeaker
- 메시지: string
- ChannelName: string
- 명령: string
명령 함수의 매개 변수로 commandData를 항상 기대해야 합니다. 예를 들어, Player이라는 이름의 명령을 사용하는 경우 Class.Player 매개 변수를 지정하는 함수는 폭발(명령 데이터, 사용자)이 될 수 있습니다.
| 함수 | 매개 변수 | 반환 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
유틸리티
라이브러리에는 사용할 수 있는 몇 가지 내장 도우미 함수가 있습니다. Utilities라는 이름의 변수 또는 참조에 직접 저장 Store AdminCommand.Utilities.
local Utilities = AdminCommands.Utilities
현재 유틸리티 함수는 다음과 같습니다.
| 함수 | 매개 변수 | | 반환 | | 테이블 명령 데이터 | | | 채팅 창 메시지: | 테이블 명
예시 명령
사용자가 사용할 수 있는 모든 옵션 명령의 목록을 인쇄하는 유용한 명령이 하나 있습니다. 이 명령은 라이브러리와 라이브러리의 몇 가지 속성에 대해 바인딩된 각 명령을 출력합니다.
-- 모든 바인딩된 명령의 목록을 프린트합니다.
function listCommand(commandData)
Utilities:SendSystemMessage(commandData, "The following commands are available:")
-- 모든 명령을 반복하고 출력하십시오
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.")
또 다른 유용한 명령은 사용자가 스파클을 줍니다. 이 명령에는 하나의 매개 변수가 필요합니다 – 대상 사용자의 이름입니다. 사용자가 있으면 명령은 해당 사용자의 인간형 루트 파트에 스파클 개체를 생성합니다.
-- 지정된 플레이어의 캐릭터에 반짝이를 제공합니다.
function sparklesCommand(commandData)
-- 매개 변수가 지정되지 않거나 말하지 않은 경우 오류
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
-- 매개 변수를 통해 루프 (모든 플레이어의 이름에 대해 실행)
for index = 1, #commandData.Parameters do
local parameter = commandData.Parameters[index]
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- 매개 변수가 나인 경우 사용자는 자신을 참조해야 합니다.
-- 도우미 함수를 사용하여 플레이어의 캐릭터를 찾고 반짝이를 추가하십시오
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")
또한 생성된 관리 명령 튜토리얼에서 폭발 명령을 포함할 수 있습니다. 이 명령은 사용자 이름을 매개 변수로 사용하기도 합니다.
-- 지정된 모델이 캐릭터인지 확인하고 캐릭터의 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
-- 지정된 플레이어의 캐릭터가 폭발합니다.
function explodeCommand(commandData)
-- 매개 변수가 지정되지 않거나 말하지 않은 경우 오류
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 -- 매개 변수가 나인 경우 사용자는 자신을 참조해야 합니다.
-- 도우미 함수를 사용하여 플레이어의 캐릭터를 찾고 폭발을 추가하십시오
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.")
권한 라이브러리
만약 비관리자가 권한 수준이 0보다 높은 명령을 이렇게 말하려 시도하면, 이 명령은 트리거되지 않습니다. 명령 시스템은 경험 생성자에게 권한 수준 계산기를 별도로 제공하며, 경험 생성자는 이 계산기에 대한 권한 수준 수학을 자동으로 받습니다. 관리자는 다음 함수를 사용하
SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> boolSetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool
| 함수 | 매개 변수 | | | Return | |
빠른 시작 모듈
쉽게 설정하려면 이 모듈도 사용할 수 있습니다 빠른 시작, 이는 이미 관리 명령 라이브러리를 구현한 모듈입니다. 모듈은 위에 설명된 대로 형식이 동일한 모듈입니다. 또한 모듈에는 몇 가지 명령이 포함되어 있으므로 다시 구현할 필요가 없습니다.
| 명령/바인딩 | 스피��