パスによって、プレイヤーに制限エリアへの入場、バーチャル空間のアバターアイテム、永久パワーアップなど、バーチャル空間内で特別な特典を受けられるようにする、1 回限りの Robux 料金が請求できます。
パスの作成
パスに使用する画像を作成する場合は、以下の要件を満たしてください。
- 512×512 ピクセルのテンプレートを使用します。
- .jpg、.png、.bmpのいずれかの形式で画像を保存します。
- アップロードプロセスでは、最終的なバッジを円形画像にトリミングして切り出すため、円形の境界の外側に重要な部分を入れないようにしてください。
新しいパスの作成方法
クリエーターダッシュボードに移動します。
パスを作成したいバーチャル空間をクリックします。 バーチャル空間の概要ページが表示されます。
左側のナビゲーションで、関連アイテムを選択します。 特定のバーチャル空間に対する関連アイテムページが表示されます。
横並びのナビゲーションでパスを選択します。 そのバーチャル空間のパスが表示されます。
パスの作成ボタンをクリックします。 パスの作成ページが表示されます。
画像をアップロードボタンをクリックします。 ファイルブラウザが表示されます。
アイコンとして表示したい画像を選択し、開くボタンをクリックします。
以下のフィールドに入力します。
- 名前:パスのタイトル。
- 説明:プレイヤーが購入するパスの内容の説明。
パスの作成ボタンをクリックします。 関連アイテムページのパスセクション内に、パスが表示されます。
パス ID の検索
パス ID は、パスの一意の識別子です。 パスに特別な権限を割り当てるには、この ID が必要です。
パス ID の検索方法
バーチャル空間の関連アイテムページのパスセクションに移動します。
パスのサムネイルにカーソルを合わせ、
⋯ ボタンをクリックします。 コンテキストメニューが表示されます。 アセット ID をコピーを選択します。 パス ID はクリップボードにコピーされます。
パスの収益化
パスを作成したら、設定を行って収益化することができます。
パスを収益化する方法
バーチャル空間の関連アイテムページのパスセクションに移動します。
パスのサムネイルにカーソルを合わせ、
⋯ ボタンをクリックします。 コンテキストメニューが表示されます。 新しいタブで開くを選択します。 パスを設定ページが表示されます。
左側のナビゲーションで販売を選択します。
販売アイテムの切り替えボタンを有効にします。
価格の欄に、プレイヤーに請求するパスの Robux の金額を入力します。 入力した価格は、販売ごとにあなたが獲得する Robux の金額に影響します。
保存ボタンをクリックします。
これで、バーチャル空間ページのストアタブから、パスが利用できるようになりました。
パス特典の付与
パスを購入したプレイヤーは、バーチャル空間をプレイするときに関連する特典を受け取れるようになります。 これは自動的に行われるものではないため、パスを所有しているプレイヤーを確認し、そのプレイヤーに特典を付与する必要があります。
以下のスクリプトは、プレイヤーがバーチャル空間に入るするときにチェックを行い、そのプレイヤーが変数passIDに設定された ID と一致するパスを所有しているかどうかを確認します。 このコードをServerScriptService内のScriptに配置し、サーバーがプレイヤーに与えられた特典を処理できるようにします。
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local passID = 0000000 -- これをあなたのパスIDに変更する
local function onPlayerAdded(player)
local hasPass = false
-- プレイヤーがすでにパスを所有しているかチェック
local success, message = pcall(function()
hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, passID)
end)
-- エラーがある場合、警告を発して関数から退出
if not success then
warn("Error while checking if player has pass: " .. tostring(message))
return
end
if hasPass then
print(player.Name .. " owns the Pass with ID " .. passID)
-- このプレイヤーにパスに関連した能力かボーナスを割り当てる
end
end
-- "PlayerAdded" イベントを関数と関連づける
Players.PlayerAdded:Connect(onPlayerAdded)
バーチャル空間内購入のプロモーション
プレイヤーはバーチャル空間空間のメインページから直接パスを購入できますが、バーチャル空間内のショップまたはベンダー NPC を通じてプレイヤーにバーチャル空間内での購入を提供することもできます。 プレイヤーにパスの購入を促すベーシックモデルのサーバーサイドスクリプトとクライアントサイドスクリプトの例を参照してください。
サーバーサイド・スクリプトの例
このコードをServerScriptService内のオブジェクトScriptに配置し、サーバーがプレイヤーに与えられた特典を処理できるようにします。
local MarketplaceService = game:GetService("MarketplaceService")
local passID = 0000000 -- これをあなたのパスIDに変更
-- 完了したプロンプトと購入を処理する関数
local function onPromptPurchaseFinished(player, purchasedPassID, purchaseSuccess)
if purchaseSuccess and purchasedPassID == passID then
print(player.Name .. " purchased the Pass with ID " .. passID)
-- このプレイヤーにパスに関連した能力かボーナスを割り当てる
end
end
-- "PromptGamePassPurchaseFinished" イベントを関数に関連づける
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptPurchaseFinished)
クライアントサイド・スクリプトの例
以下のコードは、プレイヤーがパスを持っているかどうかを安全にチェックし、まだパスを持っていない場合は購入を促すpromptPurchase()関数を導入します。 このコードをLocalScriptに配置し、プレイヤーがボタンをクリックしたときやキャラクターがパーツに触れたりといった状況でpromptPurchase()を呼び出します。
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local passID = 0000000 -- これをあなたのパスIDに変更
-- パスの購入を促す関数
local function promptPurchase()
local player = Players.LocalPlayer
local hasPass = false
local success, message = pcall(function()
hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, passID)
end)
if not success then
warn("Error while checking if player has pass: " .. tostring(message))
return
end
if hasPass then
-- プレイヤーがすでにパスを所有している場合; 相手に伝える
else
-- プレイヤーがすでにパスを所有していない場合; 購入を促す
MarketplaceService:PromptGamePassPurchase(player, passID)
end
end