• IS THIS SITE UGLY? Click "RG3" at the very bottom-left of this page to change it. To dismiss this notice, click the X --->

Question - is it possible to buy multiple nonstacking items from a merchant with a macro or command

Apr 1, 2014
i want to buy 100 widgets from a_merchant_01. widgets don't stack, so i have to click over and over. is there any way to circumvent this click madness?
Dec 29, 2017
Sub BuyItem(string ItemToBuy, int amount)
    /if (${FindItemCount[${ItemToBuy}]}>= ${amount}) /return
    /declare i int local
    /declare QTY int local
    /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
    /declare ListItem int local ${Window[MerchantWnd].Child[ItemList].List[=${ItemToBuy},2]}
    /declare count int local ${FindItemCount[${ItemToBuy}]}

    /if (!${ListItem}) {
        /echo couldn't find ${ItemToBuy}
    } else {
        /notify MerchantWnd ItemList listselect ${ListItem}
        /delay 5
    /echo Buying ${ItemToBuy} Till I get ${amount}
    /while (${QTY}>0) {
        /varset count ${FindItemCount[${ItemToBuy}]}
        /if (${QTY}>999) {
            /buyitem 1000
            /delay 3 ${FindItemCount[${ItemToBuy}]} > ${count}
            /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
        } else /if (${QTY}>0 && ${QTY}<1000) {
            /buyitem ${QTY}
            /delay 5 ${FindItemCount[${ItemToBuy}]} > ${count}
            /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
        /if (${FindItemCount[${ItemToBuy}]}>${count}) /echo \ar${FindItemCount[${ItemToBuy}]}\aw/\ar${amount}\awx\ap${ItemToBuy} \at${Math.Calc[${FindItemCount[${ItemToBuy}]}/${amount}*100]}\aw% Done.
    /while (${Window[MerchantWnd].Open}) {
        /delay 5
/call BuyItem "Widget" "100"

This assumes you're already close enough to a_merchant_01
This assumes the merchant is targeted, /target a_merchant_01
This assumes the merchant is open, /click right target
This assumes the item is available on said merchant
This assumes the "amount" input on the /call is the total you want on your person, not the total you want to buy.

This should handle stackable and non-stackable items.
Last edited: