学ぶ
エンジンクラス
DataModel
作成できません

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。


コードサンプル
GetService()
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
-- これらのサービスのプロパティを変更する例
Workspace.Gravity = 20
Lighting.ClockTime = 4

APIリファレンス
プロパティ
CreatorId
読み取り専用
複製されていません
並列読み取り
DataModel.CreatorId:number
コードサンプル
プレイスのオーナーがゲームに参加したときに検出する
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("プレースのオーナーがゲームに参加しました!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroupAsync(game.CreatorId) then
print("プレースを所有しているグループのメンバーがゲームに参加しました!")
end
end
end)

CreatorType
読み取り専用
複製されていません
並列読み取り
DataModel.CreatorType:Enum.CreatorType
コードサンプル
プレイスのオーナーがゲームに参加したときに検出する
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("プレースのオーナーがゲームに参加しました!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroupAsync(game.CreatorId) then
print("プレースを所有しているグループのメンバーがゲームに参加しました!")
end
end
end)

Environment
読み取り専用
複製されていません
Robloxのスクリプトセキュリティ
並列読み取り
DataModel.Environment:string

GameId
読み取り専用
複製されていません
並列読み取り
DataModel.GameId:number

GearGenreSetting
非推奨

Genre
非推奨

JobId
読み取り専用
複製されていません
並列読み取り
DataModel.JobId:string

lighting
非推奨

MatchmakingType
読み取り専用
複製されていません
並列読み取り
DataModel.MatchmakingType:Enum.MatchmakingType

PlaceId
読み取り専用
複製されていません
並列読み取り
DataModel.PlaceId:number

PlaceVersion
読み取り専用
複製されていません
並列読み取り
DataModel.PlaceVersion:number
コードサンプル
サーバーバージョン番号GUI
local StarterGui = game:GetService("StarterGui")
local versionGui = Instance.new("ScreenGui")
local textLabel = Instance.new("TextLabel")
textLabel.Position = UDim2.new(1, -10, 1, 0)
textLabel.AnchorPoint = Vector2.new(1, 1)
textLabel.Size = UDim2.new(0, 150, 0, 40)
textLabel.BackgroundTransparency = 1
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.TextXAlignment = Enum.TextXAlignment.Right
textLabel.TextScaled = true
local placeVersion = game.PlaceVersion
textLabel.Text = string.format("サーバーバージョン: %s", placeVersion)
textLabel.Parent = versionGui
versionGui.Parent = StarterGui

PrivateServerId
読み取り専用
複製されていません
並列読み取り
DataModel.PrivateServerId:string
コードサンプル
プライベートサーバーの検出
local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "ReservedServer"
end
else
return "StandardServer"
end
end
print(getServerType())

PrivateServerOwnerId
読み取り専用
複製されていません
並列読み取り
DataModel.PrivateServerOwnerId:number
コードサンプル
プライベートサーバーの検出
local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "ReservedServer"
end
else
return "StandardServer"
end
end
print(getServerType())

RunService
読み取り専用
複製されていません
並列読み取り
DataModel.RunService:RunService

VIPServerId
非推奨

VIPServerOwnerId
非推奨

Workspace
読み取り専用
複製されていません
並列読み取り
DataModel.Workspace:Workspace

workspace
非推奨

方法
BindToClose
DataModel:BindToClose(function:function):()
パラメータ
function:function
戻り値
()
コードサンプル
シャットダウン前にプレイヤーデータを保存する
local DataStoreService = game:GetService("DataStoreService")
local RunService = game:GetService("RunService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
local allPlayerSessionDataCache = {}
local function savePlayerDataAsync(userId, data)
return playerDataStore:UpdateAsync(userId, function(oldData)
return data
end)
end
local function onServerShutdown(closeReason)
if RunService:IsStudio() then
-- スタジオデータをプロダクションに書き込むのを避け、テストセッションの閉じるのを遅らせる
return
end
-- 後で待機して再開するための参照
local mainThread = coroutine.running()
-- 新しいスレッドごとにカウントアップし、スレッドが終了すると減少します。0に達すると、
-- 個々のスレッドは最後のスレッドが終了したことを知り、メインスレッドを再開すべきです
local numThreadsRunning = 0
-- この関数を後で呼び出すと、coroutine.wrapのおかげで新しいスレッドが開始されます
local startSaveThread = coroutine.wrap(function(userId, sessionData)
-- 保存操作を実行
local success, result = pcall(savePlayerDataAsync, userId, sessionData)
if not success then
-- リトライの実装が可能
warn(string.format("%dのデータの保存に失敗しました: %s", userId, result))
end
-- スレッドが終了したので、カウンターを減少
numThreadsRunning -= 1
if numThreadsRunning == 0 then
-- これは最後のスレッドが終了したので、メインスレッドを再開
coroutine.resume(mainThread)
end
end)
-- これはPlayerRemovingの際に最終保存中にplayerDataがデータテーブルからクリアされることを想定しています。
-- したがって、これはゲーム内にまだいるプレイヤーのデータをすべて反復していますが、保存されていません
for userId, sessionData in pairs(allPlayerSessionDataCache) do
numThreadsRunning += 1
-- このループは、スレッドが開始される前にnumThreadsRunningを数え終わります。
-- coroutine.wrapには開始時に組み込まれた遅延があるためです
startSaveThread(userId, sessionData)
end
if numThreadsRunning > 0 then
-- 保存スレッドが終了するまでシャットダウンを遅らせます。終了時に最後の保存スレッドによって再開されます
coroutine.yield()
end
end
game:BindToClose(onServerShutdown)
ゲームのシャットダウンにバインドして処理する
game:BindToClose(function(closeReason)
print(`クローズ理由 {closeReason} にて閉じています`)
task.wait(3)
print("Done")
end)

GetJobsInfo
プラグインのセキュリティ
DataModel:GetJobsInfo():{any}
戻り値
コードサンプル
ジョブ情報の取得
local jobInfo = game:GetJobsInfo()
local jobTitles = jobInfo[1]
table.remove(jobInfo, 1)
local divider = string.rep("-", 120)
print(divider)
warn("ジョブ情報:")
print(divider)
for _, job in pairs(jobInfo) do
for jobIndex, jobValue in pairs(job) do
local jobTitle = jobTitles[jobIndex]
warn(jobTitle, "=", jobValue)
end
print(divider)
end

GetMessage
非推奨

GetObjects
非推奨

GetRemoteBuildMode
非推奨

IsGearTypeAllowed
非推奨

IsLoaded
DataModel:IsLoaded():boolean
戻り値
コードサンプル
カスタムロード画面
local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- 基本的なロード画面を作成
local screenGui = Instance.new("ScreenGui")
screenGui.IgnoreGuiInset = true
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundColor3 = Color3.fromRGB(0, 20, 40)
textLabel.Font = Enum.Font.GothamMedium
textLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8)
textLabel.Text = "読み込み中"
textLabel.TextSize = 28
textLabel.Parent = screenGui
-- プレイヤーGUIに全画面GUIを親として設定
screenGui.Parent = playerGui
-- デフォルトのロード画面を削除
ReplicatedFirst:RemoveDefaultLoadingScreen()
--task.wait(3) -- オプションで画面を最小限の秒数表示する
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

SavePlace
非推奨

SetPlaceId
プラグインのセキュリティ
DataModel:SetPlaceId(placeId:number):()
パラメータ
placeId:number
戻り値
()

SetUniverseId
プラグインのセキュリティ
DataModel:SetUniverseId(universeId:number):()
パラメータ
universeId:number
戻り値
()

イベント
AllowedGearTypeChanged
非推奨

GraphicsQualityChangeRequest
DataModel.GraphicsQualityChangeRequest(betterQuality:boolean):RBXScriptSignal
パラメータ
betterQuality:boolean
コードサンプル
グラフィックス品質のユーザー変更の処理
game.GraphicsQualityChangeRequest:Connect(function(betterQuality)
if betterQuality then
print("ユーザーがグラフィックス品質の向上を要求しました!")
else
print("ユーザーがグラフィックス品質の低下を要求しました!")
end
end)

ItemChanged
非推奨

Loaded
DataModel.Loaded():RBXScriptSignal

ServerRestartScheduled
機能: ServerCommunication
DataModel.ServerRestartScheduled(
restartTime:DateTime, source:Enum.CloseReason, attributes:Dictionary
パラメータ
restartTime:DateTime
attributes:Dictionary
コードサンプル
サーバー再起動予定
local roundInProgress = false -- ゲームのラウンドが開始または終了するたびに、他で設定されます。
local restartPending = false
game.ServerRestartScheduled:Connect(function(restartTime, source, attributes)
local msg = attributes and attributes.message or ""
local timeStr = restartTime:FormatLocalTime("LTS", "en-us") -- これはサーバー上で実行されるため、UTCになります。
-- これらのフィールドをクライアントにリモートで送信して、UIにカスタマイズされたメッセージを表示します。
print(string.format("サーバー再起動の時間: %s, ソース: %s. 理由: %s.", timeStr, tostring(source), msg))
if not roundInProgress then
print("ラウンドが進行中ではありません。10秒後にプレイヤーをテレポートします")
task.wait(10)
-- 再起動がスケジュールされている場合、プレイヤーをテレポートすると、最新の場所のバージョンのサーバーに移動します。
game:GetService("TeleportService"):TeleportAsync(game.PlaceId, game:GetService("Players"):GetPlayers())
else
-- restartPending が true の場合、ゲームラウンドが終了した後にプレイヤーをテレポートするコードを追加できます。
restartPending = true
end
end)

コールバック
OnClose
非推奨

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。