Difference between revisions of "Bots/zh-hans"
(Created page with 'right|thumb|300px|A [[Soldier bot in action on the Dustbowl Training map.]] {{Quotation|'''重机枪手机器人'''的自我…') |
m (→漏洞: imp) |
||
(34 intermediate revisions by 12 users not shown) | |||
Line 1: | Line 1: | ||
− | [[ | + | {{DISPLAYTITLE:人机}} |
− | {{ | + | [[File:Tr_dustbowl0003.png|right|thumb|300px|一个{{cl|Soldier}}人机在[[Dustbowl (Training)/zh-hans|{{map name|Dustbowl}}训练]]地图上活动]] |
+ | {{hatnote|本条目的主题是游戏《军团要塞2》中由电脑控制的玩家。 | ||
+ | * 关于由电脑控制的用于作弊/[[griefing/zh-hans|骚扰]]的人机,请见[[Cheating/zh-hans#Bots|作弊人机]]。 | ||
+ | * 关于在军团要塞维基上自动编辑的机器人,请见 [[:Category:User bots]]。 | ||
+ | * 关于在[[Mann vs. Machine (update)/zh-hans|{{common string|Mann vs. Machine}}]]更新中推出的机器人,请见[[Robots/zh-hans|机器人]]。 | ||
+ | * 关于其他用途,请见[[Robot/zh-hans|机器人]]。}} | ||
− | + | {{Quotation|'''士兵'''|人类队友可能会对你指手画脚,但这些没有灵魂的人机会吗?会。它们又不是瞎子。但他们又是哑巴,所以你的无能将会是它们入土都说不出来的秘密。}} | |
− | |||
− | |||
− | + | '''人机 / Bot''',又称机器人或电脑玩家,是服务器上[https://support.steampowered.com/kb_article.php?ref=9073-WOHK-7760 被电脑控制的玩家]。在军团要塞 2 中有两种人机:智能人机以及木偶人机。智能人机采用了复杂的人工智能编码,其目的是为了模拟玩家在游戏中的行为,可在未开启[[cheats/zh-hans|作弊]]的情况下使用。木偶人机没有人工智能编码,因此它们不会自动活动,但它们在游戏测试和训练的用途上很有帮助。木偶人机需要服务器开启作弊模式才能使用,并且此时也会禁用[[achievements/zh-hans|成就]]系统。 | |
− | |||
− | |||
− | |||
− | === | + | == 基础智能人机 == |
− | + | 基础智能人机,或者称为“TFBot”,是为了模仿人类玩家的游戏行为而设计出来的,并且不能受玩家直接控制。同时,它们都是以随机方式选择[[classes/zh-hans|兵种]]的。他们使用的是基于《求生之路》系列中生还者人机以及被感染者 AI 所使用的复杂人工智能代码<ref>[http://teamfortress.com/post.php?id=3279 军团要塞官方博客 - "Erectin a dispenser"]</ref>。添加智能人机不需要服务器开启作弊功能,所以可以借此完成各种成就;不过有一个例外:人机在被击杀后并没有[[Deathcam/zh-hans|死亡定格照]];因此也无法让玩家通过智能人机来达成与死亡定格照相关的成就。此外,用[[Strange/zh-hans|奇异]]属性的武器杀死人机也不会增加武器的杀敌计数,除非武器应用了[[Strange Parts/zh-hans|奇异升级部件]]:机器人消灭数,在这种情况下,杀敌数会添加到奇异部件上,而非武器本身。 | |
− | |||
− | + | 智能人机具有从简单到专家的四个技术水平等级。[https://steamcommunity.com/id/segmentation_fault Sigsegv]对该技术水平差异进行了[https://steamcommunity.com/sharedfiles/filedetails/?id=572409016|详细的阐述]。 | |
− | + | 智能人机在以下情况能够间接地被玩家进行一定程度的控制: | |
− | + | * 在[[Setup time/zh-hans|准备阶段]]期间,被玩家准星所瞄准的任意一方人机都将做出[[taunt/zh-hans|嘲讽]]动作。 | |
− | + | * 当玩家使用[[Voice commands/zh-hans|语音指令]]“医生!”时,附近的友方[[Medic/zh-hans|医生]]人机就会前来提供治疗。 | |
− | + | * 当治疗玩家的医生人机的 [[ÜberCharge/zh-hans|ÜberCharge]] 就绪时,玩家使用“冲!冲!冲!”或者“激活 Ubercharge!”语音指令会让它立刻激活 ÜberCharge。 | |
− | + | * 如果医生人机的治疗目标或它自身受到重创时,它会立刻激活自己的 ÜberCharge。 | |
− | + | * 人机会尝试加入队友的同伴嘲讽(例如{{item link|High Five!}})或集体嘲讽(例如{{item link|Conga}})。 | |
− | + | === 寻路 === | |
+ | ====具备官方人机支持的地图==== | ||
+ | {{Maps with bot support}} | ||
− | ==== | + | ====在不支持人机的地图上使用人机==== |
− | + | {{hatnote|参考:{{vdc|Navigation Meshes}}}} | |
− | + | # 导航网格编辑需要启用作弊,因此要在[[console/zh-hans|控制台]]中键入“<kbd>sv_cheats 1</kbd>”。 | |
− | + | # 使用“<kbd>nav_generate</kbd>”指令构建初始导航网格。 | |
− | + | # 等待游戏生成 AI 路径,可在控制台中跟踪进度。 | |
− | + | # 地图将重新加载。 | |
+ | # 选择性地调整生成的导航网格,进而添加缺失的数据并移除错误的数据。使用“<kbd>nav_edit 1</kbd>”进入导航网格编辑模式。 | ||
+ | # 重新加载/重启服务器(可选,但如果跳过这一步则会禁用成就功能)。 | ||
+ | # 打开控制台,如上所示输入“<kbd>tf_bot_add <数量></kbd>”来添加人机。 | ||
+ | '''警告:如果你在启用人机的情况下编辑导航网格,游戏很可能会崩溃。''' | ||
− | === | + | 除了每次在需要添加人机时输入“<kbd>tf_bot_add <数量></kbd>”指令外,人机可以在任何已执行上述步骤的地图上使用,而不必重复这些步骤。 |
− | + | ||
+ | 在控制点,山丘之王,推车和夺旗模式的地图上自动生成的导航网格的效果最佳。在[[Mannpower/zh-hans|曼恩之力]]地图上,人机会主动承担夺旗的任务,但无法使用{{item link|Grappling Hook}}或智能地使用它们经过的增益。 | ||
+ | |||
+ | 将控制台命令“tf_bot_offense_must_push_time”的值设置为 0 可以让人机在地图中对战,而并没有它们可以识别的目标,除非地图没有任何重生区域实体。 | ||
+ | |||
+ | ==== 不支持官方人机的默认地图 ==== | ||
+ | {{Maps with no bot support}} | ||
+ | |||
+ | === 智能人机指令 === | ||
+ | {{Hatnote|有关更全面的指令列表,请见{{vdc|List of TF2 console commands and variables|军团要塞2控制台指令和变量一览表}}}} | ||
+ | 若要在已支持的地图上使用智能人机,服务器管理员应该在控制台中输入以下指令(有些指令可能需要将<kbd>sv_cheats</kbd>设置为 1 才能生效): | ||
{| class="wikitable grid" | {| class="wikitable grid" | ||
− | ! class="header" | | + | ! class="header" | 指令 |
− | ! class="header" | | + | ! class="header" | 说明 |
|- | |- | ||
− | |{{nw|<big>'''tf_bot_add'''</big>}} | + | |{{nw|<big>'''<code>tf_bot_add'''</code></big>}} |
− | | | + | |该指令将在双方队伍中随机添加一个或多个随机兵种的智能人机。游戏还会在默认名字集合中随机挑选一个名字分配给该人机。 |
− | ; | + | ;格式:<code>tf_bot_add [<''count''>] [<''class''>] [<''team''>] [<''difficulty''>] [<''name''>] [''noquota'']</code> |
− | ; | + | ;参数: |
:<code><''count''></code> | :<code><''count''></code> | ||
− | :: | + | ::添加指定数量人机。如果省略该参数,则每次只会添加一个人机。 |
− | :: | + | ::如果玩家试图添加超过服务器最大玩家数量的人机,则会无法生效并在控制台中显示一条错误消息。 |
+ | ::如果<kbd>mp_teams_unbalance_limit</kbd>太低,则往一个队伍添加更多的人机仍然有可能会触发自动平衡,从而使两队人数相等。 | ||
:<code><''class''></code> | :<code><''class''></code> | ||
− | :: | + | ::指定人机所选兵种的英文名称,其中''class''处可以填写「''[[Demoman/zh-hans|Demoman]]''」、「''[[Engineer/zh-hans|Engineer]]''」、「''[[Heavy/zh-hans|Heavy]]Weapons''」、「''[[Medic/zh-hans|Medic]]''」、「''[[Pyro/zh-hans|Pyro]]''」、「''[[Scout/zh-hans|Scout]]''」、「''[[Soldier/zh-hans|Soldier]]''」、「''[[Soldier/zh-hans|Soldier]]''」或「''[[Spy/zh-hans|Spy]]''」 |
:<code><''team''></code> | :<code><''team''></code> | ||
− | :: | + | ::指定人机所加入的队伍的英文名称,其中''team''处可以填写「''[[red/zh-hans|red]]''」或者「''[[blue/zh-hans|blue]]''」。 |
+ | |||
+ | :<code><''difficulty''></code> | ||
+ | ::设置人机的难度等级,其中''difficulty''处可以填写「''easy''」(简单)、「''normal''」(普通)、「''hard''」(困难)或「''expert''」(专家)。 | ||
+ | |||
+ | :<code><''name''></code> | ||
+ | ::设置所连接的人机的名字。 | ||
− | :<code> | + | :<code>''noquota''</code> |
− | :: | + | ::如果存在明确的‘noquota’短语,则人机将会被排除在人机配额管理系统之外。详见<code>tf_bot_quota</code>。 |
− | ; | + | ;例子: |
+ | :<code>tf_bot_add red 3 heavyweapons easy</code>,效果为在红队添加 3 个「简单」难度的机枪手人机。 | ||
|- | |- | ||
− | |{{nw|<big>'''tf_bot_difficulty'''</big>}} | + | |{{nw|<big>'''<code>tf_bot_difficulty</code>'''</big>}} |
− | | | + | |定义所要加入游戏的人机的基技术等级。 |
− | ; | + | ;格式:<code>tf_bot_difficulty <''level''></code> |
− | ; | + | ;参数: |
:<code><''level''></code> | :<code><''level''></code> | ||
− | :: | + | ::设置人机的的技术难度等级,以数字表示。取值分别为: 0 表示简单, 1 表示普通, 2 表示困难, 3 表示专家。默认等级为“普通”(1)。 |
− | ; | + | ;例子: |
+ | :<code>tf_bot_difficulty 2</code>,效果为将在执行该指令后所创建的所有人机的难度设置为“困难”。 | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>tf_bot_fire_weapon_allowed</code>'''</big>}} |
− | | | + | |指定人机是否应该进行攻击。如果选择禁用,人机仍然可以使用某些不具备破坏性的武器,如{{item link|Medi Gun}}。但存在一个例外,即{{cl|Medic}}人机仍然会使用{{item link|Syringe Gun}}开火。此外,{{cl|Demoman}}人机仍然可以引爆尚存的黏弹,但不会再放置新的黏弹。 |
− | ; | + | ;格式:<code>tf_bot_fire_weapon_allowed <''integer''></code> |
− | ; | + | ;参数: |
+ | :<code><''integer''></code> | ||
+ | ::0 表示关闭,1 表示开启(默认)。 | ||
+ | |||
+ | ;例子: | ||
+ | :<code>tf_bot_fire_weapon_allowed 0</code>,效果为禁用人机的武器,但极个别武器除外。 | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>tf_bot_force_class</code>'''</big>}} | ||
+ | |如果设置为一个兵种名称,则所有人机都将作为该兵种重新生成。 | ||
+ | |||
+ | ;格式:<code>tf_bot_force_class <''class''></code> | ||
+ | |||
+ | ;参数: | ||
:<code><''class''></code> | :<code><''class''></code> | ||
− | :: | + | ::''class''处可以填写「''[[Demoman/zh-hans|Demoman]]''」、「''[[Engineer/zh-hans|Engineer]]''」、「''[[Heavy/zh-hans|Heavy]]Weapons''」、「''[[Medic/zh-hans|Medic]]''」、「''[[Pyro/zh-hans|Pyro]]''」、「''[[Scout/zh-hans|Scout]]''」、「''[[Soldier/zh-hans|Soldier]]''」、「''[[Soldier/zh-hans|Soldier]]''」或「''[[Spy/zh-hans|Spy]]''」。默认为“”(即空白)。 |
− | ; | + | ;例如:<code>tf_bot_force_class medic</code>,效果为让所有人机作为医生重新生成。 |
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>tf_bot_force_jump</code>'''</big>}} |
− | | | + | |如果启用,则强制人机反复进行跳跃。 |
− | ; | + | ;格式:<code>tf_bot_force_jump <''integer''></code> |
− | ; | + | ;参数: |
:<code><''integer''></code> | :<code><''integer''></code> | ||
− | :: | + | ::1 表示开启,0 表示关闭(默认)。 |
− | ; | + | ;例子: |
+ | :<code>tf_bot_force_jump 1</var>,效果为强制智能人机反复进行跳跃。 | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>tf_bot_join_after_player</code>'''</big>}} |
− | | | + | |如果参数不为零,则人机将会在玩家加入游戏后才会跟随加入。该指令只适用于分配生成的人机。 |
− | ; | + | ;格式:<code>tf_bot_join_after_player <''integer''></code> |
− | ; | + | ;参数: |
:<code><''integer''></code> | :<code><''integer''></code> | ||
− | :: | + | ::0 表示关闭,1 表示开启(默认)。 |
− | ; | + | ;例子: |
+ | :<code>tf_bot_join_after_player 0</code>,效果为使 TFBot 在添加后便直接加入游戏,即使没有玩家处于任意一方团队中。 | ||
|- | |- | ||
− | |{{nw|<big>'''tf_bot_kick'''</big>}} | + | |{{nw|<big>'''<code>tf_bot_keep_class_after_death</code>'''</big>}} |
− | | | + | |如果参数为零,则人机将在每次重生时都会重新选择兵种。 |
− | + | ||
+ | ;格式:<code>tf_bot_keep_class_after_death <''integer''></code> | ||
+ | |||
+ | ;参数: | ||
+ | :<code><''integer''></code> | ||
+ | ::1 表示关闭,0 表示开启(默认)。 | ||
+ | |||
+ | ;例子: | ||
+ | :<code>tf_bot_keep_class_after_death 1</code>,效果为阻止 TFBot 更换兵种。 | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>tf_bot_kick</code>'''</big>}} | ||
+ | |该指令将会踢出单个或所有的智能人机。 | ||
+ | |||
+ | ;格式:<code>tf_bot_kick <''name/all/team''></code> | ||
+ | |||
+ | ;参数: | ||
+ | :<code><''name/all/team''></code> | ||
+ | ::指定将要踢出的人机的名字,或是将要踢出的整个人机队伍的名称,或者全部的人机。 | ||
+ | |||
+ | ;例子: | ||
+ | :输入<code>tf_bot_kick CEDA</code>将会踢出名为「CEDA」的人机(如果它存在的话)。而如果要踢出名字中包含有两个及以上的单词的人机,如「Black Mesa」,则只需要用英文引号("")将其括起来,即<code>tf_bot_kick "Black Mesa"</code>,就可以将名为「Black Mesa」的人机踢出。 | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>tf_bot_kill</code>'''</big>}} | ||
+ | |该指令将会杀死单个或所有的智能人机。 | ||
+ | |||
+ | ;格式:<code>tf_bot_kill <''name/all/team''></code> | ||
+ | |||
+ | ;参数: | ||
+ | :<code><''name/all/team''></code> | ||
+ | ::指定将要杀死的人机的名字,或是将要杀死的整个人机队伍的名称,或者全部的人机。 | ||
+ | |||
+ | ;例子: | ||
+ | :输入<code>tf_bot_kill CEDA</code>将会杀死名为「CEDA」的人机(如果它存在的话)。同<code>tf_bot_kick</code>,如果要杀死名字中包含有两个及以上的单词的人机,如「Black Mesa」,则只需要用英文引号("")将其括起来,即<code>tf_bot_kick "Black Mesa"</code>,就可以将名为「Black Mesa」的人机杀死。 | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>tf_bot_melee_only</code>'''</big>}} | ||
+ | |指定人机是否应该只能使用近战武器。 | ||
− | ; | + | ;格式:<code>tf_bot_melee_only <''integer''></code> |
− | ; | + | ;参数: |
− | :<code><'' | + | :<code><''integer''></code> |
− | :: | + | ::1 表示开启,0 表示关闭(默认)。 |
− | ; | + | ;例子: |
+ | :<code>tf_bot_melee_only 1</code>,效果为使人机只能使用近战武器。 | ||
|- | |- | ||
− | |{{nw|<big>'''tf_bot_prefix_name_with_difficulty'''</big>}} | + | |{{nw|<big>'''<code>tf_bot_prefix_name_with_difficulty</code>'''</big>}} |
− | | | + | |如果参数不为零,则会在人机名字前面附加上该人机的技术等级的前缀。 |
− | ; | + | ;格式:<code>tf_bot_prefix_name_with_difficulty <''integer''></code> |
− | ; | + | ;参数: |
:<code><''integer''></code> | :<code><''integer''></code> | ||
− | :: | + | ::1 表示开启,0 表示关闭(默认)。 |
− | ; | + | ;例子: |
+ | :输入<code>tf_bot_prefix_name_with_difficulty 1</code>后,所添加的人机的名字会变为「Normal Aimbot」(普通难度)和「Expert Saxton Hale」(专家难度)。 | ||
|- | |- | ||
− | |{{nw|<big>'''tf_bot_quota'''</big>}} | + | |{{nw|<big>'''<code>tf_bot_quota</code>'''</big>}} |
− | | | + | |指定游戏中 TFBot 的总数。该指令只会在<var>tf_bot_quota_mode</var>的参数为「<code>fill</code>」或「<code>match</code>」时生效。 |
− | ; | + | ;格式:<code>tf_bot_quota <''integer''></code> |
− | ; | + | ;参数: |
:<code><''integer''></code> | :<code><''integer''></code> | ||
− | :: | + | ::介于 0 和服务器能容纳的最大玩家数之间的一个整数。默认值为 0。 |
− | ; | + | ;例子: |
+ | :在指令 <var>tf_bot_quota_mode</var> 设置为 <code>match</code> 时,输入<kbd>tf_bot_quota 2</code>的效果为每有 1 个玩家加入游戏时,就添加 2 个人机。 | ||
|- | |- | ||
− | |{{nw|<big>'''tf_bot_quota_mode'''</big>}} | + | |{{nw|<big>'''<code>tf_bot_quota_mode</code>'''</big>}} |
− | | | + | |指定人机的分配类型。 |
− | ; | + | ;格式:<code>tf_bot_quota_mode<''normal/fill/match''></code> |
− | ; | + | ;参数: |
:<code>''normal/fill/match''</code> | :<code>''normal/fill/match''</code> | ||
− | :: | + | ::如果为「normal」,服务器将不会添加或踢出任何人机,除非有明确的指令;此时指令<var>bot_quota</var> 也将无效。 |
− | :: | + | ::如果为「fill」,服务器将会按照 1:1 的比例添加与玩家人数相匹配的 N 个数量的人机。其中 N 由 <var>bot_quota</var> 控制。 |
− | :: | + | ::如果为「match」,服务器将会按照 1:N 的比例添加与玩家人数相匹配的数量的人机。其中 N 由 <var>bot_quota</var> 控制 |
+ | |||
+ | ;例子: | ||
+ | :<code>tf_bot_quota_mode fill</code>,效果为游戏中的人机数量将始终保持与玩家人数相同。 | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>tf_bot_taunt_victim_chance</code>'''</big>}} | ||
+ | |指定人机在杀死人类玩家后发起嘲讽的频率。 | ||
− | ; | + | ;格式:<code>tf_bot_taunt_victim_chance <''integer''></code> |
+ | |||
+ | ;参数: | ||
+ | :<code><''integer''></code> | ||
+ | :: 介于 0 到 100 之间的整数。默认值为 20。 | ||
+ | |||
+ | ;例子: | ||
+ | :<code>tf_bot_taunt_victim_chance 0</code>,效果为人机在杀死一名人类玩家后将不会发起嘲讽。 | ||
+ | :<code>tf_bot_taunt_victim_chance 100</code>,效果为人机在杀死一名人类玩家后将一定会发起嘲讽。 | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>tf_bot_warp_team_to_me</code>'''</big>}} | ||
+ | |将与你同队的人机传送到你的位置。需要<code>sv_cheats 1</code>前置。 | ||
+ | |||
+ | ;格式:<code>tf_bot_warp_team_to_me</code> | ||
+ | |||
+ | ;参数: | ||
+ | :无 | ||
|} | |} | ||
− | == | + | ===智能人机现况=== |
− | + | 智能人机现在已经全面发布{{cite|when were they fully/officially released?}}。目前,在经过{{update link|Hatless Update}}后,所有的兵种的智能人机都已经能正常运作,包括曾经有漏洞的{{cl|Spy}}人机。智能人机只能适用于大部分官方[[King of the Hill/zh-hans|山丘之王]]地图、部分[[Payload/zh-hans|推车]]地图、攻防型地图{{map link|Dustbowl}}和{{map link|Gorge}}、[[Capture the Flag/zh-hans|夺旗]]地图,以及 {{map link|Mann Manor}}(在后两种地图中,智能人机只能通过在控制台输入<kbd>tf_bot_add</kbd>指令来添加)。玩家通过一些操作在不支持的地图上也可以使用智能人机;但这些人机并不会模仿人类玩家的游戏行为。 | |
+ | |||
+ | 人机无法在任何[[PLR/zh-hans|推车竞赛]]地图上正常运作,因为它们要么跳不过{{map link|Hightower}}上的栏杆,要么被困在出生点中的随机角落里;而且人机还会在任意一个推车地图上开舞会(该情况在未来可能会改变){{cite|where is the future plan?}}。 | ||
+ | |||
+ | ====智能人机的行为==== | ||
+ | * 人机目前只能使用基础的[[loadout/zh-hans|装备配置]](尽管可以通过自定义模组/插件来让人机获得非默认武器)。 | ||
+ | * 简单难度的人机会很少会使用主武器以外的武器。而更高难度的人机会在主武器弹药耗尽后立即切换并使用它们的副武器,或者在距离不够的情况下用来补枪。 | ||
+ | * 人机目前还无法使用特殊的[[Jumping/zh-hans|跳跃]]操作(如火箭跳)或者[[haul/zh-hans|搬运]]建筑。 | ||
+ | * 人机在杀死玩家后,有几率立刻进行[[taunt/zh-hans|嘲讽]],而且就算暴露在敌人火力下也会照做不误。而正在携带着情报的人机则不会出现这种行为。[[Mann vs. Machine (game mode)/zh-hans|曼恩 vs. 机器]]模式里的[[Robots/zh-hans|机器人]]也存在有这类行为。 | ||
+ | * 间谍人机(和玩家)在[[disguise/zh-hans|伪装]]状态时会被其它人机完全忽略。然而,在“触碰”到任何敌方人机、[[Sapper/zh-hans|瘫痪]]建筑物、开火或[[Cloak/zh-hans|隐形]]时,所有目击到这些情景的人机会将间谍人机(或玩家)暴露为间谍,并且不会忘记其样貌,除非间谍在暗地里更换了伪装形象、该目击且暴露出间谍的人机死亡,或者是间谍使用{{item link|Dead Ringer}}进行假死。 | ||
+ | * 在非简单难度的游戏中,[[Pyro/zh-hans|火焰兵]]人机会十分频繁地使用[[Compression blast/zh-hans|压缩气爆]]来反弹敌方的飞行物。 | ||
+ | * [[Medic/zh-hans|医生]]人机的治疗目标是存在有优先级的,在大部分时候,比起治疗狙击手(以及优先级更低的工程师),它们会选择优先治疗其它的兵种,就算使用了“医生!”语音命令指令也是如此。 | ||
+ | * 医生人机更倾向于治疗机枪手、士兵、爆破手和火焰兵这类兵种,如果人类玩家也在游玩这类兵种,则医生会持续跟随治疗玩家。反之,如果人类玩家游玩上述以外的兵种,则医生会很少给玩家持续的治疗。 | ||
+ | * 当医生人机受到伤害时,它会立刻部署 ÜberCharge(如果有的话)。[[Mann vs. Machine (game mode)/zh-hans|曼恩 vs. 机器]]模式里的 [[Über Medic/zh-hans|Über 医生]]也有存在有这类行为。 | ||
+ | * 除非首先受到了攻击,否则人机在准备阶段期间是不会攻击的([[Demoman/zh-hans|爆破手]]人机布置黏性炸弹除外)。 | ||
+ | * 工程师人机不会升级自己的传送装置(甚至不会移除电子工兵),有时候在还未交火的状态下设置还不会修复自己的步哨枪。 | ||
+ | * 工程师人机永远不会修复或升级友方工程师人机的建筑,除非该建筑挡住了该工程师人机的目标。 | ||
+ | * 除了工程师、间谍和狙击手人机以外,其他的人机在[[Attack/Defend/zh-hans|攻防型]]或[[Payload/zh-hans|推车]]地图的准备阶段中会停留在出生点中不动。 | ||
+ | * 当间谍人机被另一个人机(或玩家)发现时,它将不会再尝试背刺目标,而是转为使用{{item link|Revolver}}并边开枪边撤退。 | ||
+ | * 一旦爆破手人机获知了步哨枪的位置(一般是被这一步哨枪杀死后),它们会站在步哨枪的射程以外使用榴弹精确地瞄准并计算出合适的发射点,然后让榴弹准确地落在步哨枪的位置。不过,墙壁和天花板有时候可能会挡住榴弹的飞行路线。 | ||
+ | * 狙击手人机在搜索范围内没有找到敌方目标时,则会使用[[Sniper voice commands/zh-hans#Voice Menu 3|“不行”]]这一语音命令。 | ||
+ | * 友方的医生人机会治疗已伪装的敌方间谍。 | ||
+ | |||
+ | ====漏洞==== | ||
+ | * 人机有时候可能会试图穿过墙壁等无法穿过的物体。 | ||
+ | * 每当玩家/人机在隐身/解除隐身或伪装/解除伪装时,即使是[[field of view/zh-hans|背对着]]间谍的人机都会“目击”到身后的目标并转身攻击。但其原因并不是由玩家发出的任何声音(脚步声、各种武器的噪音等)所造成的。 | ||
+ | * 尽管情况很少见,人机在使用工程师的传送装置时可能会站在传送装置的另一端上,并被卡住(不会自行移动)。 | ||
+ | * 当人机使用[[voice commands/zh-hans|语音命令]](例如“间谍!”和“前进!”),文本栏里并不会显示这些命令的文字。 | ||
+ | * 正在[[healing/zh-hans|治疗]]玩家的[[Medic/zh-hans|医生]]人机不会躲避敌人的火力攻击或寻找[[Health/zh-hans|医疗包]],就算它们的生命值非常的低。 | ||
+ | * 人机可以在嘲讽状态下移动,从而免疫了{{item link|Holiday Punch}}的攻击。 | ||
+ | * 医生人机在短时间内受到攻击时经常会使用{{item link|Bonesaw}}而非{{item link|Syringe Gun}}来对付非[[melee/zh-hans|近战]]范围内的敌人,甚至在极少数情况下会切换出它们的{{item link|Medi Gun}}。 | ||
+ | * 医生人机在使用{{item name|Syringe Gun}}时并不会抬高瞄点来补偿针头的下坠。其原因可能可能是{{item name|Syringe Gun}}在智能人机的代码中没有被准确识别为非[[hitscan/zh-hans|即时命中]]武器。 | ||
+ | * 无论在什么游戏难度下,间谍人机都能够看到并跟踪已经隐身的间谍(智能人机或玩家)。 | ||
+ | * 不论间谍的所伪装的团队是敌是友(仅限玩家,因为人机无法伪装成队友),只要这名间谍撞到了敌人,该敌人仍然会指认出他是间谍。 | ||
+ | * 人机会遵守自动平衡规则。如果要在特定的团队中生成人机,那么你必须将{{cvar|mp_teams_unbalance_limit}}的参数设置为 0。 | ||
+ | * 工程师人机可能会无视它们的[[buildings/zh-hans|建筑]],直到建筑被摧毁。 | ||
+ | * 机枪手人机有时会在弹药耗尽的情况下仍然试着用转轮机枪开火(尽管在低于高级的人机难度下,这种情况似乎会大量发生)。 | ||
+ | * 当附近没有敌人时,败方的医生人机偶尔会在[[Humiliation/zh-hans|羞辱]]期间自杀。而玩家自身就算使用指令也没法实现这一行为。 | ||
+ | * 将配置菜单的预览设置为蓝队时会导致红队人机出现在蓝队中。 | ||
+ | * 目前,人机无法在以下类型的游戏模式或地图上运行,即使该地图具备生成的导航网格(但间谍和狙击手人机可能会有效)。 | ||
+ | ** [[Arena/zh-hans|竞技场]]和[[Versus Saxton Hale/zh-hans|决战霍尔]]模式 <small>{{tooltip|【注】|人机只有在受到攻击或敌人接近后才会移动,并且还是会永久地停留在出生点。只有狙击手和间谍可以正常运作。只有在控制点解锁时,工程师才能开始运作。如果你使用 tf_bot_force_class 指令强制只有狙击手或间谍这两个兵种,游戏才能正常进行。}}</small> | ||
+ | ** [[Payload/zh-hans#Payload Race|推车竞赛]] <small>{{tooltip|【注】|只有工程师、狙击手和间谍才会离开出生点。}}</small> | ||
+ | ** [[Mann vs. Machine (game mode)/zh-hans|曼恩 vs. 机器]] <small>{{tooltip|【注】|在实际的机器人队伍可以运作时,玩家方的所有人机都很少会起作用。它们知道想敌方开火,有时候人机会使用玩家放置的传送器,但最多就一两次。间谍人机一直都能正常运行,所以你有可能指令和一群间谍游玩。工程师人机也能运作,它的行为和MVM中的工程师机器人类似。}}</small> | ||
+ | ** [[Special Delivery (game mode)/zh-hans|速递]] | ||
+ | ** [[Robot Destruction/zh-hans|毁灭机器人]] | ||
+ | ** {{map link|Cactus Canyon}} <small>{{tooltip|【注】|未制作第二部分的导航网格。}}</small> | ||
+ | ** [[Mannpower/zh-hans|曼恩之力]] <small>{{tooltip|【注】|不会使用抓钩,也不会正确地使用增益。}}</small> | ||
+ | ** [[PASS Time/zh-hans|手球时刻]] <small>{{tooltip|【注】|只有间谍和狙击手才会离开出生点,而且它们也不会捡起或跟随手球。但是可以把手球传给它们。}}</small> | ||
+ | ** [[Player Destruction/zh-hans|毁灭玩家]] <small>{{tooltip|【注】|同样,只有间谍,有时狙击手也会离开出生点,如果没有人类玩家在场,这些间谍会伪装并在敌方的出生点外面蹲人。}}</small> | ||
+ | ** {{map link|Snowycoast}} <small>{{tooltip|【注】|红队不会离开出生点,也不会在战车周围设置防御工事,而蓝队会在试图推车时被卡在墙上。蓝队中的间谍根本不会移动。}}</small> | ||
+ | ** {{map link|Snowplow}} <small>{{tooltip|【注】|红队不会离开出生点以及在准备时间设置防御,而蓝队则会将火车视为战车来尝试推动它。未制作第二部分的导航网格。}}</small> | ||
+ | ** {{map link|Byre}} <small>{{tooltip|【注】|只有工程师才会离开出生点。}}</small> | ||
+ | ** {{map link|Nightfall}}和{{map link|Pipeline}} <small>{{tooltip|【注】|只有第三部分的导航网格未制作。}} </small> | ||
+ | ** {{map link|Hassle Castle}} <small>{{tooltip|【注】|红队人机运作良好,但蓝队人机永远不会离开出生点,除了侦察兵和间谍。}}</small> | ||
+ | * 拿出[[melee/zh-hans|近战]]武器的人机有时候不会切换回其他的武器,即使它们获取的弹药也还是一样。 | ||
+ | ** 要修复这种情况可以直接杀死它们或者随缘。 | ||
+ | * 在{{update link|Jungle Inferno Update}}之后,用特定参数(例如{{cvar|tf_bot_add 5 pyro blue normal}})生成的人机会直接死在重生室里。这种情况可以通过指令{{cvar|tf_bot_reevaluate_class_in_spawnroom 0}}来阻止,并且需要将{{cvar|sv_cheats}}的参数设置为 1。 | ||
+ | |||
+ | ===智能人机的名字=== | ||
+ | 智能人机通过编程后都拥有不同的名字,其中的许多名字都与《军团要塞2》、Valve 的其他作品,以及计算机编程有各种关联。还有许多名字是应[[Steam Users' Forums/zh-hans|Steam 论坛]]上所提出的请求而被采纳的。 | ||
+ | |||
+ | {{Bot names}} | ||
+ | |||
+ | 玩家也可以给智能人机输入自定义的名字,例如,<kbd>tf_bot_add heavyweapons blue "Blu Hoovy"</kbd>;结果为在[[BLU/zh-hans|蓝队]]中添加了一个名为“Blu Hoovy”的蓝队{{cl|Heavy}}。 | ||
+ | |||
+ | ==木偶人机== | ||
+ | 木偶人机没有AI程序,所以不会自行移动或操作。不过这类人机可以当作牵线木偶一样进行使用:玩家可以通过指令来操控它们的行为,比如例如跟随玩家并使用武器开火。木偶人机主要被用来参与测试,如果相应的指令操作恰当,也可利用它们创造出惊人的视觉效果。若要生成木偶人机,则必须将{{cvar|sv_cheats}}的参数设置为 1。 | ||
+ | |||
+ | ===木偶人机指令=== | ||
+ | 下列指令并非全部有效;也可能省略了一些有效的指令。 | ||
− | + | 这些指令有可能对智能人机生效,也可能无效。 | |
− | |||
− | '' | + | ''注:只输入指令的主体部分而不输入参数部分并不会使指令生效,并将显示指令的当前设置和一段简短说明。'' |
{| class="wikitable grid" | {| class="wikitable grid" | ||
− | ! class="header" | | + | ! class="header" | 指令 |
− | ! class="header" | | + | ! class="header" | 说明 |
|- | |- | ||
− | |{{nw|<big>'''bot'''</big>}} | + | |{{nw|<big>'''<code>bot</code>'''</big>}} |
− | | | + | |使用该指令将在特定团队中创建一个特定兵种和特定名字的人机。如果省略了团队或名字,则这些选项将会随机选择。 |
− | ; | + | ;格式:<code>bot [<''teamname/number''>] [<''classname''>] [<''name''>] [<''number''>]</code> |
− | ; | + | ;参数: |
− | :<code> | + | :<code><''number''></code> |
− | :: | + | ::指定要添加的人机的数量。 |
− | :<code> | + | :<code><''teamname/number''></code> |
− | :: | + | ::指定人机所加入的团队的名称或编号,此处可以填写「''[[RED/zh-hans|RED]]''」或「''1''」、「''[[BLU/zh-hans|BLU]]''」或「''0''」。 |
− | :<code> | + | :<code><''classname''></code> |
− | ::'' | + | ::指定人机的兵种类型,此处可以填写「''[[Demoman/zh-hans|Demoman]]''」、「''[[Engineer/zh-hans|Engineer]]''」、「''[[Heavy/zh-hans|Heavy]]''」、「''[[Medic/zh-hans|Medic]]''」、「''[[Pyro/zh-hans|Pyro]]''」、「''[[Scout/zh-hans|Scout]]''」、「''[[Soldier/zh-hans|Soldier]]''」、「''[[Sniper/zh-hans|Sniper]]''」或「''[[Spy/zh-hans|Spy]]''」。 |
− | + | :<code><''teleport''></code> | |
+ | ::将生成的人机传送到玩家准星所瞄准的位置上。 | ||
+ | :<code><''targetdummy''></code> | ||
+ | ::阻止已生成的人机流失生命值。 | ||
+ | :<code><''name''></code> | ||
+ | ::“''name''”处可以填写任意内容。如果出现多人同名的情况,则会在所有同名名字的开头增加一个带括号的数字(从 1 开始递增)来进行编号区分,从最早加入的人机开始编号。例如,joe、(1)joe、(2)joe,等等。如果没有指定名字,则该人机的名字将会以在“bot”一词的末尾加上数字(从 01 开始递增)进行命名;例如,第一个人机的名字是「bot01」,下一个则是「bot02」,依此类推。 | ||
+ | ;例子: | ||
+ | :<code>bot -team red -class Engineer -name joe</code>,效果为在红队添加一个名为 joe 的工程师人机。 | ||
|- | |- | ||
− | |{{nw|<big>'''bot_changeclass'''</big>}} | + | |{{nw|<big>'''<code>bot_changeclass</code>'''</big>}} |
− | | | + | |强制所有人机更换为指定的兵种类型。 |
− | '' | + | |
+ | ;格式:<code>bot_changeclass <''name''> <''classname''></code> | ||
+ | |||
+ | ;参数: | ||
+ | :<code><''name''></code> | ||
+ | ::目标人机的名字。 | ||
+ | :<code><''classname''></code> | ||
+ | ::人机将要切换到的兵种的名称。默认为“”(即空白)。 | ||
+ | ;例子: | ||
+ | :<code>bot_changeclass bot01 Soldier</code>,效果为将名为 bot01 的人机的兵种强制更改为“士兵”。 | ||
|- | |- | ||
− | |{{nw|<big>'''bot_changeteams'''</big>}} | + | |{{nw|<big>'''<code>bot_changeteams</code>'''</big>}} |
| | | | ||
− | + | 让所有人机强制更换队伍。如果有一个人机在红队,那么执行指令后它将会被更换到蓝队,反之亦然。 | |
− | |||
|- | |- | ||
− | |{{nw|<big>'''bot_command'''</big>}} | + | |{{nw|<big>'''<code>bot_command</code>'''</big>}} |
− | | | + | |代表特定的人机发送特定的指令。 |
− | ; | + | ;格式:<code>bot_command <''name/all''> <''console command''></code> |
− | |||
− | |||
− | |||
− | |||
− | :: | + | ;参数: |
+ | :<code><''name/all''></code> | ||
+ | ::指定将要向其发送指令的人机的名字或 ID。填写“all”将向所有人机发送指令。 | ||
+ | :<code><''console command''></code> | ||
+ | ::可以填写[[Scripting/zh-hans#Console Commands|控制台指令]]中列出的任意一项指令,以及[[cheats/zh-hans|作弊码]]中的部分指令。 | ||
+ | ;例子 1 | ||
+ | :<code>bot_command bot01 "voicemenu 0 0"</code>,效果为使 bot01 使用语音菜单中的 0 0 选项。 | ||
+ | ;例子 2 | ||
+ | :<code>bot_command bot01 "taunt"</code>,效果为使 bot01 使用嘲讽动作。 | ||
+ | |||
+ | ::使用<code>bot_command</code>无法实现指定物品栏(栏位1,栏位2,等等)的指令,但是用<code>bot_forcefireweapon</code>等效替代,即让该兵种中的所有人机都切换指定某一栏位的武器并开始攻击,然后使其停止攻击。只有某一兵种中的全部人机才可以实现该效果。 | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_dontmove</code>'''</big>}} |
− | | | + | |允许或禁止人机进行移动。当参数设置为 1 时,人机无法移动,但它们仍然可以转身和跳跃。注意配合指令<code>bot_mimic</code>一起使用,可以将人机移动到特定区域并让它们停留在原地。 |
− | + | ||
+ | ;格式:<code>bot_dontmove <''integer''></code> | ||
+ | ;参数: | ||
+ | :<code><''integer''></code> | ||
+ | ::当设置为 1 时,人机将被允许进行移动。默认值为 0(禁用)。 | ||
+ | ;例子: | ||
+ | :<code>bot_dontmove 1</code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_forceattack</code>'''</big>}} |
− | | | + | |该指令将强制所有的人机以它们当前使用的任意[[weapons/zh-hans|武器]]自动进行攻击。如果<code>bot_forceattack2</code>的参数设置为 ''0'',那么人机将执行主要攻击(primary_fire);如果参数为 ''1'',那么人机将执行辅助攻击(secondary_fire)。 |
− | ; | + | 请注意,如果<code>bot_mimic</code>处于生效状态时(即参数为 1 ),则此操作将不会生效。 |
− | :: | + | |
− | ; | + | ;格式:<code>bot_forceattack <''integer''></code> |
+ | ;参数: | ||
+ | :<code><''integer''></code> | ||
+ | ::当设置为1时,所有人机都将开始攻击。默认值为 0(禁用)。 | ||
+ | ;例子: | ||
+ | :<code>bot_forceattack 1</code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_forceattack2</code>'''</big>}} |
− | | | + | |当<code>bot_forceattack</code>参数设置为 ''1'' 时,所有人机都将以它们当前使用的任意[[weapons/zh-hans|武器]]执行辅助攻击。 |
− | + | ;格式:<code>bot_forceattack2 <''integer''></code> | |
+ | ;参数: | ||
+ | :<code><''integer''></code> | ||
+ | ::当设置为 ''1'' 时,人机将会执行其武器的辅助攻击(secondary_fire),当设置为 ''0'' 时,执行主要攻击(primary_fire)。 | ||
+ | ;例子: | ||
+ | :<code>bot_forceattack2 1</code> | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>bot_forceattack_down</code>'''</big>}} | ||
+ | |指定人机的攻击方式,共有「点射」和「连射」这两种方式。如果参数设置为 ''0'',人机就会表现得像是连续点击攻击键一样(适用于{{item link|Stickybomb Launcher}})。如果设置为 ''1'',那么人机会表现得像是按住攻击键一样(适用于{{item link|Minigun}})。 | ||
− | ; | + | ;格式:<code>bot_forceattack_down <''0/1''></code> |
− | :: | + | ;参数: |
− | ; | + | :<code><''integer''></code> |
+ | ::''1'' 为开启,''0'' 为关闭(默认)。 | ||
+ | ;例子: | ||
+ | :<code>bot_forceattack_down 1</code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_forcefireweapon</code>'''</big>}} |
− | | | + | |强制所有拥有指定武器的人机切换到此武器并进行攻击。 |
+ | 如果有人机没有此种武器,则不会对其有任何影响(除非它正在使用其他武器进行攻击,在这种情况下它将会停止攻击)。 | ||
+ | |||
+ | ;格式:<code>bot_forcefireweapon <''weapon filename''></code> | ||
+ | ::“''filename''”处一般填写武器的文件名,即「''tf_weapon_ <weapon name>''」。 | ||
+ | ;例子: | ||
+ | <code>bot_forcefireweapon tf_weapon_fists</code> 会使所有{{cl|Heavy}}人机切换到{{item link|Fists}}并反复攻击,其他人机则原地待命。<br> | ||
+ | <code>bot_forcefireweapon tf_weapon_shotgun_pyro</code> 会使所有{{cl|Pyro}}人机切换到{{item link|Shotgun}}并反复开火,其他人机则原地待命。 | ||
− | + | ::若要让所有人机停止攻击,则只需输入一个游戏中不存在的武器的的文件名即可。任何未带有“tf_weapon”前缀的武器均不属于《军团要塞2》的武器,因此人机无法使用其进行攻击,例如<code>''bot_forcefireweapon ,,''</code>。 | |
− | |||
− | |||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_jump</code>'''</big>}} |
− | | | + | |强制所有人机反复进行跳跃。 |
+ | ;格式:<code>bot_jump <''integer''></code> | ||
+ | ;参数: | ||
+ | :<code><''integer''></code> | ||
+ | ::当设置为 1 时,所有的人机都将反复进行跳跃。默认值为 0(禁用)。 | ||
+ | ;例子: | ||
+ | :<code>bot_jump 1</code> | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>bot_crouch</code>'''</big>}} | ||
+ | |强制所有人机持续蹲伏。 | ||
+ | ;格式:<code>bot_crouch <''integer''></code> | ||
+ | ;参数: | ||
+ | :<code><''integer''></code> | ||
+ | ::当设置为 1 时,所有的人机都将保持蹲伏状态。默认值为 0(禁用)。 | ||
+ | ;例子: | ||
+ | :<code>bot_crouch 1</code> | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>bot_kick</code>'''</big>}} | ||
+ | |按其名字来移除某一个人机,或者移除整一队人机,又或者移除所有的人机。 | ||
+ | ;格式:<code>bot_kick <''name/team''></code> | ||
+ | ::使指定的人机自杀死亡。 | ||
+ | ;例子: | ||
+ | :<code>bot_kick bot01</code>,效果为踢出名为“bot01”的人机(如果它存在的话)。 | ||
+ | :<code>bot_kick red</code>,效果为踢出所有位于红队的人机。 | ||
+ | :<code>bot_kick blue</code>,效果为踢出所有位于蓝队的人机。 | ||
+ | :<code>bot_kick all</code>,效果为踢出服务器内所有的人机。 | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>bot_kill</code>'''</big>}} | ||
+ | |击杀指定的人机。 | ||
+ | ;格式:<code>bot_kill <''name''></code> | ||
+ | ;参数: | ||
+ | :<code><''name''></code> | ||
+ | ::使指定的人机自杀。 | ||
+ | ;例子: | ||
+ | :<code>bot_kill bot01</code> | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>bot_mirror</code>'''</big>}} | ||
+ | |指定的人机将会镜像了玩家的装备配置(兵种、饰品和武器)。该指令存在有部分漏洞;例如,如果一个{{cl|Demoman}}玩家装备了[[Booties/zh-hans|靴子]]和任意盾牌,镜像人机将仍会持有{{item link|Grenade Launcher}}和{{item link|Stickybomb Launcher}},尽管其模型上已经显示有靴子和盾牌。镜像人机死亡后将不会保留之前的配置,必须要再次使用<code>bot_mirror</code>才能恢复镜像。 | ||
− | ; | + | ;格式:<code>bot_mirror <''name''></code> |
− | :: | + | ::其中“''name''”处填写要镜像的人机的名字。 |
− | ; | + | ;例子: |
+ | :<code>bot_mirror bot01</code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_mimic</code>'''</big>}} |
− | + | |人机将会通过 index 来执行玩家的用户命令行,即模仿玩家的行为。 | |
− | + | 人机将会执行玩家发出的所有按键行为,包括模仿玩家的移动、转身、跳跃、攻击等。但人机不会模仿玩家的呼叫医生、切换武器和嘲讽的行为。 | |
− | |||
− | |||
− | |||
− | |||
− | :: | + | 请注意,该指令的效果将会覆盖指令<code>bot_forceattack</code>的效果,但不会覆盖<code>bot_dontmove</code>的效果。 |
− | : | + | |
+ | ;格式:<code>bot_mimic <''integer''></code> | ||
+ | ;参数: | ||
+ | :<code><''integer''></code> | ||
+ | ::''1'' 表示开启,''0'' 表示关闭(默认)。 | ||
+ | ;例子: | ||
+ | :<code>bot_mimic 1</code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_mimic_inverse</code>'''</big>}} |
− | | | + | |指定人机与玩家反向移动;玩家向左移动时,人机将会向右移动,玩家向前移动则人机向后移动,以此类推。 |
− | + | 人机的视角方向则不受其影响。 | |
− | ; | + | |
− | :: | + | ;格式:<code>bot_mimic_inverse <''integer''></code> |
− | ; | + | ;参数: |
+ | :<code><''integer''></code> | ||
+ | ::''1'' 表示开启,''0'' 表示关闭(默认)。 | ||
+ | ;例子: | ||
+ | :<code>bot_mimic_inverse 1</code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_mimic_yaw_offset</code>'''</big>}} |
− | | | + | |指定人机的朝向角度。 |
− | + | 人机将会朝向一个指定的方向,其方向根据玩家的位置而定。默认设置为 ''180'',此时所有的人机都会面朝着玩家。而将其设置 ''0'' 时,所有人机都会面朝玩家所朝向的方向。 | |
− | + | ;格式:<code>bot_mimic_yaw_offset <''0-360''></code> | |
+ | ::以度为单位,指定人机的朝向角度。 | ||
+ | ;例子: | ||
+ | :<code>bot_mimic_yaw_offset 180</code> | ||
+ | |- | ||
+ | |{{nw|<big>'''<code>bot_randomnames</code>'''</big>}} | ||
+ | |给予人机的随机的名字。 | ||
− | ; | + | ;格式:<code>bot_randomnames <''integer''></code> |
− | :: | + | ;参数: |
− | ; | + | :<code><''integer''></code> |
+ | ::''1'' 表示开启,''0'' 表示关闭(默认)。 | ||
+ | ;例子: | ||
+ | :<code>bot_randomnames 1</code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_refill</code>'''</big>}} |
− | | | + | |为所有的人机补满弹药(包括工程师的[[metal/zh-hans|金属]])和生命值。 |
− | |||
− | |||
− | ; | + | ;格式:<code>bot_refill</code> |
− | |||
− | |||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_saveme</code>'''</big>}} |
− | | | + | |让所有人机呼叫医生,相当于向所有人机发出了指令<code>bot_command <''name''> "voicemenu 0 0"</code>。 |
− | + | ;格式:<code>bot_saveme <''integer''></code> | |
− | + | ;参数: | |
− | + | :<code><''integer''></code> | |
− | + | ::设置为 ''1'' 时所有人机都将呼叫医生,默认设置为 ''0''(禁用)。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | :: | ||
− | |||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_selectweaponslot</code>'''</big>}} |
− | | | + | |强制一个人机切换到指定的武器栏位。若要指定单独某个人机切换武器,请改用指令<code>''cc_bot_selectweapon''</code>。 |
− | + | ;格式:<code>bot_selectweaponslot <''n''> </code> | |
+ | ;参数: | ||
+ | :<code><''n''></code> | ||
+ | ::将“''n''”设置为人机应该切换到的武器栏位。 | ||
+ | ::0 表示主武器;1 表示副武器;2 表示近战武器;3 表示特殊武器(例如间谍的烟盒,工程师的PDA)。 | ||
+ | ;例子: | ||
+ | :<code>bot_selectweaponslot 2 </code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_teleport</code>'''</big>}} |
− | | | + | |将一个指定的人机传送到指定的坐标上。 |
− | + | 在控制台中输入<code>Status</code>即可获取玩家当前所在位置的地图坐标。 | |
− | :: | + | |
+ | ;格式:<code>bot_teleport <''name''> <''X''> <''Y''> <''Z''> <''Pitch''> <''Yaw''> <''Roll''></code> | ||
+ | ::其中“''name''”处填写所要传送的人机的名字或 ID。 | ||
+ | ;参数: | ||
+ | :<code><''name''></code> | ||
+ | ::所要传送的人机的名字。 | ||
+ | :<code><''X''> <''Y''> <''Z''></code> | ||
+ | ::人机将要被传送到的地图坐标。 | ||
+ | :<code><''Pitch''> <''Yaw''> <''Roll''></code> | ||
+ | ::人机传送后所要面朝的方向。 | ||
+ | ;例子: | ||
+ | :<code>bot_teleport bot01 -4815 1385 -447 0 0 0</code>,效果为将 bot01 传送到坐标 -4815 1385 -447,朝向为正前方。 | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>bot_whack</code>'''</big>}} |
− | | | + | |将玩家造成的致命伤害给予指定的人机。 |
− | + | 该指令基本是以当前选择的武器来秒杀人机的,可能是在开发过程中进行测试所用的。值得注意的是,只有当<code>mp_friendlyfire</code>设置为 1 时,玩家才能使用<code>bot_whack</code>来击杀队友,否则用来秒杀队友将不会有任何效果。 | |
− | |||
− | ; | + | ;格式:<code>bot_whack <''name''></code> |
− | : | + | ;参数: |
− | ; | + | :<code><''name''></code> |
+ | ::将要“秒杀”的人机的名字。 | ||
+ | ;例子: | ||
+ | :<code>bot_whack bot01</code> | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''<code>cc_bot_selectweapon</code>'''</big>}} |
− | | | + | |强制人机切换到指定的武器栏位。 |
− | |||
− | ; | + | ;格式:<code>cc_bot_selectweapon <''name''> <''n''> </code> |
− | :: | + | ;参数: |
− | ::<code>'' | + | :<code><''n''></code> |
− | :: | + | ::将“''n''”设置为人机应该切换到的武器栏位。 |
− | ; | + | ::0 表示主武器;1 表示副武器;2 表示近战武器;3 表示特殊武器。 |
+ | :<code><''name''></code> | ||
+ | ::将要切换武器栏位的人机的名字。 | ||
+ | ;例子: | ||
+ | :<code>cc_bot_selectweapon bot12 2</code>,效果为让名为 bot12 的人机切换到近战武器。 | ||
|- | |- | ||
− | |{{nw|<big>''' | + | |{{nw|<big>'''{{code|bot_hurt}}'''</big>}} |
− | | | + | |对人机造成指定的伤害,可面向团队或全体执行。 |
− | ; | + | ;格式:{{code|bot_hurt [<''name''>] [<''team''>] [<''damage''>]}} |
− | :: | + | ;参数: |
− | ; | + | :<code><''name''></code> |
+ | ::指定对其造成伤害的人机的名字。 | ||
+ | :<code><''team''></code> | ||
+ | ::指定对其造成伤害的人机的团队名称,此处可填写「''[[RED]]''」、「''[[BLU]]''」或「''all''」。 | ||
+ | :<code><''damage''></code> | ||
+ | ::指定人机将要受到的伤害。如果设置为负数,则人机将会获得生命值(包括[[overheal/zh-hans|超量治疗]])。 | ||
+ | :<code><''burn''></code> | ||
+ | ::使人机燃烧。但不会受到任何后续燃烧伤害。 | ||
+ | ;例子: | ||
+ | :<code>bot_hurt -name joe -team red -damage 150</code>,效果为使名为 joe 的红队人机受到 150 点伤害。 | ||
|} | |} | ||
− | ==References== | + | == {{common string|Notes}} == |
− | <references/> | + | * MvM人机也可以使用{{code|nb_}}进行控制(比如使用{{code|nb_select}}和{{code|nb_warp_selected_here}}来把人机传送到特定的位置)。但这一功能不适用于TF人机。 |
+ | |||
+ | =={{common string|References}}== | ||
+ | <references/> | ||
− | [[Category:Customization]] | + | [[Category:Customization/zh-hans]] |
− | [[Category:Gameplay]] | + | [[Category:Gameplay/zh-hans]] |
Latest revision as of 07:30, 21 June 2024
“ | 人类队友可能会对你指手画脚,但这些没有灵魂的人机会吗?会。它们又不是瞎子。但他们又是哑巴,所以你的无能将会是它们入土都说不出来的秘密。
— 士兵
|
” |
人机 / Bot,又称机器人或电脑玩家,是服务器上被电脑控制的玩家。在军团要塞 2 中有两种人机:智能人机以及木偶人机。智能人机采用了复杂的人工智能编码,其目的是为了模拟玩家在游戏中的行为,可在未开启作弊的情况下使用。木偶人机没有人工智能编码,因此它们不会自动活动,但它们在游戏测试和训练的用途上很有帮助。木偶人机需要服务器开启作弊模式才能使用,并且此时也会禁用成就系统。
目录
基础智能人机
基础智能人机,或者称为“TFBot”,是为了模仿人类玩家的游戏行为而设计出来的,并且不能受玩家直接控制。同时,它们都是以随机方式选择兵种的。他们使用的是基于《求生之路》系列中生还者人机以及被感染者 AI 所使用的复杂人工智能代码[1]。添加智能人机不需要服务器开启作弊功能,所以可以借此完成各种成就;不过有一个例外:人机在被击杀后并没有死亡定格照;因此也无法让玩家通过智能人机来达成与死亡定格照相关的成就。此外,用奇异属性的武器杀死人机也不会增加武器的杀敌计数,除非武器应用了奇异升级部件:机器人消灭数,在这种情况下,杀敌数会添加到奇异部件上,而非武器本身。
智能人机具有从简单到专家的四个技术水平等级。Sigsegv对该技术水平差异进行了[1]。
智能人机在以下情况能够间接地被玩家进行一定程度的控制:
- 在准备阶段期间,被玩家准星所瞄准的任意一方人机都将做出嘲讽动作。
- 当玩家使用语音指令“医生!”时,附近的友方医生人机就会前来提供治疗。
- 当治疗玩家的医生人机的 ÜberCharge 就绪时,玩家使用“冲!冲!冲!”或者“激活 Ubercharge!”语音指令会让它立刻激活 ÜberCharge。
- 如果医生人机的治疗目标或它自身受到重创时,它会立刻激活自己的 ÜberCharge。
- 人机会尝试加入队友的同伴嘲讽(例如击掌!)或集体嘲讽(例如康茄舞)。
寻路
具备官方人机支持的地图
地图 | 游戏模式 | 文件名 |
---|---|---|
Altitude† | 攻防型 | cp_altitude
|
Dustbowl | 攻防型 | cp_dustbowl
|
Gorge | 攻防型 | cp_gorge
|
Gorge Event | 攻防型 | cp_gorge_event
|
曼恩断头庄(Mann Manor) | 攻防型 | cp_manor_event
|
Mercenary Park | 攻防型 | cp_mercenarypark
|
Mossrock | 攻防型 | cp_mossrock
|
Badlands | 控制点 | cp_badlands
|
Foundry | 控制点 | cp_foundry
|
Granary | 控制点 | cp_granary
|
Gullywash | 控制点 | cp_gullywash_final1
|
Metalworks | 控制点 | cp_metalworks
|
Process | 控制点 | cp_process_final
|
Snakewater | 控制点 | cp_snakewater_final1
|
Sunshine | 控制点 | cp_sunshine
|
Vanguard | 控制点 | cp_vanguard
|
Turbine | 夺旗 | ctf_turbine
|
Badlands | 山丘之王 | koth_badlands
|
Brazil | 山丘之王 | koth_brazil
|
Eyeaduct | 山丘之王 | koth_viaduct_event
|
Ghost Fort | 山丘之王 | koth_lakeside_event
|
Kong King | 山丘之王 | koth_king
|
Lakeside | 山丘之王 | koth_lakeside_final
|
尖笑乐园(Laughter) | 山丘之王 | koth_slaughter_event
|
Lazarus | 山丘之王 | koth_lazarus
|
腐烂之林(Moldergrove) | 山丘之王 | koth_undergrove_event
|
Moonshine Event | 山丘之王 | koth_moonshine_event
|
Nucleus | 山丘之王 | koth_nucleus
|
Probed | 山丘之王 | koth_probed
|
Sawmill | 山丘之王 | koth_sawmill
|
Slasher | 山丘之王 | koth_slasher
|
Viaduct | 山丘之王 | koth_viaduct
|
Badwater Basin | 推车 | pl_badwater
|
Barnblitz | 推车 | pl_barnblitz
|
血水之盆(Bloodwater) | 推车 | pl_bloodwater
|
Camber | 推车 | pl_camber
|
Brimstone | 推车 | pl_fifthcurve_event
|
禁运之境(Embargo)† | 攻防型 | pl_embargo
|
Enclosure | 推车 | pl_enclosure_final
|
Goldrush | 推车 | pl_goldrush
|
Gravestone | 推车 | pl_rumble_event
|
Hoodoo | 推车 | pl_hoodoo_final
|
Pier | 推车 | pl_pier
|
丧魂绝壁(Precipice)† | 推车 | pl_precipice_event_final
|
Swiftwater | 推车 | pl_swiftwater_final1
|
Thundermountain | 推车 | pl_thundermountain
|
Upward | 推车 | pl_upward
|
Pier | 推车 | pl_pier
|
Wutville† | 推车 | pl_wutville_event
|
† 蓝队的电脑玩家会在其中一个蓝队出生点内卡住。因此,蓝队仅可能在那个特定出生点阶段内完全碾压或几乎不损兵折将的情况下才能获胜。
在不支持人机的地图上使用人机
- 导航网格编辑需要启用作弊,因此要在控制台中键入“sv_cheats 1”。
- 使用“nav_generate”指令构建初始导航网格。
- 等待游戏生成 AI 路径,可在控制台中跟踪进度。
- 地图将重新加载。
- 选择性地调整生成的导航网格,进而添加缺失的数据并移除错误的数据。使用“nav_edit 1”进入导航网格编辑模式。
- 重新加载/重启服务器(可选,但如果跳过这一步则会禁用成就功能)。
- 打开控制台,如上所示输入“tf_bot_add <数量>”来添加人机。
警告:如果你在启用人机的情况下编辑导航网格,游戏很可能会崩溃。
除了每次在需要添加人机时输入“tf_bot_add <数量>”指令外,人机可以在任何已执行上述步骤的地图上使用,而不必重复这些步骤。
在控制点,山丘之王,推车和夺旗模式的地图上自动生成的导航网格的效果最佳。在曼恩之力地图上,人机会主动承担夺旗的任务,但无法使用钩爪或智能地使用它们经过的增益。
将控制台命令“tf_bot_offense_must_push_time”的值设置为 0 可以让人机在地图中对战,而并没有它们可以识别的目标,除非地图没有任何重生区域实体。
不支持官方人机的默认地图
· Hydro | · DeGroot Keep | · Hightower | · Frontier | · Pipeline | · Steel | · 2Fort | · 2Fort Invasion |
· Double Cross | · Landfall | · Sawmill(夺旗) | · Well(夺旗) | · 5Gorge | · Coldfront | · Fastlane | · Freight |
· Powerhouse | · Sinshine | · Well | · Yukon | · Egypt | · Gravel Pit | · Junction | · Mountain Lab |
· Snowplow | · SnowVille | · Snowfall | · Steel | · Standin | · Borneo | · Cactus Canyon | · Frontier |
· Hellstone | · Snowycoast | · Swiftwater | · Banana Bay | · Helltower | · Hightower | · Nightfall | · Pipeline |
· Badlands(竞技场) | · Byre | · Granary(竞技场) | · Lumberyard | · Nucleus(竞技场) | · Offblast | · Ravine | · Sawmill |
· Watchtower | · Well(竞技场) | · Harvest | · 闹鬼农场(Harvest Event) | · Highpass | · Maple Ridge Event | · Suijin | · Carnival of Carnage |
· Doomsday | · Cloak(控制点) | · Bigrock | · Coal Town | · Decoy | · Ghost Town | · Mannhattan | · Mannworks |
· Rottenburg | · Asteroid | · Foundry(夺旗) | · Gorge(夺旗) | · Hellfire | · Brickyard | · District | · Timbertown |
· Pit of Death | · Watergate |
智能人机指令
若要在已支持的地图上使用智能人机,服务器管理员应该在控制台中输入以下指令(有些指令可能需要将sv_cheats设置为 1 才能生效):
指令 | 说明 |
---|---|
tf_bot_add
|
该指令将在双方队伍中随机添加一个或多个随机兵种的智能人机。游戏还会在默认名字集合中随机挑选一个名字分配给该人机。
|
tf_bot_difficulty
|
定义所要加入游戏的人机的基技术等级。
|
tf_bot_fire_weapon_allowed
|
指定人机是否应该进行攻击。如果选择禁用,人机仍然可以使用某些不具备破坏性的武器,如医疗枪。但存在一个例外,即医生人机仍然会使用注射枪开火。此外,爆破手人机仍然可以引爆尚存的黏弹,但不会再放置新的黏弹。
|
tf_bot_force_class
|
如果设置为一个兵种名称,则所有人机都将作为该兵种重新生成。
|
tf_bot_force_jump
|
如果启用,则强制人机反复进行跳跃。
|
tf_bot_join_after_player
|
如果参数不为零,则人机将会在玩家加入游戏后才会跟随加入。该指令只适用于分配生成的人机。
|
tf_bot_keep_class_after_death
|
如果参数为零,则人机将在每次重生时都会重新选择兵种。
|
tf_bot_kick
|
该指令将会踢出单个或所有的智能人机。
|
tf_bot_kill
|
该指令将会杀死单个或所有的智能人机。
|
tf_bot_melee_only
|
指定人机是否应该只能使用近战武器。
|
tf_bot_prefix_name_with_difficulty
|
如果参数不为零,则会在人机名字前面附加上该人机的技术等级的前缀。
|
tf_bot_quota
|
指定游戏中 TFBot 的总数。该指令只会在tf_bot_quota_mode的参数为「fill 」或「match 」时生效。
|
tf_bot_quota_mode
|
指定人机的分配类型。
|
tf_bot_taunt_victim_chance
|
指定人机在杀死人类玩家后发起嘲讽的频率。
|
tf_bot_warp_team_to_me
|
将与你同队的人机传送到你的位置。需要sv_cheats 1 前置。
|
智能人机现况
智能人机现在已经全面发布[需要来源链接]。目前,在经过无帽更新后,所有的兵种的智能人机都已经能正常运作,包括曾经有漏洞的间谍人机。智能人机只能适用于大部分官方山丘之王地图、部分推车地图、攻防型地图Dustbowl和Gorge、夺旗地图,以及 曼恩断头庄(Mann Manor)(在后两种地图中,智能人机只能通过在控制台输入tf_bot_add指令来添加)。玩家通过一些操作在不支持的地图上也可以使用智能人机;但这些人机并不会模仿人类玩家的游戏行为。
人机无法在任何推车竞赛地图上正常运作,因为它们要么跳不过Hightower上的栏杆,要么被困在出生点中的随机角落里;而且人机还会在任意一个推车地图上开舞会(该情况在未来可能会改变)[需要来源链接]。
智能人机的行为
- 人机目前只能使用基础的装备配置(尽管可以通过自定义模组/插件来让人机获得非默认武器)。
- 简单难度的人机会很少会使用主武器以外的武器。而更高难度的人机会在主武器弹药耗尽后立即切换并使用它们的副武器,或者在距离不够的情况下用来补枪。
- 人机目前还无法使用特殊的跳跃操作(如火箭跳)或者搬运建筑。
- 人机在杀死玩家后,有几率立刻进行嘲讽,而且就算暴露在敌人火力下也会照做不误。而正在携带着情报的人机则不会出现这种行为。曼恩 vs. 机器模式里的机器人也存在有这类行为。
- 间谍人机(和玩家)在伪装状态时会被其它人机完全忽略。然而,在“触碰”到任何敌方人机、瘫痪建筑物、开火或隐形时,所有目击到这些情景的人机会将间谍人机(或玩家)暴露为间谍,并且不会忘记其样貌,除非间谍在暗地里更换了伪装形象、该目击且暴露出间谍的人机死亡,或者是间谍使用死亡之铃进行假死。
- 在非简单难度的游戏中,火焰兵人机会十分频繁地使用压缩气爆来反弹敌方的飞行物。
- 医生人机的治疗目标是存在有优先级的,在大部分时候,比起治疗狙击手(以及优先级更低的工程师),它们会选择优先治疗其它的兵种,就算使用了“医生!”语音命令指令也是如此。
- 医生人机更倾向于治疗机枪手、士兵、爆破手和火焰兵这类兵种,如果人类玩家也在游玩这类兵种,则医生会持续跟随治疗玩家。反之,如果人类玩家游玩上述以外的兵种,则医生会很少给玩家持续的治疗。
- 当医生人机受到伤害时,它会立刻部署 ÜberCharge(如果有的话)。曼恩 vs. 机器模式里的 Über 医生也有存在有这类行为。
- 除非首先受到了攻击,否则人机在准备阶段期间是不会攻击的(爆破手人机布置黏性炸弹除外)。
- 工程师人机不会升级自己的传送装置(甚至不会移除电子工兵),有时候在还未交火的状态下设置还不会修复自己的步哨枪。
- 工程师人机永远不会修复或升级友方工程师人机的建筑,除非该建筑挡住了该工程师人机的目标。
- 除了工程师、间谍和狙击手人机以外,其他的人机在攻防型或推车地图的准备阶段中会停留在出生点中不动。
- 当间谍人机被另一个人机(或玩家)发现时,它将不会再尝试背刺目标,而是转为使用左轮手枪并边开枪边撤退。
- 一旦爆破手人机获知了步哨枪的位置(一般是被这一步哨枪杀死后),它们会站在步哨枪的射程以外使用榴弹精确地瞄准并计算出合适的发射点,然后让榴弹准确地落在步哨枪的位置。不过,墙壁和天花板有时候可能会挡住榴弹的飞行路线。
- 狙击手人机在搜索范围内没有找到敌方目标时,则会使用“不行”这一语音命令。
- 友方的医生人机会治疗已伪装的敌方间谍。
漏洞
- 人机有时候可能会试图穿过墙壁等无法穿过的物体。
- 每当玩家/人机在隐身/解除隐身或伪装/解除伪装时,即使是背对着间谍的人机都会“目击”到身后的目标并转身攻击。但其原因并不是由玩家发出的任何声音(脚步声、各种武器的噪音等)所造成的。
- 尽管情况很少见,人机在使用工程师的传送装置时可能会站在传送装置的另一端上,并被卡住(不会自行移动)。
- 当人机使用语音命令(例如“间谍!”和“前进!”),文本栏里并不会显示这些命令的文字。
- 正在治疗玩家的医生人机不会躲避敌人的火力攻击或寻找医疗包,就算它们的生命值非常的低。
- 人机可以在嘲讽状态下移动,从而免疫了欢乐拳套的攻击。
- 医生人机在短时间内受到攻击时经常会使用骨锯而非注射枪来对付非近战范围内的敌人,甚至在极少数情况下会切换出它们的医疗枪。
- 医生人机在使用注射枪时并不会抬高瞄点来补偿针头的下坠。其原因可能可能是注射枪在智能人机的代码中没有被准确识别为非即时命中武器。
- 无论在什么游戏难度下,间谍人机都能够看到并跟踪已经隐身的间谍(智能人机或玩家)。
- 不论间谍的所伪装的团队是敌是友(仅限玩家,因为人机无法伪装成队友),只要这名间谍撞到了敌人,该敌人仍然会指认出他是间谍。
- 人机会遵守自动平衡规则。如果要在特定的团队中生成人机,那么你必须将
mp_teams_unbalance_limit
的参数设置为 0。 - 工程师人机可能会无视它们的建筑,直到建筑被摧毁。
- 机枪手人机有时会在弹药耗尽的情况下仍然试着用转轮机枪开火(尽管在低于高级的人机难度下,这种情况似乎会大量发生)。
- 当附近没有敌人时,败方的医生人机偶尔会在羞辱期间自杀。而玩家自身就算使用指令也没法实现这一行为。
- 将配置菜单的预览设置为蓝队时会导致红队人机出现在蓝队中。
- 目前,人机无法在以下类型的游戏模式或地图上运行,即使该地图具备生成的导航网格(但间谍和狙击手人机可能会有效)。
- 拿出近战武器的人机有时候不会切换回其他的武器,即使它们获取的弹药也还是一样。
- 要修复这种情况可以直接杀死它们或者随缘。
- 在丛林炼狱更新之后,用特定参数(例如
tf_bot_add 5 pyro blue normal
)生成的人机会直接死在重生室里。这种情况可以通过指令tf_bot_reevaluate_class_in_spawnroom 0
来阻止,并且需要将sv_cheats
的参数设置为 1。
智能人机的名字
智能人机通过编程后都拥有不同的名字,其中的许多名字都与《军团要塞2》、Valve 的其他作品,以及计算机编程有各种关联。还有许多名字是应Steam 论坛上所提出的请求而被采纳的。
未使用的人机名称
在泄露的 TF2 源代码版本中发现了以下的人机名称,其中包含由于未知原因而从未被使用的名称。
- John Spartan
- Leeloo Dallas Multipass
- Sho'nuff
- Bruce Leroy
- CAN YOUUUUUUUUU DIG IT?!?!?!?!
- Big Gulp, Huh?
- Stupid Hot Dog
- I'm your huckleberry
- The Crocketeer
玩家也可以给智能人机输入自定义的名字,例如,tf_bot_add heavyweapons blue "Blu Hoovy";结果为在蓝队中添加了一个名为“Blu Hoovy”的蓝队机枪手。
木偶人机
木偶人机没有AI程序,所以不会自行移动或操作。不过这类人机可以当作牵线木偶一样进行使用:玩家可以通过指令来操控它们的行为,比如例如跟随玩家并使用武器开火。木偶人机主要被用来参与测试,如果相应的指令操作恰当,也可利用它们创造出惊人的视觉效果。若要生成木偶人机,则必须将sv_cheats
的参数设置为 1。
木偶人机指令
下列指令并非全部有效;也可能省略了一些有效的指令。
这些指令有可能对智能人机生效,也可能无效。
注:只输入指令的主体部分而不输入参数部分并不会使指令生效,并将显示指令的当前设置和一段简短说明。
指令 | 说明 |
---|---|
bot
|
使用该指令将在特定团队中创建一个特定兵种和特定名字的人机。如果省略了团队或名字,则这些选项将会随机选择。
|
bot_changeclass
|
强制所有人机更换为指定的兵种类型。
|
bot_changeteams
|
让所有人机强制更换队伍。如果有一个人机在红队,那么执行指令后它将会被更换到蓝队,反之亦然。 |
bot_command
|
代表特定的人机发送特定的指令。
|
bot_dontmove
|
允许或禁止人机进行移动。当参数设置为 1 时,人机无法移动,但它们仍然可以转身和跳跃。注意配合指令bot_mimic 一起使用,可以将人机移动到特定区域并让它们停留在原地。
|
bot_forceattack
|
该指令将强制所有的人机以它们当前使用的任意武器自动进行攻击。如果bot_forceattack2 的参数设置为 0,那么人机将执行主要攻击(primary_fire);如果参数为 1,那么人机将执行辅助攻击(secondary_fire)。
请注意,如果
|
bot_forceattack2
|
当bot_forceattack 参数设置为 1 时,所有人机都将以它们当前使用的任意武器执行辅助攻击。
|
bot_forceattack_down
|
指定人机的攻击方式,共有「点射」和「连射」这两种方式。如果参数设置为 0,人机就会表现得像是连续点击攻击键一样(适用于黏性炸弹发射器)。如果设置为 1,那么人机会表现得像是按住攻击键一样(适用于转轮机枪)。
|
bot_forcefireweapon
|
强制所有拥有指定武器的人机切换到此武器并进行攻击。
如果有人机没有此种武器,则不会对其有任何影响(除非它正在使用其他武器进行攻击,在这种情况下它将会停止攻击)。
|
bot_jump
|
强制所有人机反复进行跳跃。
|
bot_crouch
|
强制所有人机持续蹲伏。
|
bot_kick
|
按其名字来移除某一个人机,或者移除整一队人机,又或者移除所有的人机。
|
bot_kill
|
击杀指定的人机。
|
bot_mirror
|
指定的人机将会镜像了玩家的装备配置(兵种、饰品和武器)。该指令存在有部分漏洞;例如,如果一个爆破手玩家装备了靴子和任意盾牌,镜像人机将仍会持有榴弹发射器和黏性炸弹发射器,尽管其模型上已经显示有靴子和盾牌。镜像人机死亡后将不会保留之前的配置,必须要再次使用bot_mirror 才能恢复镜像。
|
bot_mimic
|
人机将会通过 index 来执行玩家的用户命令行,即模仿玩家的行为。
人机将会执行玩家发出的所有按键行为,包括模仿玩家的移动、转身、跳跃、攻击等。但人机不会模仿玩家的呼叫医生、切换武器和嘲讽的行为。 请注意,该指令的效果将会覆盖指令
|
bot_mimic_inverse
|
指定人机与玩家反向移动;玩家向左移动时,人机将会向右移动,玩家向前移动则人机向后移动,以此类推。
人机的视角方向则不受其影响。
|
bot_mimic_yaw_offset
|
指定人机的朝向角度。
人机将会朝向一个指定的方向,其方向根据玩家的位置而定。默认设置为 180,此时所有的人机都会面朝着玩家。而将其设置 0 时,所有人机都会面朝玩家所朝向的方向。
|
bot_randomnames
|
给予人机的随机的名字。
|
bot_refill
|
为所有的人机补满弹药(包括工程师的金属)和生命值。
|
bot_saveme
|
让所有人机呼叫医生,相当于向所有人机发出了指令bot_command <name> "voicemenu 0 0" 。
|
bot_selectweaponslot
|
强制一个人机切换到指定的武器栏位。若要指定单独某个人机切换武器,请改用指令cc_bot_selectweapon 。
|
bot_teleport
|
将一个指定的人机传送到指定的坐标上。
在控制台中输入
|
bot_whack
|
将玩家造成的致命伤害给予指定的人机。
该指令基本是以当前选择的武器来秒杀人机的,可能是在开发过程中进行测试所用的。值得注意的是,只有当
|
cc_bot_selectweapon
|
强制人机切换到指定的武器栏位。
|
bot_hurt
|
对人机造成指定的伤害,可面向团队或全体执行。
|
注释
- MvM人机也可以使用
nb_
进行控制(比如使用nb_select
和nb_warp_selected_here
来把人机传送到特定的位置)。但这一功能不适用于TF人机。