I have an NPC animation, that starts when you purchased them. I want to have a transition of an item being created, and moved with the animation to the dropper. At the moment, I can’t get timing right, as the dropped item is created on the server, while animation runs from client, so I can’t get it perfectly synced.

DROP_TIME is specific to each dropper, so I can have custom drop times for each drop type.
while true do
wait(DROP_TIME)
local NewDrop = Instance.new("Part")
NewDrop.Position = dropper.Position
NewDrop.Size = Vector3.new(2, 2, 2)
NewDrop.Name = "Drop"
NewDrop.Material = Enum.Material.SmoothPlastic
NewDrop:SetAttribute("CashGiven", dropper:GetAttribute("CashGiven"))
PhysicsService:SetPartCollisionGroup(NewDrop, "DropItems") -- Set Collision Group
NewDrop.Parent = workspace
Debris:AddItem(NewDrop, 6) -- In case it never touches a collector
wait(DROP_TIME)
end