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.
