I'm trying to give a badge every time this loop fires, but it just does not do anything. No errors in output either.
Regular script:
local Knock = script.Parent.Knock
local a = script.Parent
local knockbadgeEvent = game.ServerStorage.knockbadge
while true do
wait(math.random(5,6))
knockbadgeEvent:FireAllClients()
Knock:Play()
Local Script:
local badgeID = 2124476391
local bs = game:GetService("BadgeService")
local player = game:GetService("Players").LocalPlayer
local function onknockbadgeFired()
bs:AwardBadge(player.UserId, badgeID)
end
There is a lot more to the regular script but it's not going to help solve it it's just a bunch of material and surfacelight brightness changing.

2 comments
But it is the correct ID: https://www.roblox.com/badges/2124476391/Whos-there
Do you have an event connector that connects your award function? Like in localscript: knockbadgeEvent.OnClientEvent:Connect(onknockbadgeFired)