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

Minigame awarding points problem?

I used this script for my minigames

minigames = {}

for i,v in pairs (game.Lighting:GetChildren()) do
   if v:IsA("Model") then
	  table.insert(minigames,v)
   end
end

function playerAdded(player)
	local Id =  Instance.new("IntValue")
	Id.Name = "leaderstats"
	local points =  Instance.new("IntValue",Id)
	points.Name = "Money"
	Id.Parent = player
end

function playerWon(player,points)
local m = Instance.new("Message", workspace)
    m.Text = player.Name.." has won the minigame!"
    local money = player.leaderstats.Money
    money.Value = money.Value + points
    wait(3)
    m:Destroy()
end

function chooseMinigame()
	return minigames[math.random(1,#minigames)]
end

function getParticipants()
   return game.Players:GetPlayers()
end

function teleportPlayers(players,position)
   for _,v in pairs(players) do
	  if v.Character then
         v.Character:MoveTo(position)
      end
   end
end

function loadMinigame(mg)
   local m = mg:clone()
   m.Parent = workspace
   return m
end

function runMinigame(m)
   if m:FindFirstChild("pos") then
	  teleportPlayers(getParticipants(),m.pos.Position)
   end

   while m.time.Value > 0 do
      --TODO: check to see if game is running
      if m.winner.Value then
	     playerWon(m.winner.Value,m.points.Value)
         break
      end
      wait()
   end
end

function endMinigame(m)
   m:Destroy()
end

Game:GetService("Players").PlayerAdded:connect(playerAdded)


while wait() do
   wait(10)
   local m = chooseMinigame()
   local loaded = loadMinigame(m)
   runMinigame(loaded)
   endMinigame(loaded)
   print(3)
end

The problem is, when you touch a brick, it doesn't award points like it should. I do get something in output.

Workspace.main:21: attempt to perform arithmetic on global 'points' (a nil value) 16:26:23.738 - Stack Begin 16:26:23.739 - Script 'Workspace.main', Line 21 - global playerWon 16:26:23.739 - Script 'Workspace.main', Line 56 - global runMinigame 16:26:23.740 - Script 'Workspace.main', Line 74 16:26:23.740 - Stack End

And whenever I touched the brick, the whole script breaks. Someone please help.

1 answer

Your problem is that your not defining how many points the play should get.

To fix this problem I recommend adding another variable called points to the "playerWon" function.

Fixed function :

function playerWon(player,points)
local m = Instance.new("Message", workspace)
	m.Text = player.Name.." has won the minigame!"
	local money = player.leaderstats.Money
	money.Value = money.Value + points
	wait(3)
	m:Destroy()
end

If you want to award points to a player you would call the function like this :

playerWon(game:GetService("Players").FamousDoge,100)

That would give "FamousDoge" 100 points.

If you have any questions, concerns or just need some help with this PM me on ROBLOX!

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