CS:GO Custom Game Mode

From Valve Developer Community
Jump to: navigation, search
English 简体中文
Counter-Strike: Global Offensive Level Creation

Custom is a game mode in Counter-Strike: Global Offensive Counter-Strike: Global Offensive . It allows the setting of ConVars with a map specific CFG file csgo/maps/cfg/<mapname>.cfg.

Warning.png Warning:  The default value of the ConVar sv_autoexec_mapname_cfg is 0, so this game mode does not execute that file by default. To get around this, use point_servercommand, point_clientcommand or VScript, see below.
Note.png Note:  That CFG file can also be executed with the console command exec <mapname> */maps. Use execwithwhitelist for the whitelist restriction.

Every map can be run in the Custom game mode. Possibilities are:

  • Run it through the Workshop menus and choose the Custom game mode, if possible.
  • Set game_type 3 and game_mode 0 in the console before loading the map via map <mapname>. This is equivalent to invoking map <mapname> custom.
Tip.png Tip:  This game mode does not have in icon for the loading screen, but the game searches it, so one can ship his own icon at csgo/materials/panorama/images/icons/ui/custom.svg.

Game Mode Description

This game mode allows map makers to run their map with a bunch of custom settings via a custom config file csgo/maps/cfg/<mapname>.cfg.

It allows to play mode variants like scoutzknivez and aim maps with their unique settings embedded right in the map. So, how many new game modes will Custom support? We don’t know! We can’t wait to see what the community comes up with. We’ve provided some Custom mode examples in the SDK which you can get by clicking here.

Technical details

When a map is loaded in any game mode, all whitelisted ConVars are set to their default value and are then possibly overwritten by subsequent config executions.

If sv_autoexec_mapname_cfg is not 0 while loading a map in the Custom game mode, then the CFG file csgo/maps/cfg/<mapname>.cfg is executed using execwithwhitelist, only affecting whitelisted ConVars listed in csgo/bspconvar_whitelist.txt.

Otherwise, the resulting game rules are very similar to Casual but with the noticeable differences mp_timelimit 5, mp_roundtime 5 and bot_quota_mode normal.

Publishing

When you upload your map to the workshop, your cfg file will automatically get packed into your bsp file, so don't worry about packing it yourself.[confirm]

What else can I ship with my BSP?
Lots of stuff! New textures, new models, new sounds and most importantly (for custom gameplay) you can ship VScript files. If you aren't familiar with VScript files, they are Squirrel language-based scripts that can be run in-game. To learn more about them, see VScript.
How do I pack additional files in my BSP?
This is covered on the Map Publish Tool page along with what files are automatically packed in the BSP on upload.

Execute CFG files using VScript

nType <- ScriptGetGameType()
nMode <- ScriptGetGameMode()

if (nType == 3 && nMode == 0)
{
	SendToConsole("exec " + GetMapName() + " */maps")
}

To achieve what this game mode used to be made for, namely the execution of csgo/maps/cfg/<mapname>.cfg, but without depending on sv_autoexec_mapname_cfg, we need only one short VScript with the concept named at CS:GO Game Mode Commands#Game Mode dependent Events.

  • Create a text file with the content shown on the right. Save it at csgo/scripts/vscripts/ or in a subfolder from there as a .nut file.
  • In Hammer, create a logic_script and add this file to its Entity Scripts.
  • In-game, the script will be executed every time a round starts. If the current game mode is Custom, the script executes the CFG file csgo/maps/cfg/<mapname>.cfg.
Note.png Note:  Incidentally, many other things can be done other than just a CFG execution, see List of CS:GO Script Functions.

Accordingly, both the script and the CFG file must be packed to the BSP file when publishing, see e.g. VIDE.