Skip to content

Automation tools designed to provide quality of life improvements for ASA players.

License

Notifications You must be signed in to change notification settings

Chase-William/ASA-Automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation





Why I Made ASA-Automation

I have played Ark Survival Evolved for a long time and I have been on the receiving end of almost every cheat at some point in time short of being wizarded - cheater force joins tribe and claims all as owner. I have been dev wiped twice as collateral when playing in mega-tribe and lost two different Shadow Caves bases via meshing; once after successfully defending against a large tribe for several days only to be meshed before the next attack. If Ark players can't beat you legitimately, they will resort to cheating; a time proven tale.

Cheating aside, I enjoy the game and it provides a medium for my friends and I to play together. I recall back to 2016 living on 10/10, an iceberg base, wishing I had an alt account to ride my ankylo so that I may individually farm metal with my quetzal. That was 7 years ago, and I still play Ark, but now, now I have the ability to do what I wished then.

This program aims to provide myself and others the ability to do the things I wish I could have back in my younger days, to improve the quality of life in a game that often needs it. To address those who call this cheating, play the game longer, Youtube chanceware ark and you'll see the horrors Gaijin has most likely forced Studio Wildcard to permit. Youtube the tribe TEA on ark, see how tribes of players get unjustifiably banned, Youtube videos about Mek and capped Tek Suit duping in Ark. In a game that takes ridiculous effort and time where all can be lost overnight as you sleep to cheats, this quality of life application is not the problem.

How To Run

To run this program, double click the run.ahk file.

Functions

Supported Resolutions 🖥️

  • 2560x1440, Fullscreen or Windowed Fullscreen
  • 1920x1080, Fullscreen or Windowed Fullscreen

Other Requirements

  • UI Slot Scale must be 100%.
  • Gamma must be default value; type: gamma in ARK's cmd prompt to set as default.

Functions 📜

Listed below are all the functions or scripts supported in this application.

Auto Clicker 🖱️

By default performs a left click at a specified interval, but can be configured to send keystrokes instead. To send keystrokes, set a keystroke in the keystroke hotkey box labeled Keystroke. To return to default left click functionality, clear Keystroke input and set.

Example use cases:

  1. Use default to level tank dino health
  2. Use keystroke A to afk spam craft
  3. Use keystroke E to afk spam heal carnivore by feeding raw meat
  4. Use keystroke T to afk feed a baby dinosaur
Interruptable & Resumable By
Handle Metal Farm Junk
Give All
Take All
Self Drop All
Other Drop All

To read about function interrupt, go here.

Auto Metal Farm

Auto left clicks with periodic handling of resources gathered. Listed below describes the handling process:

  1. Take all of flint.
  2. Drop all berries.
  3. Drop all stone.
Interruptable & Replaceable By
Auto Clicker

To read about function interrupt, go here.

Start State End State
Not In Inventory, On Dino Not In Inventory, On Dino

Handle Metal Farm Junk 🗑️

Invokes the following to immediately run once:

  1. Take all of flint.
  2. Drop all berries.
  3. Drop all stone.

Example Use Cases:

  1. Drop all junk when farming metal while using normal auto clicker near the end of the farming run
Start State End State
Not In Inventory Not In Inventory

Auto Transfer

Transfers all from a source inventory to a target inventory with optional filter usage.

Example Use Cases:

  1. Take opponent's inventory after their defeat
  2. Give raw meat to baby dinos quickly
  3. Take all hide when farming meat
  4. Take all paste from your snails
  • ⬅️ Take All, takes items from other inventory auto-take-all-filtered
  • ➡️ Give All, gives items to other inventory auto-give-all-filtered
Start State End State
Not In Inventory Not In Inventory

Auto Drop All ⬇️

Drop all from an inventory with optional filter usage.

Example Use Cases:

  1. Drop all thatch when farming wood
  2. Drop your baby dino on their head and get a mutation
  • Self Drop All, drops your items auto-self-drop-all
  • Other Drop All, drops other's inventory items auto-other-drop-all
Start State End State
Not In Inventory Not In Inventory

Auto Consumption

Allows the automatic consumption of consumables once a threshold is reached.

  • 🩹 AutoBrew, consume med brews auto-brew
  • 🥞 AutoEat, consume hunger based consumable auto-eat
  • 🍹 AutoDrink, consume water base consumable auto-drink
Interruptable & Resumable By
Handle Metal Farm Junk
Give All
Take All
Self Drop All
Other Drop All

Note: Ensure your in-game hotbar keybinds for healing, eating, and drinking are set under the In-Game Keybinds tab.

To read about function interrupt, go here.

Goto here to read how auto consumption works.

Auto Fertilizer 💩

auto-fert

Produce slot caps of fertilizer by using a irrigated toilet. Character must be ready to defecate and be seated on an irrigated toilet.

Start State End State
Not In Inventory Not In Inventory

Note: Will automatically stop at 250 fert and cannot be paused; you ate Taco Bell 🙏🏻.

Auto Fish 🎣

auto-fish Automatically detects fishing prompts and fulfills them.

Goto here to read about how Auto Fishing works.

Options & Supporting Functionalities

AutoClicker Interval

To change the auto click interval follow these steps:

  1. Open config.ini.
  2. Find autoClickInterval under the [delay] section.
  3. Replace the default 50 with your interval in milliseconds.

Function Interrupt ⏯️

To make functions easier to use, they should be pauseable, resumeable, and replaceable to allow:

  1. Prevent unwanted function execution overlap
  2. Prevent user request being placed in a queue delaying execution
  3. Allow long running and quick task to work together

Therefore, the interrupt logic table has been defined below.

Interruptible & Resumable Functions

Functions that can be momentarily paused while another functions executes and later resumed afterwards automatically.

  1. Auto Clicker
  2. Metal Farm
  3. Auto Brew
  4. Auto Eat
  5. Auto Drink

Interruptable & Replaceable Functions

Functions that can be interrupted (execution terminates) and be replaced by another.

  1. Handle Metal Farm Junk, (only effected by Auto Clicker)

Uninterruptable Functions

Functions that cannot be interrupted by other functions and therefore, can only be enabled/disabled directly.

  1. Bot (omitted from default application)
  2. Paste Farm (omitted from default application)
  3. Suicide Farm (omitted from default application)
  4. Fert Farm
  5. Take All
  6. Give All
  7. Self Drop All
  8. Other Drop All

Catalyst Functions

Functions that can interrupt other functions or fail to execute if an uninterruptable function is currently active.

  1. Take All
  2. Give All
  3. Self Drop All
  4. Other Drop All
  5. Handle Metal Farm Junk

Auto Consumption (How it works)

In short, auto consumption functions based on the presence of the low health, food, and water mask. Below are samples of low health with different backgrounds that can be used to calculate ARK's mask low stat mask.

health3 health2 health

We cannot simply sample the color of a pixel to know if we have low health without calculating/checking the mask because of transparency. Therefore, think of the mask as a pattern between the RGB (red, green, blue) channels that make up every pixel. The pixel can be any color, but a certain pattern will always exist between those channels, and if it doesn't, the characters health, food, or water stat is not low.

To calculate the mask, first acquire the color of a pixel with the mask. In my calculations, I found the white background low health to have the color of 0x43CAED. Taking the hex representation and breaking it down into it's individual RGB components yields:

Red Hex: 43
Green Hex: CA
Red Hex: ED

To start finding the mask, calculate the difference in color value between each color component like so:

*Math is all in Hex*
CA - 43 = 16, difference between green and red
ED - CA = 7, difference between blue and green
ED - 43 = 1D, difference between blue and red

A more visual illustration of what we just did:

Frame 14

Moreover, combining the channels reveals our calculated mask value isn't far off.

Frame 15

All that is left is to calculate the mask a few more times sampling different backgrounds before averaging them. Once that is done, compare the mask value found at runtime with the pre-determined including a level of permitted variance and you're done.

Auto Fish (How it works)

Two separate approaches were used in developing the auto fishing solution. The first, was using the ImageSearch &OutputVarX, &OutputVarY, X1, Y1, X2, Y2, ImageFile function to search for letters within a generalized screen space. Below are a few of the images that were to be matched with:

2560_1440_W_EDIT 2560_1440_A_EDIT 2560_1440_E_EDIT 2560_1440_X_EDIT

They were emaciated as to reduce the extra white space needed to match against because ARK's prompt text is near pure white in the center of it's letters and lesser so closer to the edges. Therefore, matches were to be made with the near pure white center of prompt text. This approach led to heavy CPU usage and made my PC stutter. In short, my computer was looking for several needles in a hay stack every second. Even more so, it didn't work, but fret not, I had another card up my sleeve.

Approach #2, the basis of this idea for text recognition came from my days working on the Tribe Logger bot. In that application I used Tesseract, an open source Optical Character Recognition (OCR) library for pulling text from images. It is then, I had the thought of how one should be able to discriminate between characters as shown below:

Letter Sequence

This diagram describes the sequence characters are check in, and the locations that are checked in each iteration. Each red dot is a point checked during that iteration through the entire set of characters. In order for a given letter to be determined preset, each point check must return true (AND gates all the way). After a character is found, a virtual key is sent to simulate user input and the entire process starts again at the specified SetTimer interval.

About

Automation tools designed to provide quality of life improvements for ASA players.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published