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

Need help with a rpg script?

I'm trying to make it to where every time you level up the exp you need to go to the next level is 25 more so

level 1 = 100 exp level 2 = 125 exp level 3 = 150 exp

but I don't know what part of the script controls that...

the issue is in the first 6 lines....

function onXPChanged(player, XP, level) 
if XP.Value>=level.Value * 100 and level.Value < script.LevelCap.Value then -- issue here
XP.Value = XP.Value - level.Value * 25 --issue here
level.Value = level.Value + 1 
end 
end 

function onLevelUp(player, XP, level) 
if player.Character~=nil then 
for i = 1,5 do 
local fireworks = Instance.new("Part") 
fireworks.Shape = 0 
fireworks.formFactor = "Symmetric" 
fireworks.Size = Vector3.new(1,1,1) 
fireworks.BrickColor = BrickColor.Random() 
fireworks.CFrame = player.Character.Head.CFrame + Vector3.new(0,2,0) 
fireworks.Parent = game.Workspace 
game:GetService("Debris"):AddItem(fireworks, 2) 
fireworks.Velocity = Vector3.new(math.random(-30,30),math.random(-30,30),math.random(-30,30)) 
end 
end 
local m = Instance.new("Hint") 
m.Parent = game.Workspace 
m.Text = player.Name .. " has gained a level!" 
wait(5) 
m.Parent = nil 
end 


function saveScore(player, score)
	player:SaveNumber("Lvl", score)
end

function saveScore2(player, score)
	player:SaveNumber("XP", score)
end

function saveScore3(player, score)
	player:SaveNumber("Gold", score)
end

function saveScore4(player, score)
	player:SaveNumber("Strength", score)
end

function saveScore5(player, score)
	player:SaveNumber("Vitality", score)
end

function loadScore(player, clickCounter)
	local score = player:LoadNumber("Lvl") 

	if score ~= 1 then
		clickCounter.Value = score
	else
		print("Nothing to load/score was 0")
	end

end

function loadScore2(player, clickCounter)
	local score = player:LoadNumber("XP") 

	if score ~= 0 then
		clickCounter.Value = score
	else
		print("Nothing to load/score was 0")
	end

end

function loadScore3(player, clickCounter)
	local score = player:LoadNumber("Gold") 

	if score ~= 10 then
		clickCounter.Value = score
	else
		print("Nothing to load/score was 0")
	end

end

function loadScore4(player, clickCounter)
	local score = player:LoadNumber("Strength") 

	if score ~= 0 then
		clickCounter.Value = score
	else
		print("Nothing to load/score was 0")
	end
	
end

function loadScore5(player, clickCounter)
	local score = player:LoadNumber("Vitality") 

	if score ~= 0 then
		clickCounter.Value = score
	else
		print("Nothing to load/score was 0")
	end
	
end

function onPlayerEntered(newPlayer)

		

		local stats = Instance.new("IntValue")
		stats.Name = "leaderstats"

		local clicks = Instance.new("IntValue")
		clicks.Name = "Level"
		clicks.Value = 1

		local clicks2 = Instance.new("IntValue")
		clicks2.Name = "EXP"
		clicks2.Value = 0

		local clicks3 = Instance.new("IntValue")
		clicks3.Name = "Gold"
		clicks3.Value = 10
		
		local clicks4 = Instance.new("IntValue")
		clicks4.Name = "Strength"
		clicks4.Value = 0
		
		local clicks5 = Instance.new("IntValue")
		clicks5.Name = "Vitality"
		clicks5.Value = 0 


		clicks.Parent = stats
		clicks2.Parent = stats
		clicks3.Parent = stats
		clicks4.Parent = stats
		clicks5.Parent = stats
		stats.Parent = newPlayer

clicks2.Changed:connect(function() onXPChanged(newPlayer, clicks2, clicks) end) 
clicks.Changed:connect(function() onLevelUp(newPlayer, clicks2, clicks) end) 

		newPlayer:WaitForDataReady() -- IMPORTANT: after player.DataReady = true, it won't become false again. You need DataReady to be true for a player before you can load or save data.

		-- try loading the player's score
		loadScore(newPlayer, clicks)
		loadScore2(newPlayer, clicks2)
		loadScore3(newPlayer, clicks3)
		loadScore4(newPlayer, clicks4)
		loadScore5(newPlayer, clicks5)


newPlayer.CharacterAdded:connect(function(c) 
c.Humanoid.MaxHealth = newPlayer.leaderstats.Lvl.Value * 20 + 100
c.Humanoid.Health = newPlayer.leaderstats.Lvl.Value * 20 + 100
end) 
end 

function onPlayerRemoving(player)
	print("Attempting to save score for " .. player.Name)
	local stats = player:FindFirstChild("leaderstats")
	if (stats ~= nil) then 
		local clicks = stats:FindFirstChild("Level")
		local clicks2 = stats:FindFirstChild("EXP")
		local clicks3 = stats:FindFirstChild("Gold")
		local clicks4 = stats:FindFirstChild("Strength")
		local clicks5 = stats:FindFirstChild("Vitality")
		if (clicks ~= nil)and(clicks2 ~= nil)and(clicks3 ~= nil)and(clicks4 ~= nil)and(clicks5 ~= nil) then
			saveScore(player, clicks.Value)
			saveScore2(player, clicks2.Value)
			saveScore3(player, clicks3.Value)
			saveScore4(player, clicks4.Value)
			saveScore5(player, clicks5.Value)
		end
	end
end

game.Players.PlayerAdded:connect(onPlayerEntered)
game.Players.PlayerRemoving:connect(onPlayerRemoving)

1 answer

Try this, if it doesn't work, send me a PM of your game, and I'll work on it later.

XP.Value = XP.Value + 25 --

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