Meer informatie
Engine-klasse
DataModel
Niet maakbaar

*Deze inhoud is vertaald met behulp van AI (bèta) en kan fouten bevatten. Klik hier om deze pagina in het Engels te bekijken.


Codevoorbeelden
GetService()
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
-- Voorbeelden van het wijzigen van eigenschappen van deze diensten
Workspace.Gravity = 20
Lighting.ClockTime = 4

API-referentie
Eigenschappen
CreatorId
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.CreatorId:number
Codevoorbeelden
Detecteer wanneer de eigenaar van de plaats het spel betreedt
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("De eigenaar van de plaats is het spel binnengekomen!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroupAsync(game.CreatorId) then
print("Een lid van de groep die de plaats bezit is het spel binnengekomen!")
end
end
end)

CreatorType
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.CreatorType:Enum.CreatorType
Codevoorbeelden
Detecteer wanneer de eigenaar van de plaats het spel betreedt
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("De eigenaar van de plaats is het spel binnengekomen!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroupAsync(game.CreatorId) then
print("Een lid van de groep die de plaats bezit is het spel binnengekomen!")
end
end
end)

GameId
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.GameId:number

GearGenreSetting
Verouderd

Genre
Verouderd

JobId
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.JobId:string

lighting
Verouderd

MatchmakingType
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.MatchmakingType:Enum.MatchmakingType

PlaceId
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.PlaceId:number

PlaceVersion
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.PlaceVersion:number
Codevoorbeelden
Serverversienummer 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("Serverversie: %s", placeVersion)
textLabel.Parent = versionGui
versionGui.Parent = StarterGui

PrivateServerId
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.PrivateServerId:string
Codevoorbeelden
Detecteren van Privéservers
local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "GereserveerdeServer"
end
else
return "StandaardServer"
end
end
print(getServerType())

PrivateServerOwnerId
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.PrivateServerOwnerId:number
Codevoorbeelden
Detecteren van Privéservers
local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPServer"
else
return "GereserveerdeServer"
end
else
return "StandaardServer"
end
end
print(getServerType())

RunService
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.RunService:RunService

VIPServerId
Verouderd

VIPServerOwnerId
Verouderd

Workspace
Alleen-lezen
Niet gerepliceerd
Parallel lezen
DataModel.Workspace:Workspace

workspace
Verouderd

Methoden
BindToClose
DataModel:BindToClose(function:function):()
Parameters
function:function
Teruggaves
()
Codevoorbeelden
Spelen gegevens opslaan voordat de server afsluit
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
-- Voorkom het schrijven van studio-gegevens naar productie en het vertragen van het sluiten van de testsessie
return
end
-- Referentie voor wachten en later hervatten
local mainThread = coroutine.running()
-- Telt op voor elke nieuwe thread, af wanneer de thread is voltooid. Wanneer 0 is bereikt,
-- weet de individuele thread dat het de laatste thread is die is voltooid en moet de hoofdthread hervatten
local numThreadsRunning = 0
-- Het aanroepen van deze functie later start op een nieuwe thread vanwege coroutine.wrap
local startSaveThread = coroutine.wrap(function(userId, sessionData)
-- Voer de opslaanbewerking uit
local success, result = pcall(savePlayerDataAsync, userId, sessionData)
if not success then
-- Zou een herhaling kunnen implementeren
warn(string.format("Het opslaan van %d's gegevens is mislukt: %s", userId, result))
end
-- Thread is voltooid, verlaag de teller
numThreadsRunning -= 1
if numThreadsRunning == 0 then
-- Dit was de laatste thread die is voltooid, hervat de hoofdthread
coroutine.resume(mainThread)
end
end)
-- Dit gaat ervan uit dat playerData wordt gewist uit de gegevens tabel tijdens een laatste opslaan op PlayerRemoving,
-- dus dit itereren over alle gegevens van spelers die nog in het spel zijn en die niet zijn opgeslagen
for userId, sessionData in pairs(allPlayerSessionDataCache) do
numThreadsRunning += 1
-- Deze lus is klaar met draaien en tellen van numThreadsRunning voordat een van
-- de opslaan threads begint omdat coroutine.wrap ingebouwde uitstel heeft bij het starten
startSaveThread(userId, sessionData)
end
if numThreadsRunning > 0 then
-- Vertraging van afsluiten totdat opslaan threads zijn voltooid. Hervat door de laatste opslaan thread wanneer deze is voltooid
coroutine.yield()
end
end
game:BindToClose(onServerShutdown)
Binden aan en Afhandelen van Game Afsluiting
game:BindToClose(function(closeReason)
print(`Afsluiten met reden {closeReason}`)
task.wait(3)
print("Done")
end)

GetJobsInfo
Plugin-beveiliging
DataModel:GetJobsInfo():{any}
Teruggaves
Codevoorbeelden
Informatie over Banen Verkrijgen
local jobInfo = game:GetJobsInfo()
local jobTitles = jobInfo[1]
table.remove(jobInfo, 1)
local divider = string.rep("-", 120)
print(divider)
warn("BANEN INFORMATIE:")
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
Verouderd

GetObjects
Verouderd

GetRemoteBuildMode
Verouderd

IsGearTypeAllowed
Verouderd

IsLoaded
DataModel:IsLoaded():boolean
Teruggaves
Codevoorbeelden
Aangepaste Laadscherm
local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Maak een basis laadscherm
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 = "Laden"
textLabel.TextSize = 28
textLabel.Parent = screenGui
-- Voeg het hele scherm GUI toe aan de speler GUI
screenGui.Parent = playerGui
-- Verwijder het standaard laadscherm
ReplicatedFirst:RemoveDefaultLoadingScreen()
--task.wait(3) -- Optioneel om het scherm minimaal een aantal seconden te laten verschijnen
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

SavePlace
Verouderd

SetPlaceId
Plugin-beveiliging
DataModel:SetPlaceId(placeId:number):()
Parameters
placeId:number
Teruggaves
()

SetUniverseId
Plugin-beveiliging
DataModel:SetUniverseId(universeId:number):()
Parameters
universeId:number
Teruggaves
()

Evenementen
AllowedGearTypeChanged
Verouderd

GraphicsQualityChangeRequest
DataModel.GraphicsQualityChangeRequest(betterQuality:boolean):RBXScriptSignal
Parameters
betterQuality:boolean
Codevoorbeelden
Omgaan met gebruikerswijzigingen in grafische kwaliteit
game.GraphicsQualityChangeRequest:Connect(function(betterQuality)
if betterQuality then
print("De gebruiker heeft gevraagd om een verhoging van de grafische kwaliteit!")
else
print("De gebruiker heeft gevraagd om een verlaging van de grafische kwaliteit!")
end
end)

ItemChanged
Verouderd

Loaded
DataModel.Loaded():RBXScriptSignal

ServerRestartScheduled
Mogelijkheden: ServerCommunication
DataModel.ServerRestartScheduled(
restartTime:DateTime, source:Enum.CloseReason, attributes:Dictionary
Parameters
restartTime:DateTime
attributes:Dictionary
Codevoorbeelden
ServerHerstartGepland
local roundInProgress = false -- Zet dit ergens anders in de gamecode wanneer een game ronde begint of eindigt
local restartPending = false
game.ServerRestartScheduled:Connect(function(restartTime, source, attributes)
local msg = attributes and attributes.message or ""
local timeStr = restartTime:FormatLocalTime("LTS", "en-us") -- aangezien dit op de server wordt uitgevoerd, zal het in UTC zijn
-- Stuur deze velden door naar clients via remote:FireAllClients() om aangepaste berichten in je UI weer te geven
print(string.format("Server herstart om %s van bron: %s. Reden: %s.", timeStr, tostring(source), msg))
if not roundInProgress then
print("Geen ronde in uitvoering. Spelers teleporteren in 10 seconden")
task.wait(10)
-- Spelers teleporteren wanneer een herstart is gepland, brengt hen naar een server op de nieuwste plaatsversie
game:GetService("TeleportService"):TeleportAsync(game.PlaceId, game:GetService("Players"):GetPlayers())
else
-- Je kunt code toevoegen om spelers te teleporteren nadat een game ronde eindigt als restartPending waar is.
restartPending = true
end
end)

Callbacks
OnClose
Verouderd

©2026 Roblox Corporation. Roblox, het Roblox-logo en Powering Imagination behoren tot onze geregistreerde en niet-geregistreerde handelsmerken in de VS en andere landen.