Skip to content

clockwork

clockwork is a MacroQuest-style automation framework for EverQuest II.

An out-of-process loader (eq2loader.exe) injects a core DLL (eq2core.dll) into EverQuest2.exe, which brings up a hook engine, a DirectX 11 overlay, a game-data layer, and a Lua scripting surface. Automation is written in Lua — there is no C-ABI plugin API.

Documentation status

clockwork is under active development and this reference tracks a moving target. Pages note where a feature is experimental or where a value is a best-guess read that hasn't been confirmed against a live client yet. If a page and the source disagree, the source wins — please open an issue.

Where to start

  • Installing

    Get the loader and core onto your machine and inject into a client.

  • Lua Scripting

    Write your first script, register a command, subscribe to events.

  • Slash Commands

    Every /command clockwork adds, core and script-provided.

  • Top-Level Objects

    mq.TLO.Me, mq.TLO.Target, mq.TLO.Spawn[...] and friends.

A 20-second tour

Drop a file at lua/hello.lua inside your clockwork folder:

-- lua/hello.lua
for i = 1, 5 do
  eq2.print("tick " .. i)
  eq2.cmd("/gsay clockwork lua tick " .. i)
  eq2.delay(1000)
end
eq2.print("done")

Then in the game's chat box:

/lua run hello
/lua stop hello

Relationship to MacroQuest

clockwork borrows MacroQuest's architecture — the command registry, the TLO concept, the Lua scripting model, the multibox broadcast layer. It shares no code and no offsets: EverQuest II is a different client from EverQuest, so nothing in eqlib applies.

The most important practical differences for someone coming from MacroQuest:

MacroQuest clockwork
${Me.PctHP} string parser mq.TLO.Me.PctHP() — real Lua function calls, no ${...} evaluator
.mac macro language Lua only
C++ plugins (MQ2Foo.dll) Lua only — no plugin ABI, by design
/dgae, /bcaa (EQBC/DanNet) /dga, /dge (built-in WM_COPYDATA mesh)

See Differences from MacroQuest for the longer list.