Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How come my ScreenGui doesn't come down when I level up?

So when a player levels up, they should get a GUI message of them leveling up, but it doesn't show up. I am using a local script inside of a ScreenGui.

Script:

local congrats = script.Parent.Info.Congrats
local player = game.Players.LocalPlayer
local gui = script.Parent.Info
local Delay = 0.5

while true do
	wait()
	if player.leaderstats:WaitForChild("Exp").Value >= player.leaderstats:WaitForChild("ExpNeeded").Value then
		if player.leaderstats:WaitForChild("Level").Value == 1 then
	        gui:TweenPosition(UDim2.new(.25,0,.218,0),"Out","Quint",Delay,true)
			wait(3)
			gui:TweenPosition(UDim2.new(.25,0,1.218,0),"Out","Quint",Delay,true)
		elseif player.leaderstats:WaitForChild("Level").Value == 2 then
	        gui:TweenPosition(UDim2.new(.25,0,.218,0),"Out","Quint",Delay,true)
			wait(3)
			gui:TweenPosition(UDim2.new(.25,0,1.218,0),"Out","Quint",Delay,true)
		end
	end
end

1 comment

0

First two tweens gotta be “in”

1 answer

✓ Accepted answer

You can set variables before the while true do to check, so when level goes up, will set a new value.

You can use this script:

repeat wait() until game.Players.LocalPlayer
local congrats = script.Parent.Info.Congrats
local player = game.Players.LocalPlayer
local gui = script.Parent.Info
local Delay = 0.5

local currentlevel = player.leaderstats:WaitForChild("Level") -- Current level
local nextlevel = tonumber(currentlevel.Value+1) -- Set next level

while true do
    wait()
    if currentlevel.Value == nextlevel then
		currentlevel = player.leaderstats:WaitForChild("Level") -- Set current level
		nextlevel = tonumber(currentlevel.Value+1) -- Set next level
	   --------------------------------------------------------------------
		gui:TweenPosition(UDim2.new(.25,0,.218,0),"Out","Quint",Delay,true)
		wait(3)
		gui:TweenPosition(UDim2.new(.25,0,1.218,0),"Out","Quint",Delay,true)
    end
end

If you want to put a text try it:

repeat wait() until game.Players.LocalPlayer
local congrats = script.Parent.Info.Congrats
local player = game.Players.LocalPlayer
local gui = script.Parent.Info
local textlabel = gui.TextLabel -- Text on change if up level.
local Delay = 0.5

local currentlevel = player.leaderstats:WaitForChild("Level") -- Current level
local nextlevel = tonumber(currentlevel.Value+1) -- Set next level

while true do
    wait()
    if currentlevel.Value == nextlevel then
		textlabel.Text = "Congratulations " .. player.Name .. " you got level: " .. tostring(player.leaderstats:WaitForChild("Level").Value)
        currentlevel = player.leaderstats:WaitForChild("Level") -- Set current level
        nextlevel = tonumber(currentlevel.Value+1) -- Set next level
       --------------------------------------------------------------------
        gui:TweenPosition(UDim2.new(.25,0,.218,0),"Out","Quint",Delay,true)
        wait(3)
        gui:TweenPosition(UDim2.new(.25,0,1.218,0),"Out","Quint",Delay,true)
    end
end

6 comments

0

Thanks, and also how can I change my textlabel for a certain level like when a player reaches level 3 the text for local congrats would say he/she unlocked this?

0

I will add this on script. wait.

0

just do something like -- x.Text = "Congrats on leveling up to".. currentlevel.Value -- yes the dots are required

0

My bad, it should be -- x.Text = "Congrats on leveling up to ".. currentlevel.Value --

0

Oh i forgot. i edit now.

0

That works too thanks

This discussion is preserved as it was. New answers, comments, and votes are closed.