creating fire quiver from einbech to payon_in

Moderator: Moderators

Message
Author
Cloudthers
Noob
Noob
Posts: 14
Joined: 20 Nov 2009, 06:47
Noob?: No

creating fire quiver from einbech to payon_in

#1 Post by Cloudthers »

Hi I have created this macro 2 years ago, but I think It still works fine. :)
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

   }
}