• 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
Resource icon

Release GroundSpawn.mac Super Simple Utility 2.0

No permission to download

teslatrader

Member
Joined
Feb 16, 2011
RedCents
639¢
This is a simple utility to perform a simple function, and is easily modified with minimal skills. It's only 18 lines of code, (EDIT: Line count has grown considerably in V2.) and that includes limits, counting, and progress messages. In most cases, you won't need to edit the code at all. Run this macro with a parameter (required), as shown below, to tell it the name of the ground spawn item you want to gather. It will run around and gather them up one stack (20, now that the stack size has been increased) at a time. It uses mq2nav (No longer needs MQ2moveutils), and is pretty good at navigating difficult terrain.

What prompted this was my inability to find a simple ground spawn farmer mac so that I could make some dye. Everything I found either crashed with multiple runtime errors, or was designed for a specific zone and specific items, such as the anniversary event macro. (Thumbs up on that one, no offense, please.) Not all of us have the skills to write or edit macros, so this also serves a purpose as an example of code that 1) you don't have to edit every time you use it in a different zone (because of the passed paramemeter), and 2) an easy to follow example of code for beginners. I have, since then, located some fully featured ground spawn macs, but I still use this one most of the time due to it's simple operation. Thanks to TreeHuginDruid for providing some safety code for the macro.

P.S.: I originally gave it the option to run without a parameter, However, while all ground spawns are items, not all items are ground spawn. Running this with no specific target ended up with me trying over and over to 'loot' an oven and put it in my backpack. Needless to say, you can't loot an oven, or a door, both of which are potential items to target by accident. That's why I removed that option.

Enjoy! As always, give me a cent if this helps you out in some way.

TeslaTrader

Rich (BB code):
| This is the SSSAGG (Super Simple but not Stupid Automated Groundspawn Grabber)
| aka GroundSpawn.mac
| Version 2.0
| By: TeslaTrader
| Pass it a search parameter (required) with a social, like "/mac GroundSpawn.mac Evergreen", to grab Evergreen Leafs, etc.
| DO NOT USE AFK. This macro does not include AFK 'safety' code. It does, however, automatically stop at 20 items, which limits your potential for getting into trouble.
| Raise the limit of 20 at your own risk.
|
| NOTE: It's just a simple utility to perform a simple function, and is easily modified with minimal skills. Enjoy!
|---------------------------------------------------------------------------------

#turbo 

Sub Main

/call CheckPlugin MQ2Nav

/declare Item string outer ${Param0}
/declare ItemCount int outer 0
/declare MaxItems int outer 20
|---------------------------------------------------------
/declare PCRadiusCheck int outer 300
/declare DummyTime         int       outer  60
/declare DummyMsg          string    outer  "Gone for More Beer - BRB."
/declare TimeInc           int       outer
|---------------------------------------------------------

:Main

|---------------------------------------------------------
/if (${Spawn[gm].ID} || (${SpawnCount[pc radius ${PCRadiusCheck}]}>1)) { 
  /echo PC nearby! 
  /call DummyMode 
}
|---------------------------------------------------------

/if (${ItemCount}==${MaxItems}) /end
/itemtarget ${Item}
/delay 1s
/nav loc ${Ground.Y} ${Ground.X} ${Ground.Z}

:GoGetIt 
/delay 1s
/if (${Me.Moving}) /goto :GoGetIt

/click left item
/delay 2s
/autoinventory
/varcalc ItemCount ${ItemCount}+1
/echo Collected ${ItemCount} item(s).
/goto :Main



|---------------------------------------------------------------------------------
| SUB: Check Plugin
|---------------------------------------------------------------------------------
Sub CheckPlugin(string pluginname)

/if (!${Bool[${Plugin[${pluginname}]}]}) {
    /squelch /plugin ${pluginname}
    /echo ${pluginname} not detected! This macro requires it! Loading ...
}
    
/return
|---------------------------------------------------------------------------------

|-------------------------------------------------------------------------------- 
| Sub DummyMode
|--------------------------------------------------------------------------------
Sub DummyMode 

/beep 
/echo Entering Dummy Mode... 
/delay 1s 
/afk ${DummyMsg}

:waitabit 
/for TimeInc 1 to ${DummyTime}
     /echo (${TimeInc}/${DummyTime})
     /delay 1s 
/next TimeInc

/if (${Spawn[gm].ID} || (${SpawnCount[pc radius ${PCRadiusCheck}]}>1)) /goto :waitabit 
/afk off 
/delay 1s 

/return
|--------------------------------------------------------------------------------

EDIT: I have updated this macro to Version 2. I just gathered a stack of Misty Acorns with this mac with no issues or interruptions. Misty Thicket was a problem zone for V1, but it's working perfectly for me now. I included the changes from TreeHuginDruid, converted to MQ2Nav, and it now uses "/if (${Me.Moving}" instead of "/if (${Ground.Distance}>4)". It finds its way through the gate, now. ;-) Hopefully, this version will be much more successful for everyone in a greater variety of zones. Enjoy!

NOTE: If you are new to MQ2Nav, read the plugin info on RedGuides. Use the Meshgenerator.exe with default settings for each new zone where you want to use this macro. The performance improvement is worth the trouble.
 
Last edited:
Nice... thanks for the contribution.

However:

1) Perhaps you should mention that it requires MQ2MoveUtils.dll to be loaded.... or do a plugin check to ensure it is/gets loaded by your check. The code examples are out there....
2) Not that difficult to add in NPC Near detection and pause the macro ... definately would be a safety advantage... again... easy to add this.



Rich (BB code):
| This is the SSSAGG (Super Simple but not Stupid Automated Groundspawn Grabber)
| aka GroundSpawn.mac
| By: TeslaTrader
| Pass it a search parameter (required) with a social, like "/mac GroundSpawn.mac Evergreen", to grab Evergreen Leafs, etc.
| DO NOT USE AFK. This macro does not include AFK 'safety' code. It does, however, automatically stop at 20 items, which limits your potential for getting into trouble.
| Raise the limit of 20 at your own risk.
|
| NOTE: It's just a simple utility to perform a simple function, and is easily modified with minimal skills. Enjoy!
|---------------------------------------------------------------------------------

#turbo 

Sub Main

/call CheckPlugin MQ2Moveutils

/declare Item string outer ${Param0}
/declare ItemCount int outer 0
/declare MaxItems int outer 20
|---------------------------------------------------------
/declare PCRadiusCheck int outer 300
/declare DummyTime         int       outer  60
/declare DummyMsg          string    outer  "Gone for More Beer - BRB."
/declare TimeInc           int       outer
|---------------------------------------------------------
/moveto 2

:Main

|---------------------------------------------------------
/if (${Spawn[gm].ID} || (${SpawnCount[pc radius ${PCRadiusCheck}]}>1)) { 
  /echo PC nearby! 
  /call DummyMode 
}
|---------------------------------------------------------

/if (${ItemCount}==${MaxItems}) /end
/itemtarget ${Item}

:GoGetIt 
/moveto loc ${Ground.Y}, ${Ground.X}
/delay 1s
/if (${Ground.Distance}>4) /goto :GoGetIt

/click left item
/delay 2s
/autoinventory
/varcalc ItemCount ${ItemCount}+1
/echo Collected ${ItemCount} item(s).
/goto :Main



|---------------------------------------------------------------------------------
| SUB: Check Plugin
|---------------------------------------------------------------------------------
Sub CheckPlugin(string pluginname)

/if (!${Bool[${Plugin[${pluginname}]}]}) {
    /squelch /plugin ${pluginname}
    /echo ${pluginname} not detected! This macro requires it! Loading ...
}
    
/return
|---------------------------------------------------------------------------------

|-------------------------------------------------------------------------------- 
| Sub DummyMode
|--------------------------------------------------------------------------------
Sub DummyMode 

/beep 
/echo Entering Dummy Mode... 
/delay 1s 
/afk ${DummyMsg}

:waitabit 
/for TimeInc 1 to ${DummyTime}
     /echo (${TimeInc}/${DummyTime})
     /delay 1s 
/next TimeInc

/if (${Spawn[gm].ID} || (${SpawnCount[pc radius ${PCRadiusCheck}]}>1)) /goto :waitabit 
/afk off 
/delay 1s 

/return
|--------------------------------------------------------------------------------
 
Looks good. I'll use your updates. Also, (afterthought) I probably should have flagged this as a macro instead of a utility. Thanks!
 
Can anyone provide any advice for how I can adjust the above mac to actually pick up items? It appears my dude is stopping just a tad bit short of the item, so the mac doesn't pick it up and never progresses on to the next item. If I nudge the toon forward manually it picks it up, autoinventories, and runs off to the next one like a champ.

I tried reducing the "/if (${Ground.Distance}>4) /goto :GoGetIt" range, but that's not the issue. I think it's a MQ2moveutils thing.
 
Look at my 12th anniversay ground spawn pickup mac....

Shows how to locate item.. moveto it.. and pick it up.. exellent example of a good ground spawn pickup mac.

12th Anniversary Augment quest macro - Safe Version



/itemtarget ${TargetItem}

/face item
/delay 5
|--- WORKING COMMAND TO GRAB THE ITEM!!!!
/click left item


Just an example.... look at the code itself to see how to get directly to the item and ensure in range to pick it up naturally looking.
 
Looking at the macro, you can see that the moveto command is still running as it exits the loop. I had it bail out of the loop at a distance of 4 because sometimes you may come to a stop a couple of units away from the exact target. (Especially if you're using a mount.) If you keep looping until you are at the exact spot, it could just loop forever because you're never at the exact spot.

Instead of changing the ground distance >4 part, I would try putting a "/delay 2s" just before the "/click left item" in order to give the moveto command time to finish running.
 
So I just used the above macro and added in /face. I run to the target, but stop short of picking it up. I have to give my toon a nudge and he will face target, loot, and move to next target. How to I get him to go all the way to the item and pick it up without me having to nudge him?
 
kett73, try the new Version 2. I updated the original post with new code. This version is much more reliable.
 
Thanks for giving me props for the coding change suggestions i offered.... waving my magic admin wand and giving you 30 red cents for it.
 
Any reason why I might get an error, cannot find 'null' to target?

Line 38

- - - Updated - - -

Oh, got it. Is there a version of this that picks up collectibles? Not sure what parameter I need to enter for that to work.

- - - Updated - - -

/Mac groundspawn glowing orb
 
Tried using this today and noted that the locations of the glowing orbs don't seem to be super amazing. Sometimes it was trying to find items on a higher floor in zone.

Any reason why this might be happening?
 
Issue with MQ2Nav and not an issue related to this plugin. I've mentioned this issue to Brainiac. Below is my message to him.

Hey Brainic, if you got a moment I wanted to discuss an issue with the Navmesh generator.

I figure it's best to leave a message for you to read at your leisure. I was trying to build a navmesh for Velketor's Labyrinth. I find that if I target a creature while standing on a cell below another floor then use /nav id ${Target.ID} it attempts to navigate. However it appeared that it was just moving to the location without trying to path upwards on a Z axis for the pathing. I reopened the navmesh generator and attempted to recreate the mesh. I tried changing every possible setting available through my test. If you build the mesh and then you Shift+Left Click to remove a cell it removes all cells on floors above or below that cell as well as if Z axis is not even considered. It treats tiles above or below each other as if they are the same tile. Again I tried doing test paths using the Navmesh Tester Tool. Pathing from one location to another on the same floor I'm currently on is no issue. However trying to path to a floor above my current location will path to the X Y coordinate (or Y X coordinate whatever order you choose) and ignore the Z setting when considering the path as if again the tile on the current floor is the same as the tile on the floor above it. Please consider creating a fix for this as zones like Velketor's is the kind of zone that this plugin would be greatly helpful for.

and below is his response.

will take a look if i can find some time

It might be prudent to consider creating a mq2advpath option for running a pre-designated path for zones with floors above one another.



 
the issue with that is mq2nav is a 2d mapping program for 3d worlds..... so multiple floors stack are treated as the same plane in the generator. It is a limitation within the zone files as they are. There was an algorithium that can plot it 3d but it is not perfect, as of looking at the last source he has all that included.
 
If it runs up to a location or fails to run up to a location and cannot pick-up a ground spawn, it'd be much better if it then adds that spawn location to an ignore list and move on to the next. Not sure if it was this mac I was using, but I had one where it worked decent enough, but there are always going to be glowing globes that spawn on top of a roof or tree that a mac ran toon is never going to be able to figure out how to loot. Can't loot it, ignore it and move on to the next.
 
once you done the:
Rich (BB code):
  /itemtarget ${Item}
  /delay 1s
instead of doing:
Rich (BB code):
/nav loc ${Ground.Y} ${Ground.X} ${Ground.Z}
try
Rich (BB code):
/nav item

for some reason i found that to work much more reliably.
 
Anyone got a Mushroom Picking mac for the shroom in Kaladin for Brewing Kaladin Constatutionals?
 
Anyone have an updated version for this? the only issue i have it actually picking up the item
 
Shiny Collect by Sicprofundus.

INI:
|---------------------------------
|  *     *       
|  * * * *
|  *  *  *        ShinyCollect - 4/20/19 by Sicprofundus with help from Kaen01 & ChatWithThisName
|  * * * *
|  *     *
|  *     *
|  *     *
|---------------------------------   
|---------------------------------
| Sub: Main
|---------------------------------
Sub Main

    /declare Count    int    outer    0
    /declare MyGroundItem    ground    outer
    /declare ItemX    int        outer    0
    /echo Welcome to \agShinyCollect.mac!\ax
    /echo Written by \arSicprofundus\ax of \arRedguides\aw
    /echo With Fixes, Cleanups, and ReWrite help from \ar@ChatWithThisName\ax and \ag@Kaen01\ax
    /echo Both of these people are amazing, and I couldn't have done this without their help and guidance.
:loop
    /if (${Me.Class.ShortName.Equal[ROG]}) /call CheckRogue
    /vardata MyGroundItem Ground.First
    /for Count 1 to ${GroundItemCount}
        |List up the Glowing Globes info
        /if (${Select[${MyGroundItem.DisplayName},Glowing Globe]}) /echo ${Count} ${MyGroundItem.DisplayName} ${MyGroundItem.Y} ${MyGroundItem.X} ${MyGroundItem.Z}
        |If there's a glowing globe - get that bitch
        /if (${Cursor.ID}) /autoinv
        /if (${Select[${MyGroundItem.DisplayName},Glowing Globe]}) /call CollectNav
        /if (${Bool[${MyGroundItem.Next}]}) {
            /vardata MyGroundItem MyGroundItem.Next
        }    else {
            /echo End of List
        /break
        }
    /next Count
    |heading back to the loop for respawns, but we're gonna chill 20s so we don't spam the fuck outta everything
    /echo We're gonna wait \ar5s\ax then check for more spawns!
    /delay 5s
    /echo Back to finding Shinies!
    /goto :loop
    /return


|---------------------------------
| Sub: CollectNav
|---------------------------------
Sub CollectNav
    /declare MyGroundItemLOC string local ${MyGroundItem.Y} ${MyGroundItem.X} ${MyGroundItem.Z}
    /if (${Navigation.PathExists[loc ${MyGroundItemLOC}]}) {
        /squelch /nav loc ${MyGroundItemLOC}
        /echo Moving to ${MyGroundItemLOC}
        |Changed distance to 15 in case nav moves out of range
        |Also added the Z distance to the math calculation
        /while (${Math.Distance[${MyGroundItem.Y},${MyGroundItem.X},${MyGroundItem.Z}]}>15) {
            /delay 2
        }
    }
    /if (${Math.Distance[${MyGroundItem.Y},${MyGroundItem.X},${MyGroundItem.Z}]}<=15) /call Grab
/return

|---------------------------------
| Sub: Grab
|---------------------------------
Sub Grab
    /invoke ${Ground[Glowing Globe].Grab}
    /delay 5
    /varcalc ItemX ${ItemX}+1
    /echo You found \ag ${Cursor.Name} \ax
    /echo You have collected \ar ${ItemX} \ax shinies so far!
    /if (${Cursor.ID}) /autoinv
    /delay 5
/return

|---------------------------------
| Sub: Check Rogue
|---------------------------------
Sub CheckRogue
    |Don't need to check if I'm rogue, because we did that before calling the sub
    |Check to see if we are sneaking and hiding
    |If I'm already SoS, we can exit this sub early
    /if (!${Me.Sneaking} && !${Me.Invis}) /echo Let's be sneaky!
:checkagain
    /if (${Me.Sneaking} && ${Me.Invis}) /return
    |If I'm already sneaking - hide, if I'm not then sneak
    /if (${Me.Sneaking}) {
        /echo Hiding
        /doability Hide
    } else {
        /doability Sneak
        /delay 5 ${Me.Sneaking}
        /echo Sneaking
    }
    /goto :checkagain
/return
 
I wouldn't share that out or use it - that version of the macro crashes due to ground.tlo stuff
 
so im using this to collect glowing globes in Eastern Wastes, and i've noticed only a small issue. If an item is in one of the giant forts or in a building, MQ2Nav wont navigate to it. is there any way to fix that?
 
so im using this to collect glowing globes in Eastern Wastes, and i've noticed only a small issue. If an item is in one of the giant forts or in a building, MQ2Nav wont navigate to it. is there any way to fix that?

You would have to edit your Mesh to include that spot as reachable.
 
Newb Question - how do you edit your Mesh for a zone? Have seen before but unable to find that command again.
 
I cant seem to get this to pickup glowing globes, what am I missing? :D

Nm I worked it out, its glowing orb not glowing globe :D
 
Last edited:
Love this mac! Thanks TeslaTrader! I wish I knew how to code something that reads the MQ window for "[MQ2 NAV] Could not find path to destination: {x,y,z}" then add that loc to an ignore loc list for that zone. Then this mac would be perfect!
 
i just want to get misty acorns but non of the macs i have tried work as i assumed. stoping at trees and other stuff where they think the things are etc anyone have a mesh or map or something i can get to just be able to get acorns?
 
I know this is an old thread but havign just returned and with new team, and am tryign to use this to farm stuff for tradeskills. However keep getting an error
"couldnt find "strange " to target
no item targeted , use /itemtarget <theid> before issuing a click command.


am sure this used to work fine picking up glowing orbs before i went AOL.
btw am trying to farm mushrooms in kaladim if thats relevent
 
I know this is an old thread but havign just returned and with new team, and am tryign to use this to farm stuff for tradeskills. However keep getting an error
"couldnt find "strange " to target
no item targeted , use /itemtarget <theid> before issuing a click command.


am sure this used to work fine picking up glowing orbs before i went AOL.
btw am trying to farm mushrooms in kaladim if thats relevent
Scots, use:
 
Release GroundSpawn.mac Super Simple Utility

Users who are viewing this thread

Back
Top
Cart