AC Tool Macro FAQ
Revised: 09/16/2002
Originally posted by Glutious Magimus, revised by Eckzow

Updates are random at best. At request or when something noteworthy changes or something is changed because it was TOTALLY wrong, is when I repost an updated FAQ. When updates do come out, it would be wise to glance over it even though you’ve seen it before. At times, there have been some major corrections to things that were just plain wrong.

Please email me any corrections or additions to this FAQ to Cameron.

Introduction to AC Tool and Macroing - A must read for the Newbie or Beginner.

What is a Macro?
What is AC Tool?
Where do I get the macros?
I can't find a macro that does what I want. Will someone write one for me?
How do I write my own macros?
Macro Safety Tips
How do I earn experience with a macro?

 General Information on AC Tool and Macroing

Combat Mode
Cycle times
How do I figure out the coordinates for MOUSEPOS?
Macro Components
Macroing from level 1-26
Macroing Spell Component List
Mana Pools
No mana for casting your level V Life spell!
Spell Bar Lists
Spell Tabs
Stamina loss
Stuck Mana Pool
What is the Bow Dance and How do I use it?
What is an include?
What is a procedure?
What is a variable (constant)?
What is with the "//" or "(* *)" codes?
DELAY and Server vs. Client side lag
How do I get a Beta Version of AC Tool?

Advanced Topics

Earning Experience in Mana Conversion
Experience for IDing scrolls, kits, picks, etc
Fully Beneficial Multiply Cycle Loops
ID’ing Scrolls
Macro Posting Guidelines
Macroing the War Skill (non-Darktide)
Minimizing Components
ProcessMessages - What is it and getting it to work
Supporting that macro habit
What about casting other spells during the cycle?
What are the experience statistics for all alchemy/fletching/cooking tasks?
What is an object and how does it work?

What’s the point of loops inside of other loops?
Where can I find the beta of AC Tool?
XP gained for each level spell
XP/Hour Calculation
XP from Macroing to Patron

AC Tool Decal Companion

Basics
Where do I find the latest documentation?
Special Variables

Troubleshooting AC Tool

Decal crashes when I try to log into my character! How do I fix it?
My color commands are always returning black for the RGB value.
My color commands such as ISBLUE and GETBLUE are not working.
Why doesn't the MOUSEPOS work?

 

Introduction to AC Tool and Macroing


What is a Macro?

A macro is basically a sequence of commands that will enable you to repeat a certain task or tasks a set number of times. A macro is most of the times run unmonitored, so you can leave your macro running while your working, sleeping or doing something else. In Asheron's Call, it is used to either gain experience points fast in able to increase your levels, increase your knowledge of a skill or skills in order to use that skill better or to produce trade goods items for selling in order to increase your cash reserves.
(Courtesy Slite)


What is AC Tool?

AC Tool is a utility that allows you to list a series of keystrokes and mouse clicks in advance and send them to Asheron's Call at a later time. The list of keystrokes and mouse clicks is called a macro or a script.

AC Tool does not intercept data returned by Asheron's Call. That means a macro cannot tell when you are attacked, if you have run out of something needed by the macro, etc, however there is a Decal Companion for AC Tool can be used to intercept data and perform other useful functions.  See the CHANGE THIS section on AC Tool Companion.


Where do I get the macros?

Macros in progress (being written and tweaked) are often posted to the general discussion forum. Successful macros are frequently reposted to the Macro forum. Both are good places to look for a script.


I can't find a macro that does what I want. Will someone write one for me?

You are welcome to adapt the macros you find here to suit your own purposes; however, it is extremely unlikely that anyone will write a macro for you. Most requests that someone write a macro go ignored.

You'll have much better luck getting assistance if you at least attempt to write your own macros and then post narrowly defined questions (Not "How do I write a fletching macro?" but "I am using this code, but I can't get the items to stack correctly. What am I doing wrong?" )

Also, adding a little incentive doesn't hurt.  Sometimes if you look around your server's trade board or ebay you can find people willing to write macros for in-game goods or money.


How do I write my own macros?

First, get familiar with the default keymap for Asheron's Call. You will be sending keystrokes, so you must know what keystrokes you may use. Most of the keys are listed in the manual which came with the game; however, some patches have changed a few of the keys.  A good place to look is the Map of Default Keyboard Functions provided by Microsoft, links to which can be found on the Downloads page of the AC zone page.

Once you have done that, determine the conditions under which your macro will execute.

For example, assume that you want your macro to combine bloodseeker infusions with an aqua incanta to make bloodseeker oils.

Starting circumstances might include...

you have nothing in your hands.
you are in peace mode.
you have a stack of bloodseeker infusions in your hotkey slot 1.
you have a stack of aqua incanta in your hotkey slot 2.
your main back pack has room to hold 50 oils.

Now list the keystrokes in the order in which they should be sent to Asheron's call. In our example, we'll need to press 1 to select the bloodseeker infusion, then 2 to select the aqua incanta.

So far, the macro looks like:

// This line is necessary to select the proper window
SetActiveWindow Asheron's Call

keys 1
keys 2

Now decide how much time should elapse between each keystroke. Delay times are written in thousands of a second. A delay of 2 seconds would be written as 2000. A delay of 1/4 second would be written as 250.

Enter a DELAY time in between each keystroke that allows time for the previous keystroke to be received and executed as well as allows for a little lag. For our example, a delay of .5 seconds is sufficient.

The macro now looks like:

// This line is necessary to select the proper window
SetActiveWindow Asheron's Call

keys 1
delay 500
keys 2
delay 500

You decide that you want to make oils in sets of 50. To have the macro repeat an action many times, you use a loop. You must mark the start and end of the loop, and you must indicate how many times the macro should loop.

The macro now looks like:

// This line is necessary to select the proper window
SetActiveWindow Asheron's Call

loop 50
  keys 1
  delay 500
  keys 2
  delay 500
end

Now preface your macro with a delay long enough to let AC Tool bring Asheron's Call to the foreground and begin execution.  With the AC Tool Companion you need not do this because you can start the macro from within Asheron's Call itself by pressing F2, however if you are not using the companion this delay is necessary.

// This line is necessary to select the proper window
SetActiveWindow Asheron's Call

delay 10000
loop 50
  keys 1
  delay 500
  keys 2
  delay 500
end

You can comment your macro using //.  Note to beginning programmers: Comments are good.  Comments are your friend.  Please comment so you don't loose yourself in your own code and then come crying to the boards looking for help. :)

// This line is necessary to select the proper window
SetActiveWindow Asheron's Call

// Start in peace mode with hands empty.
// Place 50 bloodseeker infusions in hotkey slot 1.
// Place 50 aqua incanta in hotkey slot 2.
// Make sure there are 50 free slots in the main pack to receive the oils.

 
delay 10000 // Get into the game
loop 50
  keys 1 // Select bloodseeker infusion
  delay 500
  keys 2 // Combine with aqua incanta
  delay 500
end

This has been a very simple macro. Macros can be much more complex, executing many tasks, but the building blocks of a macro are all the same.


Macro Safety Tips:  

Before macroing, go into the character options menu and turn off :
Accept items from other players.
Accept fellowship requests.
And whatever the new one is for participating in secure trades.
(Courtesy Digger)


How do I earn experience with a macro?

In Asheron's Call, you can earn experience by killing a creature or by exercising a skill. To earn experience with a macro, you must write a script that does one or both of these things.

Exercising a skill: Casting a spell, making a pie, or evading a creature all require checks against your character's skills. When you perform an action which requires a check against a trained or specialized skill, you earn experience in that skill every once in a while.

Exactly when you earn experience is determined as follows:

  1. Is the action you are performing more difficult (worth more experience) than the last action you performed using that same skill? If yes, you earn experience. If no, then...

  2. Has it been at least 130 seconds since the last time you performed any action using that same skill? If yes, you earn a much smaller amount of experience. If no, you earn none.

Simple Example:

  1. Cast a level one life spell.

  2. Wait five seconds and cast a level two life spell. Is casting a level two spell more difficult than casting a level one spell (the last action using life skill)? Yes -- award experience.

  3. Wait five seconds and cast a level two life spell. Is casting a level two spell harder than casting a level two spell (the last action using life skill)? No -- Has it been at least 130 seconds since the last time the skill was used? No -- do not award experience.

To earn this type of experience in a macro, you must set up your character to exercise her skill by performing actions ordered from lowest difficulty to highest difficulty, then waiting 130 seconds before beginning again.

You can perform other actions which use a different skill during the 130 second waiting period. For example, you may cast three creature spells, and during the 130 second waiting period before casting another creature spell, cast several life spells, ID a healing kit, and bake an apple pie.

How can I tell how difficult an action is (how much experience it is worth)? You can discover the relative difficulty of actions yourself by carefully observing how much experience you are awarded when performing an action. The more difficult the action, the more experience you are awarded.

Example: You carve a steak and notice that you received 5 xp awarded to your cooking skill. You make meat pie and receive 20 points of xp. Making a meat pie is more difficult than caring a steak.

To earn maximum experience in a macro, order your actions from least-experience-awarded to most-experience-awarded for the same skill, then wait at least 130 seconds before repeating.

While the difficulty of some actions is obvious (casting a level three spell vs a level one spell, for instance), others are not so obvious. Fortunately, a lot of research on difficulty/experience awarded has already been done and is available.

Fighting macros: Fighting macros have been completely revolutionized by the AC Tool Companion.  We used to write blind macros in the vague hopes of managing to find a target and then blindly attack it.  We were not able to strategize our attacks or cast spells very efficiently.  New fighting macros are released daily and are a great deal more sophisticated and successful than the combat macros of old.  Examples of fighting macros can be found on the macro forum, the beginnings of one can be found in the AC Tool Companion portion of this FAQ.

 

General Information on AC Tool and Macroing


Combat Mode:  

Especially if you are writing a combat macro, making sure you are in combat mode is very important.  We used to do something called a "bowdance," a now archaic procedure that can still be found in this FAQ (as it actually does still have uses), however you will want to refer to the AC Tool plugin sections for the more "modern" methods of checking combat mode.


Cycle times:  

Applying to skill-based (non-combat) macros the most, this seems to be the biggest debate/unknown in macroing. From extensive testing by many people, the optimal cycle time for getting the most xp/hr is 130-160 seconds. Using a cycle time of 130-160 seconds, you will get ALL/FULL xp for a spell EXCEPT the first spell cast in that school. For the first spell cast in that school, you will get very little of the full xp, something like 2-11xp. But since it is a level II spell, you aren’t loosing much! For example, if my first cycle is II, III, IV, then my second cycle is, after a full 145 seconds, II, III, IV, then I would get less than 110 xp for the II, and FULL xp for III, and IV. I would rather have many 145 second cycles and get full xp on my III’s and up spells, than to have one veeeery long cycle just to get full xp on a level II spell.


How do I figure out the coordinates for MOUSEPOS?

The AC Tool Object Mapper is a very nice program was written by Paoda.  Though the real purpose of this program is to map objects, a subject covered later in this FAQ, it can be used to very easily find mousepos coordinates.  Simply press the '*' key on the keypad while in Asheron's Call, and then exit the game and copy the SS from the clipboard into the Object Mapper.  Now click anywhere on that sized image and the program will tell you the coordinates!  It's that easy!


Macro Components:  

Keep separate packs for your "macro components" so when you want to actually play your character between macro sessions it doesn't take hours to split out the extra components to reduce your 200% burden. You can simply mule off those packs.  Also another good idea is to refer to the boards for the current "in-style" method of checking for component loss and pea splitting.  At the time this is being written, most people check for the "out of components" message and then use another decal plugin called PeaGimp to automagically split peas, thus reducing the burden of the spell components.


Macroing from level 1-26:  

Be cautioned when FULLY macroing a character from 1-26. A little more than 90% of all XP gained from macroing goes DIRECTLY into the skills being macroed with less than 10% going to spendable xp. So, for me, a four school mage from creation, my Life, Item and Creature would raise but not my War. If I had macroed from level 1 and not actually played at all, then my Life, Item and Creature would be great, but War would NEVER move. This just means that when I start playing my character that all the spendable XP from that point on will go into non-macroable attributes/skills like War, Focus, Strength etc. A level 26 fully macroed mage would not look like a played mage at the same level. If someone macroed from level 1 to 26, earning a total of 3,180,153, then they would only have less than 10% of that spendable or around 300,000 xp. That may not be enough xp to put into your other skills to bring that character up to what played level 26 would be. But, if you played from level 26-30, I bet both macroed and played mages would look the same. The point is that I much rather have an equally balanced character from the start than an out-of-balance player.


Macroing Spell Component List:  

Use the latest version of SplitPea/RainPea, or another 3rd party utility to create a special spell list JUST for macroing. That way you can filter for known spells and print a list of just the components needed to macro. You can do this by just adding another character in SplitPea/Rainpea.  Also, if you have a character that you only macro you can set the /fillcomps profile for your character to just hold your macro components.


Mana Pools:  

Those new to macroing your mage, may not know what a Mana Pool is. There is a little blue pool every Meeting Hall that replenishes from 2-10 mana every 5 seconds or so. These greatly reduce macro cycle times, and will quickly become your best friend in a skill-developing macro.


No mana for casting your level V Life spell!:  

Assuming you have about 120 health or so, cast Health to Mana II in your Life section of your macro. Then cast Heal Self V for your level V spell. The Health to Mana II makes up for the mana used in the Heal Self V!
(Courtesy Lifer)


Spell Bar Lists:  

Keep a Combat spell bar setup list and Macro spell bar setup list so re-ordering your spell bar for actually playing between macro sessions is easier and quicker.  Also, future versions of the AC Tool Plugin promise to offer spellbar-less casting.  And there was much rejoicing! *yay*


Spell Tabs:

Below lists the spell tab navigation commands with their default keyboard assignment:

Prev Tab Key (insert) = Prev tab
Next Tab Key (pageup) = Next tab
Prev Spell key (delete) = Prev spell
Next Spell key (pagedown) = Next spell
CTRL + Prev Tab key = First Tab
CTRL + Next Tab key = Last Tab
CTRL + Prev Spell key = First Spell in List
CTRL + Next Spell key = Last Spell in List
END = Cast spell

The newest and most convenient way of setting up your tabs is to use one spell tab for all your spells. So, in a typical macro you could use CTRL + Prev Tab at the beginning of your macro to make sure you are on the first tab. Then use CTRL + Prev Spell = First Spell in List to put you on the first spell in that tab. Then END to cast that spell. So a cycle may look like this:

code:

While 1 = 1
  keys ^{INS} // the ^ in front of the insert key is a CTRL key.
  keys 1
  delay 1500
  keys 2
  delay 1500
  keys 3
  delay 1500
  .
  .
  .
  .
  keys {PGUP} // moves to second tab
  keys 1
  delay 1500
  keys 2
  delay 1500
  keys 3
  delay 1500
  .
  .
  .
  .
end

One note however, you can only have a spell once on a spell bar. So, if your macro casts the same spell more than one time at different times in your loop, you will have to navigate back to that spell to cast it.


Stamina loss: If you are seriously overburdened (190%+ or so), you will loose stamina by just standing in combat mode thus eliminating the option of casting Stamina to Mana to get mana back unless you lay down and get back up again before casting stamina to mana. Off load all un-necessary items before macroing such as armor. Keep a mule in the meeting hall for this purpose.


Stuck Mana Pool: The mana pool CAN "get stuck" at random times. The other day while I was watching, it simply stopped infusing me with mana even though I didn't have full mana! To solve this, I just go out of combat mode, lay down and go back into combat mode again. This seems to work just fine. Many people lay down anyway, but some people just put enough time between spells for the mana pool to refill them. I’ve even seen characters that jump during their macro. This probably works also. If you do the “Bow Dance”, this will kill 2 birds with one stone. It will insure that you are in combat mode AND “unstick” the mana pool. If your having a problem with wandering out of the mana pool when your standing and laying down a lot this is an easy fix:

code:

delay 2000
{LEFT}
delay 2000 

The delays are not needed, but I like putting them in there for good measure. This will cause you to turn very slightly to the left every cycle. If your doing *ALOT* of laying and standing you might want to add it a few times. This will cause you to rotate therefore your not going forward in the same direction. I ran my macro with this for 12 hours and I was still in the middle of the mana pool. Before I had long left the mana pool in the morning.
(Courtesy Jaerin)


What is a Bow Dance and How do I use it?:  

As I mentioned earlier in this FAQ, the AC Tool plugin renders the bow dance pretty archaic, however for good measure I still include the explanation of the "old-school" bow dance.

The point of the bow dance is that if you accidentally get out of sync (i.e. in peace mode when you should be in war mode) you want to recover from it.

Follow these two scenarios:

  1. You go into combat mode successfully so you are standing there with the wand in your hand in combat mode. You do the bow dance and this is what happens: ^1 to arm your bow. Since you are in combat mode already and have no ammo, then your bow is put into your hand, you attempt to string a bow and drop out of combat mode. Then 2 to put your wand back in your hand, then ` for combat mode - all set to go!

  2. You go into combat mode UNsuccessfully so you are still laying there like an idiot, hehe. You do the bow dance and this is what happens: ^1 to arm your bow. Since you are NOT in combat mode, you simply put the bow in your hand. Then 2 to put your wand back in your hand, then ` for combat mode - all set to go!

Lag STILL can mess you up if it hits during the bow dance though.

There are 3 ways (so far) to do the bow dance:

The newest way:

This way is a little different in that you do it while laying down. Under normal circumstances, you will be in peace mode lying down when you equip the bow and then re-equip the wand. However, if you are actually in war mode (out of sync) and try to equip the bow, it will switch to the bow and then try to switch back to war mode - since you're out of ammo you'll wind up back in peace mode, with your bow equipped. Then equip the wand, and you're golden. Your next cycle will hit, you'll go into war mode and start casting - just as you want.

code:

keys B
delay 10000
// Bow dance while resting so it doesn't slow you down
keys ^1
delay 15000
keys ^2
delay 60000

(Courtesy Madar)

Another good way:

code:

//Switch to an ammo-less bow (CTRL 2)
keys ^2
delay 10000
//Equip wand/staff/orb
keys 1
delay 10000
//Go into combat mode
keys `

(Courtesy K)

This is the original way and works fine as well:

code:

// First action is to verify that you are in a known state.
//
// If you are in casting mode the following steps will occur:
// Cast spell #2; Exit combat; Equip xbow; Equip Wand; Enter Casting mode
//
// If you are not in casting mode the following will occur:
// Equip xbow; Enter combat mode and drop out because of no ammo; 
// Unequip xbow; Equip Wand; Enter casting mode
keys 2
keys `
keys 2
keys 1
keys `

(Courtesy Tony James)


What is an include?

An include is an instruction to insert the text of another file in the current macro.

Example:

INCLUDE 1600x1200.mac

This instruction inserts the contents of the file 1600x1200.mac at this point in the macro.

Why use includes? Using includes makes it easier to write and maintain macros.

Suppose you run Asheron's Call at 800x600 resolution. You could write a file that defines constants for all of the mouse positions you might want to use in a macro and save it as 800x600.mac. Now, instead of figuring out all the mouse positions again each time you write a macro that needs one, you simply include 800x600.mac in your macro.

Now suppose that after writing 20 different macros, you purchase a new video card and wish to run Asheron's Call at 1600X1200 resolution. If you had typed in the mouse coordinates into each of those 20 macros, you would now have to edit all of them individually to correct the mouse positions for the new resolution. If, however, you used an included file, you would only have to correct the mouse positions in that one file -- a much easier task.


What is a procedure?

A procedure is one or more lines of macro code that has been assigned a name.

Example:

Procedure StackItems
  loop 50
    keys F
    delay 500
  end
End

The name of this procedure is StackItems. The code between Procedure and End Procedure will be executed any time the procedure is called.

Why use a procedure?
There are several reasons why you may want to use a procedure in your macro.

It saves time and space. Storing pieces of frequently used code as procedures allows you to call the code with just one instruction instead of typing multiple lines again and again.

Example:

Procedure StackItems
  loop 50
    keys F
    delay 500
  end
End
 
keys 8
delay 500
keys 9
delay 500
Call StackItems
keys 6
delay 500
keys 7
delay 500
Call StackItems
keys 4
delay 500
keys 5
delay 500
Call StackItems

This not only saves space in your macro (this macro is 8 lines shorter by using procedures), but it also helps to save your time in writing it. It makes it easier to modify the macro later.

In the example above, the StackItems procedure has a delay of 500. If you find this is too short, you only have to change it in one place -- the procedure. Without procedures, you would have to find each place in your macro where items are stacked and adjust the delay yourself.

It's easier to understand the flow of the macro. Procedures help to break up code into understandable chunks of instructions.

Looking at the StackItems procedure all by itself, it is much easier to figure out what it does than if it is buried within dozens of lines of code. And each time you see :call StackItems in a macro, you know "this is where the items get stacked" without having to worry about how it works.

What should I watch out for when using procedures? Be sure the procedure appears in the macro before it is called. A good practice is to put all procedures together at the very start of your macro.

You can call one procedure from inside another. This is called nesting. Make sure, however, that the procedure being called is defined before the procedure that calls it. Be sure your procedure is self-contained. If you start a loop in a procedure, end it in the procedure. While it's possible to end the loop outside the procedure, it's sloppy practice (it will be hell to debug execution errors).


What is a variable (constant)?

A variable/constant is a label for a piece of information.

Example: When you fill out a form, "Last Name" is the label (variable/constant name) for the piece of information that will be placed in the blank next to it. The name you actually write in the blank is the variable Last Name's value.

The label is called a variable because, sure enough, the value it represents may vary

Note: the following are my assumptions. Please correct if wrong. Compared to other scripting languages, AC Tool's support of variables is limited at the moment, more closely resembling the functionality of constants. Therefore, Cameron has chosen to use CONSTANT and SETCONST as related commands to prevent any confusion.

How do I use a variable/constant? At the beginning of a macro script, define the variables/constants you will use.

Example:

CONSTANTS
  NumberOfItems = 50
END

In your actual macro code, precede the name of the variable/constant with a $ so that AC Tool will recognize it.

loop $NumberOfItems
  keys F
end

Change the value of the constant/variable with the SETCONST instruction, followed by the variable/constant name, a comma, then the new value:

SETCONST NumberOfItems = 35

Why use variables/constants? Variables help to make procedures more flexible and keep your macro shorter.

Example:

CONSTANTS
  NumberofItems = 50
END
 
Procedure StackItems
  loop $NumberOfItems
    keys F
  end
End
 
// code to make fifty items
:call StackItems
 
// code to make 35 items
SETCONST NumberOfItems = 35
call StackItems

In this example, the StackItems procedure can be used to stack different quantities of items because it uses a variable/constant to tell it how many to stack.


What is with the "//" or "(* *)" codes?  

The "//" codes are not codes at all. They are comment lines. AC Tool ignores everything after a // in a line. This allows people to put in comments explaining what the macro program is doing without AC Tool reading them.  "(* *)" are block comments.  These allow you to make several lines comments.  For all you newbie programmers out there, please use comments!  This makes your code much more readable and you are much more likely to get help if you aid in other's understanding of your code!


DELAY and Server vs. Client side lag:  

While writing a macro for level 2-4 spells (18 spells), I wanted to use just one spell bar so that I didn’t have to reset all my bars up every time I wanted to play and then again when I wanted to macro. It seems that delays are only needed when actions take place that send data to and from the Zone servers. These include casting spells, moving around, manipulating inventory items, id’ing, etc. I have found that switching spells tabs and switching spells within the tab does NOT depend on sending data to and from the Zone servers. In my macro I needed to tab through the spell list to a specific point on the spell bar sometimes as many as 9 spells away. I use the default keys of pgdn and insert to accomplish this. I had 9 {PGDN}s without and delays. They were just simply listed one after the other on different lines. After about an hour testing the macro flew up and down the spell bar casting perfectly even though there was lag in the Allegiance Hall. So, to save time in your macro, you can eliminate using the DELAY command when switching spell tabs and spells within a tab.

 


How do I get a Beta Version of AC Tool?

First, it is important you understand what a Beta is. A Beta version of a product is a user untested product. This means it is fresh out of development and most likely has some undiscovered bugs. For this reason, beta versions are not for everyone.

That said, beta versions usually work fairly well and contain feature sets that are often well worth the risk of using it. The same is certainly true for AC Tool and the companion. So if you are willing to spend a little time playing with new features and possibly reporting bugs, download AC Tool Companion Beta.

The only catch is that you don't get to play with the new features and get the nifty title of "beta tester" without a little something.  PayPal donations are one possible method of gaining status of "AC Tool Contributor" and beta privileges, though it would probably be much more appreciated if you helped out with coding/board support/article writings.

 

 

Advanced Topics


Earning Experience in Mana Conversion

Casting the following spells earns the specified amount of experience when mana conversion successfully kicks in:

vuln 1 - 01 exp pt
buff 2 - 50
vuln 2 - 62
buff 3 - 75
vuln 3 - 87
buff 4 - 100
vuln 4 - 112
buff 5 - 125
vuln 5 - 137
buff 6 - 150
vuln 6 - 162

total - 1061

This is with the standard 130 sec delay cycle. So if you have the pyreals, you can do this macro or add vulns incrementally into your md macro.


Experience for IDing scrolls, kits, picks, etc

Scrolls
Level II Buff: 50 XP
Level II DEbuff: 75 XP
Level II Drain HEALTH: 88 XP
Level III Buff: 100 XP
Level III DEbuff: 125 XP
Level III Drain HEALTH: 138 XP
Level IV Buff: 150 XP
Level IV DEbuff: 175 XP
Level IV Drain HEALTH: 188 XP
Level V Buff: 200 XP
Level V DEbuff: 225 XP
Level V Drain HEALTH: 238 XP

* Exception - Leadership Mastery scrolls give EXP of a debuff scroll at 1 level less
e.g. A Leadership Mastery III scroll will give 75 exp.

Healing Kits
Plain + 1
Good +10
Excellent +20
Peerless +30

Lockpicks
Flimsy + 0
Crude + 5
Plain + 10
Reliable + 15
Good + 25
Excellent + 50
Superb + 75
Peerless +100

Can someone verify the weapons ID information that I have. It's nice to have multiple verifications...

For weapons you get 10 points/per ALL spell levels on the weapon. e.g. A sword with BD V, SK IV, HS III = 120 points of exp. The only exceptions I've seen are with the ravenous and atlan.


Fully Beneficial Multiply Cycle Loops:  

Use multiple beneficial cycles within each loop. The benefits of doing this are many, but basically it causes you to be a very efficient spell caster, minimizing fizzles, maximizing xp, in the least amount of time. Without going into much detail, you can see that every spell is beneficial to the macro. Not spells like Armor IV and Coordination III, etc. Strength was added to help with stamina recovery when overburdened.

Something like the following:

Loop 1000
  Cycle 1
  Creature Mastery Self II
  Life Mastery Self III
  Bludgeon Bane II
  Blade Bane III
  Stamina to Mana II
  Rejuvination Self III
  .
  Cycle 2
  Focus Self II
  Item Mastery Self III
  Bludgeon Bane II
  Blade Bane III
  Health to Mana II
  Regeneration Self III
  .
  Rest, Stamina to Mana I
  .  
  Cycle 3
  Willpower Self II
  Mana Conversion Mastery Self III
  Bludgeon Bane II
  Blade Bane III
  Stamina to Mana II
  Mana Renewal Self III
  .
  Cycle 4
  Strength Self II
  Magic Resistance Self III
  Bludgeon Bane II
  Blade Bane III
  Heal Self II
  Heal Self III
End

ID’ing Scrolls:  

Add id'ing scrolls into your script during rest times or during times you are waiting for the reset timer to kick in. ID a level 1-6 scroll 2 scrolls each level (Schools don’t matter. One buff and one debuff. Do the buff first.) Your Arcane Lore can raise amazingly fast between levels 1-20. Simply put the scrolls in slots 4-9 (not room for all 12 scrolls using this method. Save slots 1 for wand, 2 for bow if you do the “Bow Dance”, and 3 for item for Item spells), hit ESC to deselect the item currently selected, hit E for appraise, then the number, ESC, E, #, ESC, E, #, and so on.

Carrion Shreth drop level 1 scrolls. Skels and Drudge Robbers drop level 2.
I picked up my low level scrolls from Eastham Sewers (there is a robber behind the locked door, great for low level loot. Level II scrolls, Level I jewelry/wands/clothes). Remember, scrolls come in 25xp increments. So, you need a 25, a 50, a 75, etc... to maximize your skill gain.
(Courtesy Tony James)

XP gained from scrolls are as follows:
Level I Buff: 1 XP
Level I DEbuff: 1 XP
Level II Buff: 50 XP
Level II DEbuff: 75 XP
Level III Buff: 100 XP
Level III DEbuff: 125 XP
Level IV Buff: 150 XP
Level IV DEbuff: 175 XP
Level V Buff: 200 XP

This is also a good ID’ing macro from Shadow Dragon not using the quickkeys:

code:

//place the items to ID in the main backpack
//starting with the highest in the first slot
//and moving on to the lowest
//place the mouse over the lowest level item
//loop as many times as you have things to ID
loop 8
  //ID the item under the cursor
  RIGHTCLICK
  DELAY 2000
  //Restore the inventory
  {F12}
  DELAY 2000
  //Move the item to the beginning of inventory
  //moving the next item into place
  keys f
  DELAY 2000
End

Macro Posting Guidelines

To make it easier to follow and adapt your creations the following informal structure might help:

Headers:

// Descriptive name of macro, date, maker.
// Skills: What skills are trained using the
// macro
// Req: List of needed material.
// Layout: Description of the layout needed
// to make the macro work, what goes where
// etc.
// Creation/Duration: How many times each
// action is performed and how long each
// pass takes.
// Exp: If possible an approximation of exp
// yielded.
// Comments: Other comments about the macro

In the script proper:

  1. Use as much comments as possible. If possible comment each action the first time it appears. This makes adaptation much easier and removes any confusion that might arise due to different keyboard layouts etc.

  2. Don't use massive blocks of script text. To increase readability put a blank line after each finished action or the like.

  3. Use indentation inside loops. This will increase the visibility as to what belongs in which loop and generally makes reading the script easier.
  4. In general, think a bit about the structure of the script and the fact that other people will be trying to understand it.

Macroing the War Skill (non-Darktide):  

I don't think there are xp, spendable or skill xp, gained when firing War spells at non-monsters/non-pks. As of yet, macroing War is not very feasible/profitable/reliable.

If you are targeting monsters, you only get skill xp from each monster "family" once every 5-6 min. (not positive on the exact time). If you attack any drudge, you won't get xp for *ANY* other drudge until that clock has reset.
(Courtesy Shadow Dragon)

You get skill in war magic based on the magic D of the creature. If you kill one drudge, you have to kill another with a higher magic D or you won't get the skill experience. For instance, you hit a drudge lurker and then a drudge ravener, you will get war experience for both. The best way to macro war magic is to fire at creatures that you can one-hit kill. Ideally a spawn with a variety of levels of creatures, and kill them in order.
(Curtesty Dood)


Minimizing Components: For Item spells, use the same spell for each level to lessen the need for that many more components. Use like Pierce Bane II, III, IV, etc.
(Courtesy Jaerin)


Using the ProcessMesages command.  The ProcessMessages command is used when you have a procedure that contains an EVERY, ON, or WHEN command

For Example...

Procedure SpeakTheTruth EVERY 1 min
  SendText 1, Cam is the coolest person alive !!
End

The best place to use the processmessages command is in your main code loop.

While 1=1
  ProcessMessages
  SendText 1, I Just Proccessed my Messages !
End

If you were to string this code together

Procedure SpeakTheTruth EVERY 1 min
  SendText 1, Cam is the coolest person alive !!
End

While 1=1
  ProcessMessages
  SendText 1, I Just Processed my Messages !
  // code stuff
End

You would get code that would say:

I just Processed my Messages

Every loop, and every 1 minute say:

Cam is the coolest person alive !!!

Personally, i use ProcessMessages for buffing. it comes in really handy. Code for buffing would look like this

CastSpellDelay 500

Procedure BuffMe EVERY 16 min
  CastSpell Life Magic Mastery Self VI
  // add whatever spells you want to cast.
End

While 1=1
  ProcessMessages
  Delay 50
  // add your other code here
End

So basically, ProcessMessages just looks at your procedures that have another command on the end, such as EVERY, ON, and WHEN. For EVERY, it will keep track of the time and execute your code when it is up. For ON, once it sees what you specified, it will execute. Lastly, for WHEN, it will execute when the condition is true.

Lastly, ProcessMessages will Immediately execute your code the first time you fire up the macro if you use an EVERY statement. Then not again until your specified time is up. There is a command that you can use to avoid this, however. Using the ResetEveryProc command will do what it says, it will ~reset~ the timer on the EVERY Procedure. This is useful for looooooong buff cycles, and for people who do not want their procedure ran on startup. The code used with this would look something like this...

Procedure BuffMe EVERY 17 min 
  // EXTREMELY long buff cycle (like 2-3 mins)
  ResetEveryProc BuffMe 
End

ResetEveryProc BuffMe
While 1=1
  ProcessMessages 
  Delay 50
  SendText 1, I Just Processed my Messages !
  // code stuff
End

Q: When process messages is called and more than one procedure is ready to "fire". What is the selection criteria for who goes first?

A: Procedures are run in the order in which they appear in the macro (Procedure near the top of the .mac file will execute before one lower down).
Therefore if you have critical Procedures (eg Procedure HealMe When _MyHealth < 50 ), place them at the top of the macro.
 


Supporting that macro habit:  

Macroing is expensive to say the least. Yes, you are generating xp while sleeping, but you aren’t generating any pyreals while sleeping either! Since the massive world-wide vendor rate adjustments there is no "easy" way to make cash.  Most likely in your non-macroing AC time you will want to be hunting high-loot profile monsters, such as Umbris Shadows, Altered (and higher level) drudges, some higher level bandys.  Just all the things you would normally hunt for cash, maybe not looking as much for the xp from the monsters.


What about casting other spells during the cycle?

This same rule applies to any other non-debuff spell that you wish to cast as part of your cycle. Determine how much experience it should earn, and place it after spells which earn less, before spells that earn more.


What are the experience statistics for all alchemy/fletching/cooking tasks?
There is a complete list of exp stats at http://members.home.net/julia.child


What is an object and how does it work?

An object is a collection of points and the highest color in the RGB (Red, Green, Blue) point. So, if you say:

code:

Object Something
  255=0,0
  255=0,2
  255=0,4
  255=2,0
  255=2,2
  255=2,4
End
ISOBJECT Something AT 5, 5

AC Tool does the following:

Does one of the RGB colors at 5, 5 = 255
Does one of the RGB colors at 5, 7 = 255
Does one of the RGB colors at 5, 9 = 255
Does one of the RGB colors at 7, 5 = 255
Does one of the RGB colors at 7, 7 = 255
Does one of the RGB colors at 7, 9 = 255

If all the conditions above are true, then you have a valid object and the ISOBJECT command returns true. 


What’s the point of loops inside of other loops?:  

Putting loops in side of other loops is called “Nesting” or “Nested Loops.” Using nested loops inside your macro is NOT necessary for your macro to be successful. The main reason why nested loops are used is for when you want do NOT want to do something every loop. The best example is the bow dance. There is a version of doing the bow dance that you do not do every cycle. I do it every 15 minutes. An example of this is as follows:

code:

//========================
// START THE OUTER LOOP
//========================
LOOP 1000
  //====================================
  // START THE INNER LOOP - 7.5 MINUTES
  //====================================
  LOOP 2
    .
    .
    .
    .
    SPELLS GO HERE
    .
    .
    .
    .
  END
  //=================================
  // END THE INNER LOOP - 7.5 MINUTES
  //=================================
  //Bow Dance every 15 minutes to ensure you are in combat mode.
  //Switch to an ammoless bow (CTRL 2)
  keys ^2
  DELAY 8000
  //Equip wand/staff/orb
  keys 1
  DELAY 3000
  //Go into combat mode
  keys `
  DELAY 5000
END
//=====================
// END THE OUTER LOOP
//=====================

The inner loop is done 2 times (LOOP 2) equaling 15 minutes and then the bow dance is done. The outer loop is done 1000 times and the inner loop is done 2 times every time the outer loop is done.

Another reason nested loops is done is for taking screen shots at certain times in your macro. You probably don’t want to take a screen shot every loop, or you might crash your hard drive!


Where can I find the beta of AC Tool?

First, it is important you understand what a Beta is. A Beta version of a product is a user untested product. This means it is fresh out of development and most likely has some undiscovered bugs. For this reason, beta versions are not for everyone.

That said, beta versions usually work fairly well and contain feature sets that are often well worth the risk of using it. The same is certainly true for AC Tool. So if you are willing to spend a little time playing with new features and possibly reporting bugs, download AC Tool Beta.

The only catch is that you don't get to play with the new features and get the nifty title of "beta tester" without a little something.  PayPal donations are one possible method of gaining status of "AC Tool Contributor" and beta privileges, though it would probably be much more appreciated if you helped out with coding/board support/article writings.


XP gained for each level spell is:
Level 2's give you 110xp with 100 going to the skill and 10 to spendable.
Level 3's give you 220xp with 200 going to the skill and 20 to spendable.
Level 4's give you 330xp with 300 going to the skill and 30 to spendable.
Level 5's give you 440xp with 400 going to the skill and 40 to spendable.
Level 6's give you 550xp with 500 going to the skill and 50 to spendable.

Special cases:

Leadership III and IV spells give 50 points less than there same level same school spells. For example, Leadership III gives 150xp to Creature and Willpower III gives 200xp to Creature.

Creature and Life debuffs give Magic D x 2 worth of xp towards there respective schools. See Incorporating Debuffs in your macro below.

Also, there usually is a little xp that goes to Mana Conversion. This amount hasn’t been figured out yet.  It's one of Turbine's most closely-guarded s3krut formulas...


XP/Hour Calculation:  

To help figure out your xp/hr only reliable way is to record the time when you cast your first spell to the time you want to stop. Using @age does NOT give you accurate time. @age seems to be quit a bit behind real time. Over an hour period of time, @age can be as much as 15 minutes or so slower than real time.  In fact sometimes @age will sometimes even add in a random 42,000 seconds.  This can cause the over stating (or extreme under stating in the case of the 42,000 second time addition) of xp/hr since you will be dividing by a smaller (larger) number. XP/HR = BEGINNING XP / TOTAL MINUTES IN REAL TIME * 60


XP from Macroing to Patron:  

From what I can tell, only spendable xp is used to calculate what xp goes to your patron.

 

 

AC Tool Decal Companion


Basics

You need a few things to run the AC Tool Decal Companion.  You need the latest version of Decal from http://dereth.decal.ac, as well as the latest version of the Decal messages.  To get the lastest Decal messages, simply install Decal and click the Update button.  Also, when installing AC Tool make sure you DO NOT uncheck the AC Tool Companion entry.


Where do I find the latest documentation?

The latest documentation ships with AC Tool.  Click on About and you can see the Release Notes (full history of all changes made to AC Tool), FAQ (what you are reading now), or AC Tool which contains help and examples on all the AC Tool commands.


Special Variables

The main advantage you have with the AC Tool Decal Companion is the use of Special Variables that are captured in real time from the AC network traffic and decoded by Decal.  The specifics of the variables can be found in the documentation for the companion, but usually they are pretty obvious (such as _MyHealth).  You simply use them like you would use any constant in AC Tool.  A simple example is something like:

code:

setconst $myname = _myname

or

if _selected contains Tusker
  // do some stuff
else
  // do some other stuff
end

Also, the AC Tool Decal Companion can be used to execute special commands using the say command.  Take for example something similar to the code above.  We can issue a /select command to select what we want.

code:

if _selected = $WHATWEWANT
  // Kill it
else
  say /select $WHATWEWANT
end

 

Troubleshooting AC Tool


Decal crashes when I try to log into my character!

Simple solution.

  1. Uninstall Decal.

  2. Delete the *.XML files from the Decal directory where it was installed.

  3. Install Decal the latest version of Decal.

  4. Update the memory locations using the "Update" option once Decal has started and placed itself in your system tray.

Decal still crashes even after a fresh install!

Disable any unncessary plugins. As far as I am concerned, if only running the AC Tool Companion gets your macro to work, then so be it. You're reading this because you want to macro, not because you want to use emotes at the lifestone. REMOVE those plugins if you still have unwanted results from using Decal. You can always install them again later.

Decal still isn't working!

By default, Decal uses the following filters: Echo Filter 2, Character Stats Filter and World Object Filter.  Uncheck any other filters that may be listed. 


My color commands are always returning black for the RGB value.
Try changing your AC color depth and resolution. If this doesn't work, update your video drivers.  Lastly, certain graphics cards seem to return black screens when a GETSCREEN capture is called inside of AC.


My color commands such as ISBLUE and GETBLUE are not working.
Colors don't always work from system to system. Make sure you are both using the same color depth and resolution. If it still doesn't work, lower your color depth. Color commands seem to fetch different numbers on different video cards.


Why doesn't the MOUSEPOS work?

It DOES work!

AC Tool 3.0 and higher can use the MOUSEPOS command on all Windows versions. Also note that if using anything other than Windows 2000/XP, you SHOULD add a short delay of 100-200 milliseconds after using the MOUSEPOS command to give the client some time to catch up before issuing a new command.

If after installing AC Tool the mouse doesn't move when you issue the command, then you need to check the AC Tool Homepage for the latest version of AC Tool.  Follow the instructions on the webpage.