How do I make a weapon that requires ammunition?
This is simple; in the Cost... attack editor submenu set one or more items as costs. Make sure to set "Cost" (the number of items to consume) as 1 or more. Then turn on the "Check costs when used as a weapon" bitset. You should probably also turn on "Re-check costs after attack delay", otherwise if two heroes both use a bow at once but you only have one arrow, they might still both succeed.
Beware that attacks/spells used outside of battle (from the Spells menu or attached to an item) ignore all costs, including MP, gold and items.