開発者製品

開発者製品は、バーチャル空間内の通貨、弾薬、ポーションなど、ユーザーが複数回購入できるアイテムまたは能力です。

開発者製品の作成

開発者製品に使用する画像を作成する場合は、以下の要件を考慮してください。

  • 512×512 ピクセルのテンプレートを使用します。
  • .jpg.png.bmpのいずれかの形式で画像を保存します。
  • アップロードのプロセスでは、最終的な開発者製品を円形画像にトリミングして切り出すため、円形の境界の外側に重要な部分を入れないようにしてください。

新しい開発者製品を作成する方法

  1. 開発者製品を作成したいバーチャル空間をクリックします。 バーチャル空間の概要ページが表示されます。

  2. 左側のナビゲーションで、関連アイテムを選択します。 関連アイテムページが表示されます。

  3. 横並びナビゲーションで、開発者製品を選択します。 そのバーチャル空間のすべての開発者製品が表示されます。

  4. 開発者製品を作成ボタンをクリックします。 開発者製品を作成ページが表示されます。

  5. 画像をアップロードボタンをクリックします。 ファイルブラウザが表示されます。

  6. アイコンとして表示したい画像を選択し、開くボタンをクリックします。

  7. 以下のフィールドに入力します。

    • 名前:開発者製品のタイトル。
    • 説明:ユーザーが購入する開発者製品の内容の説明。
    • Robux の価格:開発者製品のユーザーに課金したい Robux 金額。
  8. 開発者製品を作成ボタンをクリックします。 開発者製品は、関連アイテムページの開発者製品セクション内に表示されます。

開発者製品 ID を探す

開発者製品 ID は、開発者製品の一意の識別子です。 バッジをスクリプトするときに、この ID が必要です。

開発者製品 ID を探す方法

  1. バーチャル空間の関連アイテムページの開発者製品セクションに移動します。

  2. 開発者製品のサムネイルにカーソルを合わせ、ボタンをクリックします。 コンテキストメニューが表示されます。

  3. アセット ID をコピーを選択します。 開発者製品 ID が、クリップボードにコピーされます。

開発者製品のスクリプト

バーチャル空間内でのエフェクトの開発者製品を導入するには、スクリプトを使用する必要があります。

一般的な開発者製品のスクリプト使用例には以下が含まれます。

購入を促す

ユーザーに対して、開発者製品の購入を MarketplaceServicePromptProductPurchase() メソッドを使って促すことができます。 仮想空間のニーズに応じて、ユーザーがボタンを押したときやキャラクターが業者のノンプレイヤーキャラクター(NPC)に話しかけたときなどの状況でpromptPurchase()関数を呼び出すことができます。


local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local productId = 0000000 -- Change this to your developer product ID
-- Function to prompt purchase of the developer product
local function promptPurchase()
MarketplaceService:PromptProductPurchase(player, productId)
end

購入の処理

ユーザーが開発者製品を購入した後、取引の処理と記録を行うのはあなたの責任です。 MarketplaceService.ProcessReceiptコールバックを使用して、ServerScriptService内のScriptを介してこれを行うことができます。


local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local productFunctions = {}
-- ProductId 123123 brings the user back to full health
productFunctions[123123] = function(receipt, player)
if player.Character and player.Character:FindFirstChild("Humanoid") then
player.Character.Humanoid.Health = player.Character.Humanoid.MaxHealth
-- Indicate a successful purchase
return true
end
end
-- ProductId 456456 awards 100 gold to the user
productFunctions[456456] = function(receipt, player)
local stats = player:FindFirstChild("leaderstats")
local gold = stats and stats:FindFirstChild("Gold")
if gold then
gold.Value = gold.Value + 100
return true
end
end
local function processReceipt(receiptInfo)
local userId = receiptInfo.PlayerId
local productId = receiptInfo.ProductId
local player = Players:GetPlayerByUserId(userId)
if player then
-- Get the handler function associated with the developer product ID and attempt to run it
local handler = productFunctions[productId]
local success, result = pcall(handler, receiptInfo, player)
if success then
-- The user has received their benefits!
-- 取引を確認するのに PurchaseAllowed を返します。
return Enum.ProductPurchaseDecision.PurchaseGranted
else
warn(""Failed to process receipt:"", receiptInfo, result)
end
end
-- ユーザーへの報酬が付与できませんでした。
-- 次にユーザーが参加するときにもう一度試すには NotProcessedYet を返します。
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- callback を設定。これはサーバー上の一つのスクリプトで一回だけできます!
MarketplaceService.ProcessReceipt = processReceipt

情報の取得

価格、名前、画像など、特定の開発者製品に関する情報を取得するには、Enum.InfoType.Product の第二引数を持つMarketplaceService:GetProductInfo() 関数を使用します。 例:


local MarketplaceService = game:GetService("MarketplaceService")
local productId = 000000 -- これをあなたの開発者製品IDに変更
local productInfo = MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success then
-- productInfoをここで使用!
end

GetDeveloperProductsAsync() メソッドを使用して、仮想空間のすべて開発製品のデータを取得することもできます。 これは、点検やフィルタができる仮想空間内ショップまたは製品リスト GUI といったものを構築できるPages オブジェクトを返します。

例えば、以下のスクリプトはバーチャル空間内の開発者製品の名前、価格、ID、説明、アセット ID を表示します。


local MarketplaceService = game:GetService("MarketplaceService")
local success, developerProducts = pcall(function()
return MarketplaceService:GetDeveloperProductsAsync():GetCurrentPage()
end)
if developerProducts then
for _, developerProduct in pairs(developerProducts) do
for field, value in pairs(developerProduct) do
print(field .. ": " .. value)
end
print(" ")
end
end