管理员指令

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

管理员指令是一个用户具有某种控制级别的用户可以在聊天窗口中输入以触发操动作的关键字或短语。 此库使用聊天模块,可以轻松实现管理命令在传统聊天系统上。聊天模块接受服务器上的消息,并可以根据任何需要的标准执行操作。

设置

每当 Roblox 位置加载时,它会检查是否检查到聊天服务是否为空。 如果它找不到它需要的组件,它会插入最新版本的这些组件。 这意味着在体验中覆盖或更改这些组件会导致它们无法更新。

设置管理员命令库的第一个步骤是将一个新的聊天模块添加到聊天服务。 图书在本教程中为聊天模块提供重要的工作量,因此您需要添加的唯一对象是一个新的 ModuleScript 。 模块脚本的名称可以为任何东西,但我建议使用直观的名称,例如 AdminCommands

实现新命令

您将需要实现聊天模块的大部分逻辑,而不是实现大多数的聊天模块逻辑。 添加库存模块的最简单的方法是将其作为脚本顶部的资产ID 要求。


local AdminCommands = require(1163352238)

此模块返回一个包含 Run 函数的表,其中 Run 函数为最重要的。 库有一个 Run 函数为其聊天模块。 重要的是,AdminCommands 返回这个 2>Run2> 函数为聊天服务。 函数被命名为 5>Run</


return AdminCommands.Run

在这两行代验证码之间,实现您自己的命令和任何必要的助手函数。

为了将函数绑定到图书馆,请使用 AdminCommands 图书馆的 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 参数才能指定,那么函数的外观将是爆炸(命令数据,用户)。

| 函数 | 参数 | | 返回 | | --- | 定义 | 串描述 | 布什 | | 命令: | | | | 最小权限级别 | 字符串描述 | 是否 | 解锁命令 | 表函数 ID | 表函数描述 | 是否 | 语音命令 | 表函数 ID

实用工具

库存已经有几个内置的帮助功能,例如 Utilities 您可以使用。 存储管理命令。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")

您还可以包含从“创建管理员指令”教程中包含的爆炸命令。此命令还需要一个用户的名称作为参数。


-- 验证给出的模型是一个角色,并将爆炸添加到其人形根部
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) -> bool
SetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool

| 函数 | 参数 | 返回 | | 列表 | | 设置用户

快速开始模块

为了更轻松的设置,您也可以使用此 快速开始,该模块已经实现了管理命令库。 模型是一个具有相同格式的模块,上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上

| 命令/绑定 | 语音参数