Learn
Motor Sınıfı
DataModel
Oluşturulamaz

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.


Özet
Yöntemler
BindToClose(function: function):()
GetMessage():string
Artık Kullanılmayan
GetObjects(url: ContentId):Instances
Artık Kullanılmayan
GetRemoteBuildMode():boolean
Artık Kullanılmayan
IsGearTypeAllowed(gearType: Enum.GearType):boolean
Artık Kullanılmayan
SavePlace(saveFilter: Enum.SaveFilter):boolean
Artık Kullanılmayan
SetPlaceId(placeId: number):()
SetUniverseId(universeId: number):()
Geri Aramalar
OnClose():Tuple
Artık Kullanılmayan
Devralınan Üyeler
Kod Örnekleri
GetService()
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")
-- Bu hizmetlerin özelliklerini değiştirme örnekleri
Workspace.Gravity = 20
Lighting.ClockTime = 4

API Referansı
Özellikler
CreatorId
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.CreatorId:number
Kod Örnekleri
Oyun sahibi oyuna katıldığında tespit et
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("Oyun sahibi oyuna katıldı!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroupAsync(game.CreatorId) then
print("Yerin sahibi grubun bir üyesi oyuna katıldı!")
end
end
end)

CreatorType
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.CreatorType:Enum.CreatorType
Kod Örnekleri
Oyun sahibi oyuna katıldığında tespit et
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
if game.CreatorType == Enum.CreatorType.User then
if player.UserId == game.CreatorId then
print("Oyun sahibi oyuna katıldı!")
end
elseif game.CreatorType == Enum.CreatorType.Group then
if player:IsInGroupAsync(game.CreatorId) then
print("Yerin sahibi grubun bir üyesi oyuna katıldı!")
end
end
end)

Environment
Salt Okunur
Çoğaltılmamış
Roblox Betik Güvenliği
Paralel oku
DataModel.Environment:string

GameId
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.GameId:number

GearGenreSetting
Artık Kullanılmayan

Genre
Artık Kullanılmayan

JobId
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.JobId:string

lighting
Artık Kullanılmayan

MatchmakingType
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.MatchmakingType:Enum.MatchmakingType

PlaceId
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.PlaceId:number

PlaceVersion
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.PlaceVersion:number
Kod Örnekleri
Sunucu sürüm numarası 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("Sunucu sürümü: %s", placeVersion)
textLabel.Parent = versionGui
versionGui.Parent = StarterGui

PrivateServerId
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.PrivateServerId:string
Kod Örnekleri
Özel Sunucuları Tespit Etme
local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPSunucu"
else
return "RezerveEdilmişSunucu"
end
else
return "StandartSunucu"
end
end
print(getServerType())

PrivateServerOwnerId
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.PrivateServerOwnerId:number
Kod Örnekleri
Özel Sunucuları Tespit Etme
local function getServerType()
if game.PrivateServerId ~= "" then
if game.PrivateServerOwnerId ~= 0 then
return "VIPSunucu"
else
return "RezerveEdilmişSunucu"
end
else
return "StandartSunucu"
end
end
print(getServerType())

RunService
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.RunService:RunService

VIPServerId
Artık Kullanılmayan

VIPServerOwnerId
Artık Kullanılmayan

Workspace
Salt Okunur
Çoğaltılmamış
Paralel oku
DataModel.Workspace:Workspace

workspace
Artık Kullanılmayan

Yöntemler
BindToClose
DataModel:BindToClose(function:function):()
Parametreler
function:function
Dönüşler
()
Kod Örnekleri
Oyuncu verilerini kapatmadan önce kaydetme
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
-- Üretime stüdyo verisi yazmaktan ve test oturumunun kapanmasını engellemekten kaçının
return
end
-- Daha sonra bekletme ve devam ettirme için referans
local mainThread = coroutine.running()
-- Her yeni iş parçacığı için yukarı sayar, iş parçacığı bittiğinde aşağı sayar. 0'a ulaşıldığında,
-- bireysel iş parçacığı, son iş parçacığı bitmesi gerektiğini ve ana iş parçacığını devam ettirmesi gerektiğini bilir
local numThreadsRunning = 0
-- Bu işlevin daha sonra çağrılması, coroutine.wrap nedeniyle yeni bir iş parçacığı başlatır
local startSaveThread = coroutine.wrap(function(userId, sessionData)
-- Kaydetme işlemini gerçekleştir
local success, result = pcall(savePlayerDataAsync, userId, sessionData)
if not success then
-- Tekrar deneme uygulanabilir
warn(string.format("%d'nin verisini kaydetmek başarısız oldu: %s", userId, result))
end
-- İş parçacığı bitti, sayacı azalt
numThreadsRunning -= 1
if numThreadsRunning == 0 then
-- Bu son biten iş parçacığıydı, ana iş parçacığına devam et
coroutine.resume(mainThread)
end
end)
-- Bu, playerData'nın PlayerRemoving sırasında veri tablosundan temizlendiğini varsayıyor,
-- bu yüzden kaydedilmemiş oyundaki tüm oyuncuların verileri üzerinden yineleme yapıyor
for userId, sessionData in pairs(allPlayerSessionDataCache) do
numThreadsRunning += 1
-- Bu döngü, coroutine.wrap'ın başlangıçta yerleşik bir gecikmesi olduğu için,
-- herhangi bir kaydetme iş parçacığı başlamadan önce numThreadsRunning saymasını ve çalıştırmasını tamamlar
startSaveThread(userId, sessionData)
end
if numThreadsRunning > 0 then
-- Kaydetme iş parçacıkları bitene kadar kapatmayı durdur. Tamamlandığında son kaydetme iş parçacığı tarafından devam ettirildi
coroutine.yield()
end
end
game:BindToClose(onServerShutdown)
Oyun Kapatma İşlemlerine Bağlanma ve Yönetme
game:BindToClose(function(closeReason)
print(`Kapatma nedeni: {closeReason}`)
task.wait(3)
print("Tamamlandı")
end)

GetJobsInfo
Eklenti Güvenliği
DataModel:GetJobsInfo():{any}
Dönüşler
Kod Örnekleri
İş Bilgilerini Alma
local jobInfo = game:GetJobsInfo()
local jobTitles = jobInfo[1]
table.remove(jobInfo, 1)
local divider = string.rep("-", 120)
print(divider)
warn("İŞ BİLGİLERİ:")
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
Artık Kullanılmayan

GetObjects
Artık Kullanılmayan

GetRemoteBuildMode
Artık Kullanılmayan

IsGearTypeAllowed
Artık Kullanılmayan

IsLoaded
DataModel:IsLoaded():boolean
Dönüşler
Kod Örnekleri
Özel Yükleme Ekranı
local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Temel bir yükleme ekranı oluştur
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 = "Yükleniyor"
textLabel.TextSize = 28
textLabel.Parent = screenGui
-- Tüm ekran GUI'sini oyuncu GUI'sine ekle
screenGui.Parent = playerGui
-- Varsayılan yükleme ekranını kaldır
ReplicatedFirst:RemoveDefaultLoadingScreen()
--task.wait(3) -- Ekranın belirli bir süre görünmesini isteğe bağlı olarak zorla
if not game:IsLoaded() then
game.Loaded:Wait()
end
screenGui:Destroy()

SavePlace
Artık Kullanılmayan

SetPlaceId
Eklenti Güvenliği
DataModel:SetPlaceId(placeId:number):()
Parametreler
placeId:number
Dönüşler
()

SetUniverseId
Eklenti Güvenliği
DataModel:SetUniverseId(universeId:number):()
Parametreler
universeId:number
Dönüşler
()

Olaylar
AllowedGearTypeChanged
Artık Kullanılmayan

GraphicsQualityChangeRequest
DataModel.GraphicsQualityChangeRequest(betterQuality:boolean):RBXScriptSignal
Parametreler
betterQuality:boolean
Kod Örnekleri
Kullanıcı Değişikliklerini Grafik Kalitesinde Yönetme
game.GraphicsQualityChangeRequest:Connect(function(betterQuality)
if betterQuality then
print("Kullanıcı grafik kalitesinin artırılmasını talep etti!")
else
print("Kullanıcı grafik kalitesinin azaltılmasını talep etti!")
end
end)

ItemChanged
Artık Kullanılmayan

Loaded
DataModel.Loaded():RBXScriptSignal

ServerRestartScheduled
Capabilities: ServerCommunication
DataModel.ServerRestartScheduled(
restartTime:DateTime, source:Enum.CloseReason, attributes:Dictionary
Parametreler
restartTime:DateTime
attributes:Dictionary
Kod Örnekleri
SunucuYenidenBaşlatmaPlanlandı
local roundInProgress = false -- Oyun kodunda başka bir yerde her oyun turu başladığında veya bittiğinde ayarlanır
local restartPending = false
game.ServerRestartScheduled:Connect(function(restartTime, source, attributes)
local msg = attributes and attributes.message or ""
local timeStr = restartTime:FormatLocalTime("LTS", "en-us") -- bu sunucuda çalıştığı için UTC'de olacaktır
-- Bu alanları müşterilere remote:FireAllClients() ile ileterek özel mesajlarınızı arayüzünüzde görüntüleyin
print(string.format("Sunucu yeniden başlatılıyor %s kaynaktan: %s. Sebep: %s.", timeStr, tostring(source), msg))
if not roundInProgress then
print("Şu anda bir tur yok. 10 saniye içinde oyuncuları teleport ediliyor")
task.wait(10)
-- Yeniden başlatma planlandığında oyuncuları teleport etmek, onları en son yer sürümü üzerinde bir sunucuya getirir
game:GetService("TeleportService"):TeleportAsync(game.PlaceId, game:GetService("Players"):GetPlayers())
else
-- restartPending true ise bir oyun turu bittikten sonra oyuncuları teleport etmek için kod ekleyebilirsiniz.
restartPending = true
end
end)

Geri Aramalar
OnClose
Artık Kullanılmayan

©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.