From CKRAS Wiki

(Redirected from OpenPrefirePrac)


PreFire Practice for CS2 is the perfect tool to train prefire on competitive and custom Counter-Strike 2 maps, with PreFire Addon you can start the training scenarios with !prefire on the currently available maps as indicated in the menu. >> Deutsch Deutsch


PreFire is now available in the Webpanel \o/



Prefire Practice for CS2 gameservers is fully integrated into the CKRAS webpanel and is available to all customers free of charge. PreFire requires CSS.

An open-source CounterStrikeSharp powered server-side practicing plugin for CS2. It provides multiple prefire practices on competitive map pool maps and support multiplayer practicing concurrently.


Commands Description
!prefire Start menu
!prefire prac [number] Start practicing on a selected route.
!prefire map [map name] Switch to another map.
!prefire df [1-5] Set the difficulty.
!prefire mode [rand/full] Set training mode, full or random.
!prefire bw [rand/ump/ak/sct/awp] Set weapons for bots.
!prefire lang [en/pt/zh] Set language. en for English, pt para português, 中文选择 zh。
!prefire exit Stop practicing PreFire.
!prefire help Help Menu

Prefire Installation

You can install PreFire in the webinterface as soon as you have installed&activated MM & CSS, then you just have to click on Install and after the server restart you can start your PreFire Practice.


Install CounterStrike Sharp

Install PreFire Practice

PreFire Update

When updating, simply click on this button and the new update will be installed.


Prefire Pracs available

Finished Practices:
  • de_ancient
    • B ramp to B site
    • B house to B site
    • Mid to A site
    • A main to A site
    • Retake A from CT spawn
  • de_anubis
    • Attack B site from B main
    • Attack B site from mid (B connector)
    • Attack B site from water
    • Attack A site from mid (A connector)
    • Attack A site from A main
    • Add a practice route for aggressive CT pushing from A main.
    • Add a practice route for aggressive CT pushing from B main.
  • de_dust2
    • Attack A site from A long
    • Attack A site from A short
    • Attack B site from tunnel
    • Attack B site from mid
    • CT aggressively push from lower tunnel
    • CT aggressively push top mid
  • de_inferno
    • A short to A site
    • A long to A site
    • A apartments to A site
    • Banana to B site
    • Retake B from CT spawn
  • de_mirage
    • Attack A site from A ramp (to CT spawn)
    • Attack B site from B apartments
    • Attack A site from A palace (to jungle)
    • Attack B site from mid
    • Attack A site from underpass
    • Retake B site from CT spawn
  • de_nuke
    • Attack A site from hut
    • Attack B site from ramp
    • Entrance of lobby (T side)
    • From radio to ramp
    • Attack A site from Ramp/J-Hall
    • From T-side outside to secret
    • Attack B site from secret
    • Fast pace rush MINI from Silo
    • Attack A site from MINI
  • de_overpass
    • Attack B site from B long
    • Attack B site from B short
    • Clear underpass and go upwards to mid
    • Clear underpass and go towards B short
    • Attack A site from A long
    • Attack A site from A short (mid)
  • de_vertigo
    • Attack B site from stairs
    • From mid to CT spawn
    • Attack A site from A ramp
    • Attack A site from scaffold


Now the plugin supports loading default settings of difficulty and training mode from a json file. You can rename default_cfg.json.example to default_cfg.json and modify the value as you like.

Adjust default settings

       0: No healing.
       1: Init hp 500 with no healing.
       2: +25hp for each kill.
       3: Reheal to 100hp after a kill.
       4: +100hp for each kill.
       5: +500hp for each kill.
   Training Mode
       0: Random mode, randomly spawn some targets.
       1: Full mode, all targets.
   Bot Weapon
       0: Bots buy weapons randomly.
       1: Bots use UMP45.
       2: Bots use AK47.
       3: Bots use Scout.
       4: Bots use AWP.
  Aim lock for bots
       0: CS2's native bot behavior. It works in a consistant manner but is less powerful.
      1: CSS based aim lock: Bots always aim at players' heads. But this may conflict with CS2's native bot logic, causing bots to not react under certain circumstances.
      2: Behavior tree based aim lock: Hard mode.

Custom Maps

For custom maps you can insert these commands

pos_x pos_y pos_z ang_x ang_y ang_z The first 3 floating numbers are the position and the other 3 are the rotation.

pos_x pos_y pos_z ang_x ang_y ang_z is_crouching The rest lines describe how to place bots. The first 3 numbers is position, following 3 numbers of the rotation. The 7th value is either True of False indicating whether the bot is crouching.

python3 [PATH TO YOUR FILE] The positions and facing rotations can be retrived from in-game get_pos command. But please notice that, the height values used in profiles should be the values returned by get_pos minus 65. I made a python script that does this calculation for you. You can stack the strings retured by get_pos and put them in a txt file, and pass the file to the python script as described below and the script will automatically print out the formatted bot positions.



  1. Create prefire profiles for all maps.
  2. Apply behavior tree to improve bot AI logic.
  3. Improve localization support (The supporting framework is done. Submitting translations is warmly welcomed.).
  4. Reorganize the files and code structure. Try to put code into submodules to improve readability.
  5. Reroute separate logs into one gathered place for better debug experience.

CS2 Server:

(PreFire needs CounterStrikeSharp)