First off, HAPPY NEW YEAR!

I'm having a datastore for my game, currently holding some character info and stats. The problem is, whenever I call the loadData() function. It gives me the error from the title.

local DSS = game:GetService("DataStoreService")
local TeleportService = game:GetService("TeleportService")
local playerData = DSS:GetDataStore("PlayerData")

function generateDataKey(player)
	local ret = "user_"..player.UserId
	return ret
end

function generateDataTable(player)
	local dataTable = {
		magicType = player.PlayerData.MagicType.Value,
		magicLevel = player.PlayerData.MagicType.MagicLevel.Value,
		magicXP = player.PlayerData.MagicXP.Value,
		magicXPN = player.PlayerData.MagicXPNeeded.Value,
		magicEnergy = player.PlayerData.MagicEnergy.Value,
		levels = player.PlayerData.Levels.Value,
		xp = player.PlayerData.Levels.XP.Value,
		xpn = player.PlayerData.Levels.XPNeeded.Value,
		silver = player.PlayerData.Silver.Value,
		hp = player.PlayerData.HP.Value,
		
		hair1 = player.PlayerData.Hair1.Value,
		hair1Color = player.PlayerData.Hair1Color.Value,
		hair1Offset = player.PlayerData.Hair1Offset.Value,
		hair2 = player.PlayerData.Hair2.Value,
		hair2Color = player.PlayerData.Hair2Color.Value,
		hair2Offset = player.PlayerData.Hair2Offset.Value,
		skinColor = player.PlayerData.SkinColor.Value,
		face = player.PlayerData.Face.Value,
		shirt = player.PlayerData.Shirt.Value,
		shirtColor = player.PlayerData.ShirtColor.Value,
		pants = player.PlayerData.Pants.Value,
		pantsColor = player.PlayerData.PantsColor.Value
	}
	
	return dataTable
end

function saveData(player)
	local key = generateDataKey(player)
	local data = generateDataTable(player)
	playerData:SetAsync(key, data)
end

function inputData(player, data)
	player.PlayerData.MagicType.Value = data.magicType
	player.PlayerData.MagicType.MagicLevel.Value = data.magicLevel
	player.PlayerData.MagicXP.Value = data.magicXP
	player.PlayerData.MagicXPNeeded.Value = data.magicXPN
	player.PlayerData.MagicEnergy.Value = data.magicEnergy
	player.PlayerData.Levels.Value = data.levels
	player.PlayerData.Levels.XP.Value = data.xp
	player.PlayerData.Levels.XPNeeded.Value = data.xpn
	player.PlayerData.Silver.Value = data.silver
	player.PlayerData.HP.Value = data.hp
	
	player.PlayerData.Hair1.Value = data.hair1
	player.PlayerData.Hair1Color.Value = data.hair1Color
	player.PlayerData.Hair1Offset.Value = data.hair1Offset
	player.PlayerData.Hair2.Value = data.hair2
	player.PlayerData.Hair2Color.Value = data.hair2Color
	player.PlayerData.Hair2Offset.Value = data.hair2Offset
	player.PlayerData.SkinColor.Value = data.skinColor
	player.PlayerData.Face.Value = data.face
	player.PlayerData.Shirt.Value = data.shirt
	player.PlayerData.ShirtColor.Value = data.shirtColor
	player.PlayerData.Pants.Value = data.pants
	player.PlayerData.PantsColor.Value = data.pantsColor	
end

function loadData(player)
	local key = generateDataKey(player)
	local data = playerData:GetAsync(key)
	inputData(player, data)
end

game.Players.PlayerAdded:Connect(function(player)
	local data = Instance.new("Folder")
	data.Name = "PlayerData"
	data.Parent = player	
	
	local magicType = Instance.new("StringValue")
	magicType.Name = "MagicType"
	magicType.Parent = data
	
	local magicLevel = Instance.new("IntValue")
	magicLevel.Name = "MagicLevel"
	magicLevel.Parent = magicType
	
	local magicXP = Instance.new("IntValue")
	magicXP.Name = "MagicXP"
	magicXP.Parent = data
	
	local magicXPN = Instance.new("IntValue")
	magicXPN.Name = "MagicXPNeeded"
	magicXPN.Value = 20
	magicXPN.Parent = data
	
	local magicEnergy = Instance.new("IntValue")
	magicEnergy.Name = "MagicEnergy"
	magicEnergy.Value = 30
	magicEnergy.Parent = data
	
	local levels = Instance.new("IntValue")
	levels.Name = "Levels"
	levels.Value = 1
	levels.Parent = data
	
	local xp = Instance.new("IntValue")
	xp.Name = "XP"
	xp.Parent = levels
	
	local xpn = Instance.new("IntValue")
	xpn.Name = "XPNeeded"
	xp.Value = 100
	xpn.Parent = levels
	
	local silver = Instance.new("IntValue")
	silver.Name = "Silver"
	silver.Parent = data
	
	local hp = Instance.new("IntValue")
	hp.Name = "HP"
	hp.Value = 100
	hp.Parent = data
	
	local hair1 = Instance.new("StringValue")
	hair1.Name = "Hair1"
	hair1.Parent = data
	
	local hair1Color = Instance.new("Vector3Value")
	hair1Color.Name = "Hair1Color"
	hair1Color.Parent = data
	
	local hair1Offset = Instance.new("Vector3Value")
	hair1Offset.Name = "Hair1Offset"
	hair1Offset.Parent = data	
	
	local hair2 = Instance.new("StringValue")
	hair2.Name = "Hair2"
	hair2.Parent = data
	
	local hair2Color = Instance.new("Vector3Value")
	hair2Color.Name = "Hair2Color"
	hair2Color.Parent = data
	
	local hair2Offset = Instance.new("Vector3Value")
	hair2Offset.Name = "Hair2Offset"
	hair2Offset.Parent = data	
	
	local skinColor = Instance.new("Color3Value")
	skinColor.Name = "SkinColor"
	skinColor.Parent = data
	
	local face = Instance.new("StringValue")
	face.Name = "Face"
	face.Parent = data
	
	local shirt = Instance.new("StringValue")
	shirt.Name = "Shirt"
	shirt.Parent = data
	
	local shirtColor = Instance.new("Color3Value")
	shirtColor.Name = "ShirtColor"
	shirtColor.Parent = data
	
	local pants = Instance.new("StringValue")
	pants.Name = "Pants"
	pants.Parent = data
	
	local pantsColor = Instance.new("Color3Value")
	pantsColor.Name = "PantsColor"
	pantsColor.Parent = data
	
	loadData(player)
	
	local teleportData = generateDataTable(player)
	print(teleportData)	
	
	game.ReplicatedStorage.Remotes.Teleport.OnServerEvent:Connect(function(player)
		TeleportService:Teleport(4398454020, player, teleportData)
	end)
end)

game.ReplicatedStorage.Remotes.RemoveData.OnServerEvent:Connect(function(player)
	local id = generateDataKey(player)
	playerData:RemoveAsync(id)
end)

game.Players.PlayerRemoving:Connect(saveData)

I have other places that use the same format of script. On the other places, it works well. But on my current place, it gives the error.

Error : link

2 comments

0

Does this happen everytime a player joins or only for new players?

0

everytime a player joins