Skip to content

cl_neo_spectator_marker and similar cvars represented as parameter sets cannot be bound to a key #1967

@Sakhanist

Description

@Sakhanist

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

  1. Open demo / Create server, add bots: 1 for Jinrai, 1 for NSF, join spectator team;
  2. Open Options > HUD > Scroll to bottom > IFF Markers > Spectator > Show squad marker = Enabled (OPTIONALLY BACKUP YOUR MARKER SETTINGS FOR SPECTATOR MODE)
  3. Open dev console;
  4. Input bind "[" "cl_neo_spectator_marker "0;0;0;0;0.50;0;1;1;0;32;"";
  5. Press Enter;
  6. 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

  • Windows
  • Linux

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

Metadata

Metadata

Assignees

Labels

Bug ReportBug Reports made through the "Report Issue" interface in GitHub.EnhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions