Game API

Query game client state and environment information.

Functions

floor

game:floor() -> number

Get current floor/plane level (0-3).

Returns:

  • number - Floor level

client_state

game:client_state() -> number

Get client state code.

Returns:

  • number - State (30 = logged in, 10-24 = login screen)

logged_in

game:logged_in() -> boolean

Check if logged into the game.

Returns:

  • boolean - True if logged in

Example:

if not game:logged_in() then
    logger:error("Not logged in!")
    return
end

cycle

game:cycle() -> number

Get current game cycle/tick.

Returns:

  • number - Game cycle number

login_state

game:login_state() -> number

Get login screen index.

Returns:

  • number - Login state index

is_at_login_screen

game:is_at_login_screen() -> boolean

Check if at login screen.

Returns:

  • boolean - True if at login

viewport_width

game:viewport_width() -> number

Get viewport width in pixels.

Returns:

  • number - Width

viewport_height

game:viewport_height() -> number

Get viewport height in pixels.

Returns:

  • number - Height

Common Patterns

State Checking

local function wait_for_login()
    while not game:logged_in() do
        logger:info("Waiting for login...")
        sleep(1000)
    end
    
    logger:info("Logged in!")
end

wait_for_login()

Viewport-Aware Clicking

local function is_clickable(x, y)
    return x > 0 and x < game:viewport_width() and
           y > 0 and y < game:viewport_height()
end

if is_clickable(300, 250) then
    mouse:left_click(300, 250)
end

Related APIs

  • Game Objects API - Game world objects
  • Worlds API - World/server information