What you have to do is make 2 char class merchant in one ID. One for for buying fire arrow from shop in einbech (char slot 1) and another one for making quiver in payon_in (char slot 0). Each Merchant should have rent a cart and gained weight enough to carry 30 000 fire arrows.
Here's the codes
Code: Select all
automacro buyfirearrow {
inventory "Fire Arrow" < 30000
location einbech, ein_in01
set stopquiver 0
set zeny 0
exclusive 1
run-once 1
call {
pause 2
do eval $::Macro::Data::varStack{zeny} = $::char->{'zenny'}
if ($zeny >= 1000) goto next2
$stopquiver = 1 ## 1 -> merchant in einbech doesnt have enough money to buy arrow
log ============================ no more money ===========================
log ========================= $.datetime zeny $zeny =========================
pause 2
$charPlayer = 0 ## change char in payon
do conf char $charPlayer
release buyfirearrow
do relog
stop ## macro suspended
:next2
if (@inventory(Fire Arrow) < 0) goto next00
$arrowToBuy = @eval(30000-@invamount(Fire Arrow)) ## calculating to even the arrow sum to 30k in inventory
goto next
:next00
$arrowToBuy = 30000
:next
[
do move ein_in01 189 18
]
do talknpc 189 15 b b1,$arrowToBuy ## buy 30k fire arrow and put them into cart
if (@cart(Fire Arrow) >= 0) goto nextto
pause 0.2
do cart add @inventory(Fire Arrow) 30000
do talknpc 189 15 b b1,$arrowToBuy ## buy another 30k fire arrown and put them into inventory, so the totals 60k
:nextto
release buyfirearrow
}
}
automacro restock {
inventory "Fire Arrow" == 30000
location einbech, ein_in01
exclusive 1
run-once 1
call {
if (@config(storageAuto) == 0) goto walkagain0
do conf storageAuto 0
:walkagain0
if (@config(autoTalkCont) == 0) goto walkagain1
do conf autoTalkCont 0
:walkagain1
if (@config(storageAuto_keepOpen) == 1) goto walkagain
do conf storageAuto_keepOpen 1
:walkagain
if ($.pos == "180 130" && $.map == "einbech") goto walkthrough
[
do move einbech 180 130
]
if ($.pos != "180 130" && $.map != "einbech") goto walkagain
:walkthrough
do talknpc 181 132 w2 c r1 n
:loopback
if (@eval(exists $::storage{opened}?1:0)) goto open
log ============================ wait a moment...
pause 2
goto loopback
:open
pause 2
if (@storage(Fire Arrow) < 0) goto putarrow
if (@storamount(Fire Arrow) >= 30000) goto changechar
$arrowloose = @eval(30000-@storamount(Fire Arrow))
do storage add @inventory(Fire Arrow) $arrowloose
goto end0
:putarrow
do storage add @inventory(Fire Arrow)
pause 0.2
if (@storamount(Fire Arrow) >= 30000) goto changechar
pause 0.2
do storage close
goto end0
:changechar ##change char in payon
do storage close
pause 0.2
if (@inventory(Fire Arrow) >= 0) goto end000 ## move fire arrow from cart to inventory
if (@cart(Fire Arrow) < 0) goto end000
do cart get @cart(Fire Arrow) 30000
:end000
pause 0.2
$charPlayer = 0
do conf char $charPlayer
release restock
do relog
stop
:end0
release restock
}
}
automacro takefromkafra {
inventory "Fire Arrow" < 500
location payon, payon_in01
set quivermax 15000
exclusive 1
run-once 1
call {
:begining
if (@config(storageAuto) == 0) goto walkagain02
do conf storageAuto 0
:walkagain02
if (@config(autoTalkCont) == 0) goto walkagain12
do conf autoTalkCont 0
:walkagain12
if (@config(storageAuto_keepOpen) == 1) goto walkagain2
do conf storageAuto_keepOpen 1
:walkagain2
if ($.pos == "177 223" && $.map == "payon") goto walkthrough1a
[
do move payon 177 223
]
if ($.pos != "177 223" && $.map != "payon") goto walkagain2
:walkthrough1a
pause 2
do talknpc 175 226 w2 c r1 n
pause 2
$ii = 0
:loopback1
if (@eval(exists $::storage{opened}?1:0)) goto open1
log ============================ wait a moment...
$ii = @eval($ii + 1)
if ($ii == 5) goto begining
pause 2
goto loopback1
:open1
if (@inventory(Fire Arrow Quiver) < 0) goto takearrownow
do storage add @inventory(Fire Arrow Quiver)
:takearrownow ## get fire arrow from storage
do eval $::Macro::Data::varStack{zeny} = int($::char->{'zenny'})
if ($zeny < 500) goto endup ## check zeny for paying quiver npc
if ($stopquiver == 1 && @storage(Fire Arrow) < 0) goto endup
if (@storamount(Fire Arrow Quiver) >= $quivermax && @storage(Fire Arrow) < 0) goto endup
if (@storage(Fire Arrow) < 0) goto changechar
if (@storamount(Fire Arrow) >= 30000) goto takeall
if (@storamount(Fire Arrow) > 15000) goto gettocart
do storage get @storage(Fire Arrow) @storamount(Fire Arrow)
goto savetoinv
:gettocart
$arrowloose2 = @eval(@storamount(Fire Arrow)-15000)
do storage get @storage(Fire Arrow) $arrowloose2
do storage gettocart @storage(Fire Arrow) 15000
goto savetoinv
:changechar ## change char to get another 30k fire arrows from merchant in einbech before quiver processing
$charPlayer = 2
do conf char $charPlayer
do relog
release all
stop
:endup
log ============================ dont have enough money to make quiver === end of all macros
log ================================= $.datetime =================================
do relog 10000 ## stop!
stop
:takeall
if (@inventory(Fire Arrow) < 0) goto takeall1
$arrowloose1 = @eval(15000-@invamount(Fire Arrow))
do storage get @storage(Fire Arrow) $arrowloose1
do storage gettocart @storage(Fire Arrow) 15000
goto savetoinv
:takeall1
do storage get @storage(Fire Arrow) 15000
do storage gettocart @storage(Fire Arrow) 15000
:savetoinv
pause 0.2
do storage close
:end
release takefromkafra
release all
}
}
automacro makequiver {
inventory "Fire Arrow" >= 500
location payon, payon_in01
exclusive 1
run-once 1
call {
if (@config(autoTalkCont) == 0) goto walkbegin3
do conf autoTalkCont 0
:walkbegin3
if ($.pos == "10 130" && $.map == "payon_in01") goto gowalk4
[
do move payon_in01 10 130
]
if ($.pos != "10 130" && $.map != "payon_in01") goto walkbegin3
:gowalk4
##r4 = fire, 5 = silver, 6 = wind, 7 = stone, 8 = crystal, 9 = shadow
do talknpc 5 134 w2 c c c c r4 c r0 c c r0 c n
if (@cart(Fire Arrow) < 0) goto end
do cart get @cart(Fire Arrow)
pause 1
do talknpc 5 134 w2 c c c c r4 c r0 c c r0 c n
:end
release makequiver
release all
}
}