The Wiki for Tale 4 is in read-only mode and is available for archival and reference purposes only. Please visit the current Tale 11 Wiki in the meantime.

If you have any issues with this Wiki, please post in #wiki-editing on Discord or contact Brad in-game.

Difference between revisions of "User:Jimbly/Macros"

From A Tale in the Desert
Jump to navigationJump to search
 
(16 intermediate revisions by the same user not shown)
Line 4: Line 4:
  
 
Get it here: http://bigscreensmallgames.com/ATITD/VeggieTalesInstaller.exe
 
Get it here: http://bigscreensmallgames.com/ATITD/VeggieTalesInstaller.exe
 +
 +
LUA Reference: http://www.lua.org/manual/5.1/ (Ignore the C API section)
  
 
General usage info - to come!
 
General usage info - to come!
Line 13: Line 15:
 
In general, all macros, when first started, will prompt you for some initial parameters and then ask you to put the ATITD window in focus, and then press shift (may need to hold for a moment).  You can also use this for other programs (or, for instance, have Photoshop open with a bunch of screenshots to toggle between, for testing purposes).
 
In general, all macros, when first started, will prompt you for some initial parameters and then ask you to put the ATITD window in focus, and then press shift (may need to hold for a moment).  You can also use this for other programs (or, for instance, have Photoshop open with a bunch of screenshots to toggle between, for testing purposes).
  
Also, generally, a macro will cancel if it detects you are holding Ctrl+Shift, and pause with Alt+Shift (some may have slightly different behaviors).
+
Also, generally, a macro will cancel if it detects you are holding Ctrl+Shift, and pause with Alt+Shift (some may have slightly different behaviors, they should all indicate on-screen which keys will do what).
 +
 
 +
Terms:
 +
* '''''GhostMouse''''' - Mouse events are sent entirely without moving your cursor.  This means that:
 +
** You can freely use your mouse cursor (the only exception being do not click and drag within ATITD, because the mouse will not release where you were expecting).
 +
** ATITD does not need to be in the foreground.  You can have other programs/chat programs/web browser/etc active and open and in use while this macro is running.
 +
** You ''do'' still need to have the ATITD window visible if the macro also requires '''ScreenScrape''' (e.g. for the quarry macro, at least the pinned quarry window and your Skills window need be visible.  If the macro does not require ScreenScrape, then you can have the ATITD window ''completely obscured'' and it will still work fine (e.g. wood macro after initial setup)!
 +
** If the macro does *not* use GhostMouse, then you must not touch your mouse cursor at all while the macro is running (though you can pause and resume, which will work for most macros).
 +
* '''''ScreenScrape''''' - Macro requires reading of the screen - make sure to keep the screen visible
 +
 
 +
=== Thistle Mode ===
 +
 
 +
Details found at [[User:Jimbly/AutomaticThistles]]
  
 
=== Carrot Mode ===
 
=== Carrot Mode ===
  
'''NOTE: On the original shard, please only use this on the Shabbat Ab Aqueduct Towers until Jimbly passes the [[Test of Life]].''' On Bastet, use this as much as you want (though you will need to edit config.txt to make it work without aqueduct towers).
+
This will plant up to 4 carrots at a time, water them, and harvest them, while refilling your water jugs from a nearby, pinned aqueduct. Currently some settings may need to be tweaked (apparently on some graphics cards the ATITD graphics render differently enough to throw off some of the image recognition), specifically the thresholds which determine whether a carrot patch has grown to the next size or notIf the program is often over-watering, observe the sizes reported for the carrots at each stage, and update config.txt appropriately.  The sizes are the threshold it has to pass to be detected as the next size, so if an originally planted carrot is 75px, and when it grows it jumps up to 125px, you want the first size value set to around 100px (the middle between the two).
  
=== barrel_grinder.lua - Solo barrel grinding ===
+
If the program encounters a situation it cannot resolve (it knows how to clean up after itself in some cases, like over-watering ;), it will play a sound to alert you that your intervention is required.
  
Set up to run the [[barrel grinder]] solo, winding every 20 seconds until it breaks, then repairing, waiting 2 minutes, and restarting.  For non-solo grinding, the script would need to be modified a bit (would not want automated repair and restart).  
+
=== chem_helper.lua ===
  
=== dig.lua ===
+
Choose your Compound Type (Ra, Osiris, etc), your requirements, click Solve!  Then, assemble your 5 ingredients, it shows a list of ingredients used in all recipes at the bottom, and assembles a list on the right side as you click on them to add them (each time filtering the list down to only those ingredients compatible with the ones you have already selected).
  
Simple [[dig]] script and a good example to learn from.  Monitors for a red [[Endurance]] stat and finds the "dig deeper" button to click on when appropriate.
+
Screenshots and more explanation at [[User:Jimbly/Macros/ChemHelper]]
  
 
=== flax.lua ===
 
=== flax.lua ===
 +
 +
'''''ScreenScrape'''''
  
 
Must have ''Options|One-click|Enabled hotkeys on flax'' '''disabled'''.
 
Must have ''Options|One-click|Enabled hotkeys on flax'' '''disabled'''.
Line 38: Line 54:
  
 
Same as above, but for gathering seeds, not flax.
 
Same as above, but for gathering seeds, not flax.
 +
 +
=== multi_click.lua ===
 +
 +
'''''GhostMouse''''' '''''ScreenScrape'''''
 +
 +
Allows clicking of any number of identical buttons anywhere on your screen.  This has some preset buttons to look for (e.g. "This is" is great for clicking to refresh all pinned windows, or "unpin" to dismiss all pinned windows), but you can also define custom buttons to look for on the fly - choose "Custom", and you will see a thumbnail of what part of the image it will search for (generally the first few letters of the text on the button is fine), and then after that you can click "Last custom" to search for and click all of these buttons again.
 +
 +
Example usage: Open up 20 Carpentry Shop windows, pin them, make sure they don't overlap much.  Click "custom" and put the mouse over "plane a piece of wood", select that (press shift as directed in the on-screen instructions), and it will plane 20 pieces of wood, then choose "ThisIs.png" to refresh all the windows, and then click "Last custom" again, and you'll plane another 20 pieces of wood.  Repeat to your heart's content!
  
 
=== onions.lua ===
 
=== onions.lua ===
  
Grows 9x9 grids of onions, expects a ''fill jugs with water'' icon visible.
+
'''''ScreenScrape'''''
  
=== pump.lua ===
+
Grows 3x3 grids of onions, expects a ''fill jugs with water'' icon visible.
  
Simple macro to pump an aqueduct tower.  Same as dig, but looks for different buttons.
+
=== quarry.lua - Automated Quarrying! ===
  
=== quarry.lua - Automated Quarrying! ===
+
'''''GhostMouse''''' '''''ScreenScrape'''''
 +
 
 +
Works for 2-4 people. Not all people need to be running it (though ''much'' easier if they are!).  Uses the "alphabetical" method of choosing a direction to work.  Testing so far shows it can easily keep a high Endurance value constantly red on all workers, yielding about 1 marble/stone removed per minute at END of 22.
  
Works for 2-4 people.  Not all people need to be running it (though ''much'' faster if they are!).  Uses the "alphabetical" method of choosing a direction to work.  Testing so far shows it can easily keep and Endurance value of 22 constantly red on all workers, yielding about 1.5 marble/stone removed per minute.
+
You can run multiple copies of VeggieTales and multiple copies of this script on the same computer (tile your ATITD windows so they're both visible, launch two VeggieTales, start one of them at a time).
  
May need to be manually restarted if someone trips up and it was at a span of 0 to start with.  To restart, if something is wrong, stop the script on all clients, get the quarry to a "clean" state (e.g. have 1 person intentionally trip the quarry, or manually have all 4 mine once), and then have the scripts restartI only needed to do this once in my time testing, and that was when we were starting on a quarry and someone had clicked manually once before starting the script (so it tripped up immediately).
+
If it gets stuck, someone can manually kick it back into action by intentionally tripping the quarry (just clicking the one your client should have clicked) and it should then recoverThis has only been needed once while testing.
  
 
=== raeli_color_mon.lua ===
 
=== raeli_color_mon.lua ===
 +
 +
'''''ScreenScrape'''''
  
 
Automatically saves a screenshot, with timestamp, every time a specified pixel changes color.  When first burning a [[Raeli Oven]], this will give you about 50-100 screenshots you can very quickly toggle through to get an accurate list of what colors are generated at what times.
 
Automatically saves a screenshot, with timestamp, every time a specified pixel changes color.  When first burning a [[Raeli Oven]], this will give you about 50-100 screenshots you can very quickly toggle through to get an accurate list of what colors are generated at what times.
  
 
=== sand_mine.lua ===
 
=== sand_mine.lua ===
 +
 +
'''''GhostMouse''''' '''''ScreenScrape'''''
  
 
Repeated works a sand mine, repairs it when needed, and continues (just have enough materials for as many repairs as you want to do).
 
Repeated works a sand mine, repairs it when needed, and continues (just have enough materials for as many repairs as you want to do).
 +
 +
=== single_click_stat_mon.lua ===
 +
 +
'''''GhostMouse''''' '''''ScreenScrape'''''
 +
 +
Clicks a single button over and over again as long as your stats are not red (monitors all stats).  You need to mouse over the specific button you wish to press when setting up this macro.
  
 
=== timer.lua ===
 
=== timer.lua ===
Line 68: Line 104:
  
 
A couple examples of UI functions.
 
A couple examples of UI functions.
 +
 +
=== wood.lua ===
 +
 +
'''''GhostMouse'''''
 +
 +
Repeatedly harvests wood from a set of trees.  Pin any number of tree windows (there are 9 Bottle Trees near the SA CS that work well), they can be anywhere on your screen, but the macro searches the screen top to bottom (but you can have multiple side by side as long as one is slightly lower than the one next to it, it will work right).  These windows need to be arranged so that clicking on them in order forms a "cycle", you should be able to click on one, then the next, then the next, and you should be able to get from one tree to the next without having to move, and then back to the first again (after a minute to let the tree heal) (you may need to experiment with ordering them, since the way ATITD determines "This is too far away" is not exactly clear ;).
 +
 +
This should be run '''without''' a hatchet and with high perception.  Hatchets do not improve the wood per tree per minute, since they increase the time it takes to regenerate, while only giving you one bonus from your perception.

Latest revision as of 03:19, 17 June 2010

All of my macros and automation are written for VeggieTales - my LUA-based automation/macro engine. I was fed up with issues with ACTool and AutoHotKey, so I did what any self-respecting engineer would do - re-invent the wheel!

VeggieTales

Get it here: http://bigscreensmallgames.com/ATITD/VeggieTalesInstaller.exe

LUA Reference: http://www.lua.org/manual/5.1/ (Ignore the C API section)

General usage info - to come!

Notes on Specific Macros

All of these are available by installing VeggieTales (above), this page just lists information on these macros. Feel free to edit the descriptions to be more useful as needed (e.g. if you found that you needed to tweak some value to get it to work right, add that info here!).

In general, all macros, when first started, will prompt you for some initial parameters and then ask you to put the ATITD window in focus, and then press shift (may need to hold for a moment). You can also use this for other programs (or, for instance, have Photoshop open with a bunch of screenshots to toggle between, for testing purposes).

Also, generally, a macro will cancel if it detects you are holding Ctrl+Shift, and pause with Alt+Shift (some may have slightly different behaviors, they should all indicate on-screen which keys will do what).

Terms:

  • GhostMouse - Mouse events are sent entirely without moving your cursor. This means that:
    • You can freely use your mouse cursor (the only exception being do not click and drag within ATITD, because the mouse will not release where you were expecting).
    • ATITD does not need to be in the foreground. You can have other programs/chat programs/web browser/etc active and open and in use while this macro is running.
    • You do still need to have the ATITD window visible if the macro also requires ScreenScrape (e.g. for the quarry macro, at least the pinned quarry window and your Skills window need be visible. If the macro does not require ScreenScrape, then you can have the ATITD window completely obscured and it will still work fine (e.g. wood macro after initial setup)!
    • If the macro does *not* use GhostMouse, then you must not touch your mouse cursor at all while the macro is running (though you can pause and resume, which will work for most macros).
  • ScreenScrape - Macro requires reading of the screen - make sure to keep the screen visible

Thistle Mode

Details found at User:Jimbly/AutomaticThistles

Carrot Mode

This will plant up to 4 carrots at a time, water them, and harvest them, while refilling your water jugs from a nearby, pinned aqueduct. Currently some settings may need to be tweaked (apparently on some graphics cards the ATITD graphics render differently enough to throw off some of the image recognition), specifically the thresholds which determine whether a carrot patch has grown to the next size or not. If the program is often over-watering, observe the sizes reported for the carrots at each stage, and update config.txt appropriately. The sizes are the threshold it has to pass to be detected as the next size, so if an originally planted carrot is 75px, and when it grows it jumps up to 125px, you want the first size value set to around 100px (the middle between the two).

If the program encounters a situation it cannot resolve (it knows how to clean up after itself in some cases, like over-watering ;), it will play a sound to alert you that your intervention is required.

chem_helper.lua

Choose your Compound Type (Ra, Osiris, etc), your requirements, click Solve! Then, assemble your 5 ingredients, it shows a list of ingredients used in all recipes at the bottom, and assembles a list on the right side as you click on them to add them (each time filtering the list down to only those ingredients compatible with the ones you have already selected).

Screenshots and more explanation at User:Jimbly/Macros/ChemHelper

flax.lua

ScreenScrape

Must have Options|One-click|Enabled hotkeys on flax disabled.

Flax macro specifically designed for planting 6x6 arrays of Tedra #660 flax (requires exactly one weeding, no watering). Macro and image could be modified to handle other configurations. Edit the script if you cannot handle a 6x6 grid of flax at once (probably need 3 Dexterity).

If you can carry 2500 (3 STR and 3 DEX and 1000 base), then grab 216 flax seeds, have it run 6 passes, come back in a few minutes and you'll have 2160 flax.

flax_seeds.lua

Same as above, but for gathering seeds, not flax.

multi_click.lua

GhostMouse ScreenScrape

Allows clicking of any number of identical buttons anywhere on your screen. This has some preset buttons to look for (e.g. "This is" is great for clicking to refresh all pinned windows, or "unpin" to dismiss all pinned windows), but you can also define custom buttons to look for on the fly - choose "Custom", and you will see a thumbnail of what part of the image it will search for (generally the first few letters of the text on the button is fine), and then after that you can click "Last custom" to search for and click all of these buttons again.

Example usage: Open up 20 Carpentry Shop windows, pin them, make sure they don't overlap much. Click "custom" and put the mouse over "plane a piece of wood", select that (press shift as directed in the on-screen instructions), and it will plane 20 pieces of wood, then choose "ThisIs.png" to refresh all the windows, and then click "Last custom" again, and you'll plane another 20 pieces of wood. Repeat to your heart's content!

onions.lua

ScreenScrape

Grows 3x3 grids of onions, expects a fill jugs with water icon visible.

quarry.lua - Automated Quarrying!

GhostMouse ScreenScrape

Works for 2-4 people. Not all people need to be running it (though much easier if they are!). Uses the "alphabetical" method of choosing a direction to work. Testing so far shows it can easily keep a high Endurance value constantly red on all workers, yielding about 1 marble/stone removed per minute at END of 22.

You can run multiple copies of VeggieTales and multiple copies of this script on the same computer (tile your ATITD windows so they're both visible, launch two VeggieTales, start one of them at a time).

If it gets stuck, someone can manually kick it back into action by intentionally tripping the quarry (just clicking the one your client should have clicked) and it should then recover. This has only been needed once while testing.

raeli_color_mon.lua

ScreenScrape

Automatically saves a screenshot, with timestamp, every time a specified pixel changes color. When first burning a Raeli Oven, this will give you about 50-100 screenshots you can very quickly toggle through to get an accurate list of what colors are generated at what times.

sand_mine.lua

GhostMouse ScreenScrape

Repeated works a sand mine, repairs it when needed, and continues (just have enough materials for as many repairs as you want to do).

single_click_stat_mon.lua

GhostMouse ScreenScrape

Clicks a single button over and over again as long as your stats are not red (monitors all stats). You need to mouse over the specific button you wish to press when setting up this macro.

timer.lua

A simple timer that will play a sound every specified number of seconds (decimals are OK, e.g. 2.5 seconds)

UITest.lua

A couple examples of UI functions.

wood.lua

GhostMouse

Repeatedly harvests wood from a set of trees. Pin any number of tree windows (there are 9 Bottle Trees near the SA CS that work well), they can be anywhere on your screen, but the macro searches the screen top to bottom (but you can have multiple side by side as long as one is slightly lower than the one next to it, it will work right). These windows need to be arranged so that clicking on them in order forms a "cycle", you should be able to click on one, then the next, then the next, and you should be able to get from one tree to the next without having to move, and then back to the first again (after a minute to let the tree heal) (you may need to experiment with ordering them, since the way ATITD determines "This is too far away" is not exactly clear ;).

This should be run without a hatchet and with high perception. Hatchets do not improve the wood per tree per minute, since they increase the time it takes to regenerate, while only giving you one bonus from your perception.