game.Players.PlayerAdded:connect(function(player) local stats = Instance.new("IntValue", player) stats.Name = "leaderstats" local level = Instance.new("IntValue", stats) level.Name = "Level" local exp = Instance.new("IntValue", stats) exp.Name = "Exp" local cash = Instance.new("IntValue", player) cash.Name = "Cash" local class = Instance.new("StringValue", player) class.Name = "Class" class.Value = "Laser" local team = Instance.new("StringValue", player) team.Name = "Team" team.Value = "White" player:WaitForDataReady() player.leaderstats.Level.Value = player:LoadNumber("Level") player.leaderstats.Exp.Value = player:LoadNumber("Exp") player.Cash.Value = player:LoadNumber("Cash") level.Changed:connect(function(level) print("Levelup") levelupframe:TweenPosition(UDim2.new(0.5, -150, 0.5, -50), "Out", "Quad", 1, false) leveluptext.Text = "You have leveled up to Level: " .. level levelupframe.CashText.Text = "Cash + 50" wait("3") levelupframe:TweenPosition(UDim2.new(0, -300, 0.5, -50), "Out", "Quad", 1, false) end) end)
I want have this so when a player joins it gets their values etc set up, but I want when they level up to print("Levelup") and show a a frame, There is no error, and it dosent print at all.
I noticed in the Changed event, there's already something called "level." Also, the Changed event returns the property that was changed. So, in order to get the new level, the code would be:
level.Changed:connect(function(property) if property == "Value" then print(level.Value) end end)
Since you used "level" in the parentheses instead of something different (I used "property"), maybe the reason the event doesn't fire could be because the item returned is the name of the item that is supposed to change. I know I didn't word this well, but I did my best. I can clarify in the comments.