DataModel

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile

Il modello di dati (noto anche come game dopo la variabile globale utilizzata per accedervi) è la radice della gerarchia dei genitori di Roblox. I suoi figli diretti sono servizi, come Workspace e 2> Class.Lighting2>, che agiscono come componenti fondamentali di un GiocoRoblox.

Campioni di codice

GetService()

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

Sommario

Proprietà

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Descrive l'ID dell'utente o del gruppo che possiede il Posto.

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Descrive il Enum.CreatorType del Posto, che sia di proprietà di un utente o di un Gruppo.

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Descrive l'ID dell'esperienza a cui appartiene il luogo in cui viene eseguito sul server.

  • Sola Lettura
    Non Replicato
    Lettura Parallela
    Obsoleto

    Non funzionale. Storicamente descritta la Enum.Genre del luogo come impostata sul sito Web Roblox.

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Un identificatore unico per l'istanza del server di gioco in esempio.

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Descrive l'ID del luogo in esecuzione sul Server.

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Descrive la versione del luogo in cui il server è in esecuzione.

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Descrive l'ID del Serverprivato, se il server è un server privato o un reserved server .

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Descrive il UserId del Player che possiede il server privato se il server è Server privato.

  • Sola Lettura
    Non Replicato
    Lettura Parallela

    Un riferimento al servizio Workspace.

Metodi

  • BindToClose(function : function):void

    Legge una funzione da chiamare prima che il server si chiuderà.

  • Sicurezza Plugin

    Restituisce una tabella che contiene informazioni di base sui lavori eseguiti dal Agendadelle attività.

  • GetObjects(url : ContentId):Instances
    Sicurezza Plugin
    Obsoleto

    Restituisce un'area di Instances associata all'URL del contenuto fornito.

  • Restituisce vero se il client ha finito di caricare il gioco per la prima volta.

  • SetPlaceId(placeId : number):void
    Sicurezza Plugin

    Imposta il DataModel.PlaceId della sessione di gioco corrente su il luogoId .

  • SetUniverseId(universeId : number):void
    Sicurezza Plugin

    Imposta il DataModel.GameId della sessione di gioco corrente su l'universo Id specificato.

Metodi provenienti da ServiceProvider
  • Scrivi Parallelo

    Restituisce il servizio specificato dall'username specificato se è già stato creato, errori per un nome non valido.

  • Restituisce il servizio con il nome classe richiesto, creandolo se non esiste.

Eventi

Eventi provenienti da ServiceProvider

Proprietà

CreatorId

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive l'ID dell'utente o del gruppo che possiede il Posto. Se la proprietà DataModel.CreatorType è 'User' allora CreatorId sarà l'ID del Postodi proprietà. Se la proprietà Player.UserId è 2>Group'

Campioni di codice

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

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive il Enum.CreatorType del Posto, che sia di proprietà di un utente o di un Gruppo.

Se il Enum.CreatorType è 'User' , allora la proprietà DataModel.CreatorId descriverà il 1> Class.Player.UserId|UserId1> dell'account che possiede il Gioco. Se il tipo di creatore è 4>Gruppo4>, allora descriverà l'ID del gruppo.

Campioni di codice

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

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive l'ID dell'esperienza a cui il luogo in esecuzione sul server appartiene.

Questo ID può essere trovato nell'angolo in alto a destra del Gestore Risorse in Roblox Studio. Quando si utilizza Roblox Studio, se il luogo non è stato pubblicato su Roblox allora l'Id di gioco corrisponderà al modello utilizzato.

Vedi anche:

  • DataModel.PlaceId , che descrive l'ID del luogo in esecuzione sul Server
  • DataModel.JobId , che è un identificatore unico per l'istanza di gioco del server in esecuzione
  • TeleportService , che è un servizio che può essere utilizzato per il trasporto Players tra i giochi
Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà è rotta e non dovrebbe essere usata.

Questa proprietà ha descrittivamente descritto il Enum.Genre del luogo come impostato sul sito Web Roblox.

Questa Proprietà, insieme a DataModel.GearGenreSetting, non funziona più correttamente a causa dei generi esistenti sul sito Web Roblox che non sono riflettuti nell'Enum.Genre enum. Di Risultato, l'attentato di leggere questa proprietà potrebbe generare un errore.

JobId

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà è un unico identificatore per l'istanza del server di gioco in esempio. È un identificatore univoco universale (UUID), il che significa che nessun server, passato o presente, avrà mai lo stesso ID.

Predefiniti a una stringa vuota in Studio.

Vedi anche

PlaceId

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive l'ID del luogo in esecuzione sul Server.

Se il luogo è stato pubblicato su Roblox, questo ID può essere trovato in Studio's Gestore Risorse facendo clic con il pulsante destro del mouse sul luogo all'interno della cartella Luoghi e selezionando Copia ID in Clipboard .

Se il luogo non è stato pubblicato su Roblox, questo ID corrisponderà al modello utilizzato.

Vedi anche

  • DataModel.GameId , che descrive l'ID dell'esperienza a cui appartiene il luogo attuale
  • DataModel.JobId , che è un identificatore unico per l'istanza di gioco del server in esecuzione
  • TeleportService , che è un servizio che può essere utilizzato per il trasporto Players tra i luoghi

PlaceVersion

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive la versione in cui il server è in esecuzione.

Questo numero di versione corrisponde al numero di versione mostrato nella sezione Storia della versione delle impostazioni del Posto. Non è la versione attuale del client Roblox. Questa proprietà è 0 per tutte le esperienze non pubblicate.

Quando viene creata un'istanza del server per un Posto, usa la versione attuale del Posto. Se il luogo viene aggiornato in seguito mentre questo server è in esecuzione, il server rimarrà alla sua versione attuale.

Questa proprietà può essere utilizzata per mostrare una ScreenGui mostrando la versione attuale del gioco a Players per aiutare con il debug.

Campioni di codice

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

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive l'ID del server privato del Server, se il server è un Serverprivato.

Se il server non è un Serverprivato, allora questa proprietà sarà una Stringavuota.

Server privati

I server privati fanno riferimento al Seguendo:

PrivateServerId vs JobId

L'identificatore privato di un server è diverso dal DataModel.JobId . Il JobId è l'identificatore unico della server esempioattuale.

I server privati (server privati o riserve) possono avere più istanze di server associati a loro nel tempo. Questo perché, anche se solo un'istanza di server può essere eseguita contemporaneamente per un Serverprivato, le nuove istanze di server possono essere aperte e chiuse mentre i giocatori si uniscono e lasciano il Gioco. Ad esempio, nessuna istanza di server è in esecuzione quando nessuno sta giocando nel Server. Il

Vedi anche:

Campioni di codice

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

Sola Lettura
Non Replicato
Lettura Parallela

Questa proprietà descrive il UserId del Player che possiede il server privato se il server è Server privato.

Se il server è un server standard o riservato, questa proprietà sarà impostata su 0 .

Questa proprietà potrebbe essere utilizzata per identificare se un Player è il proprietario del Serverprivato, ad esempio:


local Players = game:GetService("Players")
-- è un serverprivato?
if game.PrivateServerId ~= "" and game.PrivateServerOwnerId ~= 0 then
-- ascolta per nuovi giocatori aggiunti
Players.PlayerAdded:Connect(function(player)
-- controlla se il giocatore è il proprietario del server
if player.UserId == game.PrivateServerOwnerId then
print("The private server owner has joined the game")
end
end)
end

Vedi anche:

Campioni di codice

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

Sola Lettura
Non Replicato
Lettura Parallela

La proprietà Workspace è un riferimento al servizio Workspace .

Questa proprietà sempre punterà al Workspace e non sarà mai zero .

Il Workspace può essere anche accessato utilizzando la variabile globale workspace e la funzione ServiceProvider:GetService(). Ad esempio:


workspace -- una variabile globale
game.Workspace -- una proprietà del DataModel (Gioco)
game:GetService("Workspace") -- workspace is a service

Metodi

BindToClose

void

Legge una funzione da chiamare prima che il server si chiudi. Se la funzione legata accetta un parametro, passa Enum.CloseReason specificando il motivo per cui il server si chiude.

Puoi associare più funzioni chiamando BindToClose() più volte. Le funzioni legate vengono chiamate in parallelo e vengono eseguite contemporaneamente.

Il server dell'esperienza aspetta 30 secondi per tutte le funzioni legate a non essere in esecuzione prima di essere riavviato. Dopo 30 secondi, il server si spegne anche se le funzioni sono ancora in esecuzione.

Per verificare che la sessione attuale non sia in Roblox Studio, usa RunService:IsStudio() . Ciò impedisce che le funzioni legate completino le loro esecuzioni in sessioni di test offline.

Quando si utilizza DataStoreService, si dovrebbe anche utilizzare BindToClose per associare una funzione che salva tutti i dati non salvati a DataStores. Ciò previene la perdita di dati se il server viene riavviato inaspettatamente.

Vedi anche:

Parametri

function: function

Una funzione chiamata prima che il server dell'esperienza si chiuderà. Se la funzione legata accetta un parametro, passa Enum.CloseReason specificando il motivo per cui il server si è chiuso.


Restituzioni

void

Campioni di codice

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

Sicurezza Plugin

Restituisce una tabella che contiene informazioni di base sui lavori eseguiti dal Agendadelle attività.

In computer science, un sistema di pianificazione delle attività è responsabile dell'esecuzione delle attività chiave nei periodi appropriati.

Puoi anche trovare le statistiche dell'agenda delle attività nella finestra Task Scheduler in Roblox Studio.

Il primo elemento nella tabella restituito è un dizionario di riferimento che contiene le statistiche (o intestazioni) disponibili. È nel seguente formato:


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

Le successive entradelle nella tabella restituiscono dizionari che contengono le statistiche sopra elencate per i lavori eseguiti dal Agendadelle attività. Ad esempio:


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

Vedi anche:


Restituzioni

Una tabella che contiene informazioni sui lavori eseguiti dal Agendadelle attività, vedi sopra per il formato.

Campioni di codice

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
Sicurezza Plugin

Questo metodo restituisce un array di Instances associato all'URL di contenuto specificato. Può essere utilizzato per inserire contenuti dalla biblioteca Roblox. Non è possibile inserire Sounds usando questo metodo poiché non hanno un Instance associato a loro e hanno solo un URL di contenuto.

A differenza di InsertService:LoadAsset() , DataModel:GetObjects() non richiede che una risorsa sia "trusty", il che significa che una risorsa non deve essere di proprietà dell'utente autenticato o creata da Roblox per essere inserita. Tuttavia, se la risorsa non è di proprietà dell'utente autenticato deve essere disponibile liberamente.

A causa del contesto di sicurezza di questa funzione, può essere utilizzato solo da plugin o dalla barra dei comandi. Per un'alternativa che può essere utilizzata in Scripts e LocalScripts, vedi Class.InsertService:LoadAsset() .

Parametri

url: ContentId

L'URL del contenuto fornito.


Restituzioni

Instances

Un array di Instances associato all'URL del contenuto.

Campioni di codice

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

Questa funzione restituisce vero se il client ha finito di caricare il gioco per la prima volta.

Quando tutte le iniziali Instances nel gioco sono state replicate al client, questa funzione restituirà true.

A meno che non siano parented a ReplicatedFirst , LocalScripts non sarà eseguito mentre il gioco non è caricato. Il seguente snippet, run from a LocalScript in 1> Class.ReplicatedFirst1> sarà generato fino a quando il gioco non sarà caricato:


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

Vedi anche:


Restituzioni

Se il client ha finito di caricare il gioco per la prima volta.

Campioni di codice

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
Sicurezza Plugin

Questa funzione imposta il DataModel.PlaceId della istanza di gioco al luogoId specificato.

Per accedere a DataModel.PlaceId quando il luogo non è pubblicato, ad esempio un file locale DataModel.GameId, vedi sotto per un esempio. Nota che ottenere DataStoreService


local DataStoreService = game:GetService("DataStoreService")
-- accedere a DataStore "Data" impostando PlaceId a placeId e GameId a universeId.
game:SetPlaceId(placeId)
game:SetUniverseId(universeId)
local dataStore = DataStoreService:GetDataStore("Data")

Parametri

placeId: number

L'ID per impostare il DataModel.PlaceId a.


Restituzioni

void

SetUniverseId

void
Sicurezza Plugin

Questa funzione imposta il DataModel.GameId della sessione di gioco corrente su il universoId . Questo è utile quando si testa i file .rbxl locali che non sono stati pubblicati su Roblox.

Per accedere al DataStoreService in un Postonon pubblicato, sia DataModel:SetUniverseId() che DataModel:SetPlaceId() devono essere Impostare.

Parametri

universeId: number

L'ID per impostare il DataModel.GameId a.


Restituzioni

void

Eventi

GraphicsQualityChangeRequest

Si attiva quando l'utente richiede un aumento o una diminuzione della qualità grafica utilizzando le scorciatoie.

Questo evento si attiva nelle seguenti condizioni:

  • Se l'utente premere F10 , questo evento si attiva con un betterQuality argomento di true .
  • Se l'utente premere ShiftF10 , questo evento si attiva con un argomento betterQuality di 0> false0> .

Questo evento non fornisce il livello di qualità grafica attuale o copre tutte le aggiornamenti alla qualità grafica. Ad esempio, le modifiche apportate nel menu GUI di base non sono registrate.

Puoi recuperare il valore Enum.SavedQualitySetting di un utente utilizzando UserGameSettings con il seguente snippet:


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

Se le impostazioni grafiche dell'utente sono impostate su automatico, allora il Enum.SavedQualitySetting sarà Automatic . Al momento non ci sono modi per i sviluppatori per ottenere affidabilemente il livello di qualità grafica attuale di una macchina dell'utente.

Parametri

betterQuality: bool

Se l'utente ha richiesto un aumento ( vero ) o un calo ( falso ) nella qualità dei grafici.


Campioni di codice

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

Questo evento si attiva sul client quando il gioco finisce di caricare per la prima volta.

L'evento Loaded viene attivato quando tutte le iniziali Instances nel gioco sono state replicate al client.

A meno che non siano parented a ReplicatedFirst , LocalScripts non sarà eseguito prima di questo evento di fuoco. Il seguente snippet, è stato eseguito da un LocalScript in 1> Class.ReplicatedFirst1> , sarà generato fino a quando il gioco non sarà caricato:


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

Vedi anche: