Spent the last 2 days making a coins system and it does not work (shocker)

If any scripts are broken/flagging errors in console then this can cause a disruption, yes.

found the culprit
this is kind of embarrassing
the AssetLoader script inside our donation board has caused all the disruptions but for what reason idk

require(5799918029).Parent = script.Parent

its a regular script and heres the ancestry

Well, just enabled all the scripts again
turns out this is only part of the problem. it stops working when the other scripts are enabled

Just thought I’d mention that debugging is way more than just print statements. In fact, I rarely find myself using print statements when debugging, with the sole exception being when I want to rapidly verify data. You can accomplish the same thing you mentioned (seeing if each part of the script works) by using breakpoints instead. This is far simpler, and significantly increases the speed of your debugging workflow.

other culprit:

devproductconfig

I realize its running while true but its wrapped in a function. idk

local MPS = game:GetService("MarketplaceService")

local checkpoints = game.Workspace:WaitForChild("Checkpoints")
local debounce = true

while true do
	MPS.ProcessReceipt = function(receiptInfo)
		if receiptInfo.ProductId == 1228396734 then
			if debounce == true then	
				local player = game.Players:GetPlayerByUserId(receiptInfo.PlayerId)
				local stage = player:WaitForChild("leaderstats").Stage
				local checkpointname = checkpoints[stage.Value].Name 
				player.leaderstats.Stage.Value = player.leaderstats.Stage.Value + 1
				player:LoadCharacter()
				debounce = false
				wait(0.5)
				debounce = true
			end
		end
	end
	wait(.0000005)
end

to solve would i put it all in the same script, same function, different if statements? or elseif statements?

You can only have one ProcessReceipt function in your entire game, so yes keeping it in one script and having it handle all of your dev products is what you will have to do.

Do not put this in a while true do loop, it isn’t necessary.

You have to put processreceipts in the same script or use .PromptProductPurchaseFinished