6 控制台变量 - eLecCap1taL/CS2-CFG-Wiki GitHub Wiki

你是否见过彩虹 HUD cfg?🌈

HUD 的颜色由控制台变量控制。在这一章,你会了解关于控制台变量的知识

控制台变量,即 Console variables,又称 convar 或 cvar。下文我们都使用 "cvar" 这个称呼。

cvar 可以存储值,这个值可以是整数、小数、或者文本。游戏有可能会根据 cvar 值的改变有不同的变化。

内置 cvar

CS2 内置了相当多的 cvar。最常见的应该是 sv_cheats,他是服务器端的一个控制台变量。当它为 1 的时候就启用了作弊,为 0 时关闭作弊。当作弊开启时你就可以通过 noclip 来飞天穿墙,是跑图的常用功能。

相信你一定见过更改 sv_cheats 这个 cvar 的指令,是的,就是 sv_cheats 1。修改 cvar 的指令就是 cvar名字 值

常见的游戏自带 cvar 还有 cl_showpos,把它设为 1 可以在屏幕上显示角色的坐标、视角角度等信息。

更多常用的游戏内置 cvar:

  • sensitivity:鼠标灵敏度
  • m_yaw:横向鼠标位移比例
  • m_pitch:纵向鼠标位移比例
  • cl_showfps:显示帧数
  • cl_hud_color:hud 颜色
  • fps_max:帧数上限(不能低于 64)

更多控制台变量可以在 官方控制台指令和变量列表 查看。

游戏自带的 cvar 大多都限制了值的类型和范围。

查看 cvar 值的指令就是 cvar 名字本身。使用 cvar名字 这个指令会输出如下内容:

cvar名字 = 它的值

自定义 cvar

你可以通过 setinfo 指令来创建一个控制台变量,其值的类型是任意的。下面的指令创建了一个名为 hello 的 cvar,值为 114514.1919810

setinfo hello 114514.1919810

不能覆盖掉游戏自带的 cvar。但可以覆盖 alias

alias A "一些指令……"
setinfo A 0
//成功,自定义 cvar 覆盖掉了 alias
setinfo A 0
alias A "一些指令……"
//失败,自定义 cvar 已经是一个关键字了,无法定义 alias

自定义 cvar 的修改方式和查看方式与内置 cvar 无异:

setinfo hello 114514.1919810

hello
//输出:hello = 114514.1919810

hello 可以是一段文本

hello
//输出:hello = 可以是一段文本

hello "如果文本中包括分号;需要用双引号引起来"

hello
//输出:hello = 如果文本中包括分号;需要用双引号引起来

修改 cvar

cvar名字 值

最直接的方法,内置和自定义 cvar 都适用

incrementvar cvar名字 最小值 最大值 加值

只适用于游戏自带的控制台变量

作用是给一个 cvar 加上一个值

如果加上之后,高于最大值,cvar 变为最小值

如果加上之后,低于最小值,cvar 变为最大值

注意,cvar 的值仍然受它自身预设好的限制影响。例如,灵敏度 sensitivity 不能低于 0.000100

sensitivity 1.000000
//更改鼠标灵敏度为 1.000000
//也可以写 sensitivity 1,都是一样的

incrementvar sensitivity 0 8 1.0
//给灵敏度 +1

sensitivity
//输出:sensitivity = 2.000000

incrementvar sensitivity 0 8 -0.5
//给灵敏度 -0.5

sensitivity
//输出:sensitivity = 1.500000

incrementvar sensitivity 1 3 4.0
//给灵敏度 +4,但是超过了指定的最大值 3,变为给定的最小值 1

sensitivity
//输出:sensitivity = 1.000000

incrementvar sensitivity 0.9 5 -0.5
//给灵敏度 -0.5,但是低于指定的最小值 0.9,变为给定的最大值 5

sensitivity
//输出:sensitivity = 1.000000

multvar cvar名字 最小值 最大值 乘值

只适用于游戏自带的控制台变量

作用是给一个 cvar 乘上一个值

如果加上之后,高于最大值,cvar 变为最大值

如果加上之后,低于最小值,cvar 变为最小值

注意到此处与 incrementvar 的不同

注意,cvar 的值仍然受它自身预设好的限制影响。例如,灵敏度 sensitivity 不能低于 0.000100

sensitivity 1.000000
//更改鼠标灵敏度为 1.000000
//也可以写 sensitivity 1,都是一样的

multvar sensitivity 0 8 2
//给灵敏度 ×2

sensitivity
//输出:sensitivity = 2.000000

multvar sensitivity 0 8 0.75
//给灵敏度 ×0.75

sensitivity
//输出:sensitivity = 1.500000

multvar sensitivity 1 3 4
//给灵敏度 ×4,但是超过了指定的最大值 3,变为给定的最大值 3

sensitivity
//输出:sensitivity = 3.000000

multvar sensitivity 2 5 0.5
//给灵敏度 ×0.5,但是低于指定的最小值 2,变为给定的最小值 2

sensitivity
//输出:sensitivity = 2.000000

此处没有演示乘负数,也是可以的。

toggle cvar名字 值1 值2 值3....

这是一个相当强大的指令,内置 cvar 和自定义 cvar 均可用

后面可以跟无限个(事实上一行指令的长度存在一个上限,大约300)值,可以是任何类型(整数,小数,文本)

它的工作方式如下:

  • 若这个 cvar 原来的值,不是后面的任何一个,将 cvar 更改为第一个值
  • 否则,从左往右,找到第一个和 cvar 原来的值相等的值,把 cvar 更改为下一个值。如果找到的是最后一个,则更改为第一个值
//支持自定义 cvar
setinfo a_cvar 0

toggle a_cvar 0 也支持文本 123.123

a_cvar
//输出:a_cvar = 也支持文本

toggle a_cvar 1 2 3 4 5 6 7 //可以写任意多的值
//没有一样的值,变为第一个

a_cvar
//输出 a_cvar = 1

toggle a_cvar 4 3 2 1 
//最后一个会循环到第一个

a_cvar
//输出 a_cvar = 4

toggle a_cvar 2 4 3 4 1 
//从左往右找第一个 4,因此下一个值是 3 而不是 1

a_cvar
//输出 a_cvar = 3

//利用每次找的是第一个的特性,可以创建一个循环
toggle a_cvar 3 2 1 1
//a_cvar = 2

toggle a_cvar 3 2 1 1 
//a_cvar = 1

toggle a_cvar 3 2 1 1 
//a_cvar = 1

toggle a_cvar 3 2 1 1 
//a_cvar = 1
……

这有什么用啊哥们,说了这么多 😡😡😡

对于初级应用,这些自定义手段确实无关紧要,但在后面的章节,尤其是更高级的应用中,你会开始领略到这些指令的重要性。