DataModel

非推奨を表示

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

作成できません

Game (親子間のランクを示すグローバル変数の使用後に使用される)は、Roblox の親子間階層の根です。その直接の子は、gameWorkspace など、Roblox ゲームの基本コンポーネントです。

コードサンプル

GetService()

local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
-- Examples of modifying properties of these services
Workspace.Gravity = 20
Lighting.ClockTime = 4

概要

プロパティ

  • 読み取り専用
    複製されていません
    並列読み取り

    場プレースを所有するユーザーまたはグループのIDを説明します。

  • 読み取り専用
    複製されていません
    並列読み取り

    ユーザーまたはグループが所有するかどうかにかかわらず、プレース所の Enum.CreatorType を説明します。

  • 読み取り専用
    複製されていません
    並列読み取り

    サーバー上に実行されているプレースの ID を記述します。

  • 読み取り専用
    複製されていません
    並列読み取り
    非推奨

    機能しません。昔は、Roblox ウェブサイトで Enum.Genre の場所を設定したように説明しました。

  • 読み取り専用
    複製されていません
    並列読み取り

    実行中のゲームサーバーインスタンスのユニークな識別子。

  • 読み取り専用
    複製されていません
    並列読み取り

    サーバー上で実行されている場所の ID を説明します。

  • 読み取り専用
    複製されていません
    並列読み取り

    サーバーが実行している場所のバージョンを説明します。

  • 読み取り専用
    複製されていません
    並列読み取り

    サーバーがプライベートサーバーである場合、サーバーのプライベートサーバー ID が記述されています。 Describes the private server ID of the server, if the server is a private server or a reserved server .

  • 読み取り専用
    複製されていません
    並列読み取り

    Class.Player.UserId|userId を含む、Player がプライベートサーバーを所有している場合の Class.Player の説明

  • 読み取り専用
    複製されていません
    並列読み取り

    Class.Workspace サービスへの参照。

方法

  • BindToClose(function : function):void

    サーバーがシャットダウンする前に呼び出される関数をバインドします。

  • プラグインのセキュリティ

    タスクスケジューラーによって実行されるジョブに関する基本的な情報を含むテーブルを返します。

  • GetObjects(url : ContentId):Instances
    プラグインのセキュリティ
    非推奨

    Class.Instance|Instances を含むコンテンツの URL に関連付けられた配列を返します。

  • クライアントがゲームの読み込みを最初に完了した場合、 true が返されます。

  • SetPlaceId(placeId : number):void
    プラグインのセキュリティ

    現在のゲームインスタンスの DataModel.PlaceId を指定した placeId に設定します。

  • SetUniverseId(universeId : number):void
    プラグインのセキュリティ

    現在のゲームインスタンスの DataModel.GameIduniverseId に設定します。

ServiceProvider から継承した 方法
  • 並列書き込み

    指定されたユーザー名によってサービスが作成されている場合、不正な名前のエラーが返されます。

  • 要求されたクラス名でサービスを返し、存在しない場合はクラス名を作成します。

イベント

  • ユーザーがプロンプトし、ホットキーを使用してグラフィックの品質を増加または減少するときに発動します。

  • ゲームが最初に読み込みを完了するときにクライアントにファイアをオンにします。

ServiceProvider から継承した イベント

プロパティ

CreatorId

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

このプロパティは、場プレースを所有するユーザーまたはグループのIDを記述します。如果 DataModel.CreatorType プロパティが User である場合、CreatorId はプレースプレースの所有者の Player.UserId になりま

コードサンプル

Detect when the place owner joins the game

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("The place owner has joined the game!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroup(game.CreatorId) then
print("A member of the group that owns the place has joined the game!")
end
end
end)

CreatorType

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

このプロパティは、場所がユーザーまたはグループが所有するかどうかにかかわらず、場プレースの Enum.CreatorType を記述します。

Class.DataModel.CreatorId プロパティは、ゲームを所有するアカウントの Class.Player.UserId|userId を記述します。DataModel.CreatorId が 1>Group1> である場合、4>Class.Player.UserId4> はグループ ID を記述します。

コードサンプル

Detect when the place owner joins the game

local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("The place owner has joined the game!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroup(game.CreatorId) then
print("A member of the group that owns the place has joined the game!")
end
end
end)

GameId

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

このプロパティは、サーバー上で実行されている場所の ID を記述します。

このID は、アセットマネージャー の Roblox Studio の右上隅にあります。Roblox Studio を使用するときは、場所が Roblox に公開されていない場合、ゲームID は使用されているテンプレートに対応します。

参照してください:

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

このプロパティは壊れており、使用しないでください。

このプロパティは、Roblox ウェブサイトで設定された Enum.Genre の場所を昔のまま説明します。

このプロパティ、DataModel.GearGenreSetting を含む、Roblox ウェブサイトに存在するジャンルが Enum.Genre ジェンジンに正しく反映されなくなったため、このプロパティは正しく機能しません。結果、このプロパティを読み取おうとするとエラーが発生する可能性があります。

JobId

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

このプロパティは、実行中のゲームサーバーインスタンスのユニークな識別子です。これは、ユニークなユニーク識別子 (UUID) で、2つのサーバー、過去または現在、は決して同じ IDを持つことはありません。

Studio の空の文字列にデフォルトを設定します。

参照してください

PlaceId

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

このプロパティは、サーバー上で実行されている場所の ID を記述します。

場所が Roblox に公開されている場合、この ID は Studio の アセットマネージャー を右クリックして 場所 フォルダ内の場所を選択して クリップボードに ID をコピー を選択することで入手できます。

場所が Roblox に公開されていない場合、この ID は使用されているテンプレートに対応します。

参照してください

  • DataModel.GameId 、現在の場所が所属するエクスペリエンスの ID を説明します
  • DataModel.JobId 、サーバーゲームインスタンスの実行中のユニークな識別子
  • TeleportServicePlayers を場所間で移動できるサービス

PlaceVersion

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

このプロパティは、サーバーが実行している場所のバージョンを説明します。

このバージョン番号は、場プレースの設定の バージョン履歴 セクションの下に表示されているバージョン番号と一致します。これは、Roblox クライアントの現在のバージョンではありません。このプロパティは、公開されていないエクスペリエンスのすべてのバージョンに 0 です。

場プレースにサーバーインスタンスが作成されると、場プレースの現在のバージョンを使用します。場所がこのサーバーで実行されている間、場所は現在のバージョンで残ります。

このプロパティは、ScreenGui を表示して、ゲームの現在のバージョンをPlayersに表示して、デバッグを助けるために使用できます。

コードサンプル

Server version 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("Server version: %s", placeVersion)
textLabel.Parent = versionGui
versionGui.Parent = StarterGui

PrivateServerId

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

このプロパティは、サーバーがプライベートサーバーである場合のサーバーのプライベートサーバー ID を記述します。

サーバーがプライベートサーバーでない場合は、このプロパティは空の文字列になります。

プライベートサーバー

プライベートサーバーはフォロー中の内容に参照しています:

PrivateServerId 対JobId

サーバーのプライベートサーバーIDは、DataModel.JobId と異なります。JobId は、現在のサーバーインスタンスのユニークな識別子です。

プライベートサーバー (プライベートまたは予約サーバー) は、時間をかけて複数のサーバーインスタンスを持つことができます。これは、プライベートサーバーのインスタンスが 1つだけ実行されている場合でも、新しいサーバーインスタンスが参加してゲームを

参照してください:

コードサンプル

Detecting Private Servers

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

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

このプロパティは、UserId を持つ Player のプライベートサーバーを所有している場合、Class.Player.UserId|userId を持つ 2>Class.Player2> のプライベートサーバーを所有している場合を除きます。

サーバーが標準サーバーまたは予約サーバーの場合、このプロパティは 0 に設定されます。

このプロパティは、Player がプライベートサーバーの所有者であるかどうかを示すのに使用できます。たとえば:


local Players = game:GetService("Players")
-- これはプライベートサーバーですか?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- 新しいプレイヤーが追加されるのを聞く
Players.PlayerAdded:Connect(function(player)
-- プレイヤーがサーバーの所有者であるかどうかをチェックします
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end

参照してください:

コードサンプル

Detecting Private Servers

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())

Workspace

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

ワークスペースプロパティは、Workspaceサービスに参照されます。

このプロパティは常に Workspace にポイントし、Class.Workspace のゼロで終わりません。

Class.Workspace には、グローバル変数 workspaceServiceProvider:GetService() 機能を使用してアクセスできます。たとえば:


workspace -- グローバル変数
game.Workspace -- DataModel (ゲーム) のプロパティ
game:GetService("Workspace") -- workspace is a service

方法

BindToClose

void

サーバーがシャットダウンする前に呼び出される関数をバインドします。バインドされた関数はパラメーターを受け入れると、サーバーのシャットダウンの理由を指定する Enum.CloseReason を通過します。

Class.DataModel:BindToClose()|BindToClose() を繰り返し呼び出すと、関数を複数バインドできます。バインドされた関数は並行して呼び出され、実行されます。

エクスペリエンスサーバーは、すべてのバインド機能がシャットダウンするまで 30 秒待ちます。30 秒後、サーバーは機能が実行されている場合でもシャットダウンします。

現在のセッションが Roblox Studio ではないことを確認するには、RunService:IsStudio() を使用します。これにより、オフラインテストセッションでバインドされた関数を完了することができません。

Class.DataStoreService を使用すると、BindToClose も使用して、すべての未保存データを DataStores にバインドする必要があります。これにより、サーバーが予期せぬ方法でシャットダウンすると、データの損失を防止できます。

参照してください:

パラメータ

function: function

エクスペリエンスサーバーがシャットダウンする前に、関数を呼び出します。バインドされた関数がパラメーターを受信すると、Enum.CloseReason がサーバーのシャットダウンの理由を指定します。


戻り値

void

コードサンプル

Saving player data before shutting down

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
-- Avoid writing studio data to production and stalling test session closing
return
end
-- Reference for yielding and resuming later
local mainThread = coroutine.running()
-- Counts up for each new thread, down when the thread finishes. When 0 is reached,
-- the individual thread knows it's the last thread to finish and should resume the main thread
local numThreadsRunning = 0
-- Calling this function later starts on a new thread because of coroutine.wrap
local startSaveThread = coroutine.wrap(function(userId, sessionData)
-- Perform the save operation
local success, result = pcall(savePlayerDataAsync, userId, sessionData)
if not success then
-- Could implement a retry
warn(string.format("Failed to save %d's data: %s", userId, result))
end
-- Thread finished, decrement counter
numThreadsRunning -= 1
if numThreadsRunning == 0 then
-- This was the last thread to finish, resume main thread
coroutine.resume(mainThread)
end
end)
-- This assumes playerData gets cleared from the data table during a final save on PlayerRemoving,
-- so this is iterating over all the data of players still in the game that hasn't been saved
for userId, sessionData in pairs(allPlayerSessionDataCache) do
numThreadsRunning += 1
-- This loop finishes running and counting numThreadsRunning before any of
-- the save threads start because coroutine.wrap has built-in deferral on start
startSaveThread(userId, sessionData)
end
if numThreadsRunning > 0 then
-- Stall shutdown until save threads finish. Resumed by the last save thread when it finishes
coroutine.yield()
end
end
game:BindToClose(onServerShutdown)
Binding to and Handling Game Shutdown

game:BindToClose(function(closeReason)
print(`Closing with reason {closeReason}`)
task.wait(3)
print("Done")
end)

GetJobsInfo

プラグインのセキュリティ

タスクスケジューラーによって実行されるジョブに関する基本的な情報を含むテーブルを返します。

コンピュートでは、タスクスケジューラーは適切な間隔でキータスクを実行するシステムです。

Roblox Studio のタスクスケジューラウィンドウでも、ライブタスクスケジューラの統計を見つけることができます。

テーブルに返される最初のエントリは、統計 (またはヘッドィング) が含まれる参照ディクティオンです。次の形式で表示されています:


{
["name"] = "name",
["averageDutyCycle"] = "averageDutyCycle",
["averageStepsPerSecond"] = "averageStepsPerSecond",
["averageStepTime"] = "averageStepTime",
["averageError"] = "averageError",
["isRunning"] = "isRunning",
}

以下の表に返される次のエントリは、タスクスケジューラーによって実行されるジョブの統計を含む辞書です。たとえば:


{
["name"] = "Heartbeat",
["averageDutyCycle"] = 0,
["averageStepsPerSecond"] = 0,
["averageStepTime"] = 0,
["averageError"] = 0,
["isRunning"] = false,
}

参照してください:


戻り値

タスクスケジューラーが実行するジョブに関する情報を含むテーブル、上記の形式については参照してください。

コードサンプル

Getting Jobs Info

local jobInfo = game:GetJobsInfo()
local jobTitles = jobInfo[1]
table.remove(jobInfo, 1)
local divider = string.rep("-", 120)
print(divider)
warn("JOB INFO:")
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

GetObjects

Instances
プラグインのセキュリティ

このメソッドは、Instances 与えられたコンテンツの URL に関連付けられたアレイを返します。これは、Roblox ライブラリからコンテンツを挿入するために使用できます。このメソッドを使用して、Sounds を挿入することはできません

Class.InsertService:LoadAsset() とは、DataModel:GetObjects() のようなアセットを「信頼」する必要はありません。つまり、アセットを所有する必要はありません。ただし、アセットがRoblox(ロブロックス)グインユーザーの所有でない場合は、アセットを自由に入れる必要があります。

この機能のセキュリティコンテキストにより、この機能はプラグインまたはコマンドバーのみが使用できます。For an alternative that can be used in ScriptsLocalScripts の場合、see InsertService:LoadAsset() .

パラメータ

url: ContentId

指定されたコンテンツ URL。


戻り値

Instances

コンテンツ URL と関連付けられた Instances 配列。

コードサンプル

View a plugin's source code

local Selection = game:GetService("Selection")
local WEB_URL = "plugin URL here"
local function downloadPlugin(webURL)
-- get the content URL
local contentID = string.match(webURL, "%d+")
local contentURL = "rbxassetid://" .. contentID
-- download the objects
local objects = game:GetObjects(contentURL)
-- decide where to parent them
local selection = Selection:Get()
local parent = #selection == 1 and selection[1] or workspace
-- parent the objects
for _, object in pairs(objects) do
object.Parent = parent
end
end
downloadPlugin(WEB_URL)
Batch convert decal IDs

local IMAGES = {
-- Insert Decal web URLs in an array here (as strings)
}
-- open the dictionary
local outputString = "textures = {"
-- utility function to add a new entry to the dictionary (as a string)
local function addEntryToDictionary(original, new)
outputString = outputString
.. "\n" -- new line
.. " " -- indent
.. '["'
.. original
.. '"]' -- key
.. ' = "'
.. new
.. '",' -- value
end
print("Starting conversion")
for _, webURL in pairs(IMAGES) do
-- get the content URL
local contentID = string.match(webURL, "%d+")
local contentURL = "rbxassetid://" .. contentID
local success, result = pcall(function()
local objects = game:GetObjects(contentURL)
return objects[1].Texture
end)
if success then
addEntryToDictionary(webURL, result)
else
addEntryToDictionary(webURL, "Error downloading decal")
end
task.wait()
end
print("Conversion complete")
-- close the dictionary
outputString = outputString .. "\n}"
-- print the dictionary
print(outputString)

IsLoaded

この関数は、クライアントがゲームの読み込みを最初に完了した場合に true を返します。

ゲーム中のすべての初期の Instances がクライアントにレプリケート完了したとき、この関数は true を返します。

Class.ReplicatedFirst が親にならないと、 LocalScripts はゲームが読み込まれるまで実行されません。次のスナップショットは、 LocalScript から 1>Class.LocalScripts1> まで、ゲームが読み込まれるまで実行されます。次のスナップショットは、


if not game:IsLoaded() then
game.Loaded:Wait()
end

参照してください:


戻り値

クライアントがゲームの読み込みを最初に完了したかどうか。

コードサンプル

Custom Loading Screen

local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Create a basic loading screen
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 = "Loading"
textLabel.TextSize = 28
textLabel.Parent = screenGui
-- Parent entire screen GUI to player GUI
screenGui.Parent = playerGui
-- Remove the default loading screen
ReplicatedFirst:RemoveDefaultLoadingScreen()
--wait(3) -- Optionally force screen to appear for a minimum number of seconds
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

SetPlaceId

void
プラグインのセキュリティ

この関数は、ゲームインスタンスの DataModel.PlaceId を指定した placeId に設定します。

Class.DataStoreService にアクセスするには、DataModel.GameIdDataStoreService の両方が必要です。1>Class.DataStoreService


local DataStoreService = game:GetService("DataStoreService")
-- PlaceId を設定して、GameId を宇宙ID に設定して、データストア「データ」にアクセスします。
game:SetPlaceId(placeId)
game:SetUniverseId(universeId)
local dataStore = DataStoreService:GetDataStore("Data")

パラメータ

placeId: number

Class.DataModel.PlaceId を設定するID。


戻り値

void

SetUniverseId

void
プラグインのセキュリティ

この関数は、現在のゲームインスタンスの DataModel.GameId を、 universeId に設定します。これは、Roblox に公開されていないローカル .rbxl ファイルをテストするときに便利です。

公開されていない場プレースで DataStoreService にアクセスするには、DataModel:SetUniverseId()DataModel:SetPlaceId() の両方が設定されている必要があります。

パラメータ

universeId: number

Class.DataModel.GameId を設定する ID。


戻り値

void

イベント

GraphicsQualityChangeRequest

ユーザーがホットキーを使用してグラフィックの品質を増加または減少すると、ファイアが発動します。

このイベントは、次のコンディションで発動します:

  • ユーザーが F10 を押すと、このイベントは betterQuality の引数で true が発動します。
  • ユーザーが Shift を押すと、このイベントは F10 で発動し、 betterQuality 引数の 0> force0> で終了します。

このイベントは、現在のグラフィックスクオリティレベルを提供したり、グラフィックスクオリティに関するすべての更新をカバーしたりしません。たとえば、コア GUI エスケープメニューに行われた変更は登録されません。

ユーザーの Enum.SavedQualitySetting を使用して、次のスナップショットで取り戻すことができます:


UserSettings():GetService("UserGameSettings").SavedQualityLevel

ユーザーのグラフィック設定が「自動」に設定されている場合、Enum.SavedQualitySettingAutomatic になります。現在、開発者はユーザーのマシンのグラフィック品質レベルを信頼できるように取得することはできません。

パラメータ

betterQuality: bool

ユーザーがグラフィックの品質で増加 ( を求める ) または減少 ( を求める ) を求めているかどうか。


コードサンプル

Handling User Changes in Graphics Quality

game.GraphicsQualityChangeRequest:Connect(function(betterQuality)
if betterQuality then
print("The user has requested an increase in graphics quality!")
else
print("The user has requested a decrease in graphics quality!")
end
end)

Loaded

このイベントは、ゲームが最初に読み込みを完了するときにクライアントに発生します。

読み込みイベントは、ゲーム内のすべての初期 Instances がクライアントにレプリケート完了したときに発動します。

Class.ReplicatedFirst が親にならない限り、LocalScripts はこのイベント発動時に実行されません。次のスナップショットは、LocalScript から 1>Class.LocalScripts1> まで、ゲームが読み込まれるまで実行されます。


if not game:IsLoaded() then
game.Loaded:Wait()
end

参照してください: