Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Can I get some help?

Asked by 9 years ago

Ok so I made this level up script, but every time when a person enters the game they would explode. After they explode everything would be fine, but I was just wondering if someone could help me fix it. I'll put the script at the bottom.

scoreKey = "PlayerScore"
levelKey = "PlayerLevel"

function onPlayerEntered(newPlayer)
    if newPlayer.Name ~= "Player1" then
    newPlayer:WaitForDataReady()
    end

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

    local xp = Instance.new("IntValue")
    xp.Name = "XP"

    local level = Instance.new("IntValue")
    level.Name = "Lvl"

    xp.Parent = stats
    level.Parent = stats
    stats.Parent = newPlayer    

    xp.Changed:connect(function() onXPChanged(newPlayer, xp, level) end)
    level.Changed:connect(function() onlevelChanged(newPlayer, xp, level) end)  
    newPlayer.Changed:connect(function (property) end)

local ok, ret = pcall(function() return newPlayer:LoadNumber(scoreKey) end)
    if ok then
        if ret ~= 0 then
            xp.Value = ret
        else
            print("Nothing to load/score was 0")
        end
    else
        print("Error:", ret)
    end

    local ok2, ret1 = pcall(function() return newPlayer:LoadNumber(levelKey) end)
    if ok2 then
        if ret1 ~= 0 then
            level.Value = ret1
        else
            print("Nothing to load/score was 0")
            level.Value = 1
        end
    else
        print("Error:", ret1)
    end
    wait(2)

    if newPlayer.Character~=nil then
    newPlayer.Character.Humanoid.MaxHealth = level.Value * 25 + 100
    newPlayer.Character.Humanoid.Health = 0
    else
    wait()
    end
end


function onXPChanged(player, XP, level)
    if player.Character~=nil then
    if XP.Value>=level.Value * 125  then
        XP.Value = (XP.Value - (level.Value * 125))
        level.Value = level.Value + 1
        else
        wait()
    end
    end
end

function onlevelChanged(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.new(Color3.new(10, 1, 10))
            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
    if player.Character ~= nil then
    player.Character.Humanoid.MaxHealth = level.Value * 25 + 100
    player.Character.Humanoid.Health = level.Value * 25 + 100
    end
    local m = Instance.new("Hint")
    m.Parent = game.Workspace
    m.Text = player.Name .. " has leveled up!"
    wait(2)
    m.Parent = nil  
end

local respawnTime = .5

local Players = Game:GetService("Players")
Players.CharacterAutoLoads = false

Players.PlayerAdded:connect(function(Player)
    Player.CharacterAdded:connect(function(Character)
        -- find the humanoid, and detect when it dies
        local Humanoid = Character:FindFirstChild("Humanoid")
        if Humanoid then
            Humanoid.Died:connect(function()
                -- delay, then respawn the character
                wait(respawnTime)       
                Player:LoadCharacter()
                Player.Character.Humanoid.MaxHealth = Player.supercool.Lvl.Value * 25 + 100
                Player.Character.Humanoid.Health = Player.supercool.Lvl.Value * 25 + 100
                end)

            end
    end)
    Player:LoadCharacter()
end)


game.Players.ChildAdded:connect(onPlayerEntered)

Answer this question