Skip to content

Types & Structures

Complete reference of all primitive types, math objects, and engine structures exposed to Aimsense Lua.


3D Coordinate vector structure.

local v1 = vector() -- (0, 0, 0)
local v2 = vector(x, y) -- (x, y, 0)
local v3 = vector(x, y, z)

Fields: x, y, z (Numbers, read/write).
Operators: +, -, *, /, ==, # (length), tostring.

Method Parameters Returns Description
v:length() (none) number 3D magnitude $\sqrt{x^2 + y^2 + z^2}$.
v:length_sqr() (none) number Squared 3D magnitude $x^2 + y^2 + z^2$.
v:length2d() (none) number 2D magnitude $\sqrt{x^2 + y^2}$ (ignoring z).
v:length2d_sqr() (none) number Squared 2D magnitude $x^2 + y^2$.
v:dist(other) vector number Euclidean distance to another point.
v:dot(other) vector number Dot product between vectors.
v:cross(other) vector vector Cross product vector.
v:lerp(other, t) vector, number vector Linear interpolation towards other with fraction t.
v:angles() (none) qangle Converts vector direction to view Euler angles.
v:angles(ang) qangle vector Returns unit direction vector for the given Euler angles.
v:to_screen() (none) vector Transforms 3D world coordinate to 2D screen coordinate.
v:dist_to_ray(start, stop) vector, vector number Perpendicular distance from vector to a line segment.
v:closest_ray_point(start, stop) vector, vector vector Nearest point on ray segment to this vector.

3D Euler angle orientation structure.

local a1 = qangle()
local a2 = qangle(pitch, yaw)
local a3 = qangle(pitch, yaw, roll)

Fields: pitch, yaw, roll (Numbers, read/write).


RGBA Color container (0..255 channels).

local c1 = color() -- White (255, 255, 255, 255)
local c2 = color(val) -- Greyscale (val, val, val, 255)
local c3 = color(val, alpha) -- Greyscale with alpha
local c4 = color(r, g, b) -- Opaque RGB
local c5 = color(r, g, b, a) -- RGBA

Fields: r, g, b, a (Numbers 0..255).

Method Parameters Returns Description
c:alpha_modulate(a) number color Returns new color with explicit alpha (0..255).
c:alpha_modulatef(f) number color Returns new color with alpha multiplied by fraction (0.0..1.0).
c:lerp(other, t) color, number color Interpolates towards other color by fraction t.
c:clone() (none) color Returns duplicate color instance.
c:as_int32() (none) number Returns packed 32-bit ARGB/RGBA integer.
c:as_fraction() (none) number, number, number, number Returns channels as 0.0..1.0 floats.

Raw Direct3D vertex definition for render.vertex.

local vt = vertex(pos: vector, clr: color)

Fields: x, y, z, color.


Base class for all entities in the game. Supports direct netprop access.

Method Returns Description
e:ent_index() number Entity index.
e:get_abs_origin() vector Absolute world position origin.
e:get_abs_angles() qangle Absolute world orientation angles.
e:collision_origin() vector Collision bounding box center.
e:obb_mins() / e:obb_maxs() vector Oriented bounding box bounds in local coordinates.
e:is_player() boolean true if entity is a player.
e:is_weapon() boolean true if entity is a base combat weapon.
e:get_classid() number Client network class ID.
e:get_classname() string C++ classname (e.g. "CCSPlayer", "CWeaponAK47").
e:set_model_index(idx) nil Overrides entity model index.
e:ptr() number Raw memory address for LuaJIT FFI interaction.
e:friendly() boolean true if player is running Aimsense (shared users).
e:get_avatar() image_t | nil Steam profile avatar texture.
e:set_icon(icon) nil Sets scoreboard rank icon (SVG string, path, or level).

Inherits all methods from entity_t, adding player-specific methods:

Method Returns Description
p:get_name() string Steam persona display name.
p:get_player_info() player_info_t Steam IDs and engine user info.
p:is_alive() boolean true if player health > 0 and life state is alive.
p:is_enemy() boolean true if player is on the opposing team.
p:is_bot() boolean true if player is an AI bot.
p:is_dormant() boolean true if player is dormant to the local client.
p:get_active_weapon() weapon_t | nil Currently equipped active weapon instance.
p:get_eye_position() vector World position of player eye camera.
p:get_bone_position(bone) vector 3D matrix bone position.
p:get_hitbox_position(hitbox) vector 3D center of hitbox (0 is head).
p:get_bounding_box() vector, vector Screen-space mins, maxs 2D box. Returns empty vector if off-screen.
p:get_animstate() animstate_t | nil CS:GO animation state machine.
p:get_animlayers() 0-based wrapper Array wrapper of 13 animation layers.
p:get_simulation_time() table [1] = Current simulation time, [2] = Previous.
p:get_dormant_last_update() number globals.curtime timestamp when entity was last seen.
p:get_esp_alpha() number Current ESP fade opacity (0.0..1.0).

Inherits all methods from entity_t, adding weapon-specific methods:

Method Returns Description
w:weapon_index() number Item definition index.
w:get_weapon_info() weapon_data_t Internal CCSWeaponData table.
w:get_icon() image_t SVG/texture weapon icon.
w:get_inaccuracy() number Current weapon firing inaccuracy.
w:get_spread() number Current weapon spread cone radius.
w:can_shoot() boolean true if weapon can fire this tick (off cooldown & loaded).
w:shooting_weapon() boolean true if firearm (not knife, grenade, or C4).
w:is_grenade() boolean true if throwable grenade.
w:is_knife() boolean true if melee knife.

Passed to createmove and post_createmove callbacks:

Field Type Description
command_number number Incremental command number sequence.
tickcount number Tickcount command will be processed at.
move vector Movement velocity vector (x = forward, y = side, z = up).
viewangles qangle Aim view angles.
buttons number IN_* bitmask (e.g. IN_ATTACK, IN_JUMP, IN_DUCK).
random_seed number Spread seed integer.
send_packet boolean Set false to choke packet this tick.
allow_send_packet boolean Compatibility alias of send_packet.
chokedcommands number (read-only) Number of commands currently choked.
allow_defensive boolean Set false to block defensive tickbase breaking for this tick.
override_defensive any Forces defensive exploit state.

Method: cmd:set_move(yaw: number, speed?: number) resolves movement direction immediately against cmd.viewangles and updates move.


Passed to antiaim callback. All methods are setter overrides:

Method Parameters Description
ctx:pitch degrees: number Overrides anti-aim pitch angle.
ctx:yaw degrees: number Overrides anti-aim absolute yaw angle.
ctx:yaw_offset degrees: number Overrides anti-aim yaw offset relative to base yaw.
ctx:fakelag ticks: number Overrides fake lag choke limit for this tick.
ctx:desync enabled: boolean Enables or disables desynchronization.
ctx:desync_angle degrees: number Overrides desync width limit.
ctx:desync_side side: number Overrides desync flip side (-1 or 1).

Passed to aim_shot and aim_ack callbacks:

Field Type Stage Description
client_shoot_pos vector Intent Eye position when shot was fired.
target_pos vector Intent Target point aimed at.
client_angle qangle Intent View angles shot was fired with.
command_number number Intent User command number of shot.
wanted_damage number Intent Predicted autowall damage.
wanted_damagegroup number Intent Predicted hitgroup.
hitchance number Intent Calculated hitchance percentage (0..100).
backtrack number Intent Backtrack ticks utilized.
record lag_record_t Intent Lag compensation record aimed at.
shoot_pos vector Result Confirmed server shoot position.
end_pos vector Result Impact location on server.
damage number Result Actual damage dealt (0 on miss).
hit_point vector Result Coordinates where entity was hit.
acked boolean Result true when server has acknowledged shot.
miss_reason string Result Miss reason ("spread", "resolver", "unregistered shot", "" on hit).

Field Type Description
player player_t Target player instance.
origin / velocity vector Position and velocity at recorded tick.
mins / maxs vector Local bounding bounds.
abs_angles / view_angles qangle Player orientation.
simulation_time number Simulation timestamp of record.
duck_amount / duck_speed number Duck state variables.
choked_ticks number Number of ticks choked by target prior to record.
shifting_tickbase boolean true if target is manipulating tickbase.
breaking_lag_compensation boolean true if record exceeds teleport distance limit.

Returned by utils.trace_line and utils.trace_hull:

Field Type Description
startpos vector Ray start world coordinates.
endpos vector Ray endpoint or surface impact point.
fraction number Fraction of path traversed (0.0..1.0, 1.0 = unobstructed).
allsolid boolean true if ray started inside solid geometry.
startsolid boolean true if initial point is inside solid geometry.
hit_entity entity_t | nil Entity impacted by trace.
hitgroup number Hitgroup index hit (1 = head, 2 = chest, etc.).

Returned by utils.trace_bullet:

  • damage: Calculated penetration damage (-1 if bullet fails to penetrate).
  • trace: Resulting trace_t structure.

Passed to game_events callback:

Method Parameters Returns Description
ev:get_name() (none) string Event name (e.g. "player_hurt").
ev:get_int(key) string number Reads integer event property.
ev:get_float(key) string number Reads float event property.
ev:get_bool(key) string boolean Reads boolean event property.
ev:get_string(key) string string Reads string event property.

You can also directly index properties on the event object: event.userid, event.dmg_health.


Returned by player:get_player_info():

  • name: Persona display name string.
  • userid: User ID integer.
  • steamID: Legacy Steam2 ID string.
  • steamID64: 64-bit Steam ID integer.
  • szSteamID: Formatted SteamID string.
  • xuid_low / xuid_high: 64-bit XUID halves.
  • bot: true if player is an AI bot.

CS:GO animation state:

  • eye_yaw, eye_pitch, foot_yaw, last_foot_yaw, move_yaw
  • duck_amount, velocity_length_2d, on_ground, landing
  • duration_in_air, duration_moving, duration_still, speed_normalized
  • primary_cycle, move_weight, origin, last_origin, velocity
  • min_aim_yaw, max_aim_yaw, min_pitch, max_pitch
  • last_update_time, last_update_frame, last_update_increment

Returned by utils.get_net_channel():

  • get_name(), get_address()
  • get_latency(flow), get_avg_latency(flow) (flow: 0 = out, 1 = in)
  • get_loss(flow), get_choke(flow), get_packets(flow), get_data(flow)
  • get_time(), get_time_connected(), get_timeout_seconds(), get_time_since_last_received()
  • get_sequence(flow), get_packet_time(flow, frame)
  • is_loopback(), is_timing_out(), is_playback(), is_valid_packet(flow, frame)

Returned by common.get_local_time():

  • year, month, day, day_of_week, hour, minute, second, millisecond.

Used in voice_message callback and utils.send_voice_message:

  • Fields: client (player_t), xuid_low, xuid_high, sequence_bytes, section_number, uncompressed_sample_offset, get_voice_data().
  • Constructible: voice_data().