I want to save the game level and exp progress when the player leaves, but it’s failing for some reason.
On the client I have this:
Player.PlayerRemoving:Connect(function(player)
print("Saving! " .. expInt.Value .. " " .. level)
Save:FireServer(expInt.Value, level)
print("fired save event")
end)
which then outputs this in the output.
Saving! 1155 903
fired save event
And on the server I have this:
local DataStoreService = game:GetService("DataStoreService")
local experienceStore = DataStoreService:GetDataStore("PlayerExperience")
local levelStore = DataStoreService:GetDataStore("PlayerLevel")
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Save = ReplicatedStorage:WaitForChild("Save")
Save.OnServerEvent:Connect(function (player, exp, level)
print("Saving Stage 2")
local playerUserID = player.UserId
print(playerUserID .. " " .. exp .. " ".. level)
local success, newExperience = pcall(function(playerUserID)
return experienceStore:SetAsync(playerUserID, exp)
end)
if success then
print("New Experience:", newExperience)
end
local success, newLevel = pcall(function(playerUserID)
return levelStore:SetAsync(playerUserID, level)
end)
if success then
print("New Level:", newLevel)
else
print("failed :(")
end
end)
And the output:
Saving Stage 2
115898141 1155 903
failed :(
This keeps failing and I don’t know why.
I’ve tried increasing the time between each save and there are no errors in the output.