Wassup, here is my code. I’m trying to save the player’s last position when they leave the game. but… it’s not saving. Here is my code:
Saving script (SSS):
local players = game:GetService("Players")
local DVersion = 3
local DataStoreService = game:GetService("DataStoreService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ValueTable = {}
ReplicatedStorage.GameFunctions.Get_Value.OnServerInvoke = function(player, Name, Folder)
local save = DataStoreService:GetDataStore(Name ..DVersion)
local previousData = save:GetAsync(player.UserId)
local Val = player:FindFirstChild(Folder):FindFirstChild(Name)
if Val then
if previousData ~= nil then
return previousData
else
return Val.Value
end
end
end
ReplicatedStorage.GameFunctions.Update_Value.OnServerInvoke = function(player, Name, Folder, Value)
local save = DataStoreService:GetDataStore(Name ..DVersion)
local previousData = save:GetAsync(player.UserId)
local Val = player:FindFirstChild(Folder):FindFirstChild(Name)
if Val then
Val.Value = Value
save:SetAsync(player.UserId, Val.Value)
end
end
local function CreateFolders(player)
local Id_Data = Instance.new("Folder")
Id_Data.Parent = player
Id_Data.Name = "Id_Data"
local PlayerStats_Data = Instance.new("Folder")
PlayerStats_Data.Parent = player
PlayerStats_Data.Name = "PlayerStats_Data"
end
local function CreateValues(player, Saving)
-------------------------------------------------------------------------
local LastPosition = Instance.new("StringValue")
LastPosition.Parent = player:WaitForChild("PlayerStats_Data")
LastPosition.Name = "LastPosition"
table.insert(ValueTable, LastPosition)
local save = DataStoreService:GetDataStore(LastPosition.Name ..DVersion)
local previousData = save:GetAsync(player.UserId)
LastPosition.Changed:Connect(function(newVal)
print(newVal)
save:SetAsync(player.UserId, LastPosition.Value)
end)
if previousData ~= nil then
LastPosition.Value = previousData
else
save:SetAsync(player.UserId, LastPosition.Value)
end
end
local function SaveValues(player)
for _,Element in pairs(ValueTable) do
local save = DataStoreService:GetDataStore(Element.Name ..DVersion)
local previousData = save:GetAsync(player.UserId)
save:SetAsync(player.UserId, Element.Value)
print(Element.Value)
end
end
players.PlayerAdded:Connect(function(player)
CreateFolders(player)
CreateValues(player, false)
end)
players.PlayerRemoving:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
SaveValues(player)
end)
end)
Position Script idk, (SSS):
local players = game:GetService("Players")
players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
local Value = player.PlayerStats_Data:WaitForChild("LastPosition")
local PositionValue = tonumber(Value.Value)
local Hrp = character:WaitForChild("HumanoidRootPart")
print(Value.Value)
if PositionValue ~= nil then
Hrp.CFrame = CFrame.new(PositionValue)
end
end)
end)
players.PlayerRemoving:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
local Value = player.PlayerStats_Data:WaitForChild("LastPosition")
local Hrp = character:WaitForChild("HumanoidRootPart")
local PositionValue = tostring(Hrp.Position)
print(Hrp.Position)
print(PositionValue)
Value.Value = PositionValue
end)
end)
Thanks,