2016-05-14 94 views
1

有沒有理由爲什麼這些不起作用?在RLua儲存玩家數據

球員加盟腳本:

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) 

而當玩家離開這個其他腳本。

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) 

這是一個遊戲我工作,證明(RLuaRoblox Lua,如果你不知道)。

+0

你會分享你期望的代碼和它做什麼嗎? – Piglet

+0

試圖澄清。正確的語法 – LoicTheAztec

回答

0

是的,在您有機會提取數據之前,很有可能leadertat被刪除。

我會建議不要使用leaderstats作爲數據的參考。最好直接在腳本上存儲數據。

但是,如果您確實必須使用leaderstats,請將其父母帶到別處,然後提取數據,然後將其刪除。

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

或者您可以在變量重新定義前定義所有這些對象。

但是,我強烈建議不要使用leaderstats來保存數據。剝削者可以輕鬆地更改該數據並將其值更改爲較高的值。