Not loading data when player respawns

The function LoadData(Player, Character) works fine when the player joins, but not when the player respawns. Any idea why?

Function:

-- Load function
local function LoadData(Player, Character)
	local key = Player.UserId
	local data
	
	local success, err = pcall(function()
		data = DataStore:GetAsync(key)
	end)
	
	if success and data then
		Player.Droids.Owned.Value = data[1]
		
		if Player.Droids.Owned.Value == true then
			local NewDroid = ReplicatedStorage.Droids:FindFirstChild(tostring(data[2][1])):Clone()
			
			for i,primary in (NewDroid.Body.Primary:GetChildren()) do
				primary.Color = Color3.fromRGB(data[2][2], data[2][3], data[2][4])
			end
			
			for i,secondary in (NewDroid.Body.Secondary:GetChildren()) do
				secondary.Color = Color3.fromRGB(data[2][5], data[2][6], data[2][7])
			end
			
			for i,tertiary in (NewDroid.Body.Tertiary:GetChildren()) do
				tertiary.Color = Color3.fromRGB(data[2][8], data[2][9], data[2][10])
			end
			
			NewDroid.DroidName.Value = tostring(data[2][11])
			
			NewDroid.Parent = Character
			NewDroid.HumanoidRootPart.CFrame = Character.HumanoidRootPart.CFrame * CFrame.new(-5, 0, 0)
			
		end
		
		print("Data loaded: " .. Player.Name)
	end
end

Character added:

game.Players.PlayerAdded:Connect(function(Player)
	local Character = Player.CharacterAdded:Wait()
	
	local DroidModel
	
	LoadData(Player, Character)
	
	Player.CharacterAdded:Connect(function()
		LoadData(Player, Character)
	end)
	

	
	Credits.Changed:Connect(function()
		
		for i,v in pairs(DroidModule) do
			if Character:FindFirstChild(v.Title) then
				DroidModel = Character:FindFirstChild(v.Title)
			end
		end
		
		SaveData(Player, Character, DroidModel)
	end)
	
end)
1 Like

The problem is that character is only set on Player.CharacterAdded:Wait(), which only runs once. It’s trying to load the data on a character that’s been removed.

You can solve this by updating the local variable for character inside CharacterAdded:Connect(), so when they respawn it will update what model the character actually is.

local Character
local DroidModel
	
Player.CharacterAdded:Connect(function(char)
	Character = char
	LoadData(Player, Character)
end)
1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.