Skip to main content
The CSAFAP framework transforms CS2’s built-in radio communication system into an interactive UI for accessing hundreds of configuration options. This is achieved through clever manipulation of radio wheel commands and custom language files.

How Radio Wheels Work

CS2 has three built-in radio wheels accessed via:
  • +radialradio - Standard radio
  • +radialradio2 - Secondary radio
  • +radialradio3 - Tertiary radio
Each wheel has multiple tiles that can display custom text and execute commands when selected.

Two-Phase Interaction Model

The framework implements a two-phase system for radio wheel interaction:

Phase 1: Display Labels

When you first press a hotkey (e.g., J for T-side line-ups):
This:
  1. Resets the deadzone for accurate selection
  2. Loads label text from configuration files
  3. Sets up the wheel environment
  4. Loads map-specific labels

Phase 2: Execute Commands

When you press the same key again while hovering over a tile:
This:
  1. Switches from labels to command configuration
  2. Sets up the environment for execution (sensitivity, view angles)
  3. Executes the selected command
  4. Resets the radio wheel and rebinds hotkey for next use
Labels are defined in platform_english.txt language file and loaded via:

Radio Wheel Types

The framework uses different radio wheels for different purposes:

Map Selection Wheel

Opens a wheel showing all competitive maps. Selecting a map loads that map’s line-up configurations.

CT/T Line-up Wheels

Displays side-specific smoke line-ups and wallbangs. The wheel automatically:
  • Equips smoke grenade (slot8)
  • Zeros view angles for precise aiming
  • Applies standard sensitivity for calculations

Movement/Crosshair Wheel

Provides access to:
  • Pro player crosshairs
  • Null/Snap-tap binds
  • Rapid fire mode
  • Follow-recoil mode

Multi-Page Wheels

The framework supports multiple pages accessible via mouse wheel scrolling:
Each radio wheel supports multiple tabs, and the framework can display different pages by scrolling the mouse wheel while the radio menu is open. This enables hundreds of line-ups across just a few keybinds.

Wheel Setup Process

Before opening a line-up wheel, the framework prepares the environment:
This:
  1. startsens - Sets sensitivity to 1.0 for angle calculations
  2. zero_ud - Zeros vertical view angle to -89 degrees
  3. buy smokegrenade - Ensures player has a smoke grenade
  4. original_mx/my - Preserves original mouse bindings

Zeroing System

For auto line-ups to work, the framework must know the exact starting view angle:
The zeroing system:
  • Horizontal: Sets an extremely high m_yaw to prevent mouse input, then uses yaw command to snap to 0 degrees
  • Vertical: Uses pitch command to snap view to -89 degrees (looking straight up)
The values -4045.45454545 and similar are calculated based on the formula:
This ensures pixel-perfect alignment regardless of player’s actual sensitivity.

Deadzone Configuration

The radio wheel deadzone controls how close to the center you can be before a selection is made:
For some features, the deadzone is set to 0 for immediate activation:

Resetting the Radio

After each use, the radio must be reset to default state:
This ensures radio tiles don’t show stale configuration from previous selections.

Custom Language Files

Radio tile text is customized via platform_english.txt:
The \n characters create line breaks for better readability in the wheel UI.
Changes to platform_english.txt require a game restart to take effect, as this file is loaded only during CS2 initialization.