脚本

From Team Fortress Wiki
< Scripting
Revision as of 23:07, 9 March 2017 by Anyar (talk | contribs) (目前的脚本: Fixed typo (PAD instead of PDA).)
Jump to: navigation, search

脚本,是使用配置文件来把控制台的指令码绑定到键位或把数个指令绑定成一个新的别名

脚本所涵盖的范围可以从绑定键位到使用别名来自动重复指令。甚至可以使用脚本来创建千变万化的行为。

脚本的文件

军团要塞2会自动读取以下几个游戏文件来实行脚本:

  • config.cfg - 这是默认的配置文件,当你在选项里面做出更改时,便会将设定储存在此文件。编辑此文件没有风险,但在启动游戏时会影响到修改过的按键配置。每次启动游戏时会在其他设置读取之前优先读取。
    • config_default.cfg - 这份文件包含了一组基本的按键配置,如果config.cfg不存在时就会被执行作为备份。
  • autoexec.cfg - 这是储存玩家设定的配置文件,你可以把脚本或指令储存在此文件。当config.cfg和autoexec.cfg都有相同的指令时,游戏会以autoexec.cfg为准
  • <class>.cfg - 每个兵种都有一个配置文件,你可以将绑定键位的指令储存在这些文件。当你选择了相应的兵种后,相应文件的指令便会执行。需要注意的是,若在文件中使用了开关类型的指令时作用会被保留,直到执行反向指令为止。

编辑脚本文件

若在 Windows 系统,脚本文件能在下列文件夹找到:
<Steam Folder>/SteamApps/common/team fortress 2/tf/cfg
若在 Mac 系统,脚本文件能在下列文件夹找到:
~/Library/Application Support/Steam/SteamApps/common/team fortress 2/tf/cfg
若在 Linux 系统,脚本文件能在下列文件夹找到:
~/.local/share/Steam/SteamApps/common/Team\ Fortress\ 2/tf/cfg
Since the SteamPipe update, code can also be placed in .../team fortress 2/tf/custom/yourfoldernamehere/cfg

命令

下面是一个命令列表,它没有使用脚本,它们不直接影响游戏的玩法。 这是一个命令的规则:

  • 无论是绑定或别名,你都要按照以下格式来编写:
命令 <argument1> <argument2>
  • 目前有三种命令可供选择:
  • bind - 用于将指令绑定到键位
  • alias - 可以将多个指令绑定成别名来一次性执行
  • exec - 可以让客户端加载其他配置文件
  • <argument1> 可以是键位的名称或创建别名的名称
  • <argument2> 可以是被绑定的指令或别名的指令
  • 要一次执行多条指令,你必须将所以指令用引号括住,例如:
alias "spraynpray" "+attack; wait 500; -attack"
bind "mouse3" "spraynpray"
  • 按mouse3后,开始执行别名spraynpray,然后别名spraynpray会让你的武器进行攻击,接着等待500帧,最后停止射击。

绑定(bind)

最简单的命令是 bind 指令,能够影响按键执行的动作,该动作可以是个设定、指令或脚本。

bind [KEY] [COMMAND]
可以加上双引号在按键名称或指令的左右。

bind [KEY] "[COMMAND 1]; [COMMAND 2]; [COMMAND 3]"
可以加上双引号在按键名,但一定要用双引号包住多项指令。


绑定有两种形式:
bind "e" "Voicemenu 0 0"
此綁定是當玩家按下 E 鍵後會觸發“Medic!”的語音指令。

bind "w" "+forward"
此绑定是当玩家按住不放 W 键后能够让玩家前进。

切换(Toggle)

这项脚本可以设置两个或两个以上值的指令进行切换。 toggle "sv_cheats" 0 1

绑定切换(Bindtoggle)

功能和 toggle 相同,只是绑定到一个按键上。 bindtoggle o "sv_cheats" 0 1

注意:若无设定数值,toggle 和 bindtoggle 则会默认数值为 0 与 1 。

递增值(Incrementvar)

可以设置一个数值以反复执行增加或减少值。

bind MWHEELUP "incrementvar fov_desired 75 90 1"
bind MWHEELDOWN "incrementvar fov_desired 75 90 -1"

此示例能让玩家向上滚动鼠标滚轮时增加视野,向下滚动则减少。
注: Incrementvar 指令如果让数值超出或变得过小时会重复循环。在此示例中,如果视野超过 90 则会下降到 75 ,反之亦然

别名(Alias)

Alias 可以将多项指令以一个名称代替,成为一个有效用的简写名称。当一系列的指令需要被重复执行时会非常有用。
注: Alias 名称不能包含空格。可以包含下底线、数字或符号。 Alias 会区分大小写。

alias Call_For_Medic "Voicemenu 0 0"
bind "e" "Call_For_Medic"

此脚本是一个简单的绑定,功能是当玩家按下 E 后会触发“Medic!”语音指令。

alias "+Diagonal" "+moveleft; +back"
alias "-Diagonal" "-moveleft; -back"
bind "z" "+Diagonal"

此脚本可以让玩家斜向移动,按下 Z 玩家会往左后方斜着走。

警告:下列写法不会有作用
bind "z" "+moveleft; +back"
虽然按 Z 可以让玩家往左边及后方移动,但游戏引擎不会反转 +back 指令,导致放开 Z 后玩家不会停止向后移动。

执行(Exec)

此指令可以执行其他的文件档。意味着复杂的脚本可以存在其他文件档里,以免弄乱一般的文件。

exec autoexec.cfg
此巨集将会读取 autoexec.cfg 文件内的巨集。

回应(Echo)

此指令会将文字显示到控制台上,对于调试非常有用。

echo Scripting is; echo very useful.
如果将分号(;)加在文字之间则会显示 Scripting isvery useful. 。 或将文字用双引号包住,如下例

echo " Scripting is very useful. "
则会将多余的空格显示出来,因为它包含在双引号内。

注: 双引号是无法显示的符号,因为它的用途会被曲解。

等待(Wait)

此指令可使游戏等待所设定的 FPS 数值后才执行下一个指令。
注: 这项指令对应的实际时间取决于服务器的处理速率。
警告: Wait 指令在部分服务器禁用。这会导致某些脚本失效,并且(在极少数的情况下)让游戏当机。请看 Wait Testing 避免这种情况发生。

echo Why did the chicken cross the road?; wait 66; echo To get to the other side!
This script will wait 66 frames (1 second on most servers) before printing the punchline.

军团要塞2的键盘名称

鼠标移上按键即可看到按键名称。

ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12

` 1 2 3 4 5 6 7 8 9 0 - = Delete

Tab ⇆ Q W E R T Y U I O P [ ] \

⇪ Caps A S D F G H J K L ; '   ↵  

⇧ Shift Z X C V B N M , . / ⇧ Shift

Ctrl Alt       Spacebar       ≣ Menu Ctrl

PrtScn ScrLk Pause

Insert Home PgUp

Delete End PgDn


       

   

Num / * -
7 8 9 +
4 5 6
1 2 3
    0     .
鼠标按键 按键名称
滚轮上滑 MWHEELUP
滚轮下滑 MWHEELDOWN
左键 MOUSE1
右键 MOUSE2
点击滚轮 MOUSE3
左侧键(下一页) MOUSE4
右侧键(上一页) MOUSE5

使用的指令

主条目: TF2 指令及值数列表(英)

Spy快速伪装

这些脚本可以让玩家按下一个键后即伪装而不用开启伪装菜单

伪装命令使用以下命令:

disguise <class_number> <team_number>

<class_number>是代表兵种的编号;<team_number>是代表团队的编号

伪装编号参数

  • 1 <class_number>
    1: 侦察兵
    2: 狙击手
    3: 士兵
    4: 爆破手
    5: 医生
    6: 重机枪手
    7: 火焰兵
    8: 间谍
    9: 工程师
  • 2 <team_number>
    1: 蓝队
    2: 红队
    -1: 敌队
    -2: 同队

Engineer快速建造

类似Spy的快速伪装,这可以让Engineer不必开启建造菜单即能建造。

建筑指令使用以下命令

build <building_number>
destroy <building number>

<building_number>是建筑的编号

建筑编号参数

  • Number: Building/Destroying
    0: 补给器
    1: 传送装置入口
    2: 步哨枪/迷你步哨枪
    3: 传送装置出口

以下是快速建造脚本的例子:

 alias sentry "destroy 2; build 2"
alias Dispenser "destroy 0; build 0"
alias entrance "destroy 1; build 1"
alias exit "destroy 3; build 3"
bind f1 sentry
bind f2 dispenser
bind f3 entrance
bind f4 exit

这脚本会在建造前先破坏要建造的建筑,使玩家建造前无需开启破坏菜单。

语音指令

语音指令可以让你在游戏内发出特定的语音。

语音指令使用以下语法

voicemenu <menu_number> <phrase_number>

<menu_number>是编号1到3的语音菜单编号,<phrase_number>则是语音菜单1到7的语音编号

语音相关编号

  • 0 <phrase_number>
    0: 医生!
    1: 谢谢!
    2: 冲!冲!冲
    3: 前进!
    4: 向左
    5: 向右
    6: 好的
    7: 不行
  • 1 <phrase_number>
    0: 敌人来袭
    1: 当心间谍!
    2: 前面有步哨!
    3: 这里需要传送装置
    4: 这里需要补给器
    5: 这里需要步哨
    6: 激活 ÜberCharge!
    7: (只有Medic可以使用)ÜberCharge 就緒
  • 2 <phrase_number>
    0: 救命!
    1: 战争嘶吼
    2: 欢呼
    3: 嘲弄
    4: 高兴
    5: 失望
    6: 打得漂亮
    7: 干得好


杂项

  • clear 清除控制台的所有信息。
  • alias 列出所有目前定义的别名。
  • fov_desired (75-90) 设置视野距离。
  • viewmodel_fov 设置武器模型的视野,默认范围为 54~70 之间。
  • r_drawviewmodel (0/1) 显示(1)或隐藏(0)武器模型。
  • lastdisguise 使玩家伪装成上一次伪装的职业。 (间谍专用)
  • load_itempreset [0, 1, 2, 3] 更换设定的 [A, B, C, D] 装备栏位。
  • say "message" 发送公开聊天信息。
  • say_team "message" 发送团队聊天信息。
  • +taunt 玩家会进行嘲讽动作。
  • +use_action_slot_item 玩家会使用动作字段所装备的物品。
  • volume (0-1) 改变游戏中的音量。

高级脚本技巧

切换

这是可能的绑定一个键切换到另一个命令,否则将是一个按键和保持命令。

bind w toggle
alias toggle "enable"
alias enable "alias toggle disable; +forward"
alias disable "alias toggle enable; -forward"

这个脚本将导致一个阿奴见 W 让玩家向前移动 W 再次按键。

组合键

可以创建一个脚本,在按下一个按钮,而另一个被按住将改变第一个按钮的动作。

bind e call
alias call Call_For_Medic
alias Call_For_Medic "Voicemenu 0 0"
alias Call_For_Ubercharge "Voicemenu 1 6"

在这一点上,该脚本将意味着每一次 E 按下,玩家需要医生。它也有一个未使用的别名来调用 Ubercharge.
bind shift +toggleState
alias +toggleState "alias call Call_For_Ubercharge"
alias -toggleState "alias call Call_For_Medic

现在,按下 ⇧ Shift 将重定向 call 要求一个无敌的时候。释放 ⇧ Shift 将使call 点回到医生的回复。
如果 ⇧ Shift+E 按下后,玩家将需要一个无敌,而不是一个医生。

等待测试

由于 wait 指令是一些巨集不可缺少的部分,利用此指令查看服务器是否能使用等待指令。

alias waitTester "alias waitTest waitPositive; wait; waitTest"
alias wait "alias waitTest waitNegative"
alias waitPositive "echo Wait is enabled on this server.; exec waitPositive.cfg"
alias waitNegative "echo Wait is DISABLED on this server!; exec waitNegative.cfg"
waitTester

这个脚本依赖于一个事实,即如果等待命令被禁用在服务器上,该名为 wait 可以由用户定义。因此,该脚本将创建一个名为 waitTest 默认情况下 waitPositive ,但如果 wait 是不允许的(并且可以由用户定义),将被重定向到waitNegative.

循环

警告: 它运行没有等待命令的循环会导致军团要塞2客户端挂。它是高度建议只有在等待测试脚本运行一个循环脚本。
通常被认为是不好的形式有一个别名,因为虽然循环可以被打破,它不能被重置。因此,循环脚本往往包括两部分的回路等部分,和环的一部分。

bind g "loopKey"
alias loopKey startLoop
alias startLoop "alias loopKey stopLoop; +attack; alias redirect loop; loop"
alias stopLoop "-attack; alias redirect; alias loopKey startLoop"
alias loop "+left; wait 33; +right; wait 33; redirect"
alias redirect loop

这个脚本将开始循环一次 G 按下之后。它开始射击,然后切换玩家的观点来回每 33 帧(在大多数服务器二)。按下 G会导致下一次循环的循环停止,也停止射击。


医生雷达

只要玩家按住某个按键,这个脚本将暂时提升医生的自动呼救的血量上限至150%(一个完全被超量治疗的玩家)。

当玩家(作为医生)发现自己孓然一身时,能通过看到队友自动呼救的悬浮窗来看见地图中的所有队友。

 alias "autocall_default" "hud_medicautocallersthreshold "75""
alias "autocall_all" "hud_medicautocallersthreshold "150""
alias "+radar" "autocall_all"
alias "-radar" "autocall_default"
bind mouse3 "+radar"

预设的自动呼救值(也就是没有使用这个脚本时的自动呼救值)可以调整为任何你想要的值(在这个脚本中是75%),运行脚本的按键也可以改为任意按键(在这个脚本中是点击滚轮[MOUSE3])。

值得注意的脚本

有些脚本会破坏游戏的环境和平衡。

已被修正的脚本

手枪连射脚本

原先,游戏里的手枪只能单发射击,后来有人编写了手枪连射脚本,让玩家一直按着某个键位即可连射手枪。 后来Valve为了确保游戏公平性,让玩家即使不使用脚本也可以连续发射手枪。

冲锋盾转向脚本

用键盘改变视角与用鼠标改变视角,是不同的两个动作。冲锋盾是第一个限制改变视角速度的武器,而Valve虽然对使用该武器时,对鼠标改变视角的速度做出限制,却忘了对键盘指令做出相同限制。<!-- 原先,键盘命令,把你的观点,左,右不处理相同的鼠标命令。 冲锋盾 这是第一个武器来创建一个限制,你可以把你的观点如何快速,因此,Valve对鼠标的速度限制,但忘记了应用相同的限制,导致在相同的行动的键盘命令。-->有玩家利用这个特性,写了重新改变输出的巨集,让他们可以用正常的速度改变视角。最复杂的例子中,玩家在冲刺时,鼠标的x轴指令被改变为相同结果的键盘指令,在冲刺结束后再将这个改变还原。

Valve 之后对键盘指令做出相同限制,因此这个脚本再也没有作用了。然而,还是可以写出一个脚本,让玩家在冲刺时有超高鼠标灵敏度,在攻击时恢复正常。它也可能很容易在使用游戏手柄的摇杆。

蹲跳脚本

原先跳到空中时,蹲下的次数是没有限制的。因此你可以在空中执行一个不断超高速蹲下站起的脚本,让游戏没办法正常判断子弹是否击中你。Valve修正为在空中只能蹲下两次。

紧急逃跑拳套

紧急逃跑拳套在移动的时候,要消耗6的生命值。然而,跳跃保留了这种武器授予的速度加成,并没有要求的武器是积极的。简单的脚本,让玩家可以快速切换到手套,跳,然后切换到。

2012年6月27日补丁: 更新损坏的随着时间的推移,手套运行迫切具有时间延迟的 迷你爆击 减幅.

闲置脚本

大多数服务器寻求防止玩家掉落系统。玩家可以尝试智胜这些系统脚本,模拟基本的运动。

一个主动的解决方案,一个空闲的威胁需要玩家接受一个弹出通知,以继续获得下降。

目前的脚本

武器视图模型隐藏脚本

有大量的脚本,切换武器的问题取决于选择一类武器槽。球员往往使他们的程序清理屏幕看不见,但使物品像近战武器、PDA、手表,等等,可见这些模型显示重要信息。例如,间谍在很大程度上依赖于他的“决定当他是隐形,隐形被干扰时,当酷似激活。其他类使用的混战动画,以判断他们的攻击时会打。

步哨跳脚本

由于工程师更新,工程师们已经能够收拾和携带他们的哨兵枪 美国同时引入更新,牧马人允许工程师和他们的哨兵哨兵跳火箭。有了非常快速的投入,它被发现一个球员可以在他们被启动之前,在他们被启动之前,一个球员可以哨兵跳,并成功地收拾他们的哨兵。 而一个人可以重复这一壮举,很难。一些玩家做的脚本,可以可靠地执行命令的权利,在正确的速度,使他们能够使一个哨兵跳,同时携带他们的哨兵每次。 日记: 火线救兵可以绕过这一必要性,因为它可以在 130 个金属的范围内挑选建筑物。

枪炮工之臂脚本

因为它可以麻烦破坏然后重建在战争最激烈的战斗小哨兵通过 PDA,一些玩家有脚本的破坏和重建他们的迷你步哨与一个或两个鼠标按键点击。这样一个剧本是特别有用的利用边境裁决者时,当玩家获得几乎即时获得复仇暴击时。

灵敏度和控制脚本

对于一些对于喜欢不同的灵敏度和控制的巨集(例如,改变侦察兵,这就需要高灵敏度去快速转动和操作,对于狙击手,鼓励使用低灵敏度精确瞄准这样一只手无意抽搐的时候不会偏离你的目标太大)。这些脚本改变他们的控制方案和鼠标设置在一个类甚至每一个武器的基础上。

充电蓄能脚本

由于计时充电和跳跃可能是困难的,一些玩家可能会使用一个快速的脚本,将两者的动作结合到一个按钮,使充电的冲刺将覆盖最大限度的距离可能。玩家仍然需要挥动他们的武器,但通常要结束的费用。

快速范围脚本

许多玩家难以范围和火力后直快速得到爆头。有脚本,将放大和火力只通过点击一个鼠标按钮。不过,这确实需要玩家的目标以外的范围。

火箭跳脚本

以火箭跳到最大高度或距离,它需要玩家跳跃、蹲、发射火箭在大致相同的时间。这可以很容易地照本宣科和按下一个按钮,出现。

击杀绑定脚本

在某些情况下,有利于一个类能够杀死自己。虽然大多只是相关的竞争性游戏,在公共服务器上有偶尔使用。

注意

参见

外部链接