I made a script where if u click on an NPC it checks whether u own a button (in this case an animation button) if u do own it then the NPC won't give u the animation but if u do not own it then the NPC will give you the animation.

Here's the script:

`local say = {"Waddup Dawg", "You deserve this dance bruh", "Cya man!"}
local Decline = {"I taught you everything man", "Cya man!"}
local RS = game.ReplicatedStorage
local rE = RS.RemoteEvent
local Anim = script.AnimValue
local Rank = Anim.RankValue


script.Parent.ClickDetector.MouseClick:Connect(function(player)
	local Frame = player.PlayerGui.Inventory.Frame.ScrollingFrame
	if not Frame:FindFirstChild(Anim.Value) then
		script.Parent.ClickDetector.MaxActivationDistance = 0
		player.leaderstats.Collection.Value = player.leaderstats.Collection.Value + 1
		player.PlayerGui.NpcChatGui.Frame1.Frame.NpcName.Text = script.Parent.Name
		player.PlayerGui.NpcChatGui.Enabled = true
		for i, v in pairs(say) do
			for i = 1, string.len(v) do wait(0.025)
				player.PlayerGui.NpcChatGui.Frame1.Frame2.NpcText.Text = string.sub(v, 1, i)
			end
			wait(string.len(v) / 10)
		end
		player.PlayerGui.NpcChatGui.Enabled = false
		rE:FireClient(player, Anim.Value, Rank.Value)
		script.Parent.ClickDetector.MaxActivationDistance = 32 
	else
		script.Parent.ClickDetector.MaxActivationDistance = 0
		player.PlayerGui.NpcChatGui.Frame1.Frame.NpcName.Text = script.Parent.Name
		player.PlayerGui.NpcChatGui.Enabled = true
		for i, v in pairs(Decline) do
			for i = 1, string.len(v) do wait(0.025)
				player.PlayerGui.NpcChatGui.Frame1.Frame2.NpcText.Text = string.sub(v, 1, i)
			end
			wait(string.len(v) / 10)
		end
		player.PlayerGui.NpcChatGui.Enabled = false
		script.Parent.ClickDetector.MaxActivationDistance = 32
	end
end)`