Code: Select all
Sub Main
/if (!${Target.ID} && !${Merchant.Open}) {
/echo Target a merchant!
/endmacro
}
/if (${Target.ID} && !${Merchant.Open}) {
/click right target
/delay 1s
}
/if (${Ini[Restock.ini,${Me.Name}].Length}) /call ProcessIni
/if (${Merchant}) {
/keypress esc
/keypress esc
}
/return
Sub ProcessIni
/declare index int local
/declare KeyNames string local ${Ini[Restock.ini,${Me.Name}]}
/declare ItemName string local
/declare ItemQty int local
/for index 1 to 100
/if (${KeyNames.Arg[${index},|].Length} > 2) {
/varset ItemName ${KeyNames.Arg[${index},|]}
/varset ItemQty ${Ini[Restock.ini,${Me.Name},"${ItemName}"]}
/echo Checking: ${ItemName} (${FindItemCount[=${ItemName}]}/${ItemQty})
/if (${FindItemCount[=${ItemName}]} < ${ItemQty}) /call Restock "${ItemName}" ${ItemQty}
}
/next index
/return
Sub Restock(ItemName,Qty)
/declare ItemSlot int local
/if (${Merchant.Item[=${ItemName}].InvSlot}) /call BuyItems "${ItemName}" ${Qty}
/return
Sub BuyItems(ItemName,Qty)
/declare StartCash int local ${Me.Cash}
/declare QtyStart int local ${FindItemCount[=${ItemName}]}
/declare QtyNeeded int local
/if (!${Merchant.Open}) {
/echo No Merchant open to buy from
/return
}
/if (${FindItemCount[=${ItemName}]} >= ${Qty}) {
/echo Already have all the ${ItemName}(s) needed.
/return
}
/itemnotify ${Merchant.Item[=${ItemName}].InvSlot} leftmouseup
/varset QtyNeeded ${Math.Calc[${Qty} - ${FindItemCount[=${ItemName}]}].Int}
:BuyItemLoop0
/doevents
/if (${QtyNeeded} >= 20) {
/call CheckFunds "${ItemName}" ${Merchant.Item[=${ItemName}].BuyPrice} 20
/if (${Me.FreeInventory[${Merchant.Item[=${ItemName}].Size}]}) {
/buyitem 20
} else {
/echo No space to buy more ${ItemName}, exiting
/endmacro
}
/varset QtyNeeded ${Math.Calc[${QtyNeeded}-20]}
} else {
/call CheckFunds "${ItemName}" ${Merchant.Item[=${ItemName}].BuyPrice} ${QtyNeeded}
/buyitem ${QtyNeeded}
}
/delay 1s
/if (${FindItemCount[=${ItemName}]} < ${Qty}) /goto :BuyItemLoop0
/echo Purchased ${Math.Calc[${Qty} - ${QtyStart}].Int} ${ItemName}(s) for ${Math.Calc[(${StartCash}-${Me.Cash})/1000].Int}pp ${Math.Calc[((${StartCash}-${Me.Cash})/100)%10].Int}gp ${Math.Calc[((${StartCash}-${Me.Cash})/10)%10].Int}sp ${Math.Calc[((${StartCash}-${Me.Cash})%10)].Int}cp
/return
Sub CheckFunds(ItemName,Price,Qty)
/if (${Me.Cash} < ${Math.Calc[${Price} * ${Qty}]}) {
/echo Insufficient funds to purchase: ${Qty} x ${ItemName}
/keypress esc
/keypress esc
/endmacro
}
/return
Code: Select all
[Character Name]
Item1=Qty
Item2=Qty
....
Code: Select all
[Some Mage]
Pearl=160
Malachite=80
Star Ruby=20
Misty Thicket Picnic=20
Kaladim Constitutional=20
[SomeCleric]
Peridot=120
Emerald=20
Pearl=40
Star Ruby=20
Misty Thicket Picnic=20
Fuzzlecutter Formula 5000=20

