Skip to main content
The CSAFAP configuration system is designed to be both powerful and user-friendly. All customization happens through .cfg files that use CS2’s alias and command syntax.

Configuration Hierarchy

Configurations are organized in a hierarchical structure:
Only MAIN.cfg is meant to be edited by users. The framework files (logic.cfg, loader.cfg, etc.) should not be modified unless you’re developing custom features.

User Configuration: MAIN.cfg

The MAIN.cfg file is your control panel for customizing the framework.

Setting Your Sensitivity

The most important configuration:
Replace 1.0 with your actual in-game sensitivity. This ensures auto line-ups work correctly while preserving your normal aim sensitivity.
If you use a custom m_yaw or sensitivity_y_scale, set those values here as well. The framework will use these to restore your settings after line-ups.

Customizing Keybinds

Base keybinds control access to major features:
Change the keys to match your preferences. Use scancode binds for non-QWERTY keyboards:

FaceIt Alternative Binds

For servers that don’t support standard auto line-ups:

Ticker-Based Features

Advanced features using AveYo’s ticker system:
Ticker features require the launch option:

Enabling Features at Launch

Optionally load features automatically when the game starts:
Remove the // prefix to enable a feature.

Rapid Fire / Follow-Recoil Requirements

If using rapid fire or follow-recoil modes:
These enhanced slot binds enable proper weapon detection for the rapid fire and follow-recoil systems.

Crosshair and Viewmodel

Insert your preferred crosshair and viewmodel settings:
The framework will restore these settings when switching between pro player configs.

Map-Specific Configurations

Each map has its own configuration directory:

Label Configuration

Defines what text appears in radio tiles:

Command Configuration

Defines what executes when a tile is selected:
Commands must:
  • Start with cmd";
  • End with ;
  • Cannot contain " characters (use aliases instead)

Movement Configurations

Movement configs modify WASD behavior:

Default Movement

Null Binds (Snap-Tap)

When using null binds, pressing an opposite direction key automatically releases the first key.

Desubtick Movement

Movement inputs wait for the next tick rather than being subticked.
Standard CS2 movement with subtick precision. Best for most players.

Adding Custom Line-ups

To add your own line-up to the framework:

Step 1: Find the Angle

In-game with sv_cheats 1, position yourself and use:
Note the setpos coordinates and setang angles.

Step 2: Calculate Yaw/Pitch

Use the formula:
For the framework’s standard sensitivity:
Since version 2.15, vertical angles are zeroed at -89° instead of 0°. Add +4045.45454545 to your calculated pitch value.

Step 3: Create Alias in logic.cfg

Add your line-up alias:

Step 4: Add Label in platform_english.txt

Step 5: Add to Map Label Config

In csafap/maps/[mapname]_labels.cfg:

Step 6: Add to Map Command Config

In csafap/maps/[mapname]_cmd.cfg:
Use the same tile number (e.g., text_7) in both label and command configs.

Practice Mode Configuration

Practice mode has its own configuration structure:
When practice mode is enabled, the framework:
  1. Loads practice-specific radio wheel configurations
  2. Converts the map wheel to changelevel commands
  3. Converts CT wheel to spawn teleports
  4. Converts T wheel to practice commands (god, noclip, sv_cheats, etc.)

Advanced: Ticker System

The ticker system enables frame-perfect input through a .vtest script:
This script calls special aliases every frame, enabling:
  • Null movement binds
  • Jumpthrow binds
  • Rapid fire
  • Follow-recoil
Ticker aliases use ! suffix (e.g., W!, M1!, JT!) and are chained through multiple alias substitutions per frame.