Ways to award points (Not Player Points)

I am working on a points system for a group and I am trying to figure out the best and most secure way to award points for promotions.

function plusPoint(plr)
	local MarketServ = game:GetService("MarketplaceService")
	local Event = script.RemoteEvent
	
	if MarketServ:PlayerOwnsAsset(10536995) then
		Event.OnServerEvent:Connect(function(plr)
			plr.leaderstats.points.Value = plr.leaderstats.points.Value + 2
		end)
	elseif MarketServ:PlayerOwnsAsset(10537070) then
		Event.OnServerEvent:Connect(function(plr)
			plr.leaderstats.points.Value = plr.leaderstats.points.Value + 5
		end)
	elseif MarketServ:PlayerOwnsAsset(10537070) and MarketServ:PlayerOwnsAsset(10536995) then
		Event.OnServerEvent:Connect(function(plr)
			plr.leaderstats.points.Value = plr.leaderstats.points.Value + 7
		end)
	else
		Event.OnServerEvent:Connect(function(plr)
			plr.leaderstats.points.Value = plr.leaderstats.points.Value + 1
		end)
	end
end

Hello RAMMgamming!
Are you like trying to make a system that gives every minute or every 10 minutes or whenever you want gives people an certain amount of points? Let’s 10 Points Each minute?

Hey, I recommend you make a playeradded event, and make a while true do loop.

Example of what I mean:

game.Players.PlayerAdded:Connect(function(player)
      while true do
             wait(120) -- set it to the intervenal you want
             if not game.Players:FindFirstChild(player.Name) then
                   break -- so it doesn't error constantly
             else
                  player.leaderstats.points.Value += 100
         end
      end
end)

In this system they would get points from serving a player or cleaning up a spill