Lernen
Engine-Klasse
DataModel
Nicht erstellbar

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.


Code-Beispiele
GetService()
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
-- Beispiele für die Modifikation von Eigenschaften dieser Dienste
Workspace.Gravity = 20
Lighting.ClockTime = 4

API-Referenz
Eigenschaften
CreatorId
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.CreatorId:number
Code-Beispiele
Erkennen, wenn der Platzbesitzer dem Spiel beitritt
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("Der Platzbesitzer ist dem Spiel beigetreten!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroupAsync(game.CreatorId) then
print("Ein Mitglied der Gruppe, die den Platz besitzt, ist dem Spiel beigetreten!")
end
end
end)

CreatorType
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.CreatorType:Enum.CreatorType
Code-Beispiele
Erkennen, wenn der Platzbesitzer dem Spiel beitritt
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("Der Platzbesitzer ist dem Spiel beigetreten!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroupAsync(game.CreatorId) then
print("Ein Mitglied der Gruppe, die den Platz besitzt, ist dem Spiel beigetreten!")
end
end
end)

Environment
Schreibgeschützt
Nicht repliziert
Roblox-Skript-Sicherheit
Parallel lesen
DataModel.Environment:string

GameId
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.GameId:number

GearGenreSetting
Veraltet

Genre
Veraltet

JobId
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.JobId:string

lighting
Veraltet

MatchmakingType
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.MatchmakingType:Enum.MatchmakingType

PlaceId
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.PlaceId:number

PlaceVersion
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.PlaceVersion:number
Code-Beispiele
Serverversionsnummer 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("Serverversion: %s", placeVersion)
textLabel.Parent = versionGui
versionGui.Parent = StarterGui

PrivateServerId
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.PrivateServerId:string
Code-Beispiele
Erkennung von privaten Servern
local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "ReservierterServer"
end
else
return "StandardServer"
end
end
print(getServerType())

PrivateServerOwnerId
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.PrivateServerOwnerId:number
Code-Beispiele
Erkennung von privaten Servern
local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "ReservierterServer"
end
else
return "StandardServer"
end
end
print(getServerType())

RunService
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.RunService:RunService

VIPServerId
Veraltet

VIPServerOwnerId
Veraltet

Workspace
Schreibgeschützt
Nicht repliziert
Parallel lesen
DataModel.Workspace:Workspace

workspace
Veraltet

Methoden
BindToClose
DataModel:BindToClose(function:function):()
Parameter
function:function
Rückgaben
()
Code-Beispiele
Spielerdaten vor dem Herunterfahren speichern
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
-- Vermeiden, dass Studiendaten in die Produktion geschrieben werden und das Schließen
-- der Testsession verzögert wird
return
end
-- Referenz für das Warten und spätere Fortsetzen
local mainThread = coroutine.running()
-- Zählt für jeden neuen Thread hoch, für den Thread, wenn er fertig ist, runter. Wenn 0 erreicht wird,
-- weiß der einzelne Thread, dass er der letzte Thread ist, der fertig wird, und sollte den Hauptthread wieder aufnehmen
local numThreadsRunning = 0
-- Das Aufrufen dieser Funktion später startet auf einem neuen Thread wegen coroutine.wrap
local startSaveThread = coroutine.wrap(function(userId, sessionData)
-- Führe die Speicheroperation durch
local success, result = pcall(savePlayerDataAsync, userId, sessionData)
if not success then
-- Könnte einen Wiederholungsversuch implementieren
warn(string.format("Fehler beim Speichern der Daten von %d: %s", userId, result))
end
-- Thread abgeschlossen, Zähler verringern
numThreadsRunning -= 1
if numThreadsRunning == 0 then
-- Das war der letzte Thread, der fertig wurde, den Hauptthread wieder aufnehmen
coroutine.resume(mainThread)
end
end)
-- Dies setzt voraus, dass playerData während eines letzten Speichervorgangs bei PlayerRemoving aus der Datentabelle gelöscht wird,
-- daher wird dies über alle Daten von Spielern iteriert, die sich noch im Spiel befinden und die nicht gespeichert wurden
for userId, sessionData in pairs(allPlayerSessionDataCache) do
numThreadsRunning += 1
-- Diese Schleife beendet das Ausführen und Zählen von numThreadsRunning, bevor einer der
-- Speicher-Threads startet, da coroutine.wrap einen eingebauten Aufschub beim Start hat
startSaveThread(userId, sessionData)
end
if numThreadsRunning > 0 then
-- Verzögere das Herunterfahren, bis die Speicherschwellen fertig sind. Wird vom letzten Speicher-Thread wieder aufgenommen, wenn er fertig ist
coroutine.yield()
end
end
game:BindToClose(onServerShutdown)
Binden an und Handhaben der Spielschließung
game:BindToClose(function(closeReason)
print(`Schließen mit Grund {closeReason}`)
task.wait(3)
print("Fertig")
end)

GetJobsInfo
Plugin-Sicherheit
DataModel:GetJobsInfo():{any}
Rückgaben
Code-Beispiele
Informations zu Jobs abrufen
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

GetMessage
Veraltet

GetObjects
Veraltet

GetRemoteBuildMode
Veraltet

IsGearTypeAllowed
Veraltet

IsLoaded
DataModel:IsLoaded():boolean
Rückgaben
Code-Beispiele
Benutzerdefinierter Ladebildschirm
local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Erstelle einen einfachen Ladebildschirm
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 = "Wird geladen"
textLabel.TextSize = 28
textLabel.Parent = screenGui
-- Durch das gesamte Screen GUI im Spieler GUI verankern
screenGui.Parent = playerGui
-- Entferne den standardmäßigen Ladebildschirm
ReplicatedFirst:RemoveDefaultLoadingScreen()
--task.wait(3) -- Optional, um den Bildschirm für eine Mindestanzahl von Sekunden sichtbar zu machen
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

SavePlace
Veraltet

SetPlaceId
Plugin-Sicherheit
DataModel:SetPlaceId(placeId:number):()
Parameter
placeId:number
Rückgaben
()

SetUniverseId
Plugin-Sicherheit
DataModel:SetUniverseId(universeId:number):()
Parameter
universeId:number
Rückgaben
()

Events
AllowedGearTypeChanged
Veraltet

GraphicsQualityChangeRequest
DataModel.GraphicsQualityChangeRequest(betterQuality:boolean):RBXScriptSignal
Parameter
betterQuality:boolean
Code-Beispiele
Verwalten von Benutzeränderungen bei der Grafikqualität
game.GraphicsQualityChangeRequest:Connect(function(betterQuality)
if betterQuality then
print("Der Benutzer hat eine Erhöhung der Grafikqualität angefordert!")
else
print("Der Benutzer hat eine Verringerung der Grafikqualität angefordert!")
end
end)

ItemChanged
Veraltet

Loaded
DataModel.Loaded():RBXScriptSignal

ServerRestartScheduled
Funktionen: ServerCommunication
DataModel.ServerRestartScheduled(
restartTime:DateTime, source:Enum.CloseReason, attributes:Dictionary
Parameter
restartTime:DateTime
attributes:Dictionary
Code-Beispiele
ServerNeustartGeplant
local roundInProgress = false -- Woanders im Spielcode setzen, wannimmer eine Spielrunde beginnt oder endet
local restartPending = false
game.ServerRestartScheduled:Connect(function(restartTime, source, attributes)
local msg = attributes and attributes.message or ""
local timeStr = restartTime:FormatLocalTime("LTS", "en-us") -- da dies auf dem Server ausgeführt wird, ist es in UTC
-- Leiten Sie diese Felder an die Clients über remote:FireAllClients() weiter, um benutzerdefinierte Nachrichten in Ihrer UI anzuzeigen
print(string.format("Serverneustart um %s von Quelle: %s. Grund: %s.", timeStr, tostring(source), msg))
if not roundInProgress then
print("Keine Runde im Gange. Teleportiere Spieler in 10 Sekunden")
task.wait(10)
-- Das Teleportieren von Spielern, wenn ein Neustart geplant wurde, bringt sie zu einem Server der neuesten Platzversion
game:GetService("TeleportService"):TeleportAsync(game.PlaceId, game:GetService("Players"):GetPlayers())
else
-- Sie können Code hinzufügen, um Spieler zu teleportieren, nachdem eine Spielrunde endet, wenn restartPending true ist.
restartPending = true
end
end)

Callbacks
OnClose
Veraltet

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.