Please disable your ad blocker to support our website.

Learning How to Play (Advanced) - With Coding!

This page here is going to contain some knowledge about how to get better at Everquest as well as some basic knowledge about coding in MacroQuest 2 and using the program. I've made one macro for MQ2 which is simple and straight forward enough for me to teach to others. I'll get more into how to code with MacroQuest 2 later.

First up, let's talk a little bit more about Everquest and how to actually play the game. Don't feel offended or bad if you don't actually know how to play EQ that well and you've made it this far. This is a very complicated game and as a boxer you're taking on the task of playing multiple characters. It took me about a solid month of studying this game when I first started boxing - learning each class, their spells, their AAs what order to use them in what the best rotations were... It's a lot - and that's an understatement.

Aside from all of the information that my boxing guides have already taught you; I've started to compile a random assortment of different guides which will better explain the fabric this game is built on so to speak. The most important one for you to read is the Heroic Stats guide as it'll really help you when it comes to gearing your characters at max level on live servers.

Once you've read the Heroic Stats guide there is no real reading order that you should follow. If something looks interesting to you just follow the link through and read more about it. There's so much to learn in this game that it's very difficult to tell you where to start. Just pick a guide and start reading!

Heroic Stats and Which Ones You Want To Get

Spell Damage & Why You Shouldn't Bother

Banestrike & Why It's Not That Good

Hotbar Swapping (Useful for classes with Debuffs)

(Will Add more over time)

That's all I have as far as guides for Everquest - as aforementioned I have a bit more about MQ2 that I can teach you which is something else I wanted to go over in this guide. We've only just scratched the surface with Macroquest 2 in all honesty with these guides.. There's so many other really cool things that the program can do which I haven't even brought up yet!

Let's put aside the benefits you get from MQ2 with boxing. Putting aside macros like Kissassist, AutoCleric, EoKNuke and other macros that play characters for you. Let's take a look at the other benefits and useful things that this program can do for you.

Scribe.mac is one of the more useful macros I use all the time. It'll purchase all the spells that are sold by a spell vendor and scribe each of them. This comes with the Redguides compile too so all you have to do is /mac scribe while standing near an NPC.

Another favorite of mine is /mac cskillup. If you are power leveling characters and need to raise their magic skills .... This is how it's done! This macro will raise a character's magics for you with just a single key press. Both of these macros greatly decrease the amount of pain that comes with boxing an entire team of characters. No one really likes doing all of the tedious tasks but we all have to do them - MQ2 makes it all much more palatable and dare I even say enjoyable.

I'd like to show you some extremely easy macros that I wrote which you might find useful and also share a little bit of information on how you can make your own macros. First up let's take a look at the two most simplistic macros that I made, Forage and Language.

As you can see by following the links provided both of these macros are only a few lines long. They're both extremely simplistic and even someone who is unfamiliar with code should be able to understand what these two macros do. I've included pictures of them below because we're going to reference them a little bit.

First up, let's look at the similarities between the two. The Forage macro has a title card and then it skips right to 'Sub Main' and :Loop. The Language macro doesn't have a title, but has #turbo then it skips right to Sub Main and :loop.

So you might be wondering what all of this means. Well, let's start with Sub Main which is one of the two most important parts of the macro. Basically how a macro functions is pretty simple, it starts reading each line of the macro from where it says 'Sub Main' until it reaches /return. As you can see for both of my macros above, the entire macro comes between the Sub Main and /return line.

The next thing I'd like to explain for these macros is the :Loop element. :loop is worthless without the other part /goto :Loop. You can find both of these lines of text included in the macros pictured above. The way I have both of these macros setup they'll never end unless stopped by the user. Once the macro starts it goes through each line until it reaches /goto :loop at which point it wraps back around to :Loop and it continues like that indefinitely.

If you'd like to design a similar macro yourself that performs one very simplistic task and then loops around - pilfer one of my macros and cut out the middle part and throw in whatever you'd like and use that. There's plenty of monotonous tasks in EQ you can make simple by using a macro like this.

Next Step; Start Macro

Now we're going to kick the difficulty up a notch as we talk about the Start Macro that I designed. I'm going to break this down piece by piece to hopefully help you understand what's going on with this extremely simple macro.

In the picture above it shows the entirety of two Subs, Sub Main and Sub Crescent Reach. If you haven't noticed every major category gets the 'Sub' prefix. This tells the macro what it's looking for and is required. You might also notice by looking at my picture above that the Sub Main category is very short and all it has in it is a few calls. There is good reason for this.

Sub Main
/if (${Zone.ShortName.Equal[Crescent]}) /call CrescentReach
/if (${Zone.ShortName.Equal[PoKnowledge]}) /call PoKnowledge
/if (${Zone.ShortName.Equal[Guildlobby]}) /call Guildlobby
/end

Sub Main (English Translation)
/if I am in Crescent Reach go to Crescent Reach Sub Routine
/if I am in Plane of Knowledge go to PoK Sub Routine
/if I am in Guild Lobby go to Guild Lobby Sub Routine
/end (If I am in Guild Lobby & ran the Guild Lobby Sub Routine /end)

When you build a macro you're going to want to keep your Sub Main as clean as possible. Basically what you want Sub Main to do is call all of the other 'Subs Routines' in the macro and that's it. You don't want to unnecessarily clutter up Sub Main for a few reasons but the most important one (I believe) is it makes fixing or editing any part of the macro in the future a total nightmare.

What I mean is, say Daybreak decided to revamp Plane of Knowledge and change the layout. Since I gave Plane of Knowledge its own Sub Routine in the macro it would only break that one zone - leaving the rest of the macro unscathed. This means when I go back and fix the macro I only need to fix the Plane of Knowledge Sub Routine or remove it entirely and the macro will run normally again. Assuming of course the Sub Routine wasn't required to make the macro run - in which case removing the subroutine would break it!

Another reason you want to make your Main Sub as clean as possible is because it makes the macro extremely easy to understand for people whom aren't you. This is especially true for this exact moment, I am easily able to break down this macro for you part by part because the person who created it has the foresight to well organize their work (tootin my own flute).

Let's take a closer look at the very first Sub Routine of my Macro, Crescent Reach.

Sub CrescentReach

/echo In Crescent Reach, Starting the macro
/claim
/delay 2s
/invoke ${Window[claimwnd].Child[ClaimFeatureList].Select[${Window[claimwnd].Child[ClaimFeatureList].List[=Gift of Legacies Lost]}]}
/delay 2s
/invoke ${Window[claimwnd].Child[ClaimClaimButton].LeftMouseUp}
/delay 2s
/nomodkey /notify confirmationdialogbox CD_Yes_Button leftmouseup
/delay 2s
/nomodkey /itemnotify "${FindItem[Gift of Legacies Lost]}" rightmouseup
/Delay 2s
/autoi
/Delay 2s
/nomodkey /itemnotify "${FindItem[Potion of Speed]}" rightmouseup
/Delay 2s
/nomodkey /itemnotify "${FindItem[Book of Knowledge]}" rightmouseup
/delay 60s ${Zone.ShortName.Equal[PoKnowledge]}==TRUE
/return

Sub CrescentReach (English Translation)

/echo In Crescent Reach, Starting the macro (This text appears in the Macroquest 2 window)
/claim (Opens the /Claim Window)
/delay 2s (Waits 2 seconds)
/invoke (Clicks on Gift of Legacies Lost in the Claim Window)
/delay 2s
/invoke (Left Clicks the Claim Button)
/delay 2s
/nomodkey (Left Clicks Yes on the confirmation dialogue window)
/delay 2s
/nomodkey (Right clicks Gift of Legacies Lost in your inventory)
/Delay 2s
/autoi
/Delay 2s
/nomodkey (Finds Potion of Speed in Inventory and Right Clicks it)
/Delay 2s
/nomodkey (Finds Book of Knowledge in Inventory and Right Clicks it)
/delay 60s (Checks to see if you're in Plane of Knowledge)
/return

Once you're back in the Sub Main routine, the macro will check to see if you're in Crescent Reach again - which you aren't. Then it will check to see if you're in Plane of Knowledge, which you are. That will tell the macro to run the second sub routine, Plane of Knowledge.

Sub Main
/if (${Zone.ShortName.Equal[Crescent]}) /call CrescentReach
/if (${Zone.ShortName.Equal[PoKnowledge]}) /call PoKnowledge
/if (${Zone.ShortName.Equal[Guildlobby]}) /call Guildlobby
/end

If you'd like to see the entire Plane of Knowledge Sub routine I recommend you take a look at my Start Macro page. I've redacted a lot of the /movetos and other parts of the routine to make things easier to explain below.

Sub PoKnowledge

/echo In Plane of Knowledge, Letting things load first
/delay 15s (I created the pause for slower computers, taking into account people that lag)
/plugin mq2advpath load (Loads Mq2Nav)
/doortarget POKDOOR503
/moveto loc ${Switch.DefaultY} ${Switch.DefaultX}
/delay 5s
/if (${Switch.Open}==FALSE) /call openDoor

/if (${Cursor.ID}) /autoinventory (Needed to put the Fellowship Insignia into Inventory)
/doortarget POKDOOR503
/moveto loc ${Switch.DefaultY} ${Switch.DefaultX}
/delay 3s ${MoveTo.Stopped}
/if (${Switch.Open}==FALSE) /call openDoor

/delay 10s
/doortarget FACADE (Targets Guild Lobby Door)
/moveto loc ${Switch.DefaultY} ${Switch.DefaultX} (Moveto the doors exact location)
/delay 60s ${Zone.ShortName.Equal[Guildlobby]}==TRUE
/return

As you can see, this Sub Routine is a bit longer and more complex than the previous one. I've cut out quite a few of the /movetos that are included in this Sub Routine to try and make the macro easier for everyone to understand. Instead of breaking this Sub Routine down line by line I would like to take a few parts of it out and explain them.

The first one that I'd like to explain to you is found just below this sentence and is also bold in the text that's above.

/doortarget POKDOOR503
/moveto loc ${Switch.DefaultY} ${Switch.DefaultX}
/delay 5s
/if (${Switch.Open}==FALSE) /call openDoor

These lines of the macro run when it gets near the door of Randall's building in Plane of Knowledge. Randall is the guy who gives the Fellowship Insignia for those who are unaware. The main reason I am drawing your attention to this little blob of text is because it calls an additional Sub Routine during this Sub Routine that opens the door (I bolded that part).

If you head on over to the Start Macro page you'll see at the very bottom of the macro I have an additional sub routine which is called Sub OpenDoor. For those of you out there who couldn't already guess, this Sub Routine does exactly what you'd expect it to! It opens doors!

The reason I am drawing your attention to this part of the macro is because this is, in essence, is how I want you to make macros. The Macros in MQ2 run on Sub Routines which run on Sub Routines which run on Sub Routines. How many Sub Routines you make depends entirely on how complex the macro is. The key thing you want to remember is to never make it more complex than it needs to be.

What I mean is, say instead of using a Sub Routine to open the Plane of Knowledge door I just slapped in the code that opens the door. Then I did this very same thing to the next door that leads to the Guild Lobby within the same macro. Instead of just having 1 Sub Routine that opens doors and using /call whenever I need it... I needlessly added text and unnecessary complexity to the macro by adding the same line of code that does the very same thing twice.

Additionally - if anything ever had to be changed with this macro in the future - you'd be doubling the amount of work involved (as I mentioned earlier). Say there was a change made to MQ2 that slightly alters how you open doors. Instead of just having to alter the Sub OpenDoor routine once and the macro being fixed I would have to painstakingly go through the macro and find each place I used the line of code involved in opening doors and edit that.

 

The rest of my Start Macro is fairly straight forward and simple - if you've been able to follow everything I have said about making macros up until this point then that's great and you'll probably understand the rest of the Start Macro without me even having to explain it.

There's still so much more for you to learn when it comes to coding in Macroquest 2 - what I have taught you is only some of the most basic advice to help you understand how macros are made and how they function. Before we move onto the last and final guide in my Isboxer/MQ2 boxing series I would like to teach you a little bit more about Macroquest 2 in general.

First up, I want to provide you with some reading material incase you'd like to keep learning about macros and how they're made. Here are some links with extremely helpful info for creating and maintaining macros.

Macroquest 2 TLOs

MacroQuest 2 Wikia

Whether or not you read any of that is entirely up to you! As I have said time and time again during the course of these guides you're going to be spending a lot of time reading and experimenting to learn everything you need to know about Everquest & Macroquest 2.

I highly recommend you go through some of the macros which are provided to you in the RedGuides compile of Mq2 and see how they're made and what they do. The AutoCleric macros and a lot of the stuff made by Noobhaxxor I strongly recommend you go over, he has a very elegant macro writing style and is easy to learn off of.

Kissassist is also very cleanly written and contains a butt load of useful information if you decide to sift through it one day. Those of you new to MQ2 might have already opened Kissassist and found that the file looked all encrypted - fret not that's not the case and it's actually fixable! Before you can see the Kissassist Macro you have to format it first. It's a slight annoyance but extremely easy to do. For more information on how to format Kissassist follow the link provided.