Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

DataStore doesn't/can't load data?

Asked by 8 years ago

Firstly, I have a Module script that controls the DataStore functions (GetAsync, SetAsync, etc.), which is here;

local dataManipulation = {}
local dss=game:GetService("DataStoreService"):GetDataStore("HasPlayed","PlayerData")

function dataManipulation:GetPlayerData(player,key)
    dss:GetAsync(key)
    print("Got "..player.Name.."'s Data")
end

function dataManipulation:SavePlayerData(player,key,value)
    local success,message=pcall(function()
        dss:UpdateAsync(key,function(oldvalue)
            local newVal=oldvalue or 0
            newVal=value
            return newVal
        end)
    end)
    if not success then
        print("AN ERROR OCCURRED: "..'"'..message..'"')
    else
        print("Saved "..player.Name.."'s Data!")
    end
end

function dataManipulation:SaveForLeavingPlayer(player,key,value)
    dss:SetAsync(key,value)
    print("Saved "..player.Name.."'s Data (player left)")
end


return dataManipulation


What I'm trying to do is save a Value when the new player joins and says, "I understand", this is the Server Script;

game.Players.PlayerAdded:connect(function(player)
    player.PlayerGui:WaitForChild("Intro")
    player.Chatted:connect(function(msg)
        if string.sub(string.lower(msg),1,12)==string.lower("I Understand") then
            pu:FireClient(player)
        end
    end)
end)

This is the Local Script;

local player=game.Players.LocalPlayer
local pu=game.ReplicatedStorage:WaitForChild("PlayerUnderstands")
local ds=require(game:GetService("ServerScriptService"):WaitForChild("DataModule"))

local intro=script.Intro:Clone()
intro.Parent=player.PlayerGui

pu.OnClientEvent:connect(function()
    intro:Destroy()
    local hasPlayed=player.PlayerStats.HasPlayed
    hasPlayed.Value=true
    local valueToSave={hasPlayed.Value}
    ds:SavePlayerData(player,player.UserId,valueToSave)
end)

And I have the Load and Save script here;

local ds=require(game.ServerScriptService.DataModule)

game.Players.PlayerAdded:connect(function(player)
    local data=ds:GetPlayerData(player,player.UserId)
    if data then
        print("Data Found")
    else
        print("No data found")
    end
end)

game.Players.PlayerRemoving:connect(function(player)
    local valuesToSave={player.PlayerStats.HasPlayed.Value}
    ds:SaveForLeavingPlayer(player,player.UserId,valuesToSave)
end)

When I join and say "I understand" it says it saves, but when I join again it says "No data found".

Answer this question