Main problem: Current data doesn't get saved after leaving.
The important bit is after the --handle leaving.
The console outputs "X" on leave but not the rest of the code.
What exaclty is the problem?
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local PlayerDataStore = DataStoreService:GetDataStore("PlayerData")
local defaultData = {
speed = 3, --default 16
jumpPower = 4 --default 7.2
}
Players.PlayerAdded:Connect(function(player)
local sucess, err = pcall(function()
local playerData = PlayerDataStore:GetAsync(player.UserId)
if not playerData then
playerData = defaultData
PlayerDataStore:SetAsync(player.UserId, playerData)
print("New data table set for", player)
else
playerData = playerData
print("Data loaded for", player)
end
end)
player.CharacterAdded:Connect(function(character)
local playerData = PlayerDataStore:GetAsync(player.UserId)
local humanoid = character:WaitForChild("Humanoid")
humanoid.WalkSpeed = playerData.speed
humanoid.JumpPower = playerData.jumpPower
print(humanoid, playerData)
end)
end)
--handle leaving
Players.PlayerRemoving:Connect(function(player)
local character = player.Character
if not character then return end
local humanoid = character:FindFirstChild("Humanoid")
if not humanoid then return end
local playerData = {
speed = humanoid.WalkSpeed,
jumpPower = humanoid.JumpPower
}
print("X", playerData)
local success, err = pcall(function()
PlayerDataStore:SetAsync(player.UserId, playerData)
end)
if success then
print("Data saved for", player.Name)
else
warn("Failed to save data:", err)
end
end)
--Todo fix handle save data on leave