Skip to content

/uiclick

One-shot script

uiclick is a one-shot script — run it with /lua run uiclick <args> and it exits after printing its result. No persistent slash command is registered.

Syntax

/lua run uiclick list
/lua run uiclick all
/lua run uiclick tree <Window> [depth]
/lua run uiclick text <path>
/lua run uiclick press <path>
/lua run uiclick <path>

Description

Inspect and press controls in live on-screen windows — lists top-level windows, dumps a window's control tree, reads a control's text, or presses a control.

Verbs

Verb What
list List every visible top-level live window (children of _HUD).
all List every top-level live window, visible or not.
tree <Window> [depth] Dump the control hierarchy under <Window>, showing names, visibility, and text. Default depth 4.
text <path> Print the text value of the control at <path>.
press <path> Press the control at <path>.
<path> Bare path — same as press <path>.

Paths

A path is a dot-separated chain of SIDL Name= segments, e.g. MercHire.HireButton or RewardPack.Accept. Intermediate levels may be skipped — the walker checks every descendant at each step, so MercHire.HireButton and HireButton both resolve to the same control as long as it is unique. Ambiguous paths (the same name appearing under multiple parents) resolve to the first match in tree order.

The answer key for control names is the game's own UI XML at EverQuest II\UI\Default\eq2ui_*.xml.

How it works

uiclick reads the live _HUD window tree via lib/uilive.lua — the same substrate the game itself draws. This bypasses eq2.ui.window():find(), which only resolves named windows by exact SIDL ID and cannot walk anonymous children (see lib/uilive.lua for why). Pressing a control replays the LButtonDown/LButtonUp UI messages the game itself sends (mouse-message dispatch via h:send_msg(9/10)).

Examples

/lua run uiclick list
/lua run uiclick tree MercHire
/lua run uiclick tree RewardPack 5
/lua run uiclick text QuestComplete.Status
/lua run uiclick press MercHire.HireButton
/lua run uiclick RewardPack.Accept

See also

  • lib/uilive — the live window walker.
  • /merc hire — hires a merc via replayed verbs rather than a button press.