Skip to content

Warp Scripting API

The Warp scripting system is based on Luau.

Types

-- types are currently only aliased in the docs.
---@alias Vec2 { [1]: number, [2]: number }
---@alias Rect { [1]: number, [2]: number, [3]: number, [4]: number }
---@alias Color32 { [1]: number, [2]: number, [3]: number, [4]: number }

Functions

-- non-blocking sleep, useful for tight loops where execution time must be yielded
function sleep(ms: integer)
-- clear console 
function clear()
-- print to console
function print()

function input.set_left_click(down: boolean)
function input.click_left()
function input.set_absolute_mouse_position(position: Vec2)
-- vk = virtual key code
function input.set_vk(vk: integer, down: boolean)
function input.send_vk(vk: integer)
function input.activate_target_window()

function draw.line(points: { [1]: Vec2, [2]: Vec2 }, stroke_width: integer, color: Color32)
function draw.complex_line(points: { [1]: Vec2, [2]: Vec2 }, stroke_width: integer, color: Color32)

-- view angles are represented by radians in range of 0..2 PI (π aka 3.14..) x and -0.5..0.5 PI 
function warp.set_view_angles(view_angles: Vec2)
function warp.get_view_angles(): Vec2
-- direction = (target_position - camera_position).normalize()
function warp.calc_view_angles(direction: Vec3): Vec2
-- native game Vec3 ordering (likely not [x, y, z])
function warp.get_camera_position(): Vec3

function warp.set_module(module: String, enabled: boolean)

-- position = hkp (havok) local player position
function destiny.get_position(): Vec3
function destiny.set_position(position: Vec3)
-- entity/entities = hkp entity pointers 
function destiny.get_hkp_entities(): integer[]
function destiny.get_hkp_entity_position(entity: integer): Vec3
function destiny.set_hkp_entity_position(entity: integer, position: Vec3)

Example function usage:

view_angles = warp.get_view_angles()

-- early return, all obtained variables may be nil
if not view_angles then
    return
end

view_angles[1] = view_angles[1] + 0.2
warp.set_view_angles(view_angles)

Triggers

-- fires once a update (measured by UPS)
"tick" - fun()

Example trigger usage:

function on_tick_event()
    print("i print every tick!")
end

on("tick", on_tick_event)