I read that process receipt can only be called back once. And it seems that this remote event is fired more than once but I'm using it to link to the punch animation. How would I code this so it all fits in place, the player buys the devproduct, when they punch it works and only for them.

local MS = game:GetService("MarketplaceService")
devproductId =  134412521
local events = game.Workspace.Events

events.punchEvent.OnServerEvent:connect(function(plr)
	MS.ProcessReceipt = function(receiptinfo)
	if plr.userId == receiptinfo.PlayerId then
		if receiptinfo.ProductId == devproductId then
	print("Yes")
if plr.Backpack:FindFirstChild("Fight") then
plr.Backpack.Fight.Main.Fighting.Damage.Damageamt.Value = 50
else
workspace[plr.Name].Fight.Main.Fighting.Damage.Damageamt.Value = 100
	end 
wait(15)
	if plr.Backpack:FindFirstChild("Fight") then
plr.Backpack.Fight.Main.Fighting.Damage.Damageamt.Value = 10   
else
	workspace[plr.Name].Fight.Main.Fighting.Damage.Damageamt.Value = 10
				end 
			end
		end
	end
end)