Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.

SO this makes me wonder, is there a way to have the mac re-call itself? And would that unload the memory leak?
[2015/06/02 22:37:12] [MQ2] Moving to Marie
[2015/06/02 22:37:17] [MQ2] Targeting #Marie_Fay00
[2015/06/02 22:37:19] [MQ2] Opening merchant/guildbank window
[2015/06/02 22:37:19] [MQ2] Waiting 5s for merchant/guildbank window to populate
[2015/06/02 22:37:28] [MQ2] Moving to Zone In
[2015/06/02 22:37:31] Flow ran into another subroutine.
[2015/06/02 22:37:31] buychips.mac@17 (SafeTarget(string targ)): Sub SafeTarget(string targ)
[2015/06/02 22:37:32] The current macro has ended.
Sub Main
/declare Vendor string outer Marie
/call MoveToMarie
/call SafeTarget ${Vendor}
/call BuyChips
/call MoveToPorter
/return
| --------------------------------------------------------------
| Sub: SafeTarget
| --------------------------------------------------------------
Sub SafeTarget(string targ)
/declare targid int local 0
:retarget
/if (${Target.ID} && ${Target.ID}==${Spawn[${targ}].ID}) /return
/if (${Spawn[${targ}].ID}) {
/varset targid ${Spawn[${targ}].ID}
/if (${Spawn[${targ}].Distance}<100) {
/echo Targeting ${Spawn[${targ}]}
/target id ${targid}
/delay 30 ${Target.ID}==${targid}
}
}
/if (!${Target.ID}) {
/echo [SafeTarget] couldnt find a target, retrying
/delay 1s
/goto :retarget
}
/return
| ----------------------------------------------------------------------------
| SUB: MoveToMarie
| ----------------------------------------------------------------------------
Sub MoveToMarie
/squelch /target clear
/echo Moving to ${Vendor}
/moveto mdist 10
/moveto loc -618 90
:StillMoving1
/delay 1
/if (${MoveTo.Moving} || ${Me.Moving}) {
/goto :StillMoving1
/delay 2 !${Me.Moving}
} else {
/delay 5
}
| /if (${Target.Distance}>15) /moveto id
/delay 0 ${MoveTo.Stopped}
/moveto mdist 10
/moveto loc -661 77
| /squelch /target ${Vendor}
| /if (${Target.Distance}>15) /moveto id
/delay 10
/return
| ----------------------------------------------------------------------------
| SUB: BuyChips Written by EqMule
| ----------------------------------------------------------------------------
Sub BuyChips
| This is to adjust number of free lots to be left open while buying Bone Chips.
| I suggest leaving a couple of slots open in case of severe lag.
/declare FreeSlots int local 3
/target ${Vendor}
/if (${Target.Distance}>15) /moveto id
/delay 10
/echo Opening merchant/guildbank window
/nomodkey /click right target
/echo Waiting 5s for merchant/guildbank window to populate
/delay 5s
/notify MerchantWnd ItemList listselect ${Window[MerchantWnd].Child[ItemList].List[=Bone Chips,2]}
/delay 2s
:goagain
/if (${Me.FreeInventory}>${FreeSlots}) {
/Shiftkey /notify merchantwnd MW_Buy_Button leftmouseup
:waitforit
/if (${Window[MerchantWnd].Child[MW_Buy_Button].Enabled}==FALSE) {
/echo button is false
/delay 2
/goto :waitforit
}
/goto :goagain
}
/delay 2s
/if (${Merchant.Open}) {
/notify MerchantWnd MW_Done_Button leftmouseup
/delay 1s !${Merchant.Open}
}
/return
| ----------------------------------------------------------------------------
| SUB: MoveToPorter
| ----------------------------------------------------------------------------
Sub MoveToPorter
/echo Moving to Zone In
/squelch /target clear
/moveto mdist 10
/moveto loc -617 89
:StillMoving2
/delay 1
/if (${MoveTo.Moving} || ${Me.Moving}) {
/goto :StillMoving2
/delay 0 !${Me.Moving}
} else {
/delay 5
}
/if (${Target.Distance}>15) /moveto id
/delay 0 ${MoveTo.Stopped}
/moveto mdist 10
/moveto loc -616 -19
/return
| ----------------------------------------------------------------------------
| SUB: MoveToPorter
| ----------------------------------------------------------------------------
Sub MoveToPorter
/echo Moving to Zone In
/squelch /target clear
/moveto mdist 10
/moveto loc -617 89
:StillMoving2
/delay 1
/if (${MoveTo.Moving} || ${Me.Moving}) {
/goto :StillMoving2
/delay 0 !${Me.Moving}
} else {
/delay 5
}
/if (${Target.Distance}>15) /moveto id
/delay 0 ${MoveTo.Stopped}
/moveto mdist 10
/moveto loc -616 -19
/return
You may be on to something there. There's a 15 second wait in the PortToBrellsRest section before checking for zone id. It may be worth increasing that to see if it makes a difference. Im on my phone now so I can't test it myself till later.
Have you tried attaching a debugger to eqgame.exe to see if any illuminating messages come out?
I have an idea for breaking up the macro in to 4 smaller macros, and call the next one from each. If you end the macro and restart it, it seems to basically reset the crash build up, whatever is causing it. I'll work on it this evening when I get home from work.

Those are some great changes, well beyond my capabilities to code at this point, lol. For the druid and wizard self PL, they both get secondary recall at 66. Set the mark at Marie and no running involved. Command to use is /alt activate 405 .
Sub Main
:die
/if (${Me.Level}>19) {
/target militia enforcer
/killthis
/delay 2s
/goto :die
} else {
/call CorpseClear
/bc I am finished de-leveling.
/endmacro
}
/return
Sub CorpseClear
:loop
/squelch /target clear
/squelch /target mycorpse next
/if (${Target.ID}) {
/decaycorpse
/notify ConfirmationDialogBox CD_Yes_Button leftmouseup
/delay 5
/goto :loop
}
/return
