DataStoreService est un service dans Roblox qui permet aux développeurs de stocker et de récupérer des données persistantes pour leurs jeux. Ceci est utile pour sauvegarder les données des joueurs, les statistiques de jeu, les paramètres de configuration, et plus encore. Les données sont stockées dans le cloud et peuvent être accessibles à travers différentes sessions de jeu et serveurs.
Entrée | Détails |
---|---|
DataStoreService | Le service principal utilisé pour accéder aux DataStores. |
DataStore | Une unité de stockage au sein de DataStoreService où les données sont stockées. |
GetAsync | Récupère des données à partir d'un DataStore. |
SetAsync | Enregistre des données dans un DataStore. |
UpdateAsync | Met à jour les données dans un DataStore en appliquant une fonction de transformation. |
Permission de DataStoreService
Roblox Studio
>File
>Game Settings
>Security
>Enable Studio Access to API Services
>Yes
Roblox Studio
Créer un DataStore nommé 'PlayerData'
local DataStoreService = game:GetService("DataStoreService")
local playerDataStore = DataStoreService:GetDataStore("PlayerData")
Exemple : Mise à Jour des Données
game.Players.PlayerRemoving:Connect(function(player)
local playerKey = "Player_" .. player.UserId
local data = {
Example_String_Field = "Example_Value",
Example_Number_Field = 123,
Example_Bool_Field = true,
Example_Timestamp_Field = os.time()
}
local success, errorMessage = pcall(function()
playerDataStore:SetAsync(playerKey, data)
end)
if success then
print("Player data saved successfully for player: " .. player.Name)
else
warn("Failed to save player data for player: " .. player.Name .. ". Error: " .. errorMessage)
end
end)
Roblox Studio
Exemple : Chargement des Données
game.Players.PlayerAdded:Connect(function(player)
local playerKey = "Player_" .. player.UserId
local success, data = pcall(function()
return playerDataStore:GetAsync(playerKey)
end)
if success and data then
-- Assuming that you have already set up leaderstats with Level and Experience
player.leaderstats.Level.Value = data.Level or 1 -- Provide a default value if nil
player.leaderstats.Experience.Value = data.Experience or 0 -- Provide a default value if nil
-- Print out the stored data
print("Player data loaded successfully for player: " .. player.Name)
print("Example_String_Field: " .. (data.Example_String_Field or "N/A"))
print("Example_Number_Field: " .. (data.Example_Number_Field or "N/A"))
print("Example_Bool_Field: " .. tostring(data.Example_Bool_Field or "N/A"))
print("Example_Timestamp_Field: " .. os.date("%c", data.Example_Timestamp_Field or 0)) -- Convert timestamp to a readable format
else
warn("Failed to load player data for player: " .. player.Name)
end
end)
Roblox Studio
Exemple : Sauvegarde Automatique des Données à Intervalles Réguliers
local function savePlayerData(player)
local playerKey = "Player_" .. player.UserId
local success, errorMessage = pcall(function()
playerDataStore:UpdateAsync(playerKey, function(oldData)
oldData = oldData or {
Example_String_Field = "Default_String",
Example_Number_Field = 0,
Example_Bool_Field = false,
Example_Timestamp_Field = os.time()
}
-- Update all fields with the data from the player object or default values
oldData.Example_String_Field = player.Example_String_Field or oldData.Example_String_Field
oldData.Example_Number_Field = player.Example_Number_Field or oldData.Example_Number_Field
oldData.Example_Bool_Field = player.Example_Bool_Field or oldData.Example_Bool_Field
oldData.Example_Timestamp_Field = os.time() -- Always update the timestamp to current time
return oldData
end)
end)
if success then
print("Player data saved successfully for player: " .. player.Name)
else
warn("Failed to save player data for player: " .. player.Name .. ". Error: " .. errorMessage)
end
end
-- Function to periodically save data
local function startAutoSave(player)
while player.Parent do
wait(5) -- Wait 1 minute
savePlayerData(player)
end
end
-- Connect auto-save function to player joining
game.Players.PlayerAdded:Connect(function(player)
-- Start auto-saving for this player
coroutine.wrap(startAutoSave)(player)
end)
-- Ensure data is saved when the player leaves as a fallback
game.Players.PlayerRemoving:Connect(function(player)
savePlayerData(player)
end)
Si ce tutoriel vous a été utile et que vous souhaitez soutenir mon travail, veuillez envisager de m'offrir un café.
Merci beaucoup pour votre soutien !
M'offrir un café