绑定

From DDraceNetwork
Revision as of 13:55, 28 July 2023 by Darkh (talk | contribs)

DNet客户端拥有一系列的指令与设置(或者参照[官方网站])能够与您键盘和鼠标的几乎所有按键绑定,对于常用指令来说使用绑定好的按键可以避免每次使用该指令时麻烦的键入。当然这些指令也可以直接在控制台(默认使用F1按键打开)启用。

语法

单指令绑定

bind [按键] [设置/指令] [可选参数]

上面一条是单指令绑定的基本语法。

  • [按键]:键盘和鼠标上您所选的某个按键。
  • [设置/指令]:您可以在官方网站(客户端设置客户端指令)或站内页面(设置和指令)查阅所有可用设置和指令。
  • [参数]:您想要调整的设置或指令的变量或者可选参数。(仅有某些设置需要使用参数,指令和某些设置无需参数)

倘若您不知道某个按键的名称,可以在这个页面中查找,亦或者在游戏设置 > 控制中随意找一格按下你想要的按键,在更改按键功能的同时便会显示按键名称,之后记得将它改回去,否则会影响原有的按键功能。您也可以将修饰键ctrl⇧ Shiftalt和GUI键(即Windows的⊞ Win、Mac的⌘ Command、Linux的Super)一起绑定使用,使用ctrl时语法如下:

bind ctrl+[按键] [设置/指令] [参数]

注意:修饰键作为绑定的唯一按键而不是在组合键中使用时,可能需要添加 left(左)和 right(右)的首字母来区分左右两侧的不同按键。例如左⇧ Shift的绑定如下:

bind lshift [设置/指令] [参数]

多指令绑定

您可以使用分号将多条设置与指令写成长句绑定到单一按键上,并通过特定的引用方式(如双引号")将它们嵌套,理论上这一长句没有长度限制,但是实际上客户端一次只能接受255个字符:

bind [按键] "[设置/指令] [参数];[设置/指令] [参数]"

注意在两个双引号"之间的部分当作一个整体,实际上上面例子中按键之后的部分可以看作是单指令绑定中的设置/命令而没有输入可选参数,使用双引号的另一个作用是方便断句,分号前后的部分不会因为分号的存在而被当作两个不同句子。当您按下此按键后,所有绑定到这个按键的设置与指令会在同一时间被激活,而不是依次激活。如果您想它们依次激活,您可以将它们分别绑定到不同的按键上,依次按下以激活,或者利用配置文件的嵌套让您多次按下同一按键时顺序激活不同的设置与指令。

嵌套绑定

您可以使用一对双引号将一条绑定嵌套在另一绑定中,但是由于英文的双引号没有正反的区分,同时存在多对双引号的句子可能产生歧义,为此需要使用转义字符反斜杠 \ 区分不成对的双引号,下面这个例子展示了两层嵌套的情况:

bind [按键] "bind [按键] \"[设置/指令] [参数]; bind [按键] \\\"[设置/指令] [参数] \\\"\""

可以看到在第二层嵌套时使用的反斜杠是三个而不是两个,这是因为根据语法规范,被双引号引用的句子里的特殊字符需要进行转义,也就是说特殊字符比如双引号本身需要在其前面添加一个反斜杠,但是反斜杠也是特殊字符,在上述例子中,连续三个斜杠的奇数(单数)位置的斜杠是用来转义的,第一个斜杠对第二个斜杠进行了转义,第三个斜杠对双引号进行了转义,于是第二个反斜杠和双引号从带有特定功能的特殊字符转变为普通的没有功能的字符,这两个字符变成了和第一层嵌套一样的结构。客户端的字符长度限制为255,而每一层嵌套的反斜杠数量为上一层的反斜杠数量乘二加一,其原因会在后文说明。倘若您使用六层嵌套,反斜杠数量将会是240个(1*2 + 3*2 + 7*2 + 15*2 + 31*2 + 63*2),这样您只剩15个字符可键入,因此只能接受最多五层嵌套。每一层的反斜杠数量如下:

第一层:1                  \               "
第二层:3          \       \       \       "
第三层:7      \   \   \   \   \   \   \   "
第四层:15   \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "
第五层:31  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"

可以看到将每一层奇数(单数)位置的反斜杠去掉后得到的正好就是上一层的反斜杠,这正是上文提到的每层反斜杠为2n+1的原因,n是上一层的反斜杠数量,实际上2n+1 = n + n + 1,其中n个是上一层应该有的反斜杠,另外n个是转义反斜杠使用的反斜杠,剩下 1 个是转义双引号使用的反斜杠。如果您仍感到疑惑,可看下方的拆解:

bind [按键] 
 "bind [按键] 
  \"[设置/指令] [参数]; bind [按键] 
   \\\"[设置/指令] [参数]; bind [按键] 
    \\\\\\\"[设置/指令] [参数]
    \\\\\\\"
   \\\"
  \"
 "

注意:你无法通过以上代码使一个cfg文件运行。这个例子只是为了清晰的展示出嵌套的用法。

实用设置与指令

切换键

切换(Toggle)指令可以让您使用单个按键切换设置/指令的可选参数的两个值。客户端中有两种切换键的用法:

  • toggle:在按下按键时在两个参数值之间切换一次。
  • +toggle:在按住按键时启用第一个参数值,松开按键时启用第二个参数值。
bind [按键] toggle [设置] [参数1] [参数2]
bind [按键] +toggle [设置] [参数1] [参数2]

发言

发言(Say)是一个重要的绑定。这个指令不仅可以帮您在聊天栏中快速发言,例如快捷发送问候语,还可以使用那些聊天栏指令,例如加入组队的 /team。实际上在下面的用法示例中,say后面的内容和直接在聊天栏中键入的效果完全一致:

bind [按键] say /[聊天框指令]
bind [按键] say [聊天信息]

颜色

下面是一些可以设置或者查看颜色的客户端指令的例子:

  • player_color_body
  • player_color_feet
  • cl_message_client_color

以上为部分例子,分别代表了玩家的皮肤身体颜色、脚颜色、客户端信息颜色。

想获取您需要的色值,可先在设定内调好,再通过F1控制台查询。例如在 设置 > Tee 里将本体身体颜色调成绿色后,可以在控制台内直接输入与其对应的参数名player_color_body ,客户端将返回这个参数的值,通常是Value:后的一串数字。

色值

记住这个色值后使用以下绑定可以快速设置颜色:
bind [按键] player_color_body 5635840

当然色值可以使用十六进制的RGB值来代替,使用时需要在数值前方添加符号$,具体方法如下:

bind [按键] player_color_body $00FF00

在色值一项,也可以直接使用某些颜色名:红色red黄色yellow绿色green青色cyan蓝色blue品红色magenta白色white灰色gray黑色 black

表情

表情(Emote)指令可以让您绕过表情选择器直接发出表情。

指令与参数 表情解释 英语原文
emote 0 哀哉 oop
emote 1 感叹 exclamation
emote 2 爱心 hearts
emote 3 汗滴 drop
emote 4 缄默 dotdot
emote 5 闻歌 music
emote 6 抱歉 sorry
emote 7 懵鬼 ghost
emote 8 爆筋 sushi
emote 9 炸毛 splattee
emote 10 魔鬼 deviltee
emote 11 恶言 zomg
emote 12 困觉 zzz
emote 13 惊疑 wtf
emote 14 笑眼 eyes
emote 15 问号 question

假如您想发出笑眼表情时,您要输入:

bind [按键] emote 14

其它

如果您想知道某个按键的绑定情况,输入:
binds [按键]

当按键为空时,则会显示所有按键的绑定。

如果您想取消某个按键的绑定,输入:

unbind [按键]

取消所有按键的绑定则输入:

unbindall

配置文件

语法

对于更复杂的绑定,建议您创建并使用配置文件,然后通过绑定启用配置文件来实现复杂的功能。

settings.cfg

[设置/指令] [参数]
[设置/指令] [参数]
[设置/指令] [参数]; [设置/指令] [参数]
[设置/指令] [参数]; [设置/指令] [参数]
……
bind [按键] [设置/指令] [参数]
bind [按键] exec [文件名.cfg]
……

如上所示,配置文件可以自行重命名,绑定时也要输入对应的文件名。在配置文件 settings.cfg 里,多条设置/指令可以以分号或分行分隔开,但是为了避免嵌套相关的歧义更建议进行分行。您可将您所要使用的设置/指令/绑定都写在同一个配置文件里,然后将其绑定在按键上,这样这个按键将会同时执行配置文件里面的所有内容:

bind [按键] [settings.cfg]

备注:后缀名.cfg可以任意更改,只要文件中的内容恰当便可正常使用,只不过这一后缀看起来更规范。

路径与执行指令

您需要将配置文件放在配置目录中才能正常使用,有关于配置目录的路径,详见:《DDNet》配置文件,配置目录在哪?

将配置文件放在正确的路径后,您可以在F1控制台使用exec指令直接执行它,或者绑定后按下选取的按键来执行它:

bind [按键] exec [配置文件.cfg]

如果配置文件存放在配置目录下的子文件夹中,您需要补充文件夹路径:

bind [按键] exec [文件夹/文件夹/配置文件.cfg]

切换键进阶

不依靠切换键(Toggle)指令也可以使用某个按键切换一些参数,比如利用两个配置文件相互执行来实现这一功能,您需要创建两个配置文件:

file1.cfg

[设置/指令] [参数]
[设置/指令] [参数]
[设置/指令] [参数]
……
bind [按键] exec file2.cfg
……

file2.cfg

[设置/指令] [参数]
[设置/指令] [参数]
[设置/指令] [参数]
……
bind [按键] exec file1.cfg
……

如上所示在两个配置文件 file1 file2里都包含了一个绑定选取一个按键执行对方,两文件选定的按键一般相同(事实上不相同也可以正常执行,只不过需要分别使用对应的按键,而且不符合本节切换的意思)。将其中一个配置文件绑定到选定的按键中:

bind [按键] exec file1.cfg

这样您第一次按下该按键将会执行 file1.cfg ,而 file1.cfg 内的绑定将该按键换绑到了 file2.cfg ;在这之后每按一次按键,都会执行配置文件的设置/指令并将按键换绑为另一个配置文件,以此达成循环切换。您还可以在此循环中加入多个配置文件,注意这些配置文件内的换绑命令需要形成闭环。

自定义

回显

回显(Echo)指令可以返回一些自定义的信息,比如自己设置的提示,让您明确您执行了配置文件。

[设置/指令] [参数]
[设置/指令] [参数]

echo 设置,启用!

bind [按键] exec 配置文件1.cfg

这样当您按下[按键],而配置文件执行到回显(echo)那一行时,聊天框内会提示“设置,启用!”。

您还可以加上颜色:

[设置/指令] [参数]
[设置/指令] [参数]

cl_message_client_color red
echo 设置,关闭!

bind [按键] exec 配置文件1.cfg

这样当您按下[按键]时,聊天框内会提示“设置,关闭!”。将回显消息定为不同的颜色,可方便您辨识所执行的配置文件。

注释

在配置文件里,您可使用注释来说明或提示配置文件的功能,或者仅仅是无聊时在里面写个日记,这些注释内容只能在文件中查看而不会在游戏中执行,通常可以使用#号表示这一行后面的文字为注释:

 # 以下几行为设置/指令
[设置/指令] [参数]
[设置/指令] [参数]

# 下一行表示将按键绑定为执行配置文件1 
bind [按键] exec 配置文件1.cfg

示例

钩索辅助线常开

cl_show_hook_coll_own指令能让您不按下+showhookcoll绑定(默认为S键)显示辅助线。当您将其参数值设为2时,辅助线会一直对自己显示(其他玩家不会看见)。下面是实例,echo后的内容可以自行修改:

hook_line_on.cfg

cl_show_hook_coll_own 2

cl_message_client_color green
echo Hook Line ON

bind x exec hook_line_off.cfg

hook_line_off.cfg

cl_show_hook_coll_own 1

cl_message_client_color red
echo Hook Line OFF

bind x exec hook_line_on.cfg

将这两个配置文件放在配置目录里,并在F1控制台输入:

bind x exec hook_line_on.cfg

显示所有玩家钩索辅助线

cl_show_hook_coll_other指令能让您看到所有玩家的辅助线。您可以直接将其添加到默认绑定中:

bind s "+showhookcoll; +toggle cl_show_hook_coll_other 2 1"

深度冻结飞行

深度冻结飞行(英语:Deep Fly)绑定可以让您的分身朝您 锤击/开火。如果您的分身处于深度冻结状态,您使用此绑定锤击它时,它们也会锤击您。利用这一绑定,在练习后您可与在深度冻结状态下的分身飞行(注意某些地图会禁用深度冻结状态下锤击/开火)。即使分身没有被深度冻结,您也可以用此绑定取代默认的分身自动锤与普通的锤击飞行,手动锤击能让您更好的控制分身的锤击间隔。


注意:如果地图作者将地图设置为 sv_deepfly 0 ,您将无法与深度冻结的tee一起飞行,这可能是因为该技巧与地图作者的想法冲突,玩家游玩时需要尊重作者的想法。 题外话:深度冻结飞行的绑定对冻结和解冻状态下的tee都有效。

cl_dummy_hammer 1是一般在设置里的分身自动锤绑定。使用+toggle指令就能达到在按住按键时,分身才自动锤击的效果,您也可以快速轻敲绑定的按键,每次按下按键锤击第一下后就松手,从效果上就好像按一下按键分身就锤击 / 开火一下。例如:

bind w +toggle cl_dummy_hammer 1 0

将这一绑定和开火按键绑在一起就可以做到本体锤击分身解冻瞬间分身也回击,利用分身的锤击可以进行飞行。利用配置文件的更复杂的绑定如下:

使用两个配置文件

deepfly_on.cfg

bind mouse1 "+fire; +toggle cl_dummy_hammer 1 0"

cl_message_client_color green
echo Deep Fly ON

bind x exec deepfly_off.cfg

deepfly_off.cfg

bind mouse1 +fire
cl_dummy_hammer 0

cl_message_client_color red
echo Deep Fly OFF

bind x exec deepfly_on.cfg

将这两个配置文件放在配置路径里,并在F1控制台输入:

bind x exec deepfly_on.cfg

使用单个配置文件

例如您可以将以上两个配置文件整合成一个文件: deepfly.cfg

 bind x "bind mouse1 \"+fire; +toggle cl_dummy_hammer 1 0\";cl_message_client_color green; echo Deep Fly ON; bind x \"bind mouse1 +fire; cl_dummy_hammer 0; cl_message_client_color red; echo Deep Fly OFF; exec deepfly.cfg\""

在这个例子中也可以看到,可以有两组并列的一层嵌套(\"),而不是二层嵌套。 这个文件执行的指令有:为x键绑定功能,具体功能为按下x键配置鼠标左键和x键的换绑,并回显Deep Fly ON信息,语句到此处包含了使用双配置文件时的文件1;之后的部分则是文件2。并通过x键嵌套的给自身换绑,再度循环回到deepfly.cfg。 将这个配置文件放在配置目录里,并在F1控制台输入:

bind x exec deepfly.cfg

注意1:配置文件中假定您的+fire(开火键)绑定在mouse1 鼠标左键上。

注意2:如果您使用单个配置文件,在您按住开火键的同时按下按键(上例中为x)关闭绑定的话,会出现所谓卡键的情况,因为您的cl_dummy_hammer指令参数切换为1而还未切回来就被意外的换绑中断。这种卡键的问题可以手动将cl_dummy_hammer调整为0恢复,注意上文中两个配置文件的情形下,deepfly_off.cfg文件中已经包含这一行。

武器切换

cl_dummy_restore_weapon 1

默认设置如上,因此当您的分身未拿锤子而您开启分身自动锤(以及由此引申的深度冻结飞行绑定)时分身会使用当前的武器开火后马上切换成锤子,当分身自动锤关闭时它会换回之前的武器,因此通过反复开关分身自动锤,可以让分身精准地用激光多次射击自己,于是就出现如图片的情况。 您可以将参数更改为0,让分身武器自动切换为锤子后一直拿着,直到你亲自控制分身,它才切换回先前的武器:

cl_dummy_restore_weapon 0

您也可以自行运用切换或者配置文件将下面指令绑定至切换武器的按键上。

bind [按键] "+weapon1; cl_dummy_restore_weapon 0"
bind [按键] "+weapon5; cl_dummy_restore_weapon 1"

注意:谨记不要使用+nextweapon+prevweapon(默认绑定为鼠标滚轮向上和鼠标滚轮向下中)切换武器,因为除了鼠标滚轮(不包括无极滚轮)外的按键对于输入的判定更加灵敏,按下按键就会高频率切换武器,出现武器乱切换的情况。

八角定位

这个绑定能保证按住x键时鼠标只能指向八个方向(每45度):

bind x "+toggle cl_mouse_max_distance 2 400; +toggle inp_mousesens 1 200; +showhookcoll"

如果不想改变鼠标的最大活动区域和灵敏度的个人习惯,您需要在F1控制台输入cl_mouse_max_distance查询自己的第一个参数,之后输入inp_mousesens获取第二个参数,将400200分别依次换成自己的两个参数:

bind x "+toggle cl_mouse_max_distance 2 [您的参数]; +toggle inp_mousesens 1 [您的参数]; +showhookcoll"

变色Tee

要达到在游玩过程中变色的效果,你可以将player_color_body指令绑定到移动或操作键上,例如:

bind a "+left; player_color_body red"

此外您可使用配置文件,以便于调整。以下为例子: rainbow_tee.cfg

bind a "+left; player_color_body red"
bind d "+right; player_color_body yellow"
bind space "+jump; player_color_body green"
bind mouse1 "+fire; player_color_body blue"
bind mouse2 "+hook; player_color_body cyan"

将这配置文件放在配置目录里,并在F1控制台输入:

exec rainbow_tee.cfg

您还可使用多个配置文件,方便开关。以下为一组例子: rainbow_tee_on.cfg

bind a "+left; player_color_body red"
bind d "+right; player_color_body yellow"
bind space "+jump; player_color_body green"
bind mouse1 "+fire; player_color_body blue"
bind mouse2 "+hook; player_color_body cyan"

bind x exec rainbow_tee_off.cfg

rainbow_tee_off.cfg

bind a +left
bind d +right
bind space +jump
bind mouse1 +fire
bind mouse2 +hook

bind x exec rainbow_tee_on.cfg

将这两个配置文件放在恰当的配置路径,并在F1控制台输入:

bind x exec rainbow_tee_on.cfg

您也可以加入player_color_feet指令达到更有趣的变色效果。更多颜色相关的指令参见颜色

备注:配置文件中假定了您的的键位皆为游戏默认按键。另一方面,改变颜色有延迟

另见