Group Reward Not Always Being Given

As the title says, the group reward I made isn’t always giving the reward to all the players in the group in a server. How can I make this code more reliable?

-- Group reward --
local groupID = 6006248
local balloon = game.ReplicatedStorage:WaitForChild("Balloon")

local random = Random.new()
local hue, sat, val = random:NextNumber(),random:NextNumber(),random:NextNumber()
balloon:WaitForChild("Balloon").Color = Color3.fromHSV(hue, sat, val)

local function onPlayerJoin(plr)
	local random = Random.new()
	local hue, sat, val = random:NextNumber(),random:NextNumber(),random:NextNumber()
	balloon:WaitForChild("Balloon").Color = Color3.fromHSV(hue, sat, val)
	print(plr.Name)
	print(plr:IsInGroup(groupID))
	plr.CharacterAdded:Wait()

	if plr:IsInGroup(groupID) then
		balloon:Clone().Parent = plr.Backpack
		balloon:Clone().Parent = plr.StarterGear

	end
end
for _, player in pairs(game:GetService("Players"):GetPlayers()) do
	onPlayerJoin(player)
end
game:GetService("Players").PlayerAdded:Connect(onPlayerJoin)

Thanks.

Assuming you want players to receive the items even if they die/respawn, you should use a .CharacterAdded event.

1 Like