makeini.mac - Partner to bazaar.mac makes bazaar ini's

A forum for you to dump all the macros you create, allowing users to use, modify, and comment on your work.

Moderator: MacroQuest Developers

User avatar
driftinsupra
Official loudmouth
Official loudmouth
Posts: 212
Joined: Tue Jan 28, 2003 9:25 pm

Post by driftinsupra » Tue Dec 16, 2003 11:40 pm

Yea thats it...I will plug this in lata...I got a math final tommorow...HITTIN THE BOOKS!!!

MQFan
orc pawn
orc pawn
Posts: 12
Joined: Sat Aug 30, 2003 10:02 pm

Post by MQFan » Tue Dec 30, 2003 5:59 pm

Yet more self-editing in a pitiful attempt to not look terminally stupid.

On to the only useful thing I said:

Lookin forward to running this one!!! Thanks DS!

Westcott
decaying skeleton
decaying skeleton
Posts: 5
Joined: Fri Dec 19, 2003 7:21 am

Post by Westcott » Mon Jan 05, 2004 11:54 pm

I tried all of the changes listed above, but still have a problem with purchasing and selling. The macro finds what I want moves effortlessly to taget, but always wants to purchase first item. I even let it run through and behold I try to buy the traders bag everytime. So needless to say I still have an empty .ini file. I think this macro is great and i want to use it.

Onezero
a ghoul
a ghoul
Posts: 95
Joined: Thu Jan 01, 2004 1:19 pm
Location: Normal, IL
Contact:

Post by Onezero » Tue Jan 06, 2004 1:06 am

I get the same problem. Macro always tries to purchase the first item in the merchant's window. I've tried editing it myself a little but I can't seem to get it :-\
.[b].[/b]:[b]:[/b] Onezero
"[i]Health is merely the slowest rate at which you can die.[/i]"

RDPidb
a lesser mummy
a lesser mummy
Posts: 69
Joined: Mon Dec 15, 2003 1:14 am

Post by RDPidb » Tue Jan 06, 2004 1:14 am

keep bag or inventory open.

Westcott
decaying skeleton
decaying skeleton
Posts: 5
Joined: Fri Dec 19, 2003 7:21 am

Post by Westcott » Tue Jan 06, 2004 2:35 pm

Hmmm...still doesnt work. I haven't got a single macro to work that buys or sells items. Maybe there is nothing wrong with the macros. Could there be something else contributing to this? Btw, I've tried 3 different buy sell macros and get the same result. Why cant everything I want be in the first slot. :evil:

User avatar
Bad Karma
a snow griffon
a snow griffon
Posts: 346
Joined: Sat Nov 22, 2003 9:34 pm
Contact:

Post by Bad Karma » Tue Jan 06, 2004 7:44 pm

Hmm...seems to me there's another version (more recent, more efficient, etc) somewhere around here....
If only I could remember where to find it...

Oh! I know...I can read the recent topics in the forum menu, or *search* for it!

/sarcasim off
[b]- Bad Karma
________________________________________[/b]

In our own quest for excellence, we should strive to take the time to help those who help themselves.

All others should [b]RTFM[/b]!!!!!!!!!

Westcott
decaying skeleton
decaying skeleton
Posts: 5
Joined: Fri Dec 19, 2003 7:21 am

Post by Westcott » Tue Jan 06, 2004 10:11 pm

I am so very sorry for ruining your day. I must have cost you so much of your valuable time to post your helpful reply. I should spent more than two days searching for an answer to my question before I try to ask someone who might already know. I also posted a question in the help forum if you would like to add some of your valuable insight.

User avatar
Bad Karma
a snow griffon
a snow griffon
Posts: 346
Joined: Sat Nov 22, 2003 9:34 pm
Contact:

Post by Bad Karma » Tue Jan 06, 2004 10:31 pm

Geesh...get a sense of humor...
Sarcasim aside, there actually was some info there....like the fact that there was a newer, working version posted....sue me for not posting a link, but I assumed you were smart enough to find it on your own...While you're at it, you can also sue me for overestimating your IQ.
[b]- Bad Karma
________________________________________[/b]

In our own quest for excellence, we should strive to take the time to help those who help themselves.

All others should [b]RTFM[/b]!!!!!!!!!

User avatar
Elric
Cheese Whore
Cheese Whore
Posts: 466
Joined: Sun Nov 23, 2003 12:31 am
Location: Tampa, Fl
Contact:

Post by Elric » Tue Jan 06, 2004 10:54 pm

Westcott.

If you don't use the search function, prepare to be flamed.

Period.

What's worse, prepare to be flamed by Lax. Who is the best at it, since he has no fear of repercussions.

Though I think I'm going to start flaming the idiotic posts I see on a daily basis, just to see if I can get them to stop.
-Elric

Westcott
decaying skeleton
decaying skeleton
Posts: 5
Joined: Fri Dec 19, 2003 7:21 am

Post by Westcott » Tue Jan 06, 2004 11:13 pm

Sorry everyone. I was prepared to get flamed. I did search but I was looking in the wrong places i guess. I'll keep searching.

pauly
decaying skeleton
decaying skeleton
Posts: 1
Joined: Wed Jan 21, 2004 7:41 am

any luck?

Post by pauly » Wed Jan 21, 2004 7:44 am

Well, tried various different methods to get the buy/sell to work (will admit barely getting my way through MQ, but i am learning daily. Scoured the search and forums for this supposed 'newer/more efficent' version, but am unable to find it. Any help perhaps on getting this to work or a direction towards the other elusive version? i REALLY don't want to even have to concider making a .ini from scratch.. ouch.

Any help would be keen

fishez
orc pawn
orc pawn
Posts: 19
Joined: Tue Dec 09, 2003 3:42 pm

Post by fishez » Thu Jan 22, 2004 2:28 pm

Ok, I've been tinkering with this and the problem I have seems to stem from how the names of the items are handled.

Maybe someone could shed some light since I have found no answers in my searches so far but I'm still looking through other posts also.

Assuming my command line is /mac makeini word 5 and the first word found is Words of Tranquility.

This line /varset theitem "$bazaar(0,name)" echos the result Words of Tranquility1)

This result of course requires some massaging.

This line /varset theitem $bazaar(0,name) echos the result Words

I'm assuming based on the results that the quotes force it to include the entire name.

Now for what really confuses me.

/echo "$bazaar(0,name)" returns "Words of Tranquility"1). Similiar to the first varset above except with quotes.

However, /echo $bazaar(0,name), without quotes returns Words of Tranquility. The exact result that is needed to present to the merchant for an exact match.

Why would the same string $bazaar(0,name) return 1 value in in a straight /echo and a different value in a /echo of a varset?

What am I missing here? Is this by design?

fishez
orc pawn
orc pawn
Posts: 19
Joined: Tue Dec 09, 2003 3:42 pm

Post by fishez » Sat Jan 24, 2004 12:51 pm

Thanks to CapnBry for his response in the Plugin Development forum with what appears to be the fix for this macro.

I am now able to get the correct item named passed to the traders and merchants so that the macro can find the correct item instead of just purchasing the 1st one in the trader/merchant inventory.

I made some changes to the buy/sell routines by using the very good buyitem.mac and sellitem.mac from the Depot and massaging them a little. Thanks to the writer(s) of those macros.

Here is what I have that is working for me. I am not a true programmer but a tinkerer. It would take me forever to write this macro from scratch but I have always been good at tinkering with macro/scripts that are already built and debugging them. All credit goes the the original writer of this macro for the hard work put into it. I'm merely assisting in debugging. Any questions about the major portion of the script should be directed to him since I probably can't answer them anyways.

MakeInI.mac

Code: Select all

|Driftinsupra second usefull macro makeinir.mac 
|Makes ini files for use in bazaar.mac
|Modified by Fishez 1-24-04
|Macro works after making changes to the mq2bzsrch.cpp and recompiling
|Also used the buyitem and sellitem routines from the Depot and massaged them a little
|for some targeting of the items that I waws having.
|Have only done minor testing at this point but it did buy item from trader, sell item to
|vendor, rinse and repeat several times before I end it.
#define DEBUG               1==1
#include routines2.inc
#include buyitems.inc
#include sellitem.inc 
#turbo 

sub main 

/declare file global 
/declare isle global 
/declare counter local 
/declare l1 local 
/declare traderid local 
/declare price local 
/declare curmoney local 
/declare newmoney local 
/declare profit local 
/declare item local 
/declare theitem global 
/declare Token global 
/declare check local 
/declare donecheck local 


/varset file C:\mq2-latest\release\macros\newini.ini 
/varset counter 1 
/varset check 0 
/varset donecheck 0 
:mainloop 


/echo searching for @Param0 
/bzsrch race any class any price 0 @Param1 "@Param0" 

| is request done? 
:loop 
/delay 1  
/if "$bazaar()"=="FALSE" /goto :loop 

/if n $bazaar(count)==0 { 
    /echo @Param0 not found, exiting 
    /return 
    } 
      
} else { 
    /echo found $bazaar(count) items 
} 

/varset theitem "$bazaar(0,name)" 
/echo The item found is $bazaar(0,name)

:checkloop 
/if "@theitem"=="$ini(@file,names,val@counter)" /varset donecheck 1 
/varadd counter 1 
/echo @donecheck 
/varset counter $int(@counter) 
/echo "$ini(@file,names,val@counter)" 
/if "$ini(@file,names,val@counter)"!="NOTFOUND" /goto :checkloop 
/if n @donecheck==1 { 
   /varset donecheck 0 
   /varadd check 1 
   /varset counter 1 
   /varset check $int(@check) 
   /varset theitem "$bazaar(@check,name)" 
   /if "$left(6,"@theitem")=="$bazaar /endmacro 

   /goto :checkloop 
   } 



/varset price $bazaar(@check,price) 
/varset traderid $bazaar(@check,trader) 
/echo @theitem 
/echo targeting @traderid 
/target id @traderid 
/face 
/call traderisle $target(x) $target(y) 
/call movetoisle @isle 
/face 
/call movetotarg 10 
/click right target 
/delay 20 

/echo Buying @theitem
/call buyitems "@theitem" 1
/call moveback @isle 
/call walkpath merch 10 
/varset curmoney $char(cash) 
/target "Merchant Tekram" 
/face 
/click right target 
/delay 20 
/echo Entering SellItem to sell @theitem
/call sellitem "@theitem"
/delay 20 
/click left merchant done 
/varset newmoney $char(cash) 
/call walkpath merchb 10 
/varsub newmoney @curmoney 

   /ini "@file" "names" "val$int(@counter)" "@theitem" 
   /ini "@file" "prices" "val$int(@counter)" "$int(@newmoney)" 
/varset counter 0 
/varset check 0 
/varset donecheck 0  
/goto :mainloop 
/return 


Sub movetoisle(isle) 
   /if n @isle==61 /call walkpath 61 10 
   /if n @isle==62 /call walkpath 62 10 
   /if n @isle==81 /call walkpath 81 10 
   /if n @isle==82 /call walkpath 82 10 
   /if n @isle==91 /call walkpath 82 10 
   /if n @isle==92 /call walkpath 92 10 
   /if n @isle==51 /call walkpath 51 10 
   /if n @isle==52 /call walkpath 52 10 
   /if n @isle==21 /call walkpath 21 10 
   /if n @isle==22 /call walkpath 22 10 
   /if n @isle==31 /call walkpath 31 10 
   /if n @isle==32 /call walkpath 32 10 
   /return 

Sub traderisle(xloc,yloc) 
   /if n @xloc>95 /if n @xloc<129 /if n @yloc>-770 /if n @yloc<-589 /varset isle 61 
   /if n @xloc<95 /if n @xloc>62 /if n @yloc>-770 /if n @yloc<-589 /varset isle 62 
   /if n @xloc>-104 /if n @xloc<-72 /if n @yloc>-772 /if n @yloc<-590 /varset isle 81 
   /if n @xloc<-104 /if n @xloc>-145 /if n @yloc>-772 /if n @yloc<-590 /varset isle 82 
   /if n @xloc>-203 /if n @xloc<-171 /if n @yloc>-713 /if n @yloc<-527 /varset isle 91 
   /if n @xloc<-203 /if n @xloc>-250 /if n @yloc>-713 /if n @yloc<-527 /varset isle 92 
   /if n @xloc>-118 /if n @xloc<107 /if n @yloc<-541 /if n @yloc>-571 /varset isle 51 
   /if n @xloc>-118 /if n @xloc<107 /if n @yloc>-541 /if n @yloc<-514 /varset isle 52 
   /if n @xloc>95 /if n @xloc<129 /if n @yloc>-495 /if n @yloc<-296 /varset isle 21 
   /if n @xloc<95 /if n @xloc>62 /if n @yloc>-495 /if n @yloc<-296 /varset isle 22 
   /if n @xloc>-104 /if n @xloc<-72 /if n @yloc>-495 /if n @yloc<-296 /varset isle 31 
   /if n @xloc<-104 /if n @xloc>-145 /if n @yloc>-495 /if n @yloc<-296 /varset isle 32 
    
   /return 


Sub moveback(isle) 
   /if n @isle==61 /call walkpath 61b 10 
   /if n @isle==62 /call walkpath 62b 10 
   /if n @isle==81 /call walkpath 81b 10 
   /if n @isle==82 /call walkpath 82b 10 
   /if n @isle==91 /call walkpath 82b 10 
   /if n @isle==92 /call walkpath 92b 10 
   /if n @isle==51 /call walkpath 51b 10 
   /if n @isle==52 /call walkpath 52b 10 
   /if n @isle==21 /call walkpath 21b 10 
   /if n @isle==22 /call walkpath 22b 10 
   /if n @isle==31 /call walkpath 31b 10 
   /if n @isle==32 /call walkpath 32b 10 
   /return 

Sub walkpath 
    |Initialization 
    
    |Note -- Edit the following line to represent the full path where you want your 

Paths.ini file 
    |        to be stored. Like: "c:\macroquest\macros\data\Paths.ini" 
    /declare gINIFile local 
    /declare gPathNumber local 
    /declare gStartPoint local 
    /declare gEndPoint local 
    /declare gStep local 
    /declare gThreshold local 
    /declare tEchoTimer timer 
    /declare l0 local 
    /declare l1 local 
    /declare l2 local 
    /declare l3 local 
    /declare pointface local 

    /declare MyXLOC local 
    /declare MyYLOC local 
    /declare ObstCount local    

    /varset gINIFile "C:\mq2-latest\release\macros\paths.ini" 
    
    /varset gPathNumber @Param0 
    
    /varset gThreshold @Param1 
    /varset gStartPoint @Param2 
    /varset gEndPoint @Param3 
    /varset pointface 0 
    
    /if @gThreshold=="" { 
        /echo No Threshold specified -- using 3. 
        /varset gThreshold 2 
    } 
    
    /if n @gStartPoint==0 { 
        /varset gStartPoint 1 
        /varset gEndPoint $int($ini("@gINIFile","@gPathNumber","numpoints")) 
    } 
    
    /if n @gStartPoint==-1 { 
        /varset gEndPoint 1 
        /varset gStartPoint $int($ini("@gINIFile","@gPathNumber","numpoints")) 
    } 
    
    /varset l0 @gStartPoint 
    
    /if @gStartPoint<@gEndPoint { 
        /varset gStep 1 
    } else /if @gStartPoint>@gEndPoint { 
        /varset gStep -1 
    } 
    
    /varset l1 $int($ini("@gINIFile","@gPathNumber","$int(@l0) Y")) 
    /varset l2 $int($ini("@gINIFile","@gPathNumber","$int(@l0) X")) 

    /face loc @l1, @l2 

    /call AutoRun 1 
    
    :MainLoop 
         /varset l1 $int($ini("@gINIFile","@gPathNumber","$int(@l0) Y")) 
         /varset l2 $int($ini("@gINIFile","@gPathNumber","$int(@l0) X")) 

        
        /varset tEchoTimer 5 
        /if @l0==@gStartPoint /echo $distance(@l1,@l2) 
        /varset MyXLOC $char(x) 
        /varset MyYLOC $char(y) 
        /varset ObstCount 0 
        :MainLoop2 
            /doevents 
            
            /if @tEchoTimer==0 { 
                /varset tEchoTimer 1s 
                /echo $distance(@l1,@l2) 
            } 
            
            |The 'fast' paramater of the /face function prevents the command 
            |from smoothing out the turn, and instead immediately turns your 
            |character to face the specified direction. It is commented out here 
            |in favor of the smoothed /face, because it looks more natural and 
            |realistic. However, you will see problems with high-resolution paths 
            |(ie, paths in which the distances in between snapshots is very low) where 
            |your character will run in circles around points. There are two things 
            |you can do about this. The first is to increase the DistanceThreshold 
            |number that you pass when you start the script. The second is to uncomment 
            |the "/face fast nopredict" line, and comment the "/face nopredict" line. 
            |This will look a little less natural, but if you're using a high- 
            |resolution path in the first place, it really shouldn't matter. 
            
            |Another time where you might want to use /face fast is in dungeons or 
            |other tight areas where precision is important. 
            
            /face fast nopredict loc @l1, @l2 
            |/if n pointface<=1 /face loc @l1, @l2 
            /varadd pointface 1 
      
            /varadd ObstCount 1 
            /if n @ObstCount>=10 { 
               /if n @MyXLOC==$char(x) /if n @MyYLOC==$char(y) { 
                  /sendkey up up 
                  /sendkey down down 
                  /if n $rand(99)>50 { 
                    /delay 1s 
                    /sendkey up down 
                    /sendkey down Right 
                    /delay 5 
                    /sendkey up Right 
                    /sendkey down up 
                    /delay 1s 
                    /sendkey up up 
                  } else { 
                    /delay 1s 
                    /sendkey up down 
                    /sendkey down left 
                    /delay 5 
                    /sendkey up left 
                    /sendkey down up 
                    /delay 1s 
                    /sendkey up up        
                  } 
                 /face loc @l1, @l2    
                 /call autorun 1 
                 /sendkey up Right 
                 /sendkey up Left 
                        
             } 
             /varset MyXLOC $char(x) 
             /varset MyYLOC $char(y) 
             /varset ObstCount 0 
         } 
            /if n $distance(@l1,@l2)>@gThreshold /goto :MainLoop2 
        
        /echo Point @l0 Reached. 
        /varset pointface 0 
        /varset l0 $int($calc(@l0+@gStep)) 
        
        /if @l3==1 /goto :MainLoopExit 
        /if @l0==@gEndPoint /varset l3 1 
        
        /goto :MainLoop 
    
    :MainLoopExit 
    
    /call AutoRun 0 
    /echo Destination reached. Exiting. 
/return 

Sub AutoRun 
   /if @Param0==1 /sendkey down up 
   /if @Param0==0 /sendkey up up 
/return 



Routines2.inc

Code: Select all

| Routines2.inc from code in the Depot
Sub movetotarg(distance) 
  /declare MyXLOC local 
  /declare MyYLOC local 
  /declare ObstCount local 

  /varset MyXLOC $char(x) 
  /varset MyYLOC $char(y) 
  /varset ObstCount 0 
  /face 
  :mobloop 
  /if n $target(distance)>=@distance { 
    /call autorun 1 
    /face nolook
    /varadd ObstCount 1 
    /if n @ObstCount>=3 { 
      /if n @MyXLOC==$char(x) /if n @MyYLOC==$char(y) { 
          /sendkey up up 
          /sendkey down down 
          /if n $rand(99)>50 { 
            /delay 1s 
            /sendkey up down 
            /sendkey down Right 
            /delay 5 
            /sendkey up Right 
            /sendkey down up 
            /delay 1s 
            /sendkey up up 
          } else { 
            /delay 1s 
            /sendkey up down 
            /sendkey down left 
            /delay 5 
            /sendkey up left 
            /sendkey down up 
            /delay 1s 
            /sendkey up up        
         } 
        
         /sendkey up down 
         /sendkey up Right 
         /sendkey up Left          
     } 
     /varset MyXLOC $char(x) 
     /varset MyYLOC $char(y) 
     /varset ObstCount 0 
    }  
    
  /goto :mobloop 
  } 
  /call autorun 0 
  /return 

Sub gotoloc(xloc,yloc) 
  /declare MyXLOC local 
  /declare MyYLOC local 
  /declare ObstCount local 

  /varset MyXLOC $char(x) 
  /varset MyYLOC $char(y) 
  /varset ObstCount 0 
  :locloop 
  /face loc @xloc 
  /if "@yloc"=="u" /Press u 
  /call AutoRun 1 
  /varadd ObstCount 1 
  /if n @ObstCount>=3 { 
    /if n @MyXLOC==$char(x) /if n @MyYLOC==$char(y) { 
        /sendkey up up 
        /sendkey down down 
        /if n $rand(99)>50 { 
          /delay 1s 
          /sendkey up down 
          /sendkey down Right 
          /delay 5 
          /sendkey up Right 
          /sendkey down up 
          /delay 1s 
          /sendkey up up 
        } else { 
          /delay 1s 
          /sendkey up down 
          /sendkey down left 
          /delay 5 
          /sendkey up left 
          /sendkey down up 
          /delay 1s 
          /sendkey up up        
        } 
        
       /sendkey up down 
       /sendkey up Right 
       /sendkey up Left          
     } 
     /varset MyXLOC $char(x) 
     /varset MyYLOC $char(y) 
     /varset ObstCount 0 
    } 
    
  /if n $distance(@xloc)>10 /goto :locloop    
  
  } 
  /call autorun 0 
  /return 

Sub AutoRun 
   /if @Param0==1 /sendkey down up 
   /if @Param0==0 /sendkey up up 
/return
===============================================

SellItem.inc

Code: Select all

Sub SellItem 
   /declare OldMoney local 
   /declare NewMoney local 
   /varset OldMoney $char(cash) 

/windowstate inventory open

   :Finding 
      /if n $count("@Param0")==0 /goto :Done 

      /finditem "@Param0"
      /selectitem "@Param0" self

/echo @Param0 Found

      /sendkey down shift 
   :WaitFind 
      /if "$cursor()"=="FALSE" /goto :WaitFind 

   :Selling 
      /delay 1s 
      /sellitem $selecteditem(count) 

/echo Selling @Param0

      /click left merchant sell 

   :WaitSell 
      /varset NewMoney $char(cash) 
      /if n @NewMoney==@OldMoney /goto :WaitSell 
      /goto :Finding 

   :Done 
      /sendkey up shift 
      /windowstate inventory close
/return 
===============================================

Buyitems.inc

Code: Select all

|BuyItems.inc
|Usage: /call BuyItems <name of item> <number of items> 
#define DEBUG               1==1

Sub BuyItems 
   /declare OldMoney local 
   /declare Stacks local 
   /declare Remainder local 
   /declare loop local 
   /declare count local 

/if DEBUG /echo In BuyItems  
|   /windowstate inventory open    
/if DEBUG /echo Buying amount @Param1
   /if n @Param1<=0 /return 
/if DEBUG /echo Buying Item @Param0
   /if $merchant(has,"@Param0")==FALSE /return 

/if DEBUG /echo Buying @param0    
   /selectitem "@Param0" merchant
   /if "$selecteditem(count)"=="NOT_STACKABLE" { 
      /varset count 0 
       } else { 
      /varset count 1 
   } 

/if n @count==1 { 
   /if n @Param1>$calc($calc($freeinv(space)*20)+$calc(20-$calc($count("@Param0")%20))) /return 
} else /if n @count==0 { 
   /if n @Param1>$freeinv(space) /return 
} 

/if n @count==1 { 
/if n @Param1>20 { 
  /varset Stacks $int($calc(@Param1/20)) 
  /varset Remainder $calc(@Param1%20) 
  /buyitem @Remainder 
/echo @Remainder @Stacks 
  /for loop 0 to @Stacks 
    /varset OldMoney $char(cash) 
    :buyloop 
    /buyitem 20 
    /if n $char(cash)==@OldMoney /goto :buyloop 
  /next loop 
  } else /if n @Param1<=20 { 
/buyitem @Param1 
} 
} else /if n @count==0 { 
/for loop 1 to @Param1 
  /varset OldMoney $char(cash) 
  :buyloop2 
  /buyitem 1 
  /if n $char(cash)==@OldMoney /goto :buyloop2 
/next loop 
} 
/windowstate inventory close
/return
===============================================

Again, thanks very much to the folks who truely wrote this code and allow folks like me to use it!!

Hopefully, this project is back on track at least a little. This worked for me. If it doesn't work for you, put in the time to figure out why as I did. Then share with the programmer wannabe's like me.

Now I just need to figure out the best items to search for to build the ini file for the Bazaar.mac to use.

fishez
orc pawn
orc pawn
Posts: 19
Joined: Tue Dec 09, 2003 3:42 pm

Post by fishez » Sat Jan 24, 2004 12:54 pm

Also, I like to use the echos and debug statements to let me know what the program is doing at certain points. Feel free to remove those as you see fit. It does, however, give you some feed back while things are running. /shrug

I also am still getting the occasional can' parse from the paths.ini but I have not looked into that since the mac seems to continue fine and complete it's intended route.