管理員指令 是一個使用者具有某些控制程度的話題或片語,可以在聊天窗口輸入即可觸發行動作。此圖鑑館使用聊天模組,這使行動可以在傳統聊天系統上方的控制標準上執行。聊天模組聆聽來自伺服器的來信並可以按照指定的條件執行行動。
設置
當 Roblox 位置載入時,會檢查聊天服務是否為空。如果未找到它需要的零件,該位置將會插入最新版本的零件。這意味著在體驗中覆蓋或更改這些零件會導致它們無法更新。
設置管理員指令庫的第一個步驟是添加 Chat 服務中的新聊天模組。此教學中的圖書館處理了 Chat 模組所完成的重要工作,因此您只需要添加新的 ModuleScript 。模塊腳本的名稱可以是任何東西,但我建議您使用一些直觀的名稱,例如 AdminCommands 。
實現新指令
而不是實現聊天模組的大部分論理,您將僅需要執行大量工作並且添加額外功能的資料庫模組。最簡單的方法是從您的模組上的資產名稱來添加資指令碼庫是。
local AdminCommands = require(1163352238)
此模組返回一個包含 Run 功能的表,其中 Run 功能為最重要的一個。 圖書館有一個 Run 功能為其聊天模組。 重要的是,AdminCommands 必須將此 2>Run2> 功能返回聊天服務。 功能以
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 和否則
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run
您可能會發現,範例函數以 commandData 的參數名稱取得。這個參數是由圖書館執行時傳給所有綁定管理員指令時所傳給的表參數。表包含有用的信息關於發言的指令和用戶發言的用戶。它有以下字段:
- 喇叭:ChatSpeaker
- 訊息: string
- ChannelName: string
- 指令: string
重要的是,您總是應該期望 commandData 作為命令功能的參數。例如,如果您有名為 "爆炸" 的命令,需要指定 Player 參數,則功能將看起來像爆炸 (命令數據、用戶)。
| 函數 | 參數 | | 返回 | | --- | 定義 | 數據檢查級 | 列表 functionID | 字串描述 | 是否 命令: | 是否命令: | 最低權限等級 | 字符描述符號 | 是否命令: | 是否
工具
資料庫已有一些預先建立的幫助功能,稱為「Utility」,您可以使用它們。 儲存管理員指令。Utilities 在變數或引用中直接存取。
local Utilities = AdminCommands.Utilities
目前的工具功能是:
| 功能 | 參數 | 返回 | | 表命令Data, 字串預期內容, 預期表 | 按鈕命令 | 發生錯誤
範例指令
有用的指令將會是一個列出所有可用的指令,給用戶可用的指令。這個指令將會列出每個指令綁定到圖書館的項目和其中幾個其性。
-- 列出所有綁定指令的列表
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,它將不會被觸發。命令系統使用獨立的權限資料庫,其權限等級與體驗創作者的權限等級 math.huge 相同。管理員可以使用以下功能在你的管理命令模塊對物件上添加:
SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> boolSetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool
| 功能 | 參數 | 返回 | | 列表 | | 設
快速開始模組
為了更容易設置,您也可以使用此 快速開始,這是一個模組,其中已實現管理員指令庫。模型是一個模組,其格式與上述所述相同。此外,模組還有一些命令已包含,因此您不需要重新實現。
| 指令/綁定 |