Hey guys,
So I'm making a game and my saveplayerdata function isn't saving the data. I enabled api services and for some reason my warn error keeps showing up saying that the setAsync is failing. Here's the code.
Server Script:
local DataStoreService = game:GetService("DataStoreService")
local PlayerDatastore = DataStoreService:GetDataStore("PlayerDataTest3")
local HttpService = game:GetService("HttpService")
local main = require(game.ServerScriptService.Main)
function LoadPlayerData(player, PlayerData)
-- Place Player into Player Table
main.Players["player_"..player.UserId] = PlayerData
end
function NewPlayerDetected(player)
-- Create new Player and place them in player table
main.Players["player_"..player.UserId] = {
Features,
Equipment,
Skills,
Stats,
Armor,
Friends = {},
}
if main.Players["player_"..player.UserId] then
print("Session Data Stored")
SavePlayerData(player)
end
end
function PlayerJoinsGame (player)
local success, PlayerData = pcall(function()
return PlayerDatastore:GetAsync("player_"..player.UserId)
end)
if success then
if PlayerData then
print("Player Data Was Loaded")
LoadPlayerData(player, PlayerData)
print(HttpService:JSONEncode(PlayerData))
else
print("New Player Has Joined. Creating New Player.")
NewPlayerDetected(player)
end
end
end
function ResetPlayerData (player)
local tries = 0
local success
repeat
tries = tries + 1
success = pcall(function()
return PlayerDatastore:RemoveAsync("Player_"..player.UserId)
end)
if not success then wait(1) end
until tries == 3 or success
if not success then
warn("Failed To Remove Player Data. Trying Again.")
end
end
function SavePlayerData (player)
local tries = 0
local success
repeat
tries = tries + 1
print("Hello")
success = pcall(function()
PlayerDatastore:SetAsync("player_"..player.Userid, main.Players["player_"..player.UserId])
end)
if not success then wait(1) end
until tries == 3 or success
if not success then
warn("Failed To Save Player Data. Trying Again.")
end
end
game.Players.PlayerRemoving:Connect(SavePlayerData)
game.Players.PlayerAdded:Connect(PlayerJoinsGame)
I cut out the tables I made so those aren't erroring they just took up too much space. The repeat function runs 3 times and then success turns out to not be true which means it failed to save.
Module Script:
local main = {}
main.Players = {
}
return main
SOLUTION: I forgot to change player.Userid to player.UserId in setAsync
