ゲームの訪問回数を更新しながらゲーム内に表示する【RobloxStudio】
こんにちは!月一投稿を心がけているけつべつです。
上の作品では、ロブロックスにあるいろんなゲームの中からランダムに選ばれたゲームを訪問することができます。おもしろいですよ!
作品の詳細が表示されるのですが、そこに訪問回数も一緒に表示されます。ロブロックススタジオには訪問回数を読み込む仕組みがないからどうやっているのか不思議。
よく調べたところ、APIという外部のサービスを使うことで訪問回数を表示できることがわかりました!
今日は訪問回数を表示する方法を書いていこうと思います。
参考にしたサイト:
準備
まずは、後でやらなきゃいけない設定をするために、ゲームを「Robloxに保存」か「Robloxに公開」しよう。
次にゲーム設定を開いて
セキュリティの「HTTP要求を許可」「APIサービスのアクセスを有効化」をオンにして保存。(ゲームがRobloxに保存か公開されていないと設定できないので注意)
次にworkspaceに数字を表示する物体を用意。
画像ではPartの中にSurfaceGUI、さらにその中にTextLabelを入れています。
訪問回数を表示するためのScriptもSurfaceGUIに入れています。
スクリプト
下に書いてあるスクリプトは、上のサイトに書かれているスクリプトを少し変えて書き足したものです。Partの中のScriptにコピペします。
local HttpService = game:GetService("HttpService")
local GameId = 7991339063 -- 訪問回数を読み込みたいゲームのID
local UniverseUrl = "https://apis.roproxy.com/universes/v1/places/"..GameId.."/universe"
local UniverseResponse = HttpService:RequestAsync({
Url = UniverseUrl,
Method = "GET"
});
local data = HttpService:JSONDecode(UniverseResponse.Body);
local UniverseId = data["universeId"]
local Url = "https://games.roproxy.com/v1/games?universeIds="..UniverseId
while true do -- 繰り返し
local IsSuccess, Result = pcall(function()
return HttpService:GetAsync(Url)
end)
if IsSuccess then
local data = HttpService:JSONDecode(Result)["data"][1]
local visits = data["visits"] --訪問回数
script.Parent.TextLabel.Text = visits --訪問回数を表示
else
warn("Something went wrong!")
end
wait(30) -- 三十秒経ったら更新
end
TextLabelのTextに読み込んだ訪問回数を表示して、三十秒ごとに更新するように書きました。
2行目のGameIdのところにはゲームのIDを書きます。
IDはURLの数字の部分のことです。
レインボーフレンズだったらURLが「https://www.roblox.com/games/7991339063/Rainbow-Friends」なので7991339063がIDです。
waitの中の数字を変えることで更新するまでの時間が変わります。
更新を繰り返したくない場合はwhile true doと一番最後のendを消してください。
実行してみると…
訪問者数が表示され、時間が経つと更新されて数字が増えました。
成功です!
更新までの時間が短い場合、アクティブ数が多い作品だとなぜか一瞬数字が減ることがあります。それが嫌な人は最低三十秒ぐらいにしたほうがいいです。
もちろんGameIdを変えれば自分の作品の訪問回数も表示できます。
訪問回数が一万以上になった瞬間にお祝いイベントが始まる、みたいなこともできそうですね!
どんな感じに更新されるのか確認したい人はここをみてください。人気作品の訪問回数が増えていく様子が見れる場所を作りました。
この記事がだれかの役に立てたらうれしいです。
〜おしまい〜