DataModel

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable

El Modelo de datos (comúnmente conocido como game después de la variable global utilizada para accederlo) es la raíz de la jerarquía de padres e hijos de Roblox. Sus hijos directos son servicios, como Workspace y 2>Class.Lighting2>, que actúan como los componentes básicos de un juego de Roblox.

Muestras de código

GetService()

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

Resumen

Propiedades

  • Solo lectura
    No replicado
    Leer paralelo

    Describe el ID del usuario o grupo que posee el lugar.

  • Solo lectura
    No replicado
    Leer paralelo

    Describe el Enum.CreatorType del lugar, sea que el lugar pertenezca a un usuario o a un grupo.

  • Solo lectura
    No replicado
    Leer paralelo

    Describe el ID de la experiencia a la que pertenece el lugar que se ejecuta en el servidor.

  • Solo lectura
    No replicado
    Leer paralelo
    Obsoleto

    No funcional. Históricamente describió el Enum.Genre del lugar como establecido en el sitio web de Roblox.

  • Solo lectura
    No replicado
    Leer paralelo

    Un identificador único para la instancia del servidor de juegos en ejecución.

  • Solo lectura
    No replicado
    Leer paralelo

    Describe el ID del lugar que se ejecuta en el servidor.

  • Solo lectura
    No replicado
    Leer paralelo

    Describe la versión en la que se está ejecutando el servidor.

  • Solo lectura
    No replicado
    Leer paralelo

    Describe el ID privado del servidor, si el servidor es un servidor privado o un reserved server .

  • Solo lectura
    No replicado
    Leer paralelo

    Describe el UserId del Player que posee el servidor privado si el servidor es privado.

  • Solo lectura
    No replicado
    Leer paralelo

    Una referencia al servicio Workspace.

Métodos

  • BindToClose(function : function):void

    Vincula una función para ser llamada antes de que el servidor se cierre.

  • Seguridad del plugin

    Devuelve una tabla que contiene información básica sobre los trabajos realizados por el Programador de tareasde tareas.

  • GetObjects(url : ContentId):Instances
    Seguridad del plugin
    Obsoleto

    Devuelve un arreglo de Instances asociado con la URL de contenido proporcionada.

  • Regresa veraz si el cliente ha terminado de cargar el juego por primera vez.

  • SetPlaceId(placeId : number):void
    Seguridad del plugin

    Establece el DataModel.PlaceId del juego actual en el placeId dado.

  • SetUniverseId(universeId : number):void
    Seguridad del plugin

    Establece el DataModel.GameId del conjunto de datos actual a la siguiente universeId .

Métodos heredados de ServiceProvider
  • Escribir paralelo

    Devuelve el servicio especificado por el nombre dado si ya se ha creado, errores por un nombre inválido.

  • Devuelve el servicio con el nombre de clase solicitado, creándolo si no existe.

Eventos

Eventos heredados de ServiceProvider

Propiedades

CreatorId

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe el ID del usuario o grupo que posee el lugar. Si la propiedad DataModel.CreatorType es 'Usuario' entonces CreatorId será el Player.UserId del propietario del lugar. Si la propiedad 2>Class.DataModel.CreatorType2> es 5>'G

Muestras de código

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

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe el Enum.CreatorType del lugar, sea que el lugar pertenezca a un usuario o a un grupo.

Si el Enum.CreatorType es 'Usuario', entonces la propiedad DataModel.CreatorId describe el 2> Class.Player.UserId|UserId2> de la cuenta que posee el juego. Si el tipo de creador es 5> 'Grupo'5>, entonces describe el ID del grupo.

Muestras de código

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

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe el ID de la experiencia a la que pertenece el lugar que se ejecuta en el servidor.

Este ID se puede encontrar en la esquina superior derecha del Asset Manager en Roblox Studio. Cuando se usa Roblox Studio, si el lugar no se ha publicado en Roblox, entonces el GameId se correspondirá con el modelo que se está usando.

Véase también:

  • DataModel.PlaceId , que describe el ID del lugar que se ejecuta en el servidor
  • DataModel.JobId , que es un identificador único para la instancia del juego del servidor que se ejecuta
  • TeleportService , que es un servicio que se puede utilizar para transportar Players entre juegos
Solo lectura
No replicado
Leer paralelo

Esta propiedad está rota y no se debe usar.

Esta propiedad históricamente describió el Enum.Genre del lugar como establecido en el sitio web de Roblox.

Esta propiedad, junto con DataModel.GearGenreSetting, ya no funciona correctamente debido a los géneros que existen en el sitio web de Roblox que no se reflejan en el Enum.Genre enum. Como resultado, intentar leer esta propiedad puede producir un error.

JobId

Solo lectura
No replicado
Leer paralelo

Esta propiedad es un identificador único para la instancia del servidor de juego en ejecución. Es un identificador de propiedad única (UUID), lo que significa que ningún servidor, ya sea antiguo o actual, nunca tendrá el mismo ID.

Predefinidos para una cadena vacía en Studio.

Ver también

PlaceId

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe el ID del lugar que se ejecuta en el servidor.

Si el lugar ha sido publicado en Roblox, este ID se puede encontrar en el Asset Manager de Studio haciendo clic con el botón derecho en el lugar dentro de la carpeta Lugares y seleccionando Copiar ID a la Clipboard .

Si el lugar no se ha publicado en Roblox, este ID se corresponderá con el modelo utilizado.

Ver también

  • DataModel.GameId , que describe el ID de la experiencia que el lugar actual pertenece
  • DataModel.JobId , que es un identificador único para la instancia del juego del servidor que se ejecuta
  • TeleportService , que es un servicio que se puede utilizar para transportar Players entre lugares

PlaceVersion

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe la versión en la que se está ejecutando el servidor.

Este número de versión coincide con el número de versión mostrado en la sección Historial de versiones de las configuraciones del lugar. No es la versión actual del cliente Roblox. Esta propiedad es 0 para todas las experiencias no publicadas.

Cuando se crea una instancia de servidor para un lugar, usa la versión actual del lugar. Si el lugar se actualiza más tarde mientras este servidor está en ejecución, el servidor seguirá estando en su versión actual.

Esta propiedad se puede usar para mostrar un ScreenGui que muestra la versión actual del juego a Players para ayudar con el diagnóstico.

Muestras de código

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

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe el ID del servidor privado del servidor, si el servidor es un servidor privado.

Si el servidor no es un servidor privado, entonces esta propiedad será una cadena vacía.

Servidores privados

Los servidores privados se refieren a lo siguiendo:

PrivateServerId vs JobId

El ID de servidor privado de un servidor es diferente del DataModel.JobId . El JobId es el identificador único de la instancia del servidor actual.

Los servidores privados (servidores privados o reservados) pueden tener múltiples instancias de servidor asociadas con ellos a lo largo del tiempo. Esto se debe a que, aunque solo se puede ejecutar una instancia de servidor a la vez para un servidor privado, las instancias de servidor nuevas pueden abrir y cerrar a medida que los jugadores se unen y salen del juego. Por ejemplo, no se ejecuta ninguna

Véase también:

Muestras de código

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

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe el UserId del Player que posee el servidor 私人服务器 si el servidor es servidor privado.

Si el servidor es un servidor estándar o reservado, entonces esta propiedad se establecerá en 0 .

Esta propiedad se puede usar para identificar si un Player es el propietario del servidor privado, por ejemplo:


local Players = game:GetService("Players")
-- ¿es esto un servidor privado?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- escuchar para que se agreguen nuevos jugadores
Players.PlayerAdded:Connect(function(player)
-- verificar si el jugador es el propietario del servidor
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end

Véase también:

Muestras de código

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

Solo lectura
No replicado
Leer paralelo

La propiedad Workspace es una referencia al servicio Workspace .

Esta propiedad siempre apuntará a la Workspace y nunca será nulo .

El Workspace también se puede acceder a él usando la variable global workspace y la función Class.ServiceProvider:GetService()'. Por ejemplo:


workspace -- una variable global
game.Workspace -- una propiedad del DataModel (juego)
game:GetService("Workspace") -- workspace is a service

Métodos

BindToClose

void

Vincula una función para ser llamada antes de que el servidor se cierre. Si la función vinculada acepta un parámetro, pasa Enum.CloseReason especificando la razón por la que se cierra el servidor.

Puede vincular múltiples funciones al llamar BindToClose() repetidamente. Las funciones vinculadas se llaman en paralelo y se ejecutan al mismo tiempo.

El servidor de experiencia espera 30 segundos para que todas las funciones vinculadas dejen de funcionar antes de que se cierre. Después de 30 segundos, el servidor se cierra incluso si las funciones todavía están en ejecución.

Para verificar que la sesión actual no esté en Roblox Studio, usa RunService:IsStudio() . Esto evita que las funciones vinculadas completen sus sesiones de prueba en línea.

Cuando uses DataStoreService, también deberías usar BindToClose para vincular una función que guarda todos los datos no guardados a DataStores . Esto evita la pérdida de datos si el servidor se cierra inesperadamente.

Véase también:

Parámetros

function: function

Una función llamada antes de que el servidor de experiencia se cierre. Si la función vinculada acepta un parámetro, pasa Enum.CloseReason especificando la razón por la que se cierra el servidor.


Devuelve

void

Muestras de código

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

Seguridad del plugin

Devuelve una tabla que contiene información básica sobre los trabajos realizados por el Programador de tareasde tareas.

En la programación, un programador de tareas es un sistema responsable de ejecutar tareas clave en los intervalos adecuados.

También puede encontrar estadísticas de programador de tareas en vivo en la ventana de programador de tareas en Roblox Studio.

La primera entrada en la tabla devuelta es un diccionario de referencia que contiene las estadísticas (o encabezados) disponibles. Está en el siguiente formato:


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

Las siguientes entradas en la tabla devueltas son diccionarios que contienen las estadísticas de arriba para los trabajos realizados por el Programador de tareastareas. Por ejemplo:


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

Véase también:


Devuelve

Una tabla que contiene información sobre los trabajos realizados por el Programador de tareasde tareas, consulte arriba para el formato.

Muestras de código

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
Seguridad del plugin

Este método返回一个 array de Instances con la URL de contenido asociada. Se puede usar para insertar contenido de la biblioteca Roblox. No es posible insertar Sounds usando este método, ya que no tienen un Instance asociado con ellos y solo tienen una URL de contenido.

A diferencia de Class.InsertService:LoadAsset() InsertService:LoadAsset()``DataModel:GetObjects() no requiere que se necesite un activo para ser "de confianza", lo que significa que un activo no necesita ser propiedad del usuario que inicia sesión o creado por Roblox para ser insertado. Sin embargo, si el activo no es propiedad del usuario que inicia sesión, debe estar disponible libremente.

Debido al contexto de seguridad de esta función, solo se puede usar por plugin o barra de comandos. Para un alternativo que se puede usar en Scripts y LocalScripts, consulte InsertService:LoadAsset() .

Parámetros

url: ContentId

La URL de contenido dada.


Devuelve

Instances

Un arreglo de Instances con la URL del contenido asociada.

Muestras de código

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

Esta función se返a true si el cliente ha terminado de cargar el juego por primera vez.

Cuando todos los iniciales Instances en el juego hayan terminado de replicarse al cliente, esta función devolverá true.

A menos que estén vinculados a ReplicatedFirst , LocalScripts no se ejecutará mientras el juego no se ha cargado. El siguiente fragmento, se ejecutó desde un LocalScript en 1> Class.ReplicatedFirst1> , se alcanzará hasta que el juego se haya cargado:


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

Véase también:

  • DataModel.Loaded , un evento que se activa cuando el juego se ha cargado
  • Instance:WaitForChild() , una función que se puede usar para esperar a un Instance individual para replicarse sin tener que esperar que todo el juego se replique

Devuelve

Si el cliente ha terminado de cargar el juego por primera vez.

Muestras de código

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
Seguridad del plugin

Esta función establece el DataModel.PlaceId de la instancia del juego en el lugar dado placeId .

Se requieren tanto DataModel.PlaceId y DataModel.GameId para acceder a DataStoreService cuando el lugar no está publicado, por ejemplo, un archivo local 1>


local DataStoreService = game:GetService("DataStoreService")
-- acceso a DataStore 'Data' al configurar PlaceId para colocar Id de juego y GameId para el universo.
game:SetPlaceId(placeId)
game:SetUniverseId(universeId)
local dataStore = DataStoreService:GetDataStore("Data")

Parámetros

placeId: number

El ID para establecer el DataModel.PlaceId a.


Devuelve

void

SetUniverseId

void
Seguridad del plugin

Esta función establece el DataModel.GameId del objeto de juego actual en el universo universeId dado. Esto es útil cuando se prueban los archivos .rbxl locales que no se han publicado en Roblox.

Para acceder al DataStoreService en un lugar no publicado, tanto DataModel:SetUniverseId() como DataModel:SetPlaceId() deben ser establecer.

Parámetros

universeId: number

El ID para establecer el DataModel.GameId a.


Devuelve

void

Eventos

GraphicsQualityChangeRequest

Dispara cuando el usuario solicita un aumento o disminución de la calidad de gráficos usando las teclas de acceso rápido.

Este evento se activa bajo las siguientes condiciones:

  • Si el usuario presiona F10 , este evento se activa con un argumento de betterQuality de true .
  • Si el usuario presiona ShiftF10 , este evento se activa con un argumento de betterQuality de 0> false0> .

Este evento no proporciona el nivel de calidad de gráficos actual o cubre todas las actualizaciones a la calidad de gráficos. Por ejemplo, las modificaciones realizadas en el menú de escape de la interfaz de usuario del núcleo no se registran.

Puedes recuperar un usuario de su Enum.SavedQualitySetting usando UserGameSettings con el siguiente fragmento:


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

Si la configuración de gráficos del usuario está configurada como automática, entonces el Enum.SavedQualitySetting será Automatic. Actualmente no hay forma de que los desarrolladores obtengan con fiabilidad el nivel de calidad de gráficos actual de la máquina del usuario.

Parámetros

betterQuality: bool

Si el usuario ha solicitado un aumento ( verdadero ) o un decremento ( falso ) en la calidad de los gráficos.


Muestras de código

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

Este evento se activa en el cliente cuando el juego termina de cargar por primera vez.

El evento Cargado se activa cuando todos los Instances iniciales en el juego han terminado de replicarse al cliente.

A menos que estén vinculados a ReplicatedFirst , LocalScripts no se ejecutará hasta que se lance este evento. El siguiente fragmento, se ejecutó desde un LocalScript en 1> Class.ReplicatedFirst1> , se alcanzará hasta que se haya cargado el juego:


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

Véase también: