💬

【Roblox】入室時にゲームパスを購入していたか確認する方法

2024/07/19に公開

はじめに

前回ゲームパスの購入機能の実装をしましたがゲームを退出すると付与されたものがリセットされてしまう感じでした。

今回は購入していたら次回の入室時に確認して購入時の状態を付与する方法を共有します。

ゲームパスの実装方法についてはこちら(今回はこちらのコードの続きを書いていきます。)
https://zenn.dev/landel_tech/articles/f1ab06e80d6248

公式Reference

https://create.roblox.com/docs/ja-jp/reference/engine/classes/MarketplaceService#UserOwnsGamePassAsync

実装

ServerScriptServiceに置いたScriptを編集していきます。

Players.PlayerAdded:Connect(function(player)
	
	local info = Instance.new("Folder")
	info.Name = "Info"
	info.Parent = player
	
	local isActiveFirstPass = Instance.new("BoolValue")
	isActiveFirstPass.Name = "IsActiveFirstPass"
	isActiveFirstPass.Parent = info
	isActiveFirstPass.Value = false
	
	local hasFirstPass = false
	-- FirstPassの所有権を確認
	local success, message = pcall(function()
		hasFirstPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, 862267773)
	end)

    -- 確認処理が失敗したとき
	if success == false then
		print("FirstPass error: ", tostring(message))
	end

	if hasFirstPass then
		--FirstPassを持っていた場合
		print(player.Name .. " owns " .. 862267773)
		isActiveFirstPass.Value = true
	else
		--FirstPassを持っていない場合
		print(player.Name .. " doesn't own " .. 862267773)
		isActiveFirstPass.Value = false
	end
end)

MarketplaceService:UserOwnsGamePassAsync(player.UserId, 862267773)
ユーザーIDと購入済みか確認したいPassのIDを引数に入れて実行すると購入済みかがBoolean値で返ってきます。

実行結果

持っている場合は以下のようにしっかりとログを返してくれます。

Landelテックブログ

Discussion