2016-05-14 2 views
1

Y a-t-il une raison pour laquelle cela ne fonctionne pas?Sauvegarde des données du joueur dans RLua

joueur de script rejoindre:

local DataStore = game:GetService("DataStoreService"):GetDataStore("GeneralStats") 


game.Players.PlayerAdded:connect(function(player) 

    local stats = Instance.new("IntValue", player) 
    stats.Name = "leaderstats" 

    local points = Instance.new("IntValue", stats) 
    points.Name = "Points" 

    local credits = Instance.new("IntValue", stats) 
    credits.Name = "Credits"  

    local key = "player-"..player.userId 

    local savedValues = DataStore:GetAsync(key) 

    if savedValues then 
     --Save format: (points, credits) 
     points.Value = savedValues[1] 
     credits.Value = savedValues[2] 
    else 
     local ValuesToSave = {points.Value, credits.Value} 
     DataStore:SetAsync(key, ValuesToSave) 
    end 


end) 

Et cet autre scénario lorsque le joueur quitte.

local DataStore = game:GetService("DataStoreService"):GetDataStore("GeneralStats") 

game.Players.PlayerRemoving:connect(function(player) 

    local key = "player-"..player.userId  

    --Save key: {points, credits} 
    local valuesToSave = {player.leaderstats.Points.Values, player.leaderstats.Credits.Values} 
    DataStore:SetAsync(key, valuesToSave) 

end) 

C'est un jeu sur lequel je travaille, justifier (RLua est Roblox Lua, si vous ne saviez pas).

+0

voulez-vous partager ce que vous attendez du code à faire et ce qu'il fait à la place? – Piglet

+0

Essayer de clarifier. grammaire corrigée – LoicTheAztec

Répondre

0

Oui, plus que probablement le leaderstat est supprimé avant que vous ayez une chance d'extraire des données.

Je suggère de ne pas utiliser leaderstats comme référence pour les données. Il est préférable de stocker les données directement sur le script. Toutefois, si vous devez vraiment utiliser leaderstats, parrainez-le ailleurs, extrayez les données, puis supprimez-le.

local lead = player.leaderstats 
lead.Parent = game 
-- extract data 
lead:Destroy() 

Vous pouvez également définir tous ces objets dans une variable avant qu'ils ne soient réparés.

Mais encore une fois, je suggère fortement de ne pas utiliser leaderstats pour l'économie de données. Les exploiteurs peuvent facilement modifier ces données et changer la valeur en nombre élevé.