Build Info
2026-03-22_c49384432cef6b50aeead1c25acfe06b89323d9b
Description
Cvar values represented as a parameter set delimited by semicolons(;) cannot be bound to a key.
Source console uses ; as a command separator; in order to use it in a command to delimit values, one has to escape them with double quotes on both ends of the set.
In order to switch between value sets quick enough (i.e. during spectating), one should have an ability to bind the specific set of values.
When using bind, it is necessary to use double quotes when using semicolon in [command body]
bind "key" "[command]"
If semicolons are used inside the [command] body, they're interpreted as console command separators. A user cannot change this behavior by using double quotes, nor by using any other symbol inside the [command] body (unless it's implemented but undocumented by Valve)
To Reproduce
- Open demo / Create server, add bots: 1 for Jinrai, 1 for NSF, join spectator team;
- Open Options > HUD > Scroll to bottom > IFF Markers > Spectator > Show squad marker = Enabled (OPTIONALLY BACKUP YOUR MARKER SETTINGS FOR SPECTATOR MODE)
- Open dev console;
- Input bind "[" "cl_neo_spectator_marker "0;0;0;0;0.50;0;1;1;0;32;"";
- Press Enter;
- Press [ (or any bound key to the command above)
Expected behavior
The fourth position in a set represents the team marks (a 90 degree cross formed by 5 rectangles, green or blue depending on the teams if unmodded)
By having it set as 0, it should hide the mentioned marks.
Actual behavior
The team marks are not hidden in spectator mode after pressing the bound key for the command in step 4
Operating System
Version/Distro
Platform-independent
Machine's CPU
No response
Machine's GPU
No response
GPU's driver
No response
Build's compiler
No response
Additional context and Screenshots
There is an old workaround to it, usually applied to Sourcemod command syntax, but:
spec_hud_cfg.txt
vision_spec.txt
vision_spec_raw.txt
spec_hud_cfg.cfg
// default cl_neo_spectator_marker "0;0;0;1;0.50;1;1;1;1;32;"
alias raw "exec vision_spec_raw.cfg";
alias spec "exec vision_spec.cfg";
bind "KP_UPARROW" "raw";
bind "KP_DOWNARROW" "spec";
vision_spec_raw.cfg
//raw vision, no marks
cl_neo_spectator_marker "0;0;0;0;0.50;0;0;0;0;32;"
vision_spec.cfg
// marker, hp number, name
cl_neo_spectator_marker "0;0;0;1;0.50;0;1;1;0;32;"
It would be great if you split every individual option into cvars for better control over settings by macro/bind without having resorting to hacks like the aforementioned
Build Info
2026-03-22_c49384432cef6b50aeead1c25acfe06b89323d9b
Description
Cvar values represented as a parameter set delimited by semicolons(;) cannot be bound to a key.
Source console uses ; as a command separator; in order to use it in a command to delimit values, one has to escape them with double quotes on both ends of the set.
In order to switch between value sets quick enough (i.e. during spectating), one should have an ability to bind the specific set of values.
When using bind, it is necessary to use double quotes when using semicolon in [command body]
bind "key" "[command]"
If semicolons are used inside the [command] body, they're interpreted as console command separators. A user cannot change this behavior by using double quotes, nor by using any other symbol inside the [command] body (unless it's implemented but undocumented by Valve)
To Reproduce
Expected behavior
The fourth position in a set represents the team marks (a 90 degree cross formed by 5 rectangles, green or blue depending on the teams if unmodded)
By having it set as 0, it should hide the mentioned marks.
Actual behavior
The team marks are not hidden in spectator mode after pressing the bound key for the command in step 4
Operating System
Version/Distro
Platform-independent
Machine's CPU
No response
Machine's GPU
No response
GPU's driver
No response
Build's compiler
No response
Additional context and Screenshots
There is an old workaround to it, usually applied to Sourcemod command syntax, but:
spec_hud_cfg.txt
vision_spec.txt
vision_spec_raw.txt
spec_hud_cfg.cfg
// default cl_neo_spectator_marker "0;0;0;1;0.50;1;1;1;1;32;"
alias raw "exec vision_spec_raw.cfg";
alias spec "exec vision_spec.cfg";
bind "KP_UPARROW" "raw";
bind "KP_DOWNARROW" "spec";
vision_spec_raw.cfg
//raw vision, no marks
cl_neo_spectator_marker "0;0;0;0;0.50;0;0;0;0;32;"
vision_spec.cfg
// marker, hp number, name
cl_neo_spectator_marker "0;0;0;1;0.50;0;1;1;0;32;"
It would be great if you split every individual option into cvars for better control over settings by macro/bind without having resorting to hacks like the aforementioned