so basically i made a base saving script using an inventory method with _G["PlayerData"][Player.Name]["Inventory"][Item.Name] and when attemping to save those items locations on the base it isnt working. here is the script(atleast part of it anyways, if you need the whole script just let me know)

edittttttttttttttttttt---------------- the error output says 142 thats what it is in the script but in the part of the script here it is line 47

edit: here is the error message:

18:08:19.002 - SandBox Tycoon Testing auto-recovery file was created
Finished Loading. (x2)
  table: 0x49eb77cd126bd24f
  18:08:42.017 - ServerScriptService.DataStore:122: attempt to index local 'PlayerData' (a nil value)
18:08:42.018 - Stack Begin
18:08:42.018 - Script 'ServerScriptService.DataStore', Line 122 - upvalue SaveData
18:08:42.019 - Script 'ServerScriptService.DataStore', Line 142
18:08:42.020 - Stack End

	for _,Item in pairs(game.ReplicatedStorage.items:GetChildren()) do
		PlayerData.Inventory[Item.Name] = PlayerData.Inventory[Item.Name] or 0
	end
	
	PlayerData["BasePlateInfromation"] = PlayerData["BasePlateInfromation"] or {}
	
	--PlayerData["BasePlateInfromation"] = {} --ONLY to reset your baseplate data
	
	if PlayerData["BasePlateInfromation"] ~= {} then
		for _,Table in pairs(PlayerData["BasePlateInfromation"]) do
			local tycoon = GetTycoon(Player)
			local itemname = Table[1]
			local x = Table[2]
			local y = Table[3]
			local z = Table[4]
			local rx = Table[5]
			local ry = Table[6]
			local rz = Table[7]
			local realitem = game.ReplicatedStorage.items:FindFirstChild(itemname)
			if realitem then
				local newitem = realitem:Clone()
				newitem.Parent = tycoon
				newitem:SetPrimaryPartCFrame(CFrame.new(Vector3.new(x+tycoon.BasePlate.CFrame.p.X,y+tycoon.BasePlate.CFrame.p.Y,z+tycoon.BasePlate.CFrame.p.Z))*CFrame.Angles(math.rad(rx),math.rad(ry),math.rad(rz)))
				for i,v in pairs(newitem.Model:GetChildren()) do
					if v.Name == "Colored" then
						v.BrickColor = getteamfromplayer(Player).TeamColor
					end
					if v.ClassName == "Script" then
						v.Disabled = false
					end
				end
			end
		end
	end
	PlayerData["Cash"] = PlayerData["Cash"] or 100 --Start Balance	
	--PlayerData.Cash = 100 --ONLY to reset 
	
	local Tag = Instance.new("BoolValue")
	Tag.Name = "Dataloaded"
	Tag.Parent = Player	
	
	_G["PlayerData"][Player.Name] = PlayerData
end

local function SaveData(Player)
	local PlayerData = _G["PlayerData"][Player.Name]
	PlayerData.BasePlateInfromation = SavebasePlate(Player)
	DatData:UpdateAsync(Player.UserId, function(OldData)
		OldData = OldData or {}
		return PlayerData
	end)
end

local function PlayerAdded(Player)
	local Tycoon = SearchEmpty()
	if Tycoon then
		Tycoon.Owner.Value = Player
		LoadData(Player)
		wait()
		Player.CharacterAdded:connect(function(char)
			char.HumanoidRootPart.CFrame = Tycoon.BasePlate.CFrame*CFrame.new(0,20,0)
		end)
	end
end

local function PlayerRemoved(Player)
	SaveData()
	wait()
	local Tycoon = GetTycoon(Player)
	if Tycoon then
		Tycoon.Owner.Value = nil
		for i,v in pairs(Tycoon:GetChildren()) do
			if v.ClassName == "Model" then
				v:Destroy()
			end
		end
	end
end

function game.ReplicatedStorage.GetData.OnServerInvoke(Player)
	if Player:FindFirstChild("Dataloaded") then
		local Data = _G["PlayerData"][Player.Name]
		if Data then
			return Data
		end
	end
end


game.Players.PlayerAdded:connect(PlayerAdded)
game.Players.PlayerRemoving:connect(PlayerRemoved)