管理コマンド は、特定のコントロールレベルを持つユーザーがチャットウィンドウに入力してアクションをトリガーするキーワードまたはフレーズです。このライブラリはチャットモジュールを使用して、ユーザーがレガシーチャットシステムの上で管理コマンドを実装することが簡単にできます。チャットモジュー
セットアップ
Roblox 場所が読み込まれると、チャットサービスが空であるかどうかをチェックします。如果、必要なコンポーネントを見つけない場合、場所は最新のコンポーネントのバージョンを挿入します。これは、エクスペリエンスでこれらのコンポーネントを上書きまたは変更すると、更新されないようになります。
管理コマンドライブラリを設定する最初のステップは、チャットサービスに新しいチャットモジュールを追加することです。このチュートリアルでは、チャットモジュールによって実行される重要なリフトを処理するためにライブラリを整理します。モジュールスクリプトの名前は任意ですが、私
新しいコマンドを実装する
チャットモジュールの大部分のロジックを実装する代わりに、ライブラリモジュールを単に実装するだけです。ライブラリモジュールをモジュールに追加する唯一の方法は、スクリプトのトップでアセットID でリクライバリモジュールを必要とすることです。
local AdminCommands = require(1163352238)
このモジュールは、Run 機能を含む機能のテーブルを返します。ライブラリには、チャットモジュールの Run 機能のためのライブラリ内の機能の 9> Run 機能があります。AdminCommands は、2>
return AdminCommands.Run
これらの 2つのコード行の間で、自分のコマンドと必要なヘルパー機能を実装します。
ライブラリに関数をバインドするには、BindCommand の 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)
-- コマンドコードはここ
-- 成功すると true 、そうでない場合は false を返します
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run
例の関数に commandData というパラメーターが取り込まれていることに気づくかもしれません。このパラメーターは、ライブラリによって実行されるすべてのバインドされた管理コマンドのすべてのバインドされた管理コマンドにパスされます。このテーブルには、次のフィールドが含まれています:
- スピーカー: ChatSpeaker
- メッセージ: string
- ChannelName: string
- コマンド: string
コマンド機能のパラメーターとして常に commandData を期待することは重要です。たとえ、Player パラメーターを指定する必要がある「爆発」というコマンド名のコマンドがあっても、機能は爆発 (コマンドデータ、ユーザー) のように見えます。
| 関数 | パラメータ | | 返回 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
ユーティリティ
ライブラリにはすでに、使用できるユーティリティ機能のいくつかの内蔵ヘルパー機能があります。Utility をストアで直接参照することができます。
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.")
ユーザーがスパークルを与えるのを助ける別のコマンドは、スピーク時に 1つのパラメーターを要求します。このコマンドは、ターゲットユーザーの名前を含む 1つのパラメーターを要求します。ユーザーが存在する場合、コマンドはそのユーザーの人形ルートパーツに Sparkles オブジェクトを作成します。
-- 指定されたプレイヤーのキャラクターのキラキラを与えます
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 以上のコマンドとして処理しません。コマンドシステムは、エクスペリエンスクリエーターにこのコマンドの許可レベルを matth.huge 以上割り当てるため、コマンドシステムの許可レベルは別の Permission ライブラリを使用しています。AdminCommands モジュール
SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> boolSetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool
| 機能 | パラメータ | 返回 | | ---------------------------- |
クイックスタートモジュール
より簡単にセットアップするために、この クイックスタート を使用することもできます。これは、すでに Admin Commands ライブラリを実装しているモジュールです。モデルは、上記のようにモジュールに記述されている形式と同じ形式を持つモジュールです。さらに、モジュールにはすでに含まれているコマンドがいくつかあるため、再実装する
| コマンド/バインディング