CS2使用命令与CFG自由设置/切换按键绑定

此链接链接指向的页面为官方开发者文档关于按键绑定的部分:https://developer.valvesoftware.com/wiki/Bind这里可以看到一些按键绑定相关的命令,以及按键的键值此链

事前

请确保自己会:

使用cfg。包括但不限于新建、编辑现有cfg文件,明白如何让游戏启动时自动加载cfg,站内搜索 'cfg使用教程' 等关键词即可开始学习

会使用游戏控制台,站内搜索 'CS2控制台' 'CS2指令' 等关键词即可开始学习。注意,cfg教程中一般都会展示控制台用法;

有一个跑图cfg能一键将练习模式对局时长改为无限或较长时长。站内搜索 'CS2跑图' '跑图cfg' 等关键词即可拿到别人分享的跑图cfg,大部分也都附带使用教程;

会正确的复制粘贴指令或者手打指令。如果这个不会建议去学习电脑基础知识;

如果不会就不要继续往下看,请先去把上述几样学会弄懂

此链接链接指向的页面为官方开发者文档关于按键绑定的部分:

https://developer.valvesoftware.com/wiki/Bind

这里可以看到一些按键绑定相关的命令,以及按键的键值

此链接指向的页面为官方开发者文档,完整控制台命令列表:

https://developer.valvesoftware.com/wiki/Console_Command_List

已知

1.在游戏中可以通过呼出控制台输入指令,从而更改某个按键所绑定的功能(例如开火,切枪,移动)

2.可以使用↓↓↓此↓↓↓指令可在当次游戏中设置一连串自定义指令

    -重启游戏后就会失效,但可以放到cfg文件里让游戏每次启动时自动加载,达到永久生效的效果

    -alias指令在当次游戏中无法取消,只能重启游戏或覆盖(后面会讲)才能让其失效,如果放到了cfg文件里还需要把cfg里的对应行删除。

3.cfg文件可以执行其中的所有指令,几乎没有先后顺序

    - 在CSGO时可以通过多个文件以及使用特定数量的空格让指令按顺序加载,但CS2不可以(鉴于我已经卸载退游很久了,这一点不一定还准确)

4.cfg文件可以使用alias指令绑定到按键上,从而使用按键快速执行cfg内的全部指令

根据以上已知信息,我们在游戏中可以做到一键切换不同的按键配置或单独切换某一个/几个按键所绑定的功能

备份按键设置

首先你需要备份自己当前的按键设置,否则一不小心操作失误,比如将按键重置了,就得重新绑定已经配好的按键设置

  • 打开游戏

  • 打开跑图房(练习房/练习模式)

  • 进入跑图模式

  • 打开控制台

  • 将指令 ‘Key_listboundkeys’ 复制或手打到控制台并按回车发送

你将看到返回了一大堆指令,类似下面这样

你如果看不懂也没关系,你只需要全部复制出来,然后打开一个文本编辑器放进去。编辑器最好是支持多行编辑或支持正则表达式替换/搜索文本的,比如VScode

只保留有类似这种结构的行:

"xxxx" = "xxxxx"

例如

其余的则全部删除,效果如下图

删除多余的行后

然后把每一行改为这种格式

我这里讲一下用正则表达式快速替换的方法(windows默认的记事本程序不支持。你可以不懂什么是正则表达式,仍然可以用这个方法,感兴趣可以自行了解)

或者你也可以使用多行编辑来更改(windows默认的记事本程序不支持。百度:多行编辑)

几乎所有文本编辑器都可以按 ‘Ctrl+H’ 呼出替换文本弹窗,我以VScode为例

按下 'Ctrl+H' 后在右上角会弹出下图所示弹窗:

查找&替换

点击下图所示带星号的按钮,或按 'Alt+R' 来启用正则表达式

启用正则表达式

将此段内容放入 '查找' 一栏

将此段内容放入 '替换' 一栏

点击下图所示按钮或按 'Ctrl+Alt+回车'

替换全部

然后你就得到了下图所示效果:

全部替换之后

接着保存并退出,然后将刚刚编辑这个文件取一个名字,并把后缀修改为.cfg

按键设置就算备份好了

cfg文件长这样:

cfg文件

注意

'A_启动项.cfg' 不是cfg文件,只是我用来存放启动项的

'boot.vcfg' 也不是cfg文件,似乎是游戏自带的,我也不知道是什么东西,没了解过

还有你的文件图标和我的不同是正常的,因为使用的软件可能不同

此分割线内的内容可跳过↓


这里展示一下我的按键cfg:

其中有很多我自定义的指令,可能还有原版但是已经失效的指令,没有参考价值

因为我有几套按键,例如跑图/正常游戏,所以把这个指令放在开头,把按键全部重置

这两个是成对关系的,不是指令,只是我用来给指令分类的,我把cfg文件设置为了使用Batch格式打开,因为用这一对代码可以做到收起代码

收起代码


此分割线内的内容可跳过

键值与指令

键盘键值

我们从控制台提取出来的那些片段中就有键盘键值例如:

这一行里的 '1' 代表键盘上的按键——数字1(非小键盘)

'slot1' 代表主武器(在其他类型的游戏中,则代表物品栏1,例如我的世界)

而将其修改为下方格式后就成为了一条指令,放入cfg文件后,在游戏中加载cfg文件时游戏就会运行这条指令(cfg文件里有多少行符合条件的指令,游戏就会运行多少条指令)

bind - 意为绑定

1 - 即按键

slot1 - 代表主武器(游戏中的某个操作/功能)

用中文来理解就是:绑定按键1为 使用主武器/切换物品栏1

所以游戏收到这条指令后就会将按键1绑定为使用主武器

这就是备份按键的原理,同时也是实现包括但不限于 一键切换按键绑定 等功能的原理

还记得文章开头提到的两个链接吗?

此链接链接指向的页面为官方开发者文档关于按键绑定的部分:

https://developer.valvesoftware.com/wiki/Bind

这里可以看到一些按键绑定相关的命令,以及按键的键值

此链接指向的页面为官方开发者文档,完整控制台命令列表:

https://developer.valvesoftware.com/wiki/Console_Command_List

第一个链接可以看到部分按键的键值,当然如果你觉得看得太费劲也可以在百度上搜索或者直接通过游戏查看

例如我想要知道某个按键的键值,打开游戏设置,找到按键设置,然后找一个自己不常用或者用不上的功能,将其绑定到我们想要明确键值的那个按键上

打开控制台,输入指令清除控制台中所有内容,避免干扰

然后再次输入指令查看按键绑定列表

再从控制台输出的片段中去找,如果觉得这样不好分辨,可以复制出来放到编辑里查看

但是这样有一个问题,就是我们可能并不知道刚才绑定的那个功能的指令是什么

同时我们也不知道按键的键值,这样找起来未免太费力了,有没有更快的办法?

有,将我们备份的cfg文件绑定到一个按键上

这样我们就可以直接将不明确键值的按键绑定到主武器/副武器等有辨识度的功能上(都是 ‘slotx’ )

等到我们明确那个键值之后就可以一键还原绑定的按键了

将cfg绑定到按键上是极其简单的,还记得我提到的 'alias' 指令吗?

可以使用↓↓↓此↓↓↓指令可在当次游戏中设置一连串自定义指令

我们可以在游戏会自动加载的cfg文件里用 'alias' 定义一条指令,然后绑定到一个按键上

例如我有一个名为 'A_GameMod.cfg' 的cfg文件在此目录内

那么我就可以在 'autoexec.cfg' 文件中加上一行这个指令

alias - 定义

backnormal - 自定义的指令名,随便取的名字,只能用英文字母

exec a_gamemod

    -exec 可以理解为加载cfg文件

    -a_gamemod 位于cfg目录内的cfg文件名,不区分大小写,似乎不能存在空格?不知道CS2现在支不支持空格了,你们自己测试一下吧

所以 

可以理解为 义 xxxx 为执行 xxx

而 alias backnormal "exec a_gamemod" 就可以理解为:

定义 'backnormal' 为一条指令,这条指令的作用是加载cfg文件 'A_GameMod.cfg'

于是当我们在控制台输入 'backnormal' 或将其绑定到某个按键上,并在游戏中按下这个按键,游戏就会加载对应的cfg

用alias定义的指令可以包含多条游戏指令,指令间用英文的分号隔开,而且还可以嵌套,例如:

(对了,还有一件事忘记说,所有的写在cfg里的指令,双引号和分号好像不是必须的,有空格就行,但是为了方便管理我就这样写了,这也是我的书写习惯。我建议大家也要养成良好的书写习惯,用固定的格式去写自己的指令,这样无论是自己找、看、查、修、改,或者分享给别人都会比较方便)

这两段都包含了两条及以上的游戏原生指令

而下面这个则是把另一个alias指令定义的指令再次定义为另一个新的指令

这样就可以让我们运行超长指令,比如你发现你定义的alias指令不起作用,那么可能就是它太长了(也可能是你写错了),你可以试着缩短成多条,然后再定义一条新的指令将他们全部包含进去

你可能会好奇上面那两段自定义指令为什么有加减号,没错,这又是一个知识点,大家熟知的一键扔包,跳投,前跳投等等指令都和这个加减号有密切关系

通俗的解释就是:

+ 代表按下按键的那一瞬间执行

- 代表松开按键的那一瞬间执行

绑定按键时只需要绑定有加号的那条就可以了,例如:

好了,点到为止,毕竟我们的主题是按键绑定,回归正题

cfg文件夹

你们可以看到我的cfg文件里还有文件夹,而且并不是游戏自带的,而是我创建的

这其实是为了方便管理过多的cfg文件,否则全放到一个文件夹里,眼睛都快找瞎了

那么放到文件里的cfg该怎么让游戏读取呢?很简单,只要把目录加上去就行了

例如上图中的 'Z_CFG_RunChart' 文件夹内有一个名为 'A_RunChart.cfg' 的cfg文件

我在alias文件中是这样定义的,相信看到这里的B友应该一看就能懂

res1是另一条指令,和cfg没关系哈


我的alias指令是全部放到一个cfg里的,就是上图的 ‘AliasList.cfg’,我极力推荐你们这样做,相信我,只要你玩指令了,包括alias在内,所有指令只会越来越多,我从csgo玩到cs2,现在算上空行和其他,总共399行alias,文件大小18kb,你看我分门别类的这么多个cfg文件就能想象得到了

结语

OK我感觉到这里就差不多了,算是授人以渔吧,没有直接讲太多按键绑定的实际案例,但运用方式已经全部倾囊相授了

接下来,等你们读通读懂这篇文章,能举一反三之后,那么你的指令运用知识完全足够日常游戏使用了

(2024.7.17第一版未删改;剩余3次修改机会)