初めてゲームに参加したプレイヤーにバッジを与える方法です。
まず、バッジの画像を登録して、IDを作成しておきます。
- まずはバッジの画像を作成します。
画像作成ソフトか、下記のサイトを使って作ります。画像サイズは512x512になります。最終的に円形に切り取られますので、その辺りも考慮してください。なお画像ファイルはPNGがベストです。
https://www.photopea.com - Creator Dashboardに移動します。
https://create.roblox.com/creations - バッジを設置したいゲームを選択します。
- 左側メニューの「Associated Items」をクリックします。
- BADGESになっていると思いますので、「CREATE ABADGE」をクリックします。
- 「UPLOAD IMAGE」をクリックし、用意しておいた画像を選択します。
- Nameにバッジの名称を入力します。
- Descriptionにバッジの説明を入力します。
- 「CREATE BADGE」をクリックして完了です。
- 作成したバッジをクリックすると、下記のようなURLが確認できると思います。
バッジ番号の数字がIDになりますので書き留めておきましょう。
https://www.roblox.com/badges/バッジ番号/ゲーム名
バッジを与える関数
この関数は、プレイヤーにバッジを与えるものです。
local BadgeService = game:GetService("BadgeService")
local function awardBadge(player, badgeId)
-- バッジ情報を取得する
local success, badgeInfo = pcall(function()
return BadgeService:GetBadgeInfoAsync(badgeId)
end)
if success then
-- バッジの付与が可能かどうかを確認する
if badgeInfo.IsEnabled then
-- バッジを与える
local success, result = pcall(function()
return BadgeService:AwardBadge(player.UserId, badgeId)
end)
if not awarded then
warn("Error while awarding badge:", errorMessage)
end
end
else
warn("Error while fetching badge info!")
end
end
初めてゲームに入ったプレイヤーにバッジを与える
下記のプログラムは、初めてゲームに入ったプレイヤーにバッジを与えるものです。
-- local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local badgeID = 00000000 -- 与えるバッジの番号を設定
local function onPlayerAdded(player)
-- プレーヤーがバッジを持っているかどうか確認する
local success, hasBadge = pcall(function()
return BadgeService:UserHasBadgeAsync(player.UserId, badgeID)
end)
-- エラーが発生した場合は、警告を出して終了する
if not success then
warn("Error while checking if player has badge!")
return
end
if not hasBadge then -- バッジを持っていなかったら実行
awardBadge(player,badgeID) -- 上記のバッジを与える関数を呼ぶ
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
モジュールスクリプト
上記の2つの処理を汎用的に使えるようにモジュールスクリプトにしてみました。
local BadgeManager = {}
local BadgeService = game:GetService("BadgeService")
function BadgeManager:give(player,badgeID)
-- プレーヤーがバッジを持っているかどうか確認する
local success, hasBadge = pcall(function()
return BadgeService:UserHasBadgeAsync(player.UserId, badgeID)
end)
-- エラーが発生した場合は、警告を出して戻る
if not success then
warn("バッジ有無のチェックでエラー発生!")
return
end
if hasBadge then
return -- すでにバッジを持っているのでそのまま戻る
end
-- バッジを授与する処理
local success, badgeInfo = pcall(function()
return BadgeService:GetBadgeInfoAsync(badgeId)
end)
if success then
if badgeInfo.IsEnabled then -- バッジが有効になっている
local success, result = pcall(function()
return BadgeService:AwardBadge(player.UserId, badgeId)
end)
if not success then
warn("バッジ授与時のエラー:", result)
elseif not result then
warn("バッジの授与に失敗しました")
end
end
else
warn("バッジ情報取得エラー:" .. badgeInfo)
end
end
return BadgeManager
バッジを持っている人しか通れないドアの作り方をおしえてください
「特定プレイヤーのみ入れるドア」が参考になると思います。
https://roblox-jp.com/reference/includeplayers/
質問です。
初めて参加したプレイヤーにバッジを与えるスクリプトはRoblox Studioのアプリのどこのフォルダに入れればいいですか?よろしくおねがいします。
ServerScriptService ですね。