Minimal C++ internal DLL project built around two gameplay modules: an aimbot and a triggerbot.
The aimbot reads local-player state directly from memory, walks the entity list, filters invalid or friendly targets, and computes yaw/pitch from world-space positions.
The important part is visibility validation. Instead of aiming at every candidate inside a simple FOV gate, it calls the game's internal raycubelos routine through inline assembly. That function is used as a line-of-sight check against two target points:
- head
- chest
This reduces false positives on partially covered targets and avoids snapping to enemies hidden behind geometry. The function is called with the same low-level convention expected by the game: ECX and EDX carry the vector pointers, and the LOS margin is passed in XMM2.
The triggerbot uses a different approach. It does not reconstruct targeting logic manually from raw entity iteration. Instead, it reuses the game's own crosshair-selection helper.
GameAddresses::resolve() pattern-scans the module image to find findCrosshairTarget at runtime. TriggerBot then calls that function through a small inline assembly adapter that mirrors the original calling convention:
ECXandEDXreceive the ray start and ray end vectors- the remaining arguments are pushed on the stack in the expected order
This is the key piece of the triggerbot design. Rather than guessing what the crosshair is pointing at, it delegates that decision to the same internal helper used by the game and only applies lightweight validation afterward:
- ignore null or invalid entities
- ignore self
- ignore dead targets
- ignore teammates
If the resolved target passes those checks, the module writes to the weapon's shoot-ready flag.
This project uses CMake, targets C++20, and should be built as x86 with the MSVC toolchain. x64 builds are not suitable for the current inline assembly and calling-convention assumptions.
cmake -S . -B build -A Win32
cmake --build build