管理コマンド

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

管理コマンド は、特定の制御レベルを持つユーザーがチャットウィンドウに入力できるキーワードまたはフレーズで、アクションをトリガーする。このライブラリはチャットモジュールを使用し、レガシーのチャットシステムの上に管理コマンドの簡単な実装を可能にします。チャットモジュールは、サーバー上の受信メッセージを聞き取り、指定されたどんな基準に基づいてもアクションを実行できます。

設定

Roblox の場所がロードされるたびに、チャットサービスが空かどうかをチェックします。必要なコンポーネントを見つけない場合、場所は最新バージョンのそれらのコンポーネントを挿入します。これは、エクスペリエンスでこれらのコンポーネントを上書きしたり、変更したりすると、更新されないことを意味します。

管理コマンドライブラリを設定する最初のステップは、チャットサービスに新しいチャットモジュールを追加することです。このチュートリアルのライブラリは、チャットモジュールによって行われた重量のリフティングを処理して、チャットサービスに追加する必要がある唯一のオブジェクトは、新しい ModuleScript です。モジュールスクリプトの名前は何でもよいが、AdminCommands のような直感的なものを提案する。

新規コマンドを実装する

チャットモジュールのロジックの大部分を実装するのではなく、作業の大部分を行い、追加の機能を追加するライブラリモジュールを単に必要とします。モジュールにライブラリを追加する最も簡単な方法は、スクリプトの最上部でそのアセットIDを要求することです。


local AdminCommands = require(1163352238)

このモジュールは、Run 機能が最も重要なものとして機能のテーブルを返します。ライブラリには Run チャットモジュールの機能があります。AdminコマンドがこのRun機能をチャットサービスに返すことが重要です。機能は名前でインデックス化され、 Run 、そしてあなたは Run が私たちの AdminCommands テーブルレポートのプロパティであるかのように次を返すことができます:


return AdminCommands.Run

これらの 2 行のコードの間で、自分のコマンドと必要なヘルパー機能を実装します。

機能をライブラリにバインドするには、BindCommand 機能の AdminCommands を使用します。コマンドをバインドするときは、発言されるとコマンドをトリガーする、機能をトリガーする、優先度レベル、およびオプションでコマンドの説明を指定する必要があります。When binding a command you will need to specify a table of keywords that, when spoken, will trigger the command, the function that will be triggered, a priority level, and optionally, a description of the command.特権レベルを指定しないと、デフォルトで 0 になります。優先度レベルは、AdminCommands ライブラリが付与権限のレベルに対応するユーザーの間で権限構造を割り当てるために使用される数値値です。コマンドを実行するとき、スピーカーはコマンド 権限ライブラリ のレベルより大きいか等しい権限レベルを持っている必要があります。


AdminCommands:BindCommand({"keyword1", "keyword2"}, commandName, 1, "Optional description")

バインド解除するには、同様に UnbindCommand を使用し、バインド解除するキーワードを指定します。


AdminCommands:UnbindCommand({"keyword1"})

全体として、AdminCommands スクリプトのコンテンツはフォロー中のようになる必要があります:


local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- コマンドコードはここ
-- 成功した場合は真、そうでない場合は false を返す
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run

例の機能が commandData というパラメータを受け取っていることに気付くかもしれません。このパラメータは、ライブラリによって実行されると、すべてのバインド管理コマンド機能に渡されるテーブル引数です。テーブルには、発言されたコマンドと発言したユーザーに関する有用な情報が含まれています。次のフィールドがあります:

  • スピーカー: ChatSpeaker
  • メッセージ: string
  • チャンネル名: string
  • コマンド: string

コマンド機能のパラメータとして常に commandData を期待することが重要です。たとえば、「explode」というコマンドがあり、それには Player パラメータを指定する必要がある場合、機能は explode(commandData, user) のようになります。

| 機能 | パラメータ | 返り値 | | --------------- | ------------------------------------------------------------------------------------------------ | ------ | | コマンド: | | | | BindCommand() | table functionIDs、機能 functionToExecute、number minimumPermissionLevel、文字の説明 | bool | | UnbindCommand() | table functionIDs | bool | | ゲットコマンド() | | table |

便利なツール

ライブラリには既に、使用できるいくつかの組み込みヘルパー機能がある [ユーティリティ]があります。ストア管理コマンド.Utilities を変数に保存するか、直接参照します。


local Utilities = AdminCommands.Utilities

現在のユーティリティ機能は:

| 機能 | パラメータ | 返却 | | -------------------------- | -------------------------------------------------- | ------ | | チャットウィンドウメッセージ: | | | | SendSystemMessage() | table commandData, string content, table extraData | bool | | SendSystemSuccessMessage() | table commandData, string content | bool | | SendSystemWarningMessage() | table commandData, string content | bool | | エラーハンドラー: | | | | NotEnoughSpecified() | table commandData | bool | | IncorrectValueType() | table commandData, string given, string expected | | | データ変換: | | | | ToTupple(player) | string parameter | array | | ToBoolean() | string parameter | bool | | ValidateData() | string expectedType, ... | bool |

例コマンド

有用なコマンドは、ユーザーが利用可能なすべてのオプションコマンドのリストを出力するものです。このコマンドは、ライブラリにバインドされた各コマンドと、いくつかのプロパティを出力します。


-- バインドされたすべてのコマンドのリストを印刷
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.")

別の便利なコマンドでは、ユーザーがスパークルを与えることができます。このコマンドは発言するときに 1つのパラメータが必要です - ターゲットのユーザーの名前。ユーザーが存在する場合、コマンドはそのユーザーの HumanoidRootPart にスパークルオブジェクトを作成します。


-- 指定されたプレイヤーのキャラクターに輝きを与える
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 より高い場合、トリガーされません。コマンドシステムは、エクスペリエンスクリエーターに自動的に math.huge のパーミッションレベルが与えられる別の許可ライブラリを使用します。管理者は、アドミンコマンドモジュールオブジェクトの次の機能を使用して追加できます:


SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> bool
SetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool

| 機能 | パラメータ | 返却 | | ---------------------------- | ---------------------------------------------------------------------------------- | ------ | | 権限 | | | | GetAdmins() | | テーブル | | SetUserPermission() | number requesterUserId, number targetUserId, permissionLevel | bool | | GetUserPermission() | number userId | number | | GetGroupRankPermission() | targetGroupId, targetRankId | int | | GetGroupRankPermission() | targetGroupId, targetRankId | int |

クイック開始モジュール

より簡単に設定できるように、既に Admin Commands ライブラリを実装しているモジュールである クイックスタート も使用できます。モデルは、上記のような形式のモジュールです。また、モジュールには既に含まれているいくつかのコマンドがあるため、再実装する必要はありません。

| コマンド/バインディング | 口頭パラメータ | | -------------------------------- | -------------------------------- | | "list", "commands" | ユーザー名 | | "sparkles" | ユーザー名 | | "sparkles" | ユーザー名 | | "unforcefield", "unff" | ユーザー名 | | "explod追加" | ユーザー名 | | "par外す" | パス (つまりexperience.Workspace) | | "freeze" | ユーザ名 | | "unfreeze" | ユーザ名 | | "add" | ユーザ名 | | "remove" | ユーザ名 | | "kick" | ユーザ名 | | "setuserpermission", "sup" | userId, permission | | "setgrouprankpermission", "sgrp" | groupid, rankId, permission |