game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(char)
local leaderstats = player:WaitForChild("RandomStats")
local CheckValue = leaderstats:WaitForChild(script.RandomStats.Value)
if CheckValue.Value >= 0 and CheckValue.Value < 500 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(3)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local a = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("STARTER"):Clone()
a.Name = "Rank"
a.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 500 and CheckValue.Value < 1000 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(3)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local b = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("BASIC"):Clone()
b.Name = "Rank"
b.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 1000 and CheckValue.Value < 1500 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(3)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local c = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("PRO"):Clone()
c.Name = "Rank"
c.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 1500 and CheckValue.Value < 2000 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(3)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local d = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("HERO"):Clone()
d.Name = "Rank"
d.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 2000 and CheckValue.Value < 2500 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(3)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local e = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("ELITE"):Clone()
e.Name = "Rank"
e.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 2500 and CheckValue.Value < 3000 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(3)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local f = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("MASTER"):Clone()
f.Name = "Rank"
f.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 3000 and CheckValue.Value < 3500 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(3)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local g = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("CHAMPION"):Clone()
g.Name = "Rank"
g.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 3500 and CheckValue.Value < 4000 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(3)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local h = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("LEGEND"):Clone()
h.Name = "Rank"
h.Parent = char:WaitForChild("Head")
end
end
CheckValue.Changed:Connect(function()
if CheckValue.Value >= 0 and CheckValue.Value < 500 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(2)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local a = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("STARTER"):Clone()
a.Name = "Rank"
a.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 500 and CheckValue.Value < 1000 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(2)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local b = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("BASIC"):Clone()
b.Name = "Rank"
b.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 1000 and CheckValue.Value < 1500 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(2)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local c = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("PRO"):Clone()
c.Name = "Rank"
c.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 1500 and CheckValue.Value < 2000 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(2)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local d = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("HERO"):Clone()
d.Name = "Rank"
d.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 2000 and CheckValue.Value < 2500 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(2)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local e = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("ELITE"):Clone()
e.Name = "Rank"
e.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 2500 and CheckValue.Value < 3000 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(2)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local f = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("MASTER"):Clone()
f.Name = "Rank"
f.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 3000 and CheckValue.Value < 3500 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(2)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local g = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("CHAMPION"):Clone()
g.Name = "Rank"
g.Parent = char:WaitForChild("Head")
end
elseif CheckValue.Value >= 3500 and CheckValue.Value < 4000 then
if char:WaitForChild("Head"):FindFirstChild("Rank") then
task.wait(2)
char:WaitForChild("Head"):WaitForChild("Rank"):Destroy()
end
if not char:WaitForChild("Head"):FindFirstChild("Rank") then
local h = game.ServerStorage:WaitForChild("Ranks"):WaitForChild("LEGEND"):Clone()
h.Name = "Rank"
h.Parent = char:WaitForChild("Head")
end
end
end)
end)
end)
i think you should only use one :WaitForChild(“Head”) and remove the :WaitForChild(“Rank”) behiind the WaitForChild(“Head”)
I didn’t try it, but it should give you a good idea of how to simplify your code.
local ranks = {
"STARTER",
"BASIC",
"PRO",
"HERO",
"ELITE",
"MASTER",
"CHAMPION",
"LEGEND",
}
function onCheckValueChanged(CheckValue, char)
if CheckValue.Value > 0 then
local threshold = 0
for i = 1, #ranks do
threshold += 500
if CheckValue.Value < threshold then
if char.Head:FindFirstChild("Rank") then
task.wait(3)
char.Head.Rank:Destroy()
else
local a = game.ServerStorage.Ranks:WaitForChild(ranks[i]):Clone()
a.Name = "Rank"
a.Parent = char.Head
end
break
end
end
end
end
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(char)
local leaderstats = player:WaitForChild("RandomStats")
local CheckValue = leaderstats:WaitForChild(script.RandomStats.Value)
char:WaitForChild("Head")
game.ServerStorage:WaitForChild("Ranks")
onCheckValueChanged(CheckValue, char)
CheckValue.Changed:Connect(function()
onCheckValueChanged(CheckValue, char)
end)
end)
end)
2 Likes