Lynx Lua scripting

API reference

lynx

Functions

client.set_event_callback(event, fn)

Register fn to run on event. Unknown event names raise an error.

Parameters

client.set_event_callback parameters
NameTypeDescription
eventrequiredstring
fnrequiredfun(e: table)

Returns

Nothing.

client.unset_event_callback(event, fn)

Remove a callback previously registered for event.

Parameters

client.unset_event_callback parameters
NameTypeDescription
eventrequiredstring
fnrequiredfun(e: table)

Returns

Nothing.

client.delay_call(delay, fn, ...)

Run fn on a later frame, delay seconds from now. Extra arguments are forwarded to fn.

Parameters

client.delay_call parameters
NameTypeDescription
delayrequirednumber
fnrequiredfunction
...requiredany

Returns

Nothing.

client.reload_active_scripts()

Reload every loaded script, this one included.

Returns

Nothing.

client.log(...)

Append a line to the script console. Arguments are concatenated, like print.

Parameters

client.log parameters
NameTypeDescription
...requiredany

Returns

Nothing.

client.color_log(r, g, b, ...)

Append a coloured console line. The first three arguments are the 0-255 RGB channels; the rest are the message.

Parameters

client.color_log parameters
NameTypeDescription
rrequiredinteger
grequiredinteger
brequiredinteger
...requiredany

Returns

Nothing.

client.error_log(...)

Append a red error line to the console.

Parameters

client.error_log parameters
NameTypeDescription
...requiredany

Returns

Nothing.

client.screen_size()

The overlay size in pixels.

Returns

client.screen_size returns
NameTypeDescription
widthrequirednumber
heightrequirednumber

client.timestamp()

Milliseconds on a high-precision monotonic clock, counted from when the process started.

Returns

client.timestamp returns
NameTypeDescription
valuenumber

client.unix_time()

Seconds since the Unix epoch.

Returns

client.unix_time returns
NameTypeDescription
valueinteger

client.system_time()

The local wall-clock time of day.

Returns

client.system_time returns
NameTypeDescription
hourrequiredinteger
minuterequiredinteger
secondrequiredinteger
millisecondrequiredinteger

client.random_int(min, max)

A uniform random integer in [min, max].

Parameters

client.random_int parameters
NameTypeDescription
minrequiredinteger
maxrequiredinteger

Returns

client.random_int returns
NameTypeDescription
valueinteger

client.random_float(min, max)

A uniform random number in [min, max).

Parameters

client.random_float parameters
NameTypeDescription
minrequirednumber
maxrequirednumber

Returns

client.random_float returns
NameTypeDescription
valuenumber

client.get_lynx_user()

The signed-in Lynx user.

Returns

client.get_lynx_user returns
NameTypeDescription
valuelynx_user

client.game()

The game key this build mods, e.g. "8ball_pool".

Returns

client.game returns
NameTypeDescription
valuestring

client.touch()

The current touch point.

Returns

client.touch returns
NameTypeDescription
xrequirednumber
yrequirednumber
downrequiredboolean

client.tap(x, y)

Synthesise a tap at overlay pixel x, y. Needs the input capability.

Parameters

client.tap parameters
NameTypeDescription
xrequirednumber
yrequirednumber

Returns

client.tap returns
NameTypeDescription
sentrequiredboolean

globals.realtime()

Seconds since load, sampled live.

Returns

globals.realtime returns
NameTypeDescription
valuenumber

globals.curtime()

Seconds since load, as of the current frame.

Returns

globals.curtime returns
NameTypeDescription
valuenumber

globals.framecount()

The game frame counter the runtime is on.

Returns

globals.framecount returns
NameTypeDescription
valueinteger

globals.frametime()

Seconds between the last two frames.

Returns

globals.frametime returns
NameTypeDescription
valuenumber

globals.absoluteframetime()

Alias of frametime.

Returns

globals.absoluteframetime returns
NameTypeDescription
valuenumber

ui.new_checkbox(tab, container, name)

A checkbox.

Parameters

ui.new_checkbox parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring

Returns

ui.new_checkbox returns
NameTypeDescription
valueScriptHandle

ui.new_slider(tab, container, name, min, max, initial?, show_tooltip?, unit?, scale?, tooltips?)

A slider over [min, max]. tooltips maps whole values to labels.

Parameters

ui.new_slider parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring
minrequirednumber
maxrequirednumber
initialnumber
show_tooltipboolean
unitstring
scalenumber
tooltipstable<integer, string>

Returns

ui.new_slider returns
NameTypeDescription
valueScriptHandle

ui.new_combobox(tab, container, name, ...)

A single-select combobox. Options are passed as extra string arguments or as one array.

Parameters

ui.new_combobox parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring
...requiredstring

Returns

ui.new_combobox returns
NameTypeDescription
valueScriptHandle

ui.new_multiselect(tab, container, name, ...)

A multi-select list. Options are extra string arguments or one array; at most 32.

Parameters

ui.new_multiselect parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring
...requiredstring

Returns

ui.new_multiselect returns
NameTypeDescription
valueScriptHandle

ui.new_listbox(tab, container, name, items)

A listbox of items.

Parameters

ui.new_listbox parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring
itemsrequiredstring[]

Returns

ui.new_listbox returns
NameTypeDescription
valueScriptHandle

ui.new_textbox(tab, container, name)

A single-line text field.

Parameters

ui.new_textbox parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring

Returns

ui.new_textbox returns
NameTypeDescription
valueScriptHandle

ui.new_button(tab, container, name, callback)

A button that calls callback when pressed.

Parameters

ui.new_button parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring
callbackrequiredfun()

Returns

ui.new_button returns
NameTypeDescription
valueScriptHandle

ui.new_label(tab, container, text)

A static label showing text.

Parameters

ui.new_label parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
textrequiredstring

Returns

ui.new_label returns
NameTypeDescription
valueScriptHandle

ui.new_color_picker(tab, container, name, r?, g?, b?, a?)

A colour picker. Attaches to the previous row in the container when there is one, like gamesense.

Parameters

ui.new_color_picker parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring
rinteger
ginteger
binteger
ainteger

Returns

ui.new_color_picker returns
NameTypeDescription
valueScriptHandle

ui.new_hotkey(tab, container, name)

A hotkey row.

Parameters

ui.new_hotkey parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring

Returns

ui.new_hotkey returns
NameTypeDescription
valueScriptHandle

ui.new_string(name, default?)

A named string that persists in the menu config but draws no row.

Parameters

ui.new_string parameters
NameTypeDescription
namerequiredstring
defaultstring

Returns

ui.new_string returns
NameTypeDescription
valueScriptHandle

ui.new_tab(name, icon?)

Create (or find) a menu tab.

Parameters

ui.new_tab parameters
NameTypeDescription
namerequiredstring
iconstring

Returns

ui.new_tab returns
NameTypeDescription
valueScriptHandle

ui.new_popover(tab, container, name, icon?)

A popover usable as the container argument of the new_* builders.

Parameters

ui.new_popover parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring
iconstring

Returns

ui.new_popover returns
NameTypeDescription
valueScriptHandle

ui.attach_popover(item)

The dots-popover attached to a menu row.

Parameters

ui.attach_popover parameters
NameTypeDescription
itemrequiredScriptHandle

Returns

ui.attach_popover returns
NameTypeDescription
valueScriptHandle

ui.new_watermark_item(name, icon?)

A watermark row whose text is set with ui.set.

Parameters

ui.new_watermark_item parameters
NameTypeDescription
namerequiredstring
iconstring

Returns

ui.new_watermark_item returns
NameTypeDescription
valueScriptHandle

ui.load_icon(name, bytes)

Register an icon by name from SVG or PNG bytes, for use with new_tab, new_popover and set_icon.

Parameters

ui.load_icon parameters
NameTypeDescription
namerequiredstring
bytesrequiredstring

Returns

Nothing.

ui.set_icon(item, icon)

Set a row's icon by a registered name.

Parameters

ui.set_icon parameters
NameTypeDescription
itemrequiredScriptHandle
iconrequiredstring

Returns

Nothing.

ui.set_enabled(item, enabled)

Enable or disable a row.

Parameters

ui.set_enabled parameters
NameTypeDescription
itemrequiredScriptHandle
enabledrequiredboolean

Returns

Nothing.

ui.set_visible(item, visible)

Show or hide a row.

Parameters

ui.set_visible parameters
NameTypeDescription
itemrequiredScriptHandle
visiblerequiredboolean

Returns

Nothing.

ui.set_callback(item, fn)

Call fn whenever the item's value changes.

Parameters

ui.set_callback parameters
NameTypeDescription
itemrequiredScriptHandle
fnrequiredfun(item: ScriptHandle)

Returns

Nothing.

ui.reference(tab, container, name)

Find a built-in Lynx widget by tab, container and name (raw key or translated label, case-insensitive), including ones inside popovers.

Parameters

ui.reference parameters
NameTypeDescription
tabrequiredstring
containerrequiredstring
namerequiredstring

Returns

ui.reference returns
NameTypeDescription
valueScriptHandle

ui.get(item)

Read an item's value: checkbox boolean; slider number; combobox string; multiselect string array; listbox zero-based index; colour r, g, b, a (0-255); textbox, string, label and watermark string; hotkey pressed, key.

Parameters

ui.get parameters
NameTypeDescription
itemrequiredScriptHandle

Returns

ui.get returns
NameTypeDescription
valueany...

ui.set(item, ...)

Set an item's value; the argument shape matches what ui.get returns. Fires the item's callback.

Parameters

ui.set parameters
NameTypeDescription
itemrequiredScriptHandle
...requiredany

Returns

Nothing.

ui.update(item, ...)

Replace the options of a combobox, multiselect or listbox the script created.

Parameters

ui.update parameters
NameTypeDescription
itemrequiredScriptHandle
...requiredstring

Returns

Nothing.

ui.name(item)

The item's name.

Parameters

ui.name parameters
NameTypeDescription
itemrequiredScriptHandle

Returns

ui.name returns
NameTypeDescription
valuestring

ui.is_menu_open()

Whether the Lynx menu is open.

Returns

ui.is_menu_open returns
NameTypeDescription
valueboolean

ui.mouse_position()

The pointer position in overlay pixels.

Returns

ui.mouse_position returns
NameTypeDescription
xrequirednumber
yrequirednumber

ui.notify(text, seconds?)

Show a toast for seconds (default 3).

Parameters

ui.notify parameters
NameTypeDescription
textrequiredstring
secondsnumber

Returns

Nothing.

renderer.text(x, y, r, g, b, a, flags, max_width, ...)

Draw text. flags: + large, - small, c centred, r right-aligned, b bold. max_width of 0 does not wrap. Remaining arguments are concatenated into the string.

Parameters

renderer.text parameters
NameTypeDescription
xrequirednumber
yrequirednumber
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger
flagsrequiredstring
max_widthrequirednumber
...requiredany

Returns

renderer.text returns
NameTypeDescription
drawnrequiredboolean

renderer.measure_text(flags, ...)

Measure text without drawing it.

Parameters

renderer.measure_text parameters
NameTypeDescription
flagsrequiredstring
...requiredany

Returns

renderer.measure_text returns
NameTypeDescription
widthrequirednumber
heightrequirednumber

renderer.rectangle(x, y, w, h, r, g, b, a)

A filled rectangle at x, y sized w, h.

Parameters

renderer.rectangle parameters
NameTypeDescription
xrequirednumber
yrequirednumber
wrequirednumber
hrequirednumber
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger

Returns

renderer.rectangle returns
NameTypeDescription
drawnrequiredboolean

renderer.gradient(x, y, w, h, r1, g1, b1, a1, r2, g2, b2, a2, ltr)

A two-colour gradient rectangle. ltr true fills left-to-right, otherwise top-to-bottom.

Parameters

renderer.gradient parameters
NameTypeDescription
xrequirednumber
yrequirednumber
wrequirednumber
hrequirednumber
r1requiredinteger
g1requiredinteger
b1requiredinteger
a1requiredinteger
r2requiredinteger
g2requiredinteger
b2requiredinteger
a2requiredinteger
ltrrequiredboolean

Returns

renderer.gradient returns
NameTypeDescription
drawnrequiredboolean

renderer.line(xa, ya, xb, yb, r, g, b, a)

A line from (xa, ya) to (xb, yb).

Parameters

renderer.line parameters
NameTypeDescription
xarequirednumber
yarequirednumber
xbrequirednumber
ybrequirednumber
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger

Returns

renderer.line returns
NameTypeDescription
drawnrequiredboolean

renderer.circle(x, y, r, g, b, a, radius, start_degrees?, percentage?)

A filled circle, or an arc when start_degrees/percentage (0-1) are given.

Parameters

renderer.circle parameters
NameTypeDescription
xrequirednumber
yrequirednumber
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger
radiusrequirednumber
start_degreesnumber
percentagenumber

Returns

renderer.circle returns
NameTypeDescription
drawnrequiredboolean

renderer.circle_outline(x, y, r, g, b, a, radius, start_degrees?, percentage?, thickness?)

A circle or arc outline of thickness.

Parameters

renderer.circle_outline parameters
NameTypeDescription
xrequirednumber
yrequirednumber
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger
radiusrequirednumber
start_degreesnumber
percentagenumber
thicknessnumber

Returns

renderer.circle_outline returns
NameTypeDescription
drawnrequiredboolean

renderer.triangle(x0, y0, x1, y1, x2, y2, r, g, b, a)

A filled triangle through the three points.

Parameters

renderer.triangle parameters
NameTypeDescription
x0requirednumber
y0requirednumber
x1requirednumber
y1requirednumber
x2requirednumber
y2requirednumber
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger

Returns

renderer.triangle returns
NameTypeDescription
drawnrequiredboolean

renderer.texture(id, x, y, w, h, r, g, b, a, mode?)

Draw a loaded texture into the rectangle x, y, w, h, tinted by the colour. mode selects the fit.

Parameters

renderer.texture parameters
NameTypeDescription
idrequiredinteger
xrequirednumber
yrequirednumber
wrequirednumber
hrequirednumber
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger
modestring

Returns

renderer.texture returns
NameTypeDescription
drawnrequiredboolean

renderer.load_png(contents)

Upload a PNG and return a texture id.

Parameters

renderer.load_png parameters
NameTypeDescription
contentsrequiredstring

Returns

renderer.load_png returns
NameTypeDescription
idrequiredinteger

renderer.load_jpg(contents)

Upload a JPEG and return a texture id.

Parameters

renderer.load_jpg parameters
NameTypeDescription
contentsrequiredstring

Returns

renderer.load_jpg returns
NameTypeDescription
idrequiredinteger

renderer.load_svg(contents)

Upload an SVG and return a texture id.

Parameters

renderer.load_svg parameters
NameTypeDescription
contentsrequiredstring

Returns

renderer.load_svg returns
NameTypeDescription
idrequiredinteger

renderer.load_rgba(contents, width, height)

Upload raw RGBA pixels and return a texture id.

Parameters

renderer.load_rgba parameters
NameTypeDescription
contentsrequiredstring
widthrequiredinteger
heightrequiredinteger

Returns

renderer.load_rgba returns
NameTypeDescription
idrequiredinteger

renderer.indicator(r, g, b, a, ...)

A stacked top-left indicator line. Returns its y, or nil when the frame's draw budget is full.

Parameters

renderer.indicator parameters
NameTypeDescription
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger
...requiredany

Returns

renderer.indicator returns
NameTypeDescription
yrequirednumber|nil

renderer.polyline(points, r, g, b, a, thickness?)

Draw a connected path through points ({ {x=, y=}, ... }). A Lynx extra for drawing custom prediction paths.

Parameters

renderer.polyline parameters
NameTypeDescription
pointsrequiredvec2[]
rrequiredinteger
grequiredinteger
brequiredinteger
arequiredinteger
thicknessnumber

Returns

renderer.polyline returns
NameTypeDescription
drawnrequiredboolean

renderer.world_to_screen(x, y, z?)

Project a game point to overlay pixels. On the table games the input is table coordinates. Returns nil when the point is off-screen or the transform is unavailable.

Parameters

renderer.world_to_screen parameters
NameTypeDescription
xrequirednumber
yrequirednumber
znumber

Returns

renderer.world_to_screen returns
NameTypeDescription
sxrequirednumber|nil
syrequirednumber|nil

http.get(url, options?, callback)

GET url. Pass a callback, or options then a callback. callback(success, response).

Parameters

http.get parameters
NameTypeDescription
urlrequiredstring
optionshttp_options
callbackrequiredfun(success: boolean, response: http_response)

Returns

Nothing.

http.post(url, options, callback)

POST url with options. callback(success, response).

Parameters

http.post parameters
NameTypeDescription
urlrequiredstring
optionsrequiredhttp_options
callbackrequiredfun(success: boolean, response: http_response)

Returns

Nothing.

http.request(method, url, options, callback)

Send method ("GET" or "POST") to url. callback(success, response).

Parameters

http.request parameters
NameTypeDescription
methodrequiredstring
urlrequiredstring
optionsrequiredhttp_options
callbackrequiredfun(success: boolean, response: http_response)

Returns

Nothing.

websocket.connect(url, handlers)

Open a connection to url. Returns the socket, or nil when the URL is refused or the per-script limit is reached.

Parameters

websocket.connect parameters
NameTypeDescription
urlrequiredstring
handlersrequiredwebsocket_handlers

Returns

websocket.connect returns
NameTypeDescription
valuesocket|nil

json.decode(text)

Decode a JSON string to a Lua value.

Parameters

json.decode parameters
NameTypeDescription
textrequiredstring

Returns

json.decode returns
NameTypeDescription
valueany

json.encode(value)

Encode a Lua value to a JSON string.

Parameters

json.encode parameters
NameTypeDescription
valuerequiredany

Returns

json.encode returns
NameTypeDescription
valuestring

json.parse(text)

Alias of decode.

Parameters

json.parse parameters
NameTypeDescription
textrequiredstring

Returns

json.parse returns
NameTypeDescription
valueany

json.stringify(value)

Alias of encode.

Parameters

json.stringify parameters
NameTypeDescription
valuerequiredany

Returns

json.stringify returns
NameTypeDescription
valuestring

bit.tobit(value)

Normalise a number to a 32-bit integer.

Parameters

bit.tobit parameters
NameTypeDescription
valuerequirednumber

Returns

bit.tobit returns
NameTypeDescription
valueinteger

bit.tohex(value, n?)

Hex string of value; n digits (negative for uppercase), default 8.

Parameters

bit.tohex parameters
NameTypeDescription
valuerequirednumber
ninteger

Returns

bit.tohex returns
NameTypeDescription
valuestring

bit.bnot(value)

Bitwise NOT.

Parameters

bit.bnot parameters
NameTypeDescription
valuerequirednumber

Returns

bit.bnot returns
NameTypeDescription
valueinteger

bit.band(value, ...)

Bitwise AND of every argument.

Parameters

bit.band parameters
NameTypeDescription
valuerequirednumber
...requirednumber

Returns

bit.band returns
NameTypeDescription
valueinteger

bit.bor(value, ...)

Bitwise OR of every argument.

Parameters

bit.bor parameters
NameTypeDescription
valuerequirednumber
...requirednumber

Returns

bit.bor returns
NameTypeDescription
valueinteger

bit.bxor(value, ...)

Bitwise XOR of every argument.

Parameters

bit.bxor parameters
NameTypeDescription
valuerequirednumber
...requirednumber

Returns

bit.bxor returns
NameTypeDescription
valueinteger

bit.lshift(value, shift)

Left shift by shift bits.

Parameters

bit.lshift parameters
NameTypeDescription
valuerequirednumber
shiftrequiredinteger

Returns

bit.lshift returns
NameTypeDescription
valueinteger

bit.rshift(value, shift)

Logical right shift by shift bits.

Parameters

bit.rshift parameters
NameTypeDescription
valuerequirednumber
shiftrequiredinteger

Returns

bit.rshift returns
NameTypeDescription
valueinteger

bit.arshift(value, shift)

Arithmetic right shift by shift bits.

Parameters

bit.arshift parameters
NameTypeDescription
valuerequirednumber
shiftrequiredinteger

Returns

bit.arshift returns
NameTypeDescription
valueinteger

bit.rol(value, shift)

Rotate left by shift bits.

Parameters

bit.rol parameters
NameTypeDescription
valuerequirednumber
shiftrequiredinteger

Returns

bit.rol returns
NameTypeDescription
valueinteger

bit.ror(value, shift)

Rotate right by shift bits.

Parameters

bit.ror parameters
NameTypeDescription
valuerequirednumber
shiftrequiredinteger

Returns

bit.ror returns
NameTypeDescription
valueinteger

bit.bswap(value)

Swap the byte order of a 32-bit integer.

Parameters

bit.bswap parameters
NameTypeDescription
valuerequirednumber

Returns

bit.bswap returns
NameTypeDescription
valueinteger

database.read(key)

Read key. Returns the stored value, or nil when it is absent.

Parameters

database.read parameters
NameTypeDescription
keyrequiredstring

Returns

database.read returns
NameTypeDescription
valueany

database.write(key, value)

Write value under key. Returns true on success, or nil on failure.

Parameters

database.write parameters
NameTypeDescription
keyrequiredstring
valuerequiredany

Returns

database.write returns
NameTypeDescription
valueboolean|nil

hash.fnv1a(text)

Parameters

hash.fnv1a parameters
NameTypeDescription
textrequiredstring

Returns

hash.fnv1a returns
NameTypeDescription
valuestd::int64_t

hash.fnv1a32(text)

Parameters

hash.fnv1a32 parameters
NameTypeDescription
textrequiredstring

Returns

hash.fnv1a32 returns
NameTypeDescription
valuestd::uint32_t

vector.abs(value)

Parameters

vector.abs parameters
NameTypeDescription
valuerequirednumber

Returns

vector.abs returns
NameTypeDescription
valuenumber

Overloads

  • fun(value: vec2): vec2
  • fun(value: vec3): vec3

vector.deg_to_rad(degrees)

Parameters

vector.deg_to_rad parameters
NameTypeDescription
degreesrequirednumber

Returns

vector.deg_to_rad returns
NameTypeDescription
valuenumber

vector.rad_to_deg(radians)

Parameters

vector.rad_to_deg parameters
NameTypeDescription
radiansrequirednumber

Returns

vector.rad_to_deg returns
NameTypeDescription
valuenumber

vector.wrap_pi(radians)

Parameters

vector.wrap_pi parameters
NameTypeDescription
radiansrequirednumber

Returns

vector.wrap_pi returns
NameTypeDescription
valuenumber

vector.angle_delta(from, to)

Parameters

vector.angle_delta parameters
NameTypeDescription
fromrequirednumber
torequirednumber

Returns

vector.angle_delta returns
NameTypeDescription
valuenumber

vector.round4(value)

Parameters

vector.round4 parameters
NameTypeDescription
valuerequirednumber

Returns

vector.round4 returns
NameTypeDescription
valuenumber

vector.dot(a, b)

Parameters

vector.dot parameters
NameTypeDescription
arequiredvec2
brequiredvec2

Returns

vector.dot returns
NameTypeDescription
valuenumber

Overloads

  • fun(a: vec3, b: vec3): number

vector.cross(a, b)

Parameters

vector.cross parameters
NameTypeDescription
arequiredvec2
brequiredvec2

Returns

vector.cross returns
NameTypeDescription
valuenumber

Overloads

  • fun(a: vec3, b: vec3): vec3

vector.length_squared(value)

Parameters

vector.length_squared parameters
NameTypeDescription
valuerequiredvec2

Returns

vector.length_squared returns
NameTypeDescription
valuenumber

Overloads

  • fun(value: vec3): number

vector.length(value)

Parameters

vector.length parameters
NameTypeDescription
valuerequiredvec2

Returns

vector.length returns
NameTypeDescription
valuenumber

Overloads

  • fun(value: vec3): number

vector.distance_squared(a, b)

Parameters

vector.distance_squared parameters
NameTypeDescription
arequiredvec2
brequiredvec2

Returns

vector.distance_squared returns
NameTypeDescription
valuenumber

Overloads

  • fun(a: vec3, b: vec3): number

vector.distance(a, b)

Parameters

vector.distance parameters
NameTypeDescription
arequiredvec2
brequiredvec2

Returns

vector.distance returns
NameTypeDescription
valuenumber

Overloads

  • fun(a: vec3, b: vec3): number

vector.is_zero(value, tolerance)

Parameters

vector.is_zero parameters
NameTypeDescription
valuerequiredvec2
tolerancerequirednumber

Returns

vector.is_zero returns
NameTypeDescription
valueboolean

Overloads

  • fun(value: vec2): boolean
  • fun(value: vec3, tolerance: number): boolean
  • fun(value: vec3): boolean

vector.approx_equal(a, b, tolerance)

Parameters

vector.approx_equal parameters
NameTypeDescription
arequiredvec2
brequiredvec2
tolerancerequirednumber

Returns

vector.approx_equal returns
NameTypeDescription
valueboolean

Overloads

  • fun(a: vec2, b: vec2): boolean
  • fun(a: vec3, b: vec3, tolerance: number): boolean
  • fun(a: vec3, b: vec3): boolean

vector.normalize(value)

Parameters

vector.normalize parameters
NameTypeDescription
valuerequiredvec2

Returns

vector.normalize returns
NameTypeDescription
valuevec2

Overloads

  • fun(value: vec3): vec3

vector.perpendicular(value)

Parameters

vector.perpendicular parameters
NameTypeDescription
valuerequiredvec2

Returns

vector.perpendicular returns
NameTypeDescription
valuevec2

vector.rotated(value, radians)

Parameters

vector.rotated parameters
NameTypeDescription
valuerequiredvec2
radiansrequirednumber

Returns

vector.rotated returns
NameTypeDescription
valuevec2

vector.angle_of(value)

Parameters

vector.angle_of parameters
NameTypeDescription
valuerequiredvec2

Returns

vector.angle_of returns
NameTypeDescription
valuenumber

vector.from_angle(radians, magnitude)

Parameters

vector.from_angle parameters
NameTypeDescription
radiansrequirednumber
magnituderequirednumber

Returns

vector.from_angle returns
NameTypeDescription
valuevec2

Overloads

  • fun(radians: number): vec2

vector.lerp(from, to, ratio)

Parameters

vector.lerp parameters
NameTypeDescription
fromrequiredvec2
torequiredvec2
ratiorequirednumber

Returns

vector.lerp returns
NameTypeDescription
valuevec2

Overloads

  • fun(from: vec3, to: vec3, ratio: number): vec3

vector.reflect(value, unit_normal)

Parameters

vector.reflect parameters
NameTypeDescription
valuerequiredvec2
unit_normalrequiredvec2

Returns

vector.reflect returns
NameTypeDescription
valuevec2

Overloads

  • fun(value: vec3, unit_normal: vec3): vec3

vector.project(value, onto)

Parameters

vector.project parameters
NameTypeDescription
valuerequiredvec2
ontorequiredvec2

Returns

vector.project returns
NameTypeDescription
valuevec2

Overloads

  • fun(value: vec3, onto: vec3): vec3

vector.min(a, b)

Parameters

vector.min parameters
NameTypeDescription
arequiredvec2
brequiredvec2

Returns

vector.min returns
NameTypeDescription
valuevec2

Overloads

  • fun(a: vec3, b: vec3): vec3

vector.max(a, b)

Parameters

vector.max parameters
NameTypeDescription
arequiredvec2
brequiredvec2

Returns

vector.max returns
NameTypeDescription
valuevec2

Overloads

  • fun(a: vec3, b: vec3): vec3

vector.intersection(first, second)

Parameters

vector.intersection parameters
NameTypeDescription
firstrequiredrect
secondrequiredrect

Returns

vector.intersection returns
NameTypeDescription
valuerect

vector.inset(value, by)

Parameters

vector.inset parameters
NameTypeDescription
valuerequiredrect
byrequirednumber

Returns

vector.inset returns
NameTypeDescription
valuerect

Types

vec2

A point or direction in two dimensions. Any table with numeric x and y is accepted.

vec2 fields
NameTypeDescription
xrequirednumber
yrequirednumber

vec3

A point or direction in three dimensions. Any table with numeric x, y and z is accepted.

vec3 fields
NameTypeDescription
xrequirednumber
yrequirednumber
zrequirednumber

rect

An axis-aligned rectangle.

rect fields
NameTypeDescription
originrequiredvec2
sizerequiredvec2

color

An RGBA colour. Every channel is 0-255.

color fields
NameTypeDescription
rrequirednumber
grequirednumber
brequirednumber
arequirednumber

ScriptHandle

An opaque menu-item handle returned by the ui.new_* builders. Stale once the menu is rebuilt.

No fields; the value is opaque.

lynx_user

The signed-in Lynx user. A field is absent when its value is unknown.

lynx_user fields
NameTypeDescription
usernamerequiredstring
uidrequiredstring
emailrequiredstring
avatarrequiredstring
planrequiredstring
expires_atrequiredintegerUnix seconds; absent when the plan does not expire.

client

The always-present client global. The chunk's top level runs once, at load; everything after that is an event.

Base events, delivered to the callback with one table argument: paint (draw only here, once per frame), shutdown (the script is unloading), menu_open and menu_close (the Lynx menu opened or closed). Each game adds its own events; see the game's reference page.

No fields; the value is opaque.

globals

Frame-timing globals, gamesense-style.

No fields; the value is opaque.

ui

Build and read menu widgets. gamesense-compatible; Lynx adds tabs, popovers, icons, watermark rows and toasts. A tab or container that does not exist yet is created.

No fields; the value is opaque.

renderer

Immediate-mode overlay drawing. Call these only inside the paint event. Colours are 0-255; coordinates are overlay pixels.

No fields; the value is opaque.

http_options

Request options for an HTTP call.

http_options fields
NameTypeDescription
headerstable<string, string>
bodystring

http_response

An HTTP response passed to a request callback.

http_response fields
NameTypeDescription
statusrequiredinteger
bodyrequiredstring
headersrequiredtable<string, string>
errorintegerPresent only when the request failed.

http

Asynchronous HTTPS requests, off the game thread. Needs the http capability. https only, any host.

No fields; the value is opaque.

socket

An open WebSocket connection returned by websocket.connect.

socket fields
NameTypeDescription
sendrequiredfun(self: socket, text: string): booleanSend a text frame; returns whether it was sent.
closerequiredfun(self: socket, code?: integer)Close the connection with an optional status code.

websocket_handlers

The callbacks a WebSocket delivers.

websocket_handlers fields
NameTypeDescription
openfun()
messagefun(text: string)
closefun(code: integer, reason: string)
errorfun(message: string)

websocket

Asynchronous WebSocket client, off the game thread. Needs the websocket capability. wss only.

No fields; the value is opaque.

json

JSON encode and decode (lua-cjson), with gamesense-style aliases.

No fields; the value is opaque.

bit

Bitwise operations on 32-bit integers, LuaBitOp-compatible.

No fields; the value is opaque.

database

A per-script persistent key/value store, JSON-encoded on top of the script's storage directory. 64 KiB per script.

No fields; the value is opaque.

hash

No fields; the value is opaque.

vector

No fields; the value is opaque.