Mouse API
Category: API Reference
Simulate mouse movements, clicks, and scrolling with human-like behavior.
Functions
move_to
mouse:move_to(x: number, y: number, duration_ms: number?) -> ()
Move mouse to position with human-like behavior.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
x | number | Yes | Target X coordinate |
y | number | Yes | Target Y coordinate |
duration_ms | number | No | Movement duration in milliseconds |
Example:
mouse:move_to(400, 300) -- Move to (400, 300)
mouse:move_to(400, 300, 500) -- Move over 500ms
left_click
mouse:left_click(x: number, y: number, duration_ms: number?) -> ()
Left click at position.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
x | number | Yes | Click X coordinate |
y | number | Yes | Click Y coordinate |
duration_ms | number | No | Movement duration before click |
Example:
mouse:left_click(300, 250)
right_click
mouse:right_click(x: number, y: number, duration_ms: number?) -> ()
Right click at position.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
x | number | Yes | Click X coordinate |
y | number | Yes | Click Y coordinate |
duration_ms | number | No | Movement duration before click |
click
mouse:click() -> ()
Click at current mouse position.
position
mouse:position() -> Point
Gets current mouse position.
Returns:
Point- Current position with x, y
Example:
local x, y = mouse:position()
logger:info("Mouse at: " .. x .. ", " .. y)
scroll
mouse:scroll(delta: number, x: number, y: number) -> ()
Scroll vertically.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
delta | number | Yes | Positive to scroll up, negative to scroll down |
x | number | Yes | X position to scroll at |
y | number | Yes | Y position to scroll at |
Example:
mouse:scroll(5, 400, 300) -- Scroll up 5 notches
mouse:scroll(-3, 400, 300) -- Scroll down 3 notches
scroll_horizontal
mouse:scroll_horizontal(delta: number, x: number, y: number) -> ()
Scroll horizontally.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
delta | number | Yes | Positive for right, negative for left |
x | number | Yes | X position |
y | number | Yes | Y position |
set_speed
mouse:set_speed(multiplier: number) -> ()
Set mouse movement speed multiplier.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
multiplier | number | Yes | Speed multiplier (1.0 = normal) |
Example:
mouse:set_speed(0.5) -- Half speed
mouse:set_speed(2.0) -- Double speed
get_speed
mouse:get_speed() -> number
Get current speed multiplier.
Returns:
number- Speed multiplier
is_in_window
mouse:is_in_window(x: number, y: number) -> boolean
Check if position is in game window.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
x | number | Yes | X coordinate |
y | number | Yes | Y coordinate |
Returns:
boolean- True if in window
Common Patterns
Safe Clicking
local function safe_click(x, y)
if mouse:is_in_window(x, y) then
mouse:left_click(x, y)
return true
else
logger:warn("Click target out of bounds: " .. x .. ", " .. y)
return false
end
end
Right-Click Menu
local function right_click_and_select(x, y, action_text)
mouse:right_click(x, y)
sleep(300) -- Wait for menu
local menu_items = menu:items()
for _, item in ipairs(menu_items) do
if item:action():find(action_text) then
mouse:left_click(
menu:slot_center(item:index()).x,
menu:slot_center(item:index()).y
)
return true
end
end
return false
end
Random Click Area
local function click_random_in_area(x1, y1, x2, y2)
local x = math.random(x1, x2)
local y = math.random(y1, y2)
-- Add slight movement delay for human-like behavior
local delay = math.random(50, 150)
mouse:left_click(x, y, delay)
end
-- Click random point in component
local comp = components:get(149, 0)
click_random_in_area(
comp:x(),
comp:y(),
comp:x() + comp:width(),
comp:y() + comp:height()
)
Careful Bank Clicking
local function click_bank_item(item)
local x = item:x()
local y = item:y()
local w = item:width()
local h = item:height()
-- Click center with random offset
local center_x = x + w / 2
local center_y = y + h / 2
local offset_x = math.random(-w * 0.25, w * 0.25)
local offset_y = math.random(-h * 0.25, h * 0.25)
mouse:left_click(center_x + offset_x, center_y + offset_y, 100)
end
Related APIs
- Menu API - Right-click menus
- Keyboard API - Keyboard input
- Components API - UI elements