Everytime I add a new pet into my game, i get the error "Data is not a valid member of player, it randomly goes away usually but its annoying how do i fix that?
script:
local Players = game:GetService("Players") local Datastore = game:GetService("DataStoreService"):GetDataStore("PlayerData") local RS = game:GetService("ReplicatedStorage") function getLevel(totalXP) local Increment = 0 local RequiredXP = 100 for i = 0, RS.Pets.Settings.MaxPetLevel.Value do RequiredXP = 100 + (25*i) if totalXP >= (100*i) + Increment then if i ~= RS.Pets.Settings.MaxPetLevel.Value then if totalXP < ((100*i) + Increment) + RequiredXP then return i end else return i end end Increment = Increment+(i*25) end end Players.PlayerRemoving:Connect(function(plr) local Pets = plr.Pets local Data = plr.Data local PetData = {} local PlayerData = {} for _,PetObject in pairs(Pets:GetChildren()) do PetData[#PetData + 1] = { Name = PetObject.Name, TotalXP = PetObject.TotalXP.Value, Equipped = PetObject.Equipped.Value, PetID = PetObject.PetID.Value, Multiplier1 = PetObject.Multiplier1.Value, Multiplier2 = PetObject.Multiplier2.Value, Type = PetObject.Type.Value } end for _,DataValue in pairs(Data:GetChildren()) do PlayerData[#PlayerData + 1] = { Name = DataValue.Name, ClassName = DataValue.ClassName, Value = DataValue.Value } end Datastore:SetAsync(plr.UserId, {["PetData"] = PetData, ["PlayerData"] = PlayerData}) end) Players.PlayerAdded:Connect(function(plr) local Pets = Instance.new("Folder") local Data = Instance.new("Folder") local SavedData = Datastore:GetAsync(plr.UserId) Pets.Name = "Pets" Data.Name = "Data" if SavedData ~= nil then local PetData = SavedData.PetData local PlayerData = SavedData.PlayerData for i,v in pairs(PetData) do local PetObject = RS.Pets.PetFolderTemplate:Clone() local Settings = RS.Pets.Models:FindFirstChild(v.Name).Settings local TypeNumber = RS.Pets.CraftingTiers:FindFirstChild(v.Type).Value local Level = getLevel(v.TotalXP) PetObject.Name = v.Name PetObject.Equipped.Value = v.Equipped PetObject.TotalXP.Value = v.TotalXP PetObject.Multiplier1.Value = Settings.Multiplier1.Value * (RS.Pets.Settings.CraftMultiplier.Value ^ TypeNumber) + (Settings.LevelIncrement.Value * Level) PetObject.Multiplier2.Value = Settings.Multiplier2.Value * (RS.Pets.Settings.CraftMultiplier.Value ^ TypeNumber) + (Settings.LevelIncrement.Value * Level) PetObject.PetID.Value = v.PetID PetObject.Type.Value = v.Type PetObject.Parent = Pets end for i,v in pairs(script.Data:GetChildren()) do local DataValue = v:Clone() local DataTable = nil DataValue.Parent = Data for i,v in pairs(PlayerData) do if v.Name == DataValue.Name then DataTable = v end end if DataTable ~= nil then if DataValue.Name == "MaxStorage" or v.Name == "MaxEquipped" then DataValue.Value = RS.Pets.Settings:FindFirstChild("Default".. DataValue.Name).Value else DataValue.Value = DataTable.Value end else if DataValue.Name == "MaxStorage" or v.Name == "MaxEquipped" then DataValue.Value = RS.Pets.Settings:FindFirstChild("Default".. DataValue.Name).Value end end end else for i,v in pairs(script.Data:GetChildren()) do local DataValue = v:Clone() DataValue.Parent = Data if DataValue.Name == "MaxStorage" or v.Name == "MaxEquipped" then DataValue.Value = RS.Pets.Settings:FindFirstChild("Default".. DataValue.Name).Value end end end game.Players.PlayerRemoving:Connect(function(player) Datastore:SetAsync(player.UserId, player:FindFirstChild("Value").Value) end) Pets.Parent = plr Data.Parent = plr end)