I am working on a Pokemon game using Pokemon Evolutions made by dragon115454 as the base game. Everything went well so far, but after a certain update (I don't know which) people started complaining about their levels not being saved. Although, I didn't edit anything in the save script, so it might be the "stats" script that is the problem.
Saving script:
game.Players.PlayerRemoving:connect(function(p) if p:findFirstChild("stats") then p:SaveInstance("SavedStatPNum"..tostring(game.PlaceId),p.stats) end end) game.Players.PlayerAdded:connect(function(p) for k = 1, 60, 0.03 do wait() if p:findFirstChild("stats") and p.DataReady then break end end local Loaded = nil if p:findFirstChild("stats") and pcall(function() Loaded = p:LoadInstance("SavedStatPNum"..tostring(game.PlaceId)) end) then for j, v in pairs(Loaded:GetChildren()) do pcall(function() p.stats[v.Name].Value = v.Value end) end end end)
Stats script:
function onXPChanged(player, XP, level) if XP.Value>=level.Value * 10 then XP.Value = XP.Value - level.Value * 10 level.Value = level.Value + 1 end end function onLevelUp(player, XP, level) local m = Instance.new("Hint") m.Parent = game.Workspace m.Text = player.Name .. " has gained a level." wait(3) m.Parent = nil end function onPlayerEntered(newPlayer) local stats = Instance.new("IntValue") stats.Name = "stats" local xp = Instance.new("IntValue") xp.Name = "XP" xp.Value = 0 local level = Instance.new("IntValue") level.Name = "Level" level.Value = 1 local c = Instance.new("IntValue") c.Name = "Cash" c.Value = 0 local f = Instance.new("IntValue") f.Name = "FS" f.Value = 15 local t = Instance.new("IntValue") t.Name = "Type" t.Value = 0 local t2 = Instance.new("IntValue") t2.Name = "Type2" t2.Value = 0 local p = Instance.new("IntValue") p.Name = "Potion" p.Value = 3 local ob = Instance.new("IntValue") ob.Name = "OranBerry" ob.Value = 5 local ThunderStone = Instance.new("IntValue") ThunderStone.Name = "ThunderStone" ThunderStone.Value = 0 local FireStone = Instance.new("IntValue") FireStone.Name = "FireStone" FireStone.Value = 0 local WaterStone = Instance.new("IntValue") WaterStone.Name = "WaterStone" WaterStone.Value = 0 local LeafStone = Instance.new("IntValue") LeafStone.Name = "LeafStone" LeafStone.Value = 0 local e1 = Instance.new("IntValue") e1.Name = "Event1" e1.Value = 0 local pidgey = Instance.new("IntValue") pidgey.Name = "Pidgey" pidgey.Value = 0 local caterpie = Instance.new("IntValue") caterpie.Name = "Caterpie" caterpie.Value = 0 local sbulbasaur = Instance.new("IntValue") sbulbasaur.Name = "SBulbasaur" sbulbasaur.Value = 0 local mew = Instance.new("IntValue") mew.Name = "Mew" mew.Value = 0 local r = Instance.new("IntValue") r.Name = "Rock" r.Value = 0 local rc = Instance.new("IntValue") rc.Name = "RareCandy" rc.Value = 0 xp.Parent = stats level.Parent = stats c.Parent = stats f.Parent = stats t.Parent = stats t2.Parent = stats p.Parent = stats ThunderStone.Parent = stats e1.Parent = stats pidgey.Parent = stats caterpie.Parent = stats ob.Parent = stats FireStone.Parent = stats WaterStone.Parent = stats LeafStone.Parent = stats sbulbasaur.Parent = stats mew.Parent = stats r.Parent = stats rc.Parent = stats stats.Parent = newPlayer xp.Changed:connect(function() onXPChanged(newPlayer, xp, level) end) level.Changed:connect(function() onLevelUp(newPlayer, xp, level) end) newPlayer.Changed:connect(function (property) if (property == "Character") then onPlayerRespawned(newPlayer) end end) end game.Players.ChildAdded:connect(onPlayerEntered)
I added a manually save/load script and that works well, so I have no flippin' idea why the old one suddenly doesn't work anymore.
My place: http://www.roblox.com/games/50269531/Pokemon-Advanced-Alpha
I can provide more informations if needed. Thank you for reading! :)