Dalam hampir semua game populer di Roblox, pemain mengumpulkan koin, poin kemenangan, atau level. Agar angka tersebut tampil di papan peringkat kanan atas layar, kita menggunakan folder khusus bernama leaderstats. Selanjutnya, agar progres pemain tidak hilang saat keluar dari game, kita wajib menggunakan DataStoreService.
1. Mengaktifkan Studio Access to API Services
Sebelum menulis kode penyimpanan data, Anda harus mempublikasikan game terlebih dahulu, lalu membuka menu Home → Game Settings → Security dan mengaktifkan tombol Enable Studio Access to API Services.
2. Membuat Folder leaderstats untuk Papan Peringkat
Roblox secara otomatis mengenali folder bernama leaderstats (huruf kecil semua) yang dimasukkan ke dalam objek Player ketika pemain bergabung:
local DataStoreService = game:GetService("DataStoreService")
local koinStore = DataStoreService:GetDataStore("DataKoinPemain_v1")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local koin = Instance.new("IntValue")
koin.Name = "Koin"
koin.Value = 0
koin.Parent = leaderstats
-- Memuat data tersimpan dengan pcall agar aman dari gangguan jaringan
local sukses, dataTersimpan = pcall(function()
return koinStore:GetAsync("User_" .. player.UserId)
end)
if sukses and dataTersimpan ~= nil then
koin.Value = dataTersimpan
end
end)
3. Menyimpan Data Saat Pemain Keluar (PlayerRemoving)
Tambahkan kode berikut di bawah script sebelumnya di dalam ServerScriptService agar nilai koin disimpan otomatis saat pemain meninggalkan permainan maupun saat server ditutup (BindToClose):
local function simpanData(player)
local leaderstats = player:FindFirstChild("leaderstats")
if leaderstats then
local koin = leaderstats:FindFirstChild("Koin")
if koin then
pcall(function()
koinStore:SetAsync("User_" .. player.UserId, koin.Value)
end)
end
end
end
Players.PlayerRemoving:Connect(simpanData)
game:BindToClose(function()
for _, player in ipairs(Players:GetPlayers()) do
simpanData(player)
end
end)
Selalu bungkus pemanggilanGetAsyncdanSetAsyncdengan fungsipcall()(Protected Call) agar script tidak berhenti mendadak apabila server penyimpanan sedang sibuk.
Belum ada komentar. Jadilah yang pertama memberikan tanggapan pada artikel ini!