• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Bone chips - full auto

Status
Not open for further replies.
Joined
Oct 15, 2013
RedCents
949¢
I really dug the bonechips mac so I decided to fully automate it so that I could just let it run until the toon hit 65 and then put him in one of my kissassist groups for XP.

This requires:

an 85+ wiz with Brell's Rest portal and Teleport to bind AA (Heroic Wiz ready to go)
EQBC running and EQBC plugin loaded
mq2navigation loaded with underfoot mesh files
10 extraplanar trading satchels + 200 plat or so on toon to be leveled
Both characters should be bound right in front of turn-in NPC in Kaladim

Here's how to use it:

Add wizards name in macro
Run toons to kaladim and bind both the level 1 toon and 85 wiz in front of the NPC
Portal to Brell's Rest
Fill up on bone chips
Teleport back to bind
Run macro
Go to sleep

After a number of hours, one of my toons would seem to randomly crash - I'm not sure why, but it's trivial to start again. (I've been crashing on zoning at times in general since the last patch, so it may not even be related)

The code was pieced together from code in ninjadvloot and the modified bonechips mac posted here. Many thanks to all who contributed!

I hope you enjoy!

-Brian
 

Attachments

love the macro, leveling my wizard solo with it but 1 question, what is the command to close merchant window so I can gate back? It wont let you cast gate while merchant window is up..... FYI you get about 1% per trip from 85-90 but who cares I leave it run overnight.....

- - - Updated - - -

found it, got it working and timed it, looks like around 9 hours to level from 86 to 87 but hey its free and its easy! leveling 2 wizards to 95 as you read this!

Do you want me to post my "modified" solo code here?
 
Last edited:
That wouldn't be a bad idea actually. I say post away!
 
Rich (BB code):
sub main

| tradin.mac, by amml
| modified by tms
| full automation added by fuzzymelon
| Buy function courtesy of RedGuides.com
| modified by Pepekeao for SOLO Wizard use! Made it to level 95 in days unattended!

:top

	| *** Increase the destroydelay ONE by ONE until every item on your cursor gets destroyed.
	/declare destroydelay int local 1
	
	/declare chips int local
	/declare done int local 0
	
	/echo Opening Bags
	/keypress OPEN_INV_BAGS
	/delay 5

	/target clear
	/target Gunlok Jure
	/delay 5
	/face fast
	
	:Loop
	/if (!${FindItem[=Bone Chips].InvSlot}) {
	  /echo backpacks empty go get more stuff
	  /goto :EmptyBags
	}
	
	/if (!${FindItem[=Bone Chips].InvSlot}) /goto :EmptyBags
	
	/echo Handing in Chips.
	/for chips 1 to 4
	/shift /itemnotify ${FindItem[=Bone Chips].InvSlot} leftmouseup
	/delay 5
	/click left target
	/click left target
	/delay 5
	/next chips
	
	/delay 8
	/notify GiveWnd GVW_Give_Button leftmouseup
	/delay 2s
	
	/echo Clearing Cursor
	:cursorclear
	/if (${Cursor.ID} && ${Cursor.ID} != 13073) {
	    /destroy
	    /delay ${destroydelay}
	    /goto :cursorclear
	}
	
	/if (!${FindItem[=Bone Chips].InvSlot}) /goto :EmptyBags
	
	/goto :Loop
	
	:EmptyBags
	
	/if (!${done}) { 
	    /varset done 1
	    /goto :cursorclear
	}
	
	/echo Clearing up your bags, this will take a moment.
	
	/delay 8
	/while (${FindItem[=Rusty Axe].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Axe].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Broad Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Broad Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Mace].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Mace].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Short Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Short Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Two Handed Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Two Handed Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Small Lantern].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Lantern].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	    
	/while (${FindItem[=Small Tattered Gloves].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Tattered Gloves].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	    
	/while (${FindItem[=Torch].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Torch].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Tunic].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Tunic].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Tattered Skullcap].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Tattered Skullcap].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Sleeves].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Sleeves].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Pants].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Pants].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	:Done
	/delay 8 
	/notify GiveWnd GVW_Give_Button leftmouseup
	/delay 8
	/echo Closing Bags
	/keypress CLOSE_INV_BAGS
	/echo Done .. Have fun.. 
        /goto :port
	} else {
            /delay 2s
	    /goto :top
	}
	
	:port
	    /target clear
        /delay 5s
        /casting "Brell's Rest Portal" -maxtries|5
        /delay 45s
        /goto :buy    
	    } else {
                /delay 2s
	        /goto :port
	    }
	
	:buy
	    /target clear
	    /target "Marie Fay"
	    /if (${Target.Type.Equal[npc]}) {
		    /delay 2s
	        /navigate target
	        /delay 30s
                /face fast
                /delay 3s
                /call npc "Marie Fay"
	        /call Buy "bone chips" 32000
	        /goto :bind
	    } else {
                /delay 2s
	        /goto :buy
	    }
	
	:bind
	     /target clear
		 /if (${Merchant.Open}) {
         /notify MerchantWnd MW_Done_Button leftmouseup
         /delay 1s !${Merchant.Open}
		 /delay 5s
         /casting "Gate" -maxtries|5
	         /delay 45s
	         /goto :top
	    } else {
                /delay 2s
	        /goto :bind
	    }

/goto :top

/return

Sub NPC(NPCName)
    /target npc ${NPCName}
    /delay 1s
    /if (!${Select[${Target.Type},npc,pet]} || !${Target.ID} || ${Target.Type.Equal[pet]} && !${Target.CleanName.Find[familiar]}) {
        /echo Please target a vendor or guildbanker
        /return
    }
    /echo Doing business with ${NPCName}
    /target id ${Spawn[${NPCName}].ID}
    /delay 3s ${Target.ID}==${Spawn[${NPCName}].ID}
    /if (${Target.Distance}>15) {
        /moveto id  ${Spawn[${NPCName}].ID}
        /delay 250 ${MoveTo.Stopped}
    }
    /face nolook
    /delay 1s
    /echo Opening merchant/guildbank window
    /nomodkey /click right target
    /echo Waiting 5s for merchant/guildbank window to populate
    /delay 5s
/return

Sub Buy(string ItemToBuy, int amount)
    /declare i int local
    | /echo Buying ${ItemToBuy}!
    /declare QTY int local
    /declare ListItem int local
    /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
    /delay 1s
    /if (${FindItemCount[${ItemToBuy}]}>= ${amount}) {
        /echo I have enough ${ItemToBuy}.
        /return
    }   
    /varset ListItem ${Window[MerchantWnd].Child[ItemList].List[=${ItemToBuy},2]}
    /if (!${ListItem}) {
        /echo couldn't find ${ItemToBuy}
        /return
    } else {
        /notify MerchantWnd ItemList listselect ${ListItem}
        /delay 1s       
    } 
    /echo Buying ${ItemToBuy} Till I get ${amount} 
    :BuyLoop
    /doevents
    /if (${InventoryFull}) /return
    /if (${QTY}>0) {
        /if (${QTY}>19) {
            /Shiftkey /notify merchantwnd MW_Buy_Button leftmouseup
            /delay 1s ${FindItemCount[${ItemToBuy}]}>=${QTY}
            /echo ${FindItemCount[${ItemToBuy}]} ${ItemToBuy} in inventory
            /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]} 
            /delay 2
            /if (${QTY}<=0) /return
            /goto :BuyLoop
        }
        /if (${QTY}>0 && ${QTY}<20) {
            /for i 1 to ${QTY} 
                /Ctrlkey /notify merchantwnd MW_Buy_Button leftmouseup
                /delay 1s ${FindItemCount[${ItemToBuy}]}>=${Math.Calc[${FindItemCount[${ItemToBuy}]}+${i}]}
                /echo Buying ${ItemToBuy} ${i} of ${QTY}
                /if (${i}>=${QTY}) {
                    /echo ${FindItemCount[${ItemToBuy}]} ${ItemToBuy} in inventory
                    /return
                }
            /next i
            /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
            
        }
    }
/return

- - - Updated - - -

I have 2 wiz heroics that I have on 2 boxes testing and they run pretty well, one is 89 one is 90 after a few days of this... will stop them at the 95 cap

UPDATED CODE! Now it recasts Gate or Brel's Rest max 5 times if it fails/fizzles!
 
Last edited:
OK - sorted the issue but now my navigation gets caught in rocks and looks suspect. is there a way of using waypoints within this? I have no idea...
 
Last edited:
I found that if that is happening then you need to reload the plugin mq2navigation and make sure you create the MESH for Brells Rest
 
ok 2 toons both to level 90 now, I switch them off 1 for a day or until the client crashes, then switch to the 2nd one, not stopping till they are both 95!
 
For those interested here are few stats from my own bonechip macro.
Rich (BB code):
Level35=Level 35 on 03/04/2014 at 22:12:42 from 34800 Bone Chips.
Level36=Level 36 on 03/04/2014 at 22:15:39 from 38400 Bone Chips.
Level37=Level 37 on 03/04/2014 at 22:18:36 from 42200 Bone Chips.
Level38=Level 38 on 03/04/2014 at 22:21:44 from 45900 Bone Chips.
Level39=Level 39 on 03/04/2014 at 22:26:04 from 50600 Bone Chips.
Level40=Level 40 on 03/04/2014 at 22:33:07 from 55500 Bone Chips.
Level41=Level 41 on 03/04/2014 at 22:37:32 from 60600 Bone Chips.
Level42=Level 42 on 03/04/2014 at 22:52:41 from 66300 Bone Chips.
Level43=Level 43 on 03/04/2014 at 22:57:54 from 72800 Bone Chips.
Level44=Level 44 on 03/04/2014 at 23:03:35 from 80100 Bone Chips.
Level45=Level 45 on 03/04/2014 at 23:09:22 from 87600 Bone Chips.
Level46=Level 46 on 03/04/2014 at 23:16:25 from 96000 Bone Chips.
Level47=Level 47 on 03/04/2014 at 23:33:01 from 105400 Bone Chips.
Level48=Level 48 on 03/04/2014 at 23:40:42 from 115800 Bone Chips.
Level49=Level 49 on 03/04/2014 at 23:49:07 from 126900 Bone Chips.
Level50=Level 50 on 03/05/2014 at 00:08:55 from 139500 Bone Chips.
Level51=Level 51 on 03/05/2014 at 00:18:44 from 152700 Bone Chips.
Level52=Level 52 on 03/05/2014 at 00:39:43 from 167500 Bone Chips.
Level53=Level 53 on 03/05/2014 at 00:51:57 from 183800 Bone Chips.
Level54=Level 54 on 03/05/2014 at 01:15:49 from 201700 Bone Chips.
Level55=Level 55 on 03/05/2014 at 01:31:05 from 221700 Bone Chips.
Level56=Level 56 on 03/05/2014 at 03:44:24 from 243000 Bone Chips.
Level57=Level 57 on 03/05/2014 at 07:43:32 from 266700 Bone Chips.
Level58=Level 58 on 03/05/2014 at 08:14:26 from 293000 Bone Chips.
Level59=Level 59 on 03/05/2014 at 13:16:40 from 321600 Bone Chips.
Level60=Level 60 on 03/05/2014 at 13:51:10 from 352800 Bone Chips.
Level61=Level 61 on 03/05/2014 at 14:28:46 from 387100 Bone Chips.
Level62=Level 62 on 03/05/2014 at 15:12:22 from 432800 Bone Chips.
Level63=Level 63 on 03/05/2014 at 16:09:31 from 483000 Bone Chips.
Level64=Level 64 on 03/05/2014 at 17:02:17 from 538400 Bone Chips.
Level65=Level 65 on 03/05/2014 at 18:10:31 from 600000 Bone Chips.
Level66=Level 66 on 03/05/2014 at 19:23:43 from 668300 Bone Chips.
Level67=Level 67 on 03/05/2014 at 21:01:16 from 757300 Bone Chips.
Level68=Level 68 on 03/06/2014 at 01:05:30 from 857200 Bone Chips.
Level69=Level 69 on 03/06/2014 at 03:06:45 from 969800 Bone Chips.
Level70=Level 70 on 03/06/2014 at 05:17:36 from 1097600 Bone Chips.
Level71=Level 71 on 03/06/2014 at 07:39:33 from 1242500 Bone Chips.
Level72=Level 72 on 03/06/2014 at 20:22:50 from 1430900 Bone Chips.
Level73=Level 73 on 03/07/2014 at 00:04:52 from 1645100 Bone Chips.
 
UPDATE! Now solo levels my druid AND merc!

Rich (BB code):
sub main

| tradin.mac, by amml
| modified by tms
| full automation added by fuzzymelon
| Buy function courtesy of RedGuides.com
| modified by Pepekeao for SOLO DRUID use! Made it to level 95 in days unattended!
| NOTE this macro will not check or remove you from a group! I am leveling my merc with me!

:top

	| *** Increase the destroydelay ONE by ONE until every item on your cursor gets destroyed.
	/declare destroydelay int local 1
	
	/declare chips int local
	/declare done int local 0
	
	/echo Opening Bags
	/keypress OPEN_INV_BAGS
	/delay 5

	/target clear
	/target Gunlok Jure
	/delay 5
	/face fast
		
	:Loop
	/if (!${FindItem[=Bone Chips].InvSlot}) {
	  /echo backpacks empty go get more stuff
	  /goto :EmptyBags
	}
	
	/if (!${FindItem[=Bone Chips].InvSlot}) /goto :EmptyBags
	
	/echo Handing in Chips.
	/for chips 1 to 4
	/shift /itemnotify ${FindItem[=Bone Chips].InvSlot} leftmouseup
	/delay 5
	/click left target
	/click left target
	/delay 5
	/next chips
	
	/delay 8
	/notify GiveWnd GVW_Give_Button leftmouseup
	/delay 2s
	
	/echo Clearing Cursor
	:cursorclear
	/if (${Cursor.ID} && ${Cursor.ID} != 13073) {
	    /destroy
	    /delay ${destroydelay}
	    /goto :cursorclear
	}
	
	/if (!${FindItem[=Bone Chips].InvSlot}) /goto :EmptyBags
	
	/goto :Loop
	
	:EmptyBags
	
	/if (!${done}) { 
	    /varset done 1
	    /goto :cursorclear
	}
	
	/echo Clearing up your bags, this will take a moment.
	
	/delay 8
	/while (${FindItem[=Rusty Axe].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Axe].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Broad Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Broad Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Mace].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Mace].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Short Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Short Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Two Handed Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Two Handed Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Small Lantern].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Lantern].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	    
	/while (${FindItem[=Small Tattered Gloves].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Tattered Gloves].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	    
	/while (${FindItem[=Torch].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Torch].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Tunic].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Tunic].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Tattered Skullcap].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Tattered Skullcap].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Sleeves].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Sleeves].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Pants].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Pants].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	:Done
	/delay 8 
	/notify GiveWnd GVW_Give_Button leftmouseup
	/delay 8
	/echo Closing Bags
	/keypress CLOSE_INV_BAGS
	/echo Done .. Have fun.. 
        /goto :port
	} else {
            /delay 2s
	    /goto :top
	}
	
	:port
	    /target clear
        /delay 5s
        /casting "Circle of Brell's Rest" -maxtries|5
        /delay 45s
        /goto :buy    
	    } else {
                /delay 2s
	        /goto :port
	    }
	
	:buy
	    /target clear
	    /target "Marie Fay"
	    /if (${Target.Type.Equal[npc]}) {
		    /delay 2s
	        /navigate target
	        /delay 30s
                /face fast
                /delay 3s
                /call npc "Marie Fay"
	        /call Buy "bone chips" 32000
	        /goto :bind
	    } else {
                /delay 2s
	        /goto :buy
	    }
	
	:bind
	     /target clear
		 /if (${Merchant.Open}) {
         /notify MerchantWnd MW_Done_Button leftmouseup
         /delay 1s !${Merchant.Open}
		 /delay 5s
         /cast "Gate" -maxtries|5
	         /delay 45s
	         /goto :top
	    } else {
                /delay 2s
	        /goto :bind
	    }

/goto :top

/return

Sub NPC(NPCName)
    /target npc ${NPCName}
    /delay 1s
    /if (!${Select[${Target.Type},npc,pet]} || !${Target.ID} || ${Target.Type.Equal[pet]} && !${Target.CleanName.Find[familiar]}) {
        /echo Please target a vendor or guildbanker
        /return
    }
    /echo Doing business with ${NPCName}
    /target id ${Spawn[${NPCName}].ID}
    /delay 3s ${Target.ID}==${Spawn[${NPCName}].ID}
    /if (${Target.Distance}>15) {
        /moveto id  ${Spawn[${NPCName}].ID}
        /delay 250 ${MoveTo.Stopped}
    }
    /face nolook
    /delay 1s
    /echo Opening merchant/guildbank window
    /nomodkey /click right target
    /echo Waiting 5s for merchant/guildbank window to populate
    /delay 5s
/return

Sub Buy(string ItemToBuy, int amount)
    /declare i int local
    | /echo Buying ${ItemToBuy}!
    /declare QTY int local
    /declare ListItem int local
    /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
    /delay 1s
    /if (${FindItemCount[${ItemToBuy}]}>= ${amount}) {
        /echo I have enough ${ItemToBuy}.
        /return
    }   
    /varset ListItem ${Window[MerchantWnd].Child[ItemList].List[=${ItemToBuy},2]}
    /if (!${ListItem}) {
        /echo couldn't find ${ItemToBuy}
        /return
    } else {
        /notify MerchantWnd ItemList listselect ${ListItem}
        /delay 1s       
    } 
    /echo Buying ${ItemToBuy} Till I get ${amount} 
    :BuyLoop
    /doevents
    /if (${InventoryFull}) /return
    /if (${QTY}>0) {
        /if (${QTY}>19) {
            /Shiftkey /notify merchantwnd MW_Buy_Button leftmouseup
            /delay 1s ${FindItemCount[${ItemToBuy}]}>=${QTY}
            /echo ${FindItemCount[${ItemToBuy}]} ${ItemToBuy} in inventory
            /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]} 
            /delay 2
            /if (${QTY}<=0) /return
            /goto :BuyLoop
        }
        /if (${QTY}>0 && ${QTY}<20) {
            /for i 1 to ${QTY} 
                /Ctrlkey /notify merchantwnd MW_Buy_Button leftmouseup
                /delay 1s ${FindItemCount[${ItemToBuy}]}>=${Math.Calc[${FindItemCount[${ItemToBuy}]}+${i}]}
                /echo Buying ${ItemToBuy} ${i} of ${QTY}
                /if (${i}>=${QTY}) {
                    /echo ${FindItemCount[${ItemToBuy}]} ${ItemToBuy} in inventory
                    /return
                }
            /next i
            /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
            
        }
    }
/return

- - - Updated - - -

Oh and I found a hiccupp in the process, Both Gate and Brel's Rest port/circle, if they fizzle or collapse the macro goes dumb until you click the spell and then it picks up, is there a check I can put in to recast on fail of Gate or Brel's Rest portal (also Circle of Brel's) - UPDATE TO CODE! Fixed the hiccupp it now checks and recasts gate/Brels up to 5 times! Thanks to dannuic
 
Last edited:
Oh and I found a hiccupp in the process, Both Gate and Brel's Rest port/circle, if they fizzle or collapse the macro goes dumb until you click the spell and then it picks up, is there a check I can put in to recast on fail of Gate or Brel's Rest portal (also Circle of Brel's)

Yes: you can either use MQ2Cast or Spellroutines.inc and check for the return of the casting (SUCCESS, FIZZLE, etc) and respond appropriately.
 
UPDATE to this process, I have now successfully leveled a FREE account to 95 with it! Woot!

Question, sometimes it buys stacks and when it gets to the very last of the 32000 the last 100 it just holds it on the cursor, wtf? I need to add a check to the code to put it away and continue the macro, if I manually drop it into my inventory the macro goes right back to work......

- - - Updated - - -

Oh and if you want the most kick ass merc buy the lowest level merc you can (as in A1) as they are the cheapest to upkeep and leave him out from level 1 to level whatever and you will MAX your mercs AAs pretty fast! Ok not fast fast but steady....
 
UPDATE to this process, I have now successfully leveled a FREE account to 95 with it! Woot!

Question, sometimes it buys stacks and when it gets to the very last of the 32000 the last 100 it just holds it on the cursor, wtf? I need to add a check to the code to put it away and continue the macro, if I manually drop it into my inventory the macro goes right back to work......

- - - Updated - - -

Oh and if you want the most kick ass merc buy the lowest level merc you can (as in A1) as they are the cheapest to upkeep and leave him out from level 1 to level whatever and you will MAX your mercs AAs pretty fast! Ok not fast fast but steady....

If you want to max merc AA you could always just you know set it to 100% AA when you hit 51-55 and spend it on some crap.
 
If I recall correctly, mercs start gaining AA when you hit lvl 20. I recall reading that somewhere but I am unable to locate any documentation to back it up. It would make sense due to how slowly they gain AA.
 
not sure either but I know at 1st he gains AA real fast then slows way down but at lower levels its quick! My 55 Warriors Merc has 7AAs already
 
I don't know if I'm doing something wrong, but I just started running this today. The mac destroys a lot of the crap that he gives you for the quest, but a ton is remaining in my bags. I thought it would clear the bags, but alas... My wiz ported me back and I went off to buy more bone chips and my bags were half full of rusty axes and lanterns. Any idea what's up?

- - - Updated - - -

Ended the mac and restarted. Looks like it's clearing the bags this go around.
 
I've noticed sometimes it misses a item call and then moves on to a port, sometimes it maxes out the inventory and misses the last purchase and hangs trying to buy chips with a full inventory. and for me, after dropping a group it wouldn't accept the invite from the porting character and i had to add a key-press.

Today the solo macro's error-ed and i had to change /casting "Brells...." to /cast "Brells..." same with gate.
 
Something that would make this pretty cool is to not destroy all the items, but return to Marie Fay and sell them. I'm sure that would take a little work to incorporate the /lootsell on each item, and also /mac sellstuff. Just a thought.
 
Thought the same but i'm still getting my feet wet in this whole macro business. Have a ways to go before I attempt it. I thought about starting with the sell stuff code from ninjaloot. dunno if it'll work though.
 
The items are worth mere copper each but I would not take much to sell everything that is not on the cursor, I can work on that.... every copper counts...

- - - Updated - - -

IF you are getting a port before your items are destroyed it is a network issue, if it times out on the destroy it moves to the port...... I found if I run 8 or 9 PCs on my network all doing this that it sometimes will time out and not destroy all my stuff, think I will look at the code and maybe have it do a destroy then a 2nd destroy ergo a check before porting...... will post if later this week when I get it tested....

- - - Updated - - -

if you run more then on your network at the same time, try to space out the starting times of each so they don't hog all the bandwidth especially on porting.... and turn ins, those 2 seem to be the big lag spikers!
 
Those items are not worth selling and it will add hours to your leveling.
 
I dunno. After the first set of turn in for the bone chips, if you sell back everything he puts in your bags, it gives a little profit. Essentially, giving you enough to pay for your second round of bone chips. Happens like that every time.
 
It gives you nothing even close to buy a second round. you have to sell like 800 items to get 1 plat
 
I sometimes run into a problem when the clean up leaves a few items behind. My toon will run to buy more bone chips, and I suppose the Mac is set to buy a certain number of chips because I have come back to see the merchant saying thay inventory is full. The toon didn't stop trying to buy. I intervened and sold what was left and also ported back.

It's possible I just didn't wait long enough but is there something built in to check inventory?
 
I sometimes run into a problem when the clean up leaves a few items behind. My toon will run to buy more bone chips, and I suppose the Mac is set to buy a certain number of chips because I have come back to see the merchant saying thay inventory is full. The toon didn't stop trying to buy. I intervened and sold what was left and also ported back.

It's possible I just didn't wait long enough but is there something built in to check inventory?

Have you tried adjusting this line?

Rich (BB code):
| *** Increase the destroydelay ONE by ONE until every item on your cursor gets destroyed.
	/declare destroydelay int local 1

The mac is set to buy 32000 it looks like. An edit that could make it a little more general could be like...
Rich (BB code):
Pseudo-code:

while(I have free slots) {
    buy(bone chips, 100)
}

I'm not sure on how it would look in a macro, or how much overhead the buy function adds as far as timing goes. If the buy function is expensive time-wise, you could get a count of free slots right before buying, multiply by 100, then call buy on that amount.
 
maybe someone can help me with a little issue I keep having, my guy buys 32000 chips and the LAST stack just sits on the cursor, he buys it but does not inventory it. If I click the inventory to put it away the macro will go back to work, I need a to put a check in the script to put away chips or check for chips to put away so this stops happening, it will sit all night with a handful of chips waiting for me to put them away, this only happens 1 in 20 or so times but its annoying! Have the turn in part working great just need the buy part to stop screwing up!

- - - Updated - - -

Neither of those really apply but thank you for adding your thoughts.... I fixed it by having it do the turning twice, since there is nothing to turn it it quickly continues to the buy stage, which is still buggy, hence my new post...

Have you tried adjusting this line?

Rich (BB code):
| *** Increase the destroydelay ONE by ONE until every item on your cursor gets destroyed.
	/declare destroydelay int local 1

The mac is set to buy 32000 it looks like. An edit that could make it a little more general could be like...
Rich (BB code):
Pseudo-code:

while(I have free slots) {
    buy(bone chips, 100)
}

I'm not sure on how it would look in a macro, or how much overhead the buy function adds as far as timing goes. If the buy function is expensive time-wise, you could get a count of free slots right before buying, multiply by 100, then call buy on that amount.
 
I've been messing with this macro all day, and can't get it work in more than just a couple of chunks. It does the turn ins real nice, but I have to do the porting, the movement, and buy the chips.

I have EQBC running, I have eq2navigation running with the latest MESH downloaded.

It's cool for the turn ins, but that is all for me. My friend is able to make it all work, but I can't

Anyone able to help me? I am not a programmer.

ADD - Friend logged in and helped me resolve issues. Not understanding the complex interactions with everything that goes into this is a real eye-opener!
 
Last edited:
I have the same question Elg had. If I could get maybe a bit more definition of the workings of the macro. I have been able to split and make sense of part of it. I can break it into 2 macro's one for the buying bone chips and one for the turn in and destroying items. Just the navigation/porting piece working. Perhaps where to place my wizards name etc. Any help would be appreciated. Thanks
 
No problem. I got Elg up and running yesterday. I am going to give an explanation that for some is really way to detailed and could be condensed but this is for people having trouble getting things working.
Make sure you have a newly updated compile and all your plugins installed from the RGUpdater

Basically you need to have the MQ2navigation and MQ2EQBC plugins running for the macro to work correct.

Step 1: Open MQ2EQBCS.exe (the chat server needs to be running prior to running the macro, it opens in a command prompt)
Step 2: Edit the autobones.mac file in notepad: The third line needs the wizard's name in it "/declare wizard string outer <YourWizardsNameHere>" Example: "/declare wizard string outer PallyDPS"
Step 3: Make sure macroquest2 is running and open up your EQ clients.
Step 4: On your character to be powerleveled, make sure they have 250 platinum and 10 extraplanar trade satchels in their inventory (get these from the bazaar)
Step 5: Make sure your toons are bound in front of the turn in NPC (Gunlok Jure in Kaladim)
Step 6: Make sure your wizard has the following spells: The teleport to bind AA hotkey (level 69), Brell's Rest Portal, Gate

Now while you and your wizard are standing side by side in front of Gunlok Jure in Kaladim, type the following:
Step 7: /plugin MQ2navigation <--ensures your downloaded MQ2 meshs loads
Step 8: /plugin MQ2EQBCS <--ensures your MQ2EQBCS plugin is working
Step 9: /bccmd reconnect ON <--- you should see your character connect to the chat server (this is important as the chat server allows your toons to send each other commands, specifically to tell your wizard when to cast your teleport spells!)

Now on your wizard type:
Step 10: /plugin MQ2navigation <--ensures your downloaded MQ2 meshs loads
Step 11: /plugin MQ2EQBCS <--ensures your MQ2EQBCS plugin is working
Step 12: /bccmd reconnect ON <--- you should see your wizard connect to the chat server

Now on your character being powerleveled type:
/mac autobones


Now the macro should start working. Watch it go for a bit and then goto sleep. It'll crash between 7-9 hours so be sure to check on it a couple times a day. It takes approximately 7 hours to go from level 1 to level 66.

Thanks for this macro again, it is awesome :)
 
Well, I was failing to properly run EQBC and MQ2Navigation.

Another problem I had was not having autoaccept on.

Make sure you have the proper MESH files in an eq2navigation folder inside your MQ2 folder.

EQBC is a program that has to run outside of Everquest. The application is in your MQ2 folder. It is what allows your characters that aren't grouped to communicate to each other.

I use this social to initialize myself for the full auto macro:
/plugin mq2eqbc
/plugin mq2navigation
/bccmd reconnect on
/autoaccept on

If you don't want to go through the headache of getting 32000 bone chips initially, you can start at Gunlok Jure with none. The macro will try and hand them in, realize you have none, then try and cleanup your bags, then do a teleport command to your wizard, getting the macro started.

If your character runs into walls, not making it to Marie the bone chip vendor, your mq2navigation and related MESH files aren't set up properly.

Additionally, make certain you have the Very Vanilla 20140523a file, it was easy to miss, and the old one still works for many things.

Hope this was helpful!

Elg
 
For those who do not have it loaded, /plugin mq2autoaccept load is needed for /autoaccept on to work.
 
I have a problem. It turns in bone chips and clears the bags as it goes, but it will not delete rusty axes. This causes me to be ported to Brell's Rest with bone chips still in my bag, along with rusty axes.
 
I have a problem. It turns in bone chips and clears the bags as it goes, but it will not delete rusty axes. This causes me to be ported to Brell's Rest with bone chips still in my bag, along with rusty axes.

That seems to be a common problem, look above for the fix, basically if you have it do the check bags routine twice this fixes the issue, I just copied and pasted the check bags twice and fixed.... not pretty but fixed... Mine also has anti fizzle and cast failure built in as this is another problem people have reported. Hope this helps

Rich (BB code):
sub main

| tradin.mac, by amml
| modified by tms
| full automation added by fuzzymelon
| Buy function courtesy of RedGuides.com
| modified by Pepekeao for SOLO Wizard use! Made it to level 95 in days unattended!

:top

	| *** Increase the destroydelay ONE by ONE until every item on your cursor gets destroyed.
	/declare destroydelay int local 1
	
	/declare chips int local
	/declare done int local 0
	
	/echo Opening Bags
	/keypress OPEN_INV_BAGS
	/delay 5

	/target clear
	/target Gunlok Jure
	/delay 5
	/face fast
	
	:Loop
	/if (!${FindItem[=Bone Chips].InvSlot}) {
	  /echo backpacks empty go get more stuff
	  /goto :EmptyBags
	}
	
	/if (!${FindItem[=Bone Chips].InvSlot}) /goto :EmptyBags
	
	/echo Handing in Chips.
	/for chips 1 to 4
	/shift /itemnotify ${FindItem[=Bone Chips].InvSlot} leftmouseup
	/delay 5
	/click left target
	/click left target
	/delay 5
	/next chips
	
	/delay 8
	/notify GiveWnd GVW_Give_Button leftmouseup
	/delay 2s
	
	/echo Clearing Cursor
	:cursorclear
	/if (${Cursor.ID} && ${Cursor.ID} != 13073) {
	    /destroy
	    /delay ${destroydelay}
	    /goto :cursorclear
	}
	
	/if (!${FindItem[=Bone Chips].InvSlot}) /goto :EmptyBags
	
	/goto :Loop
	
	:EmptyBags
	
	/if (!${done}) { 
	    /varset done 1
	    /goto :cursorclear
	}
	
	/echo Clearing up your bags, this will take a moment.
	
	/delay 8
	/while (${FindItem[=Rusty Axe].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Axe].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Broad Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Broad Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Mace].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Mace].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Short Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Short Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Rusty Two Handed Sword].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Rusty Two Handed Sword].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	/while (${FindItem[=Small Lantern].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Lantern].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	    
	/while (${FindItem[=Small Tattered Gloves].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Tattered Gloves].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	    
	/while (${FindItem[=Torch].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Torch].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Tunic].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Tunic].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Tattered Skullcap].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Tattered Skullcap].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Sleeves].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Sleeves].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	
	/while (${FindItem[=Small Patchwork Pants].InvSlot}) {
	    /shift /itemnotify ${FindItem[=Small Patchwork Pants].InvSlot} leftmouseup
	    /delay 5
	    /if (${Cursor.ID} && ${Cursor.ID} != 13073) /destroy
	    /delay ${destroydelay}
	}
	
	:Done
	/delay 8 
	/notify GiveWnd GVW_Give_Button leftmouseup
	/delay 8
	/echo Closing Bags
	/keypress CLOSE_INV_BAGS
	/echo Done .. Have fun.. 
        /goto :port
	} else {
            /delay 2s
	    /goto :top
	}
	
	:port
	    /target clear
        /delay 5s
        /casting "Brell's Rest Portal" -maxtries|5
        /delay 45s
        /goto :buy    
	    } else {
                /delay 2s
	        /goto :port
	    }
	
	:buy
	    /target clear
	    /target "Marie Fay"
	    /if (${Target.Type.Equal[npc]}) {
		    /delay 2s
	        /navigate target
	        /delay 30s
                /face fast
                /delay 3s
                /call npc "Marie Fay"
	        /call Buy "bone chips" 32000
	        /goto :bind
	    } else {
                /delay 2s
	        /goto :buy
	    }
	
	:bind
	     /target clear
		 /if (${Merchant.Open}) {
         /notify MerchantWnd MW_Done_Button leftmouseup
         /delay 1s !${Merchant.Open}
		 /delay 5s
         /casting "Gate" -maxtries|5
	         /delay 45s
	         /goto :top
	    } else {
                /delay 2s
	        /goto :bind
	    }

/goto :top

/return

Sub NPC(NPCName)
    /target npc ${NPCName}
    /delay 1s
    /if (!${Select[${Target.Type},npc,pet]} || !${Target.ID} || ${Target.Type.Equal[pet]} && !${Target.CleanName.Find[familiar]}) {
        /echo Please target a vendor or guildbanker
        /return
    }
    /echo Doing business with ${NPCName}
    /target id ${Spawn[${NPCName}].ID}
    /delay 3s ${Target.ID}==${Spawn[${NPCName}].ID}
    /if (${Target.Distance}>15) {
        /moveto id  ${Spawn[${NPCName}].ID}
        /delay 250 ${MoveTo.Stopped}
    }
    /face nolook
    /delay 1s
    /echo Opening merchant/guildbank window
    /nomodkey /click right target
    /echo Waiting 5s for merchant/guildbank window to populate
    /delay 5s
/return

Sub Buy(string ItemToBuy, int amount)
    /declare i int local
    | /echo Buying ${ItemToBuy}!
    /declare QTY int local
    /declare ListItem int local
    /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
    /delay 1s
    /if (${FindItemCount[${ItemToBuy}]}>= ${amount}) {
        /echo I have enough ${ItemToBuy}.
        /return
    }   
    /varset ListItem ${Window[MerchantWnd].Child[ItemList].List[=${ItemToBuy},2]}
    /if (!${ListItem}) {
        /echo couldn't find ${ItemToBuy}
        /return
    } else {
        /notify MerchantWnd ItemList listselect ${ListItem}
        /delay 1s       
    } 
    /echo Buying ${ItemToBuy} Till I get ${amount} 
    :BuyLoop
    /doevents
    /if (${InventoryFull}) /return
    /if (${QTY}>0) {
        /if (${QTY}>19) {
            /Shiftkey /notify merchantwnd MW_Buy_Button leftmouseup
            /delay 1s ${FindItemCount[${ItemToBuy}]}>=${QTY}
            /echo ${FindItemCount[${ItemToBuy}]} ${ItemToBuy} in inventory
            /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]} 
            /delay 2
            /if (${QTY}<=0) /return
            /goto :BuyLoop
        }
        /if (${QTY}>0 && ${QTY}<20) {
            /for i 1 to ${QTY} 
                /Ctrlkey /notify merchantwnd MW_Buy_Button leftmouseup
                /delay 1s ${FindItemCount[${ItemToBuy}]}>=${Math.Calc[${FindItemCount[${ItemToBuy}]}+${i}]}
                /echo Buying ${ItemToBuy} ${i} of ${QTY}
                /if (${i}>=${QTY}) {
                    /echo ${FindItemCount[${ItemToBuy}]} ${ItemToBuy} in inventory
                    /return
                }
            /next i
            /varcalc QTY ${amount}-${FindItemCount[${ItemToBuy}]}
            
        }
    }
/return
 
I love this mac but im running into a few problems. When I port to brells rest it will target npc but wont do anything from there. my wiz just keeps porting us back and forth
 
I found that if that is happening then you need to reload the plugin mq2navigation and make sure you create the MESH for Brells Rest
SOLVED. Imagine that, my problem was solved once I went into first person view. I no longer run into the walls now, I have no idea why that works but whatever!
 
Last edited:
I made a dark elf Wiz that I wanted to PL with the bone chips, but I eventually gave up because I'd to kill the roaming guard every 15 minutes. That doesn't make this very afk friendly. I decided to make another toon (halfling) and put my DE in the group with him to sponge when he did the turn ins while staying perma invis. In order to do this, I had to make a simple little change which would kick my porter, not the DE toon.

If anyone else would like to do this, just make this change around line 30:

Rich (BB code):
/if (${Target.Type.Equal[npc]}) {
	    /if (${Me.Grouped}) {
	        /echo You are grouped - Disbanding
	        /bct ${wizard} //keypress ctrl+d
	}

Make sure that your DE is perma invis and you should be good! Thanks to PussyFoot for helping me with this!!
 
Last edited:
I love this mac but im running into a few problems. When I port to brells rest it will target npc but wont do anything from there. my wiz just keeps porting us back and forth

you do not have /plugin mq2navigation
load that it will fix it
 
Bone chips - full auto
Status
Not open for further replies.

Users who are viewing this thread

Back
Top
Cart