4.3 Targets

A wait watches for one of these. Each is built once, kept in a library, and reused by every macro that needs it — global — or made private to one macro, hidden from every other list and cleaned up with its owner.

Objects

What if I want to react when an icon appears — a debuff, a loot marker, a quest turn-in?

Teach it the icon once. From then on a wait can watch for it, a click can land on it, and the mouse can move onto it. Four steps.

  1. Take a screenshot with the icon on it

    The screenshot hotkey — F12 until you change it, under Settings → General — captures the screen without leaving the game, and keeps the last five. Or upload an image.

  2. New object

    An object is either global — in the library, for every macro to use — or belongs to one macro, hidden from every other list and cleaned up with its owner.

    For a global one, go to Objects → Object → New. For one that belongs to the macro, open the object picker inside the node — the wait's, or the move's — and use its Private tab; the Global tab beside it reaches the library from the same place, and is the tab the picker opens on while the macro owns nothing of its own. Either way, name it and choose the screenshot.

  3. Answer the survey

    Can the colour change? and Can the size change? The tighter the answers, the more precise the match and the less work each search costs. “No, it's static” is the strictest and the fastest; “it can be any size” makes the search work much harder, so reach for it only when the thing really does scale.

    The two match-tolerance questions, each with a set of answers
    Two questions, one detector. The shortcut on the right of each row (exact, ±5%, any hue) is what the answer does in practice.
  4. Outline the icon

    The mask is the shape actually being searched for, not the rectangle around it. Five tools: Rectangle takes everything inside a box; GrabCut estimates the cutout inside the box you drag, on its own, the moment the box is down; the magic wand grabs a contiguous patch of colour; the brush and the eraser fix the edges by hand. Each of the first three puts a pending region on the picture with two chips under it — Apply keeps it, Reset drops it. The thumbnail beside the pixel count is the live cutout — that, and nothing around it, is what gets matched.

    Four frames of the object editor: the reference image chosen, a GrabCut box dragged around the icon, the Reset and Apply chips under it, and the cutout preview spotlit beside the pixel count
    The mask step, start to finish. The screenshot; a GrabCut box around the icon, with the estimate already inside it; Apply; and where the cutout it will search for shows up — bottom right, beside the pixel count.
Cut tight

Select only what will not change. Include the background around an object and you have taught it to look for “the object on that background” — the moment the scene behind it changes, the match drops. The same goes for anything see-through in the icon itself: a transparent part shows whatever is behind it, and that is not the icon.

Then use it. In the macro: Wait for object, pick the icon, pick where to look, and put the action after it — the click, the potion, the key. Saved objects live under Objects → Object. The same five steps, on one page and with the screens beside them: an auto clicker that waits for an image.

Six frames: the palette with Wait for object, the wait's empty editor, the object picker on its Global tab, Fireball picked, the editor filled in, and the rail with the new step at the end
Start to finish. The + on the rail → Wait → Wait for object → Select object → the Global tab → Fireball → Next, Confirm, Done — and the step is on the rail.
The object library: Sword, Potion, Shield and Fireball, each with its usage badge, and the delete button greyed on the rows in use
The object library. Each row says how many macros use it, and a row that is in use cannot be deleted. Areas, colours and sounds have their own tabs beside it.

Area

What if I want it to look at the skill bar only — not at the whole screen?

An area is a saved answer to “where”. Every search — a wait, a click, a colour bar — asks for one, and Full screen is the default. It is also the slowest answer and the least safe one: the whole frame takes longer to scan, and a chat line or a quest icon that happens to resemble the object matches too. An area cuts the frame down before the search starts. Three steps.

  1. Choose the screenshot

    An area is either global — in the library, for every macro to use — or belongs to one macro, hidden from every other list and cleaned up with its owner. For a global one, go to Objects → Area → New area. For one that belongs to the macro, open the area picker inside the node and use its Private tab; the Global tab beside it reaches the library from the same place.

    Either way, name it and pick the screenshot the object was taught from. Every step below runs on that frame and shows its result, so the area is checked before a macro ever uses it.

  2. Cut a zone

    The + after the source card adds a step. Take Zone and drag a box over the bottom third. The bar never leaves it, and the two thirds above are scenery: nothing there can match, so nothing there should be searched. The box is stored as fractions of the frame, not pixels, so it lands on the same part of the screen at another resolution.

  3. Find the first slot and grow the box

    Add an Object step after the zone and pick the first slot’s icon. A zone alone would do for a bar that never moves — but a bar moves: a different resolution, a UI scale setting, a toolbar you dragged. Anchoring on slot 1 finds the bar wherever it is, and the zone only says roughly where to look for that anchor.

    The match is one slot and the area needs the whole bar, so under Grow the search box set Right to 600 % — six more slot widths. The dashed box is the area. A negative value pulls an edge in instead: −100 % puts it on the far side of the match, which leaves the anchor itself out of the area.

Five frames of the area editor: the screenshot chosen, a zone over the bottom third, the first slot found, the box grown across the bar, and the result
Start to finish. The screenshot; the zone over the bottom third; slot 1 found; the box grown across the bar; the result — 420 × 60 px, 3 % of the frame.

Each card in the chain shows what that step produced and how long it took, so a slow chain is visible before the macro runs. Check is a dry run: it looks for an object inside the area and reports whether it was found, how long it took, and how close the match was. A check saves the area first, because it runs against the stored row rather than the draft.

Then use it. Wherever a wait or a click asks where to look, the area is in that list beside Full screen. Saved areas live under Objects → Area.

Two halves, always

Wherever a condition asks for a search, it asks for both halves at once: the object to find and the area to find it in. Full screen is a real answer in that list — it means “don't narrow it”, not “unset”.

Colour bar

What if I want to react to how much health I have — drink at 25%, stop attacking at 10%?

A bar is a colour. Health, mana, cast bars, cooldowns, progress bars — anything that fills or drains. Teach it the colour and where the bar sits, and a wait can read the bar as a percentage. Five steps.

  1. Take a screenshot with the bar on it

    Ideally with the bar full — you will calibrate against it in a moment.

  2. New colour, and draw the zone

    A colour bar is either global — in the library, for every macro to use — or belongs to one macro, hidden from every other list and cleaned up with its owner. For a global one, go to Objects → Colour → New. For one that belongs to the macro, open the colour picker inside the node and use its Private tab; the Global tab beside it reaches the library from the same place.

    Drag a rectangle around the bar — the whole bar, from empty end to full end. This is the zone the reading is taken in, and the colour carries it, because a colour with nowhere to measure it means nothing.

  3. Sample the colour

    Click the bar's fill with the eyedropper. The preview highlights every pixel in the zone that matches; tighten the tolerance until only the fill lights up and the border does not. Common is one slider; Pro splits it into hue, saturation and value, for a bar whose brightness shifts but whose hue does not.

    The colour editor showing a sampled bar colour and the matched pixels
    Sampled, not typed. The eyedropper takes the colour off the frame; the preview highlights exactly which pixels matched, which is how you tell a good tolerance from one that is picking up the border too.
  4. Say which way it fills

    Direction: left to right, or bottom to top. Direction lives on the reading, not on the colour, so one colour serves a horizontal bar and a vertical one alike.

  5. Calibrate

    Bars rarely fill their own box edge to edge — borders and rounded ends leave a few per cent. With the bar full on screen, press Calibrate once, and from then on 100% means full. Until you do, the whole zone counts as 100%.

How it reads

It keeps only the pixels in the zone that match the colour, then looks along the bar's direction one row at a time and counts the matching pixels in each. The fullest row wins, and its length against the zone's length is the percentage.

THE ZONE YOU DREW 292 px 251 px 292 px 2 000 / 4 000 292 px 292 px in the fullest row 584 px across the zone 292 ÷ 584 = 50%

That is why what sits on top of the bar rarely matters. The number printed over it, a segment marker, a shine — each spoils only the rows it crosses, and the reading comes from a row it does not.

Then use it: Wait for colour, pick the bar, and set the level — less than 25%, more than 90% — with the action after it.

Sound

What if I want to react to a sound — the chime when a fish bites, the level-up fanfare, an alert that fires while the window is behind another one?

Record it once, and a wait can listen for it. It is matched against what the system plays — never the microphone, and nothing else on the machine is listened to. Four steps.

  1. Open the sound editor

    A sound is either global — in the library, for every macro to use — or belongs to one macro, hidden from every other list and cleaned up with its owner. For a global one, go to Objects → Sound → New sound. For one that belongs to the macro, open the sound picker inside the wait and use its Private tab; the Global tab beside it reaches the library from the same place.

    Or set a sound-record hotkey under Settings → General and press it in the game: the editor opens with a take already rolling, so you do not alt-tab out first.

  2. Record, make the sound happen, stop

    The recording is a rolling ten-second window that overwrites itself, so there is no auto-stop and no hurry to hit the button at the right instant. Press Record, cast the line, wait for the chime, press Stop.

  3. Trim to the sound

    The take shows the waveform with a spectrogram under it, and the two handles are the window. Drag them down to the part that matters. The shorter and more distinct the take, the fewer things it can be confused with.

  4. Raise the threshold if there is noise

    A fresh take starts with the threshold off, so everything in it counts as the sound. If the take has room tone or game ambience under it, raise the threshold until only the sound itself stays lit — what falls under the line greys out and is ignored — then save.

Five frames of the sound editor: the empty editor with its Record button, a recording in progress, the take with the chime in it, the window trimmed to the chime, and the threshold raised so the room tone greys out
Start to finish. Record; the sound happens, Stop; the take — the chime is the loud part at 2.4 s; the window trimmed to it; the threshold at −20 dB, with the room tone under the line.

Then use it: Wait for sound, pick the recording, and set Strictness — the same idea as an object's accuracy. Raise it when the game has another sound that starts the same way.