Skip to content

Getting Started

Aimsense scripts run on LuaJIT 2.1 (Lua 5.1 syntax).


Scripts and persisted data are stored relative to your CS:GO folder:

<game folder>/
β”œβ”€β”€ csgo.exe
└── aimsense/
β”œβ”€β”€ configs/ -- Cheat config files (.cfg)
└── scripts/ -- Place your .lua files here
└── data/ -- Per-script saved states & database
Path Purpose
aimsense/scripts/ Place .lua scripts here.
aimsense/scripts/data/ Auto-saved widget states and persistent database files.
aimsense/configs/ Cheat configs (saving a cheat config also snapshots loaded script states).

Open the cheat menu and go to Settings > Scripts:

Control Description
Available scripts Lists .lua files in aimsense/scripts/. Loaded scripts show in green with an active indicator dot.
Load / Unload Toggles execution state for the selected script.

Create aimsense/scripts/hello_world.lua:

-- Draw text on screen every frame
client.add_callback("render", function()
render.text(1, vector(10, 10), color(255, 255, 255), "o", "Hello from Aimsense!")
end)

Load hello_world.lua from the menu. The text will render at top-left screen coordinates (10, 10).


Standard output functions route directly into the cheat console:

  • print(...): Logs values prefixed with the script name.
  • error(message): Prints a red error message to console without halting execution.
  • print_raw(text, color?): Prints raw text without line breaks or prefixes.
  • client.color_log(r, g, b, ...): Prints colored log output.
print("Script loaded")
client.color_log(120, 220, 90, "Custom green log output")

All namespaces, types, and math libraries are globally exposed without requiring require():

  • Standard Libraries: string, math, table, debug, os, jit, ffi, bit32.
  • Engine Namespaces: globals, client, entity, ui, render, utils, cvar, materials, rage, common, files, database, json, network, http, crypto, easing, animations, gif, csgo_weapons, localize, chat, clipboard, sourcenav, panorama, unzip.