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

This works fine in editor but throws nil errors in game. How can I fix this?

Asked by 7 years ago

Hello, I have made a shop system which uses a currency known as skill points. For some reason, when I do a server test outside of game the script works fine, however when I actually play the game it gives me a nil value for the function that takes away skill points after a purchase.

event.OnServerEvent:connect(function (player, ...)
    if player ~= nil then
        local tuple = {...}
        if tuple[1] == "Buy" then
            if tuple[2] == "KillerChance" then
                local mydata = playerdata[player.userId]
                if mydata ~= nil and mydata.skillpoints >= 5 then
                    local price = -5
                    awardskillpoints(player, price)
                    mydata.killerchance = mydata.killerchance + 1
                    local killerchancevalue = player:WaitForChild("Killer Chance")
                    if killerchancevalue ~= nil then
                        killerchancevalue.Value = mydata.killerchance
                    end
                end
            elseif tuple[2] == "OfficerChance" then
                local mydata = playerdata[player.userId]
                if mydata ~= nil and mydata.skillpoints >= 5 then
                    local price = -5
                    awardskillpoints(player, price)
                    mydata.officerchance = mydata.officerchance + 1
                    local officerchancevalue = player:WaitForChild("Officer Chance")
                    if officerchancevalue ~= nil then
                        officerchancevalue.Value = mydata.officerchance
                    end
                end
            elseif tuple[2] == "100Points" then

            end
        end
    end
end)

where it says awards skillpoints, it gives me a nil when actually in the game.

It says awarskillpoints is a nil or something like that.

here is the function

function awardskillpoints(player, skillpoints)
    if player ~= nil and skillpoints ~= nil and skillpointdebounce == false then
        skillpointdebounce = true
        local mydata = playerdata[player.userId]
        if mydata ~= nil then
            mydata.skillpoints = mydata.skillpoints + skillpoints
            local skillpointsvalue = player:WaitForChild("Skill Points")
            if skillpointsvalue ~= nil then
                skillpointsvalue.Value = mydata.skillpoints
                delay(0.00000000000000000000001, function ()
                    skillpointdebounce = false
            end)
        end
    end
    end
end
end

I'm not sure what could possibly be wrong. Please help.

Thank you in advance.

Answer this question