下記のようなウィンドウを表示させ、Robuxを使いアイテムなどの購入を促す方法を解説します。
有料アイテムの設定
有料アイテムは、ゲームごとに設定するものになりますので、まずはゲームを開いてください。
- HOMEタブに切り替え「Game Settings」をクリックします。
- 「Monetization」のページを表示し、「Create」をクリックします。これで有料アイテムが1つ出来ます。
- 続いて、そのアイテムの右側にある「…」をクリックし、表示された「Edit」をクリックします。
- 「Name」の欄に、アイテム名を入力します。
- 「Price」の欄に、料金を入力します。
- 「Edit Developer Product」の上にある矢印(「<-」)をクリックします。
- 「Product ID」の欄に数字が表示されていると思います。プログラムで使用しますので、この数字を書き留めてください。
- 「Save」をクリックすれば設定は完了です。
プログラムを記述する
一度購入した有料アイテムをずっと使用できるようにしたい場合はゲームパスを使用した方がいいでしょう。
local MarketplaceService = game:GetService("MarketplaceService")
local productID = 1114780601 -- 「Product ID」の数値(上記の7)
-- 「今すぐ買う」をクリックしたときに呼ばれる(キャンセルされた場合は呼ばれない)
local function processReceipt(receiptInfo)
if receiptInfo.ProductId == productID then -- 有料アイテムが複数ある場合はここで確認する
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId) -- これでPlayerが取得できる
ここに実行したい処理をプロブラムする
複数行に渡るような場合は関数を呼ぶようにしましょう
end
return Enum.ProductPurchaseDecision.PurchaseGranted
end
MarketplaceService.ProcessReceipt = processReceipt
下記のプログラムは、有料アイテムの購入ウィンドウを表示させるものです。GUIのボタンやパーツをクリックした際に呼ばれるイベントなどに入れてください。
MarketplaceService:PromptProductPurchase(player, productID)
注意
有料アイテムはお金が絡みますので、組み込むに当たっては十分に注意する必要があります。ロブロックス・スタジオで動作確認しても、ロバックスは消費されません。有料アイテムを買ったのに何も動作しないとなるとクレームの対象になりますので十分に注意しましょう。
開発者の判定
公開した自分のゲームで、有料アイテムを買うなんて考えたくもありません。ちなみに購入金額の30%が徴収されますので、例えば、50Robuxの売れた場合、開発者には35Robuxが受け取れるということになります。
下記のようにプログラムすれば、有料アイテムをタダでゲットできるようになります。
if player.UserId == game.CreatorId then -- 開発者かどうかの判定
有料アイテムをゲット
else
MarketplaceService:PromptProductPurchase(player, productID)
end
有料アイテムはどこでプログラムするのですか?
簡単に説明すると、販売したいところで行います。
Partなどのボタンをクリック、またはGUI上のボタンをクリックしたときに行います。
MarketplaceService…のところのplayer, productidのplayerのところがエラーになってしまいます。どうすればいいでしょうか?
このプログラムはサーバーで動作するものになりますので、LocalScriptでは使用できません。RemoteEventのFireServerで呼び出すことになります。
「動画で学ぶプログラミング」の全25回を理解すれば、上記のプログラムも理解でき自身のゲームに組み込むことができると思いますので頑張ってください。
https://roblox-jp.com/programming/
PromptProductPurchaseは、ローカル、サーバー、どちらでも動作するようです。