Difference between revisions of "Bots/zh-hans"

From Team Fortress Wiki
Jump to: navigation, search
m
(improved)
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{DISPLAYTITLE:电脑玩家}}
+
{{trans}}
[[Image:Tr_dustbowl0003.png|right|thumb|300px|一个[[Soldier/zh-hans|士兵]]机器人在[[Dustbowl (Training)/zh-hans|Dustbowl 训练]]地图中活动。]]
+
{{DISPLAYTITLE:人机}}
{{correction}}
+
[[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|机器人]]。}}
  
{{hatnote|这个页面是关于在游戏中的军团要塞 2 的电脑玩家。对于[[Team Fortress Wiki/zh-hans|军团要塞官方维基百科]]上的电脑用户,请参阅[[Help:Group_rights#Bots|机器人]]。对于介绍在[[Team Fortress Classic/zh-hans|《军团要塞:经典》]]的电脑玩家,请参阅[[Bots (Classic)/zh-hans|电脑玩家(经典)]]。对于介绍在[[Mann vs. Machine (update)/zh-hans|{{common strings|Mann vs. Machine}}]]的机器人,请参阅[[Robots/zh-hans|机器人]]。关于别的用处,请参见[[Robot/zh-hans|机器人]]。}}
+
{{Quotation|'''士兵'''|人类队友可能会批评你,但这些没有灵魂的人机会吗?会。它们又不是瞎子。但他们是哑巴,所以你的无能将会是它们入土都说不出来的秘密。}}
  
{{Quotation|'''机枪手(电脑玩家)'''描述自己的钢铁拳头|我的拳头可是用钢铁做的!|sound=Heavy_specialweapon01.wav}}
+
'''人机 / Bot''',又称机器人或电脑玩家,是服务器上[https://support.steampowered.com/kb_article.php?ref=9073-WOHK-7760 被电脑控制的玩家]。在军团要塞 2 中有两种人机:智能人机以及木偶人机。智能人机采用了复杂的人工智能编码,其目的是为了模拟玩家在游戏中的行为,可在未开启[[cheats/zh-hans|作弊]]的情况下使用。木偶人机没有人工智能编码,因此它们不会自动活动,但它们在游戏测试和训练的用途上很有帮助。木偶人机需要服务器开启作弊模式才能使用,并且此时也会禁用[[achievements/zh-hans|成就]]系统。
  
一个 BOT,又称机器人或电脑玩家,是服务器上[https://support.steampowered.com/kb_article.php?ref=9073-WOHK-7760 被电脑控制的玩家]。在军团要塞 2 中有两种'''机器人''':智能机器人以及木偶机器人。智能机器人使用了先进的人工智能代码进行编程,因此它们能学习玩家们在游戏中的动作,并且不需要开启[[Cheats/zh-hans|作弊]]模式来使用;木偶机器人没有人工智能,因此它们不会自动进行活动,但是它们对游戏测试以及训练有着显著帮助。若要使用木偶机器人,则必须在建立服务器时开启作弊模式,此时将不能完成[[achievements/zh-hans|成就]]
+
== 基础智能人机 ==
 +
智能机器人能够学习玩家的动作并且不会受玩家直接控制。同时,它们都是以随机方式选择[[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|详细的阐述]
智能机器人能够学习玩家的动作并且不会受玩家直接控制。同时,它们都是以随机方式选择[[classes/zh-hans|兵种]]的。他们使用复杂的人工智能代码编程,即使用''求生之路''一系列中生还者机器人以及被感染者机器人的代码设置。<ref>[http://teamfortress.com/post.php?id=3279 军团要塞官方日志 - "Erectin a dispenser"]</ref>添加智能机器人不需要服务器开启作弊模式,因此可以借此完成各种成就;不过有一个例外:机器人被杀后不会见到[[Deathcam/zh-hans|死亡摄像]];因此,玩家不能通过智能机器人得到与死亡摄像相关的成就。还有,用[[Strange/zh-hans|奇异]]属性的武器杀死机器人不会增加武器的杀敌计数,除非武器有着[[Strange Parts/zh-hans|奇异武器升级部件]]:机器人消灭数,则使杀敌数加到部件上而不是武器本身。
 
  
智能机器人在以下情况能够间接被玩家进行一定程度的控制:
+
智能人机在以下情况能够间接地被玩家进行一定程度的控制:
* 在[[Setup time/zh-hans|准备阶段]]内,任何被你准心指着的机器人都会做出[[taunt/zh-hans|嘲讽]]
+
* 在[[Setup time/zh-hans|准备阶段]]期间,被玩家准星所瞄准的任意一方人机都将做出[[taunt/zh-hans|嘲讽]]动作。
* 当你使用 "医生!" [[Voice commands/zh-hans|语音指令]]时,附近的己方[[Medic/zh-hans|医生]]机器人会为你治疗。
+
* 当玩家使用[[Voice commands/zh-hans|语音指令]]“医生!”时,附近的友方[[Medic/zh-hans|医生]]人机就会前来提供治疗。
* 当治疗你的医生机器人的[[ÜberCharge/zh-hans|超级冲锋]]就绪时,使用 "冲!冲!冲!" 或者 "激活 Ubercharge!" 语音指令会让它立刻启动超级冲锋。
+
* 当治疗玩家的医生人机的 [[ÜberCharge/zh-hans|ÜberCharge]] 就绪时,玩家使用“冲!冲!冲!”或者“激活 Ubercharge!”语音指令会让它立刻激活 ÜberCharge。
* 受到重伤的医生机器人会马上启用自己的超级冲锋。
+
* 如果医生人机的治疗目标或它自身受到重创时,它会立刻激活自己的 ÜberCharge。
* 机器人会试图参与同伴式嘲讽(例如[[High Five!/zh-hans|击掌]]或[[Conga/zh-hans|康茄舞]])。
+
* 人机会尝试加入队友的同伴嘲讽(例如{{item link|High Five!}})或集体嘲讽(例如{{item link|Conga}})。
  
===目前智能机器人的情况===
+
=== 寻路 ===
智能机器人目前还算是在测试阶段而且随着每次游戏更新智能机器人都会得到一定改进。目前,经过[[Hatless Update/zh-hans|无帽子更新]],所有的兵种的智能机器人都能正常运作,包括曾经有问题的[[Spy/zh-hans|间谍]]。智能机器人只能在大部分官方的[[King of the Hill/zh-hans|山丘之王]]地图、某些[[Payload/zh-hans|推车]]地图、攻防型地图 [[Dustbowl/zh-hans|Dustbowl]] 和 [[Gorge/zh-hans|Gorge]],[[Capture the Flag/zh-hans|夺旗]]地图,以及 [[Mann Manor/zh-hans|Mann Manor]] 上正常工作(在尾段两个地图中,智能机器人只能通过在控制台输入 tf_bot_add 指令来添加)。其他地图也可以使用这个方法添加机器人;但它们无法正常行动。
+
====具备官方人机支持的地图====
 +
{{Maps with bot support}}
  
''注:目前已经有一些较为流行的地图被添加了[http://forums.steampowered.com/forums/showthread.php?t=1264447 一个提前制造的机器人路线套装]''
+
====在不支持人机的地图上使用人机====
 +
{{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>”指令外,人机可以在任何已执行上述步骤的地图上使用,而不必重复这些步骤。
智能机器人都有不同的名字,很多指着''军团要塞 2'',Valve 其它的游戏,以及电脑编程。很多这些名字在 [[Steam Users' Forums|Steam 论坛]]上被要求的。<!--If you encounter other names that aren't on the list, please add them-->
 
{{Bot names}}
 
  
====在不支持机器人的地图中添加机器人的步骤====
+
在控制点,山丘之王,推车和夺旗模式的地图上自动生成的导航网格的效果最佳。在[[Mannpower/zh-hans|曼恩之力]]地图上,人机会主动承担夺旗的任务,但无法使用{{item link|Grappling Hook}}或智能地使用它们经过的增益。
{{hatnote| 相关文章:{{vdc|Navigation Meshes}}}}
 
# 在控制台中输入 "<kbd>sv_cheats 1</kbd>"。
 
# 在控制台中输入 "<kbd>nav_generate</kbd>"。
 
# 等待系统为地图绘制路径点。
 
# 重新载入地图(如果路径点已保存则不用重复之前步骤)。
 
# 可选择修改绘制的路径来增入漏掉的数据并移除错误的数据。使用 "<kbd>nav_edit 1</kbd>" 来进入编辑模式。
 
# 重载服务器(可选的,但是若不做,成就会仍然被禁用)。
 
# 打开控制台,输入''"<kbd>tf_bot_add <数目></kbd>"''来选择添加机器人的数目。
 
'''警告:如果开启着机器人时候编辑路径,游戏很可能会崩溃。'''
 
  
机器人可以在用上方绘制过路径的地图上使用,并不需要每一次都使用这些指令,除了 ''"<kbd>tf_bot_add <数目></kbd>"'' 来增入机器人。
+
将控制台命令“tf_bot_offense_must_push_time”的值设置为 0 可以让人机在地图中对战,而并没有它们可以识别的目标,除非地图没有任何重生区域实体。
  
机器人最好在控制点,山丘之王,推车,和夺旗地图上运用。在[[Mannpower/zh-hans|曼恩之力]]地图上,机器人会当作夺旗,但不会使用[[Grappling Hook/zh-hans|钩爪]]或机智地使用拿到的增益道具。
+
==== 不支持官方人机的默认地图 ====
 
+
{{Maps with no bot support}}
====官方支持机器人的地图====
 
* [[Dustbowl/zh-hans|Dustbowl]]
 
* [[Mann Manor/zh-hans|Mann Manor]]
 
* [[Badlands (KOTH)/zh-hans|Badlands(山丘之王)]]
 
* [[Lakeside/zh-hans|Lakeside]]
 
* [[Nucleus (KOTH)/zh-hans|Nucleus(山丘之王)]]
 
* [[Sawmill (KOTH)/zh-hans|Sawmill(山丘之王)]]
 
* [[Viaduct/zh-hans|Viaduct]]
 
* [[Badwater Basin/zh-hans|Badwater Basin]]
 
* [[Gold Rush/zh-hans|Gold Rush]]
 
* [[Hoodoo/zh-hans|Hoodoo]]
 
* [[Thunder Mountain/zh-hans|Thunder Mountain]]
 
* [[Upward/zh-hans|Upward]]
 
* [[Gorge/zh-hans|Gorge]]
 
* [[Barnblitz/zh-hans|Barnblitz]]
 
* [[Kong King/zh-hans|Kong King]]
 
 
 
====智能机器人的行为====
 
* 机器人目前只会装备基础的[[loadout/zh-hans|配置]]。
 
* 简单难度上的机器人会很少使用主武器之外的武器。更高等级的机器人会在主武器弹匣用完后换到并使用它们的副武器。
 
* [[Spy/zh-hans|间谍]]和[[Sniper/zh-hans|狙击手]]机器人不会在简单模式上出现,而只能在普通和更高的等级中出现。
 
* 目前机器人还不懂得使用特殊的[[Jumping/zh-hans|跳跃]],例如[[Jumping/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|隐形]]时,所有看到的机器人会将机器人/玩家称为间谍并不会忘记他,除非间谍在暗地里换伪装,暴露间谍的机器人死亡,或间谍用[[Dead Ringer/zh-hans|死亡之铃]]装死。
 
* [[Pyro/zh-hans|火焰兵]]机器人会在非简单难度的游戏里十分频繁地使用[[Compression blast/zh-hans|压缩空气爆破]]来反弹敌方的飞行物。
 
* [[Medic/zh-hans|医生]]机器人大部分时候会先治疗其它的兵种而不是狙击手(和到更小的程度,工程师),就算 "医生!" 的语音指令被使用。
 
* 医生机器人通常喜欢治疗机枪手,士兵,爆破手,和火焰兵,若被玩家玩儿的。如果没有人类玩家玩儿其中的一个兵种,他则很少会被一直治疗着。
 
* 超级冲锋准备就绪的医生机器人会在受伤时启用超级冲锋。[[Mann vs. Machine (game mode)/zh-hans|曼恩 vs. 机器模式]]里的 [[Über Medic/zh-hans|Über 医生]]有这种行为。
 
* 如果一个伪装的间谍机器人在专家难度上见到敌人隐形,它会能够跟着他们,就算他们完全隐形并没有显示轮廓。
 
* 机器人在准备阶段中不会开火除非它们先被攻击的(除了[[Demoman/zh-hans|爆破手]]机器人放下黏性炸弹)。
 
* 工程师机器人不会升级自己的传送装置或从它移除电子工兵,有时还不会修复自己的步哨枪就算不处于交火下。
 
* 除了工程师,间谍,和狙击手,机器人在[[Attack/Defend/zh-hans|攻/防]]或[[Payload/zh-hans|推车]]地图上会留在出生点上不动。
 
* 间谍机器人,当被另一个机器人(或玩家)看到时,不会试图背刺而反会换到[[Revolver/zh-hans|左轮手枪]]边射击边撤退。
 
  
===智能机器人指令===
+
=== 智能人机指令 ===
为了在能使用智能机器人的地图中添加机器人,服务器管理员应在控制台中输入以下命令:
+
{{Hatnote|有关更全面的指令列表,请见{{vdc|List of TF2 console commands and variables|军团要塞2控制台指令和变量一览表}}}}
 +
若要在已支持的地图上使用智能人机,服务器管理员应该在控制台中输入以下指令(有些指令可能需要将<kbd>sv_cheats</kbd>设置为 1):
  
 
{| class="wikitable grid"
 
{| class="wikitable grid"
Line 84: Line 56:
 
! 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''>]</code>
+
;格式:<code>tf_bot_add [<''count''>] [<''class''>] [<''team''>] [<''difficulty''>] [<''name''>] [''noquota'']</code>
  
;参数说明:
+
;参数:
 
:<code><''count''></code>
 
:<code><''count''></code>
::加上这个参数会为服务器添加指定数量的机器人。如果不加这个参数,则每次只会增加一个机器人。
+
::添加指定数量人机。如果省略该参数,则每次只会添加一个人机。
::使用这个参数时,如果添加的数目比服务器剩余位置还要多,例如一个24人服务器中有1名玩家,此时要想添加的机器人数目为25,那么只会在服务器中添加23个机器人。
+
::如果玩家试图添加超过服务器最大玩家数量的人机,则会无法生效并在控制台中显示一条错误消息。
 +
::如果<kbd>mp_teams_unbalance_limit</kbd>太低,则往一个队伍添加更多的人机仍然有可能会触发自动平衡,从而使两队人数相等。
  
 
:<code><''class''></code>
 
:<code><''class''></code>
::此处所要填写的为机器人的兵种英文名称,例如''[[Demoman]]'', ''[[Engineer]]'', ''[[Heavy]]Weapons'', ''[[Medic]]'', ''[[Pyro]]'', ''[[Scout]]'', ''[[Soldier]]'', ''[[Sniper]]''或是''[[Spy]]''
+
::指定人机所选兵种的英文名称,其中''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]]''''[[SoldierSoldier]]''''[[Soldier/zh-hans|Soldier]]''''[[Spy/zh-hans|Spy]]''
  
 
:<code><''team''></code>
 
:<code><''team''></code>
::此处要填写的是想要机器人加入的队伍英文名称,例如''[[red]]''或者''[[blue]]''。
+
::指定人机所加入的队伍的英文名称,其中''team''处可以填写''[[red/zh-hans|red]]''或者''[[blue/zh-hans|blue]]''。
 +
 
 +
:<code><''difficulty''></code>
 +
::设置人机的难度等级,其中''difficulty''处可以填写''easy''(简单)、''normal''(普通)、''hard''(困难)或''expert''(专家)。
  
:<code><''difficulty></code>
+
:<code><''name''></code>
::此处填写的是机器人的难度等级,例如''easy'', ''normal''或者''hard''。
+
::设置所连接的人机的名字。
  
;例子: <code>tf_bot_add red 3 heavyweapons easy</code>意为在地图中为红队添加3个简单的重机枪手机器人。
+
:<code>''noquota''</code>
 +
::如果存在明确的‘noquota’短语,则人机将会被排除在人机配额管理系统之外。详见<code>tf_bot_quota</code>。
 +
 
 +
;例子:输入<code>tf_bot_add red 3 heavyweapons easy</code>可以在红队添加三个简单难度的机枪手人机。
 
|-
 
|-
|{{nw|<big>'''tf_bot_difficulty'''</big>}}
+
|{{nw|<big>'''<code>tf_bot_difficulty</code>'''</big>}}
|用以选择机器人的技能等级。 
+
|定义所要加入游戏的人机的基技术等级。
  
;指令语法: <code>tf_bot_difficulty <''level''></code>
+
;格式:<code>tf_bot_difficulty <''level''></code>
  
;参数说明:
+
;参数:
 
:<code><''level''></code>
 
:<code><''level''></code>
::选择机器人的技能等级,用数字代替,例如: 0为简单, 1为普通, 2为困难, 3为专家。默认等级为"普通" (1)。
+
::设置人机的的技术难度等级,以数字表示。取值分别为: 0 表示简单, 1 表示普通, 2 表示困难, 3 表示专家。默认等级为“普通”(1)。
  
;例子: <code>tf_bot_difficulty 2</code>意为将所有机器人的等级设置成"困难"。
+
;例子:<code>tf_bot_difficulty 2</code>可以将该指令执行后所创建的所有人机的难度设置为“困难”。
 
|-
 
|-
|{{nw|<big>'''tf_bot_force_class'''</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_force_class <''class''></code>
+
;格式:<code>tf_bot_fire_weapon_allowed <''integer''></code>
  
;参数说明:
+
;参数:
 +
:<code><''integer''></code>
 +
::1 或 0。默认为 1(启用武器)。
 +
 
 +
;例子:<kbd>tf_bot_fire_weapon_allowed 0</kbd>可以禁用人机的武器,除了极个别例外。
 +
|-
 +
|{{nw|<big>'''<code>tf_bot_force_class</code>'''</big>}}
 +
|如果设置为一个兵种名称,则所有人机都将作为该兵种重新生成。
 +
 
 +
;格式:<code>tf_bot_force_class <''class''></code>
 +
 
 +
;参数:
 
:<code><''class''></code>
 
:<code><''class''></code>
::''class''处可以填写以下职业名称''[[Demoman]]'', ''[[Engineer]]'', ''[[Heavy]]Weapons'', ''[[Medic]]'', ''[[Pyro]]'', ''[[Scout]]'', ''[[Soldier]]'', ''[[Sniper]]''或是''[[Spy]]''。默认情况下是随机选择兵种。
+
::''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]]''''[[SoldierSoldier]]''''[[Soldier/zh-hans|Soldier]]''''[[Spy/zh-hans|Spy]]''。默认为“”(即空白)。
  
;例如: <code>tf_bot_force_class medic</code>意为所有机器人都会选择医生。
+
;例如:<code>tf_bot_force_class medic</code>可以让所有人机作为医生重新生成。
 +
|-
 +
|{{nw|<big>'''<code>tf_bot_force_jump</code>'''</big>}}
 +
|If enabled, forces bots to repeatedly jump over and over.
 +
 
 +
;Syntax: <code>tf_bot_force_jump <''integer''></code>
 +
 
 +
;Parameters:
 +
:<code><''integer''></code>
 +
::Either 1 or 0. Default is 0 (disabled).
 +
 
 +
;Example: <kbd>tf_bot_force_jump 1</var> will force AI bots to repeatedly jump.
 
|-
 
|-
 
|{{nw|<big>'''tf_bot_join_after_player'''</big>}}
 
|{{nw|<big>'''tf_bot_join_after_player'''</big>}}
Line 197: Line 198:
 
|}
 
|}
  
==木偶机器人==
+
===目前智能机器人的情况===
木偶机器人没有AI程序所以不会自行运动。这类机器人就像牵线木偶一样,玩家可以通过指令来控制他们的行为,例如跟随玩家动作或是开火。木偶机器人只要被用于测试方面,如果使用恰当的指令,还可利用它们制作惊人的视觉效果。
+
智能机器人目前还算是在测试阶段而且随着每次游戏更新智能机器人都会得到一定改进。目前,经过[[Hatless Update/zh-hans|无帽子更新]],所有的兵种的智能机器人都能正常运作,包括曾经有问题的[[Spy/zh-hans|间谍]]。智能机器人只能在大部分官方的[[King of the Hill/zh-hans|山丘之王]]地图、某些[[Payload/zh-hans|推车]]地图、攻防型地图 [[Dustbowl/zh-hans|Dustbowl]] 和 [[Gorge/zh-hans|Gorge]],[[Capture the Flag/zh-hans|夺旗]]地图,以及 [[Mann Manor/zh-hans|Mann Manor]] 上正常工作(在尾段两个地图中,智能机器人只能通过在控制台输入 tf_bot_add 指令来添加)。其他地图也可以使用这个方法添加机器人;但它们无法正常行动。
===木偶机器人指令===
 
并不是所有指令都有效果,但为了明确,下面列表中列出了所有的指令。
 
  
'': 只输入指令的主体部分但不输入参数部分时,并不会使指令生效,而且还会得到个间接的指令说明。''
+
''注:目前已经有一些较为流行的地图被添加了[http://forums.steampowered.com/forums/showthread.php?t=1264447 一个提前制造的机器人路线套装]''。
 +
 
 +
====智能机器人的行为====
 +
* 机器人目前只会装备基础的[[loadout/zh-hans|配置]]。
 +
* 简单难度上的机器人会很少使用主武器之外的武器。更高等级的机器人会在主武器弹匣用完后换到并使用它们的副武器。
 +
* [[Spy/zh-hans|间谍]]和[[Sniper/zh-hans|狙击手]]机器人不会在简单模式上出现,而只能在普通和更高的等级中出现。
 +
* 目前机器人还不懂得使用特殊的[[Jumping/zh-hans|跳跃]],例如[[Jumping/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|隐形]]时,所有看到的机器人会将机器人/玩家称为间谍并不会忘记他,除非间谍在暗地里换伪装,暴露间谍的机器人死亡,或间谍用[[Dead Ringer/zh-hans|死亡之铃]]装死。
 +
* [[Pyro/zh-hans|火焰兵]]机器人会在非简单难度的游戏里十分频繁地使用[[Compression blast/zh-hans|压缩空气爆破]]来反弹敌方的飞行物。
 +
* [[Medic/zh-hans|医生]]机器人大部分时候会先治疗其它的兵种而不是狙击手(和到更小的程度,工程师),就算 "医生!" 的语音指令被使用。
 +
* 医生机器人通常喜欢治疗机枪手,士兵,爆破手,和火焰兵,若被玩家玩儿的。如果没有人类玩家玩儿其中的一个兵种,他则很少会被一直治疗着。
 +
* 超级冲锋准备就绪的医生机器人会在受伤时启用超级冲锋。[[Mann vs. Machine (game mode)/zh-hans|曼恩 vs. 机器模式]]里的 [[Über Medic/zh-hans|Über 医生]]有这种行为。
 +
* 如果一个伪装的间谍机器人在专家难度上见到敌人隐形,它会能够跟着他们,就算他们完全隐形并没有显示轮廓。
 +
* 机器人在准备阶段中不会开火除非它们先被攻击的(除了[[Demoman/zh-hans|爆破手]]机器人放下黏性炸弹)。
 +
* 工程师机器人不会升级自己的传送装置或从它移除电子工兵,有时还不会修复自己的步哨枪就算不处于交火下。
 +
* 除了工程师,间谍,和狙击手,机器人在[[Attack/Defend/zh-hans|攻/防]]或[[Payload/zh-hans|推车]]地图上会留在出生点上不动。
 +
* 间谍机器人,当被另一个机器人(或玩家)看到时,不会试图背刺而反会换到[[Revolver/zh-hans|左轮手枪]]边射击边撤退。
 +
 
 +
====Bugs====
 +
* Bots may try to walk/shoot through unmovable objects such as walls.
 +
* Whenever a player/bot cloaks/decloaks or disguises/undisguises, the bots will 'see' players who are behind them and turn around, even if out of the bot's [[field of view]]. Note that this isn't due to any sounds made by the player (footsteps, miscellaneous weapon noises, etc.).
 +
* Though rarely, bots may stand inside one another during usage of an Engineer's Teleporter, and get stuck (can't move).
 +
* When bots use [[voice commands]] (such as "Spy!" and "Move Up!"), text versions of the voice commands do not display.
 +
* A [[Medic]] bot who is [[healing]] a player will not avoid enemy fire or collect [[health pickups]], even if he is at critically low health.
 +
* Bots are able to move while taunting, making the [[Holiday Punch]] ineffective.
 +
* Recently attacked Medic bots will often fail to use their [[Syringe Gun]] to deal with enemies at non-[[melee]] range, instead switching to their [[Bonesaw]], or even to their [[Medi Gun]] on extremely rare occasions.
 +
* Medic bots will fail to lead their aim or to compensate for gravity while firing the Syringe Gun. This may be due to the Syringe Gun not being properly identified as a non-[[hitscan]] weapon in the bot AI code.
 +
* Spy bots are able to see and follow cloaked Spies (AI or player) should one give himself away, regardless of difficulty level.
 +
* Even if a Spy is disguised as a class of his team (player only, as bots will never do this), enemies will still point him out as a Spy should he bump into an enemy.
 +
* Bots abide by Auto-balance rules. To be able to spawn bots on a specific team, you must set {{cvar|mp_teams_unbalance_limit}} to 0.
 +
* Engineer bots may ignore their [[buildings]] until they're destroyed.
 +
* Heavy bots will sometimes try to fire their Minigun even when out of ammo. (Although it seems to occur abundantly when the bot difficulty is set below Advanced)
 +
* Medic bots on the losing team will occasionally commit suicide during [[Humiliation]] when there are no enemies nearby. Players are unable to do the same, even using commands.
 +
* Setting the loadout menu's preview to BLU will cause RED bots to appear BLU.
 +
* Currently, bots do not work on the following types of game modes or maps, even with a generated navigation mesh. (Spies and Snipers may work, though.)
 +
** [[Arena]] and [[Versus Saxton Hale]] Modes <small>{{tooltip|NOTE|Bots will only move after being attacked or approached, and will still stay in spawn indefinitely. Snipers and Spies always work, and Engineers will start to work once the Control Point is unlocked. You can play a normal working game if you force the Sniper or Spy class with the command tf_bot_force_class}}</small>
 +
** [[Payload#Payload Race|Payload Race]] <small>{{tooltip|NOTE|Only Engineers, Snipers, and Spies will leave spawn.}}</small>
 +
** [[Mann Vs. Machine (game mode)|Mann Vs. Machine]] <small>{{tooltip|NOTE|While the actual robot team works, any player-sided bots rarely work. They know to open fire on the enemy team though, and on occasion a bot may step through a player-placed teleporter, but only one or two at most. Spies always work though, so it's possible to play with many Spies on your side that function properly. Engineer bots may also be used, they behave like the engineer bots featured in Mann vs Machine}}</small>
 +
** [[Special Delivery (game mode)|Special Delivery]]
 +
** [[Robot Destruction]]
 +
** [[Cactus Canyon]] <small>{{tooltip|NOTE|Section 2 is not being mapped in the navigation mesh.}}</small>
 +
** [[Mannpower]] <small>{{tooltip|NOTE|Cannot use grappling hooks, or properly use powerups.}}</small>
 +
** [[PASS Time]] <small>{{tooltip|NOTE|Only Spies and Snipers will leave spawn, and they won't pick up or follow the ball. The ball can be passed to them, though.}}</small>
 +
** [[Player Destruction]] <small>{{tooltip|NOTE|Again, only Spies and sometimes Snipers will leave spawn, waiting outside the enemy's spawn while disguised if no human players are present.}}</small>
 +
** [[Snowycoast]] <small>{{tooltip|NOTE|The RED team will not leave spawn or setup a defence around the cart, and the BLU team will get stuck on a wall in attempting to push the cart. Spies on the BLU team will not move at all.}}</small>
 +
** [[Snowplow]] <small>{{tooltip|NOTE|The RED team will not leave spawn and setup a defense during setup time, and the BLU team will attempt to push the train as if it were a Payload. Section 2 is not being mapped in the navigation mesh.}}</small>
 +
** [[Byre]] <small>{{tooltip|NOTE|Only Engineers will leave spawn.}}</small>
 +
** [[Nightfall]] and [[Pipeline]] <small>{{tooltip|NOTE|Only section 3 is mapped in the navigation mesh.}} </small>
 +
** [[Hassle Castle]] <small>{{tooltip|NOTE|RED bots will work perfectly fine, but BLU bots will never leave spawn, with the exception of Scouts and Spies.}}</small>
 +
* Bots that have their [[Melee]] weapons out will occasionally not switch to their other weapons, even if they pick up ammo.
 +
** This can be fixed by either killing them or just randomly.
 +
* After the [[Jungle Inferno Update]], bots spawned with specific parameters (example:{{cvar|tf_bot_add 5 pyro blue normal}}) will die in their spawnrooms. This can be prevented with the command: {{cvar|tf_bot_reevaluate_class_in_spawnroom 0}}, which requires setting {{cvar|sv_cheats}} to 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"
Line 208: Line 276:
 
! class="header" | 说明
 
! class="header" | 说明
 
|-
 
|-
|{{nw|<big>'''bot'''</big>}}
+
|{{nw|<big>'''<code>bot</code>'''</big>}}
|使用这个指令时会为服务器中添加一个机器人,如果没有明确参数设定时,机器人则会随机选择的兵种与团队。
+
|使用该指令将在特定团队中创建一个特定兵种和特定名称的人机。如果省略了团队或名称,则这些选项将会随机选择。
  
;指令语法: <code>bot -team <''teamname/number''> -class <''classname''> -name <''botname''></code>
+
;格式:<code>bot [<''teamname/number''>] [<''classname''>] [<''name''>] [<''number''>]</code>
  
;参数说明:
+
;参数:
:<code>-team ''teamname/number''</code>
+
:<code><''number''></code>
::指定机器人的添加数目与加入的团队。''name/number''可以设置为''[[RED]]''或是''1''''[[BLU]]''或是''0''
+
::指定要添加的人机的数量。
:<code>-class ''classname''</code>
+
:<code><''teamname/number''></code>
::''classname''可设置为''[[Demoman]]'', ''[[Engineer]]'', ''[[Heavy]]Weapons'', ''[[Medic]]'', ''[[Pyro]]'', ''[[Scout]]'', ''[[Soldier]]'', ''[[Sniper]]''以及''[[Spy]]''
+
::指定人机所加入的团队的名称或编号,此处可以填写「''[[RED/zh-hans|RED]]''」或「''1''」、「''[[BLU/zh-hans|BLU]]''」或「''0''」。
:<code>-name ''botname''</code>
+
:<code><''classname''></code>
::''botname''可以设置为任何参数。如果出现同名的机器人,则会在所有同名机器人前面增加一个数字来区分彼此(从1开始),从最早加入的那个机器人开始编号。例如, joe, (1)joe, (2)joe, 等等。如果不指定名字,则所有加入的机器人都已"bot"加上数字进行命。数字从01开始编号; 例如,第一个加入的机器人名字为 bot01,第二个为bot02,后面以此类推。
+
::指定人机的兵种类型,此处可以填写「''[[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>bot -team red -class Engineer -name joe</code>这个代码的意思是:为红队添加一名工程师机器人,名字为joe。
+
:<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>'''<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>'''<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>'''bot_command'''</big>}}
+
|{{nw|<big>'''<code>bot_forceattack</code>'''</big>}}
|命令指定的机器人做出特定的行为。
+
|该指令将强制所有的人机以它们当前使用的任意[[weapons/zh-hans|武器]]自动进行攻击。如果<code>bot_forceattack2</code>的参数设置为 ''0'',那么人机将执行主要攻击(primary_fire);如果参数为 ''1'',那么人机将执行辅助攻击(secondary_fire)。
  
;指令语法: <code>bot_command <''botname''> <''console command''></code>
+
请注意,如果<code>bot_mimic</code>处于生效状态时(即参数为 1 ),则此操作将不会生效。
::''botname''填入的是你想要命令的机器人的名称。
 
::''console command''填入的是你想要机器人所做的事情的指令,请查看[[Scripting#Console Commands|控制台指令]].
 
;例子 1: bot_command bot01 "voicemenu 0 0" 命令机器人01号使用语音菜单中的0 0选项
 
;例子2 2: bot_command bot01 "taunt" 命令机器人01号使用嘲讽动作
 
  
::切换指令与bot_command不能同时生效,但是使用bot_forcefireweapon指令,可以让所有机器人切换到指定武器并且不停开火,也可以让它们停止开火。当然,你只能强制命令指定并种类型的机器人这么做。
+
;格式:<code>bot_forceattack <''integer''></code>
 +
;参数:
 +
:<code><''integer''></code>
 +
::当设置为1时,所有人机都将开始攻击。默认值为 0(禁用)。
 +
;例子:
 +
:<code>bot_forceattack 1</code>
 
|-
 
|-
|{{nw|<big>'''bot_defend'''</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>'''bot_dontmove'''</big>}}
+
|{{nw|<big>'''<code>bot_forceattack_down</code>'''</big>}}
|允许或禁止机器人进行移动。当指令设置为''1''时,所以机器人都不能够移动但它们依然能转身和跳跃。配合这个<code>bot_mimic</code>指令,你可以把机器人带到你想它们去的地方并且让它们呆在那里不动。
+
|指定人机的攻击方式,共有「点射」和「连射」这两种方式。如果参数设置为 ''0'',人机就会表现得像是连续点击攻击键一样(适用于{{item link|Stickybomb Launcher}})。如果设置为 ''1'',那么人机会表现得像是按住攻击键一样(适用于{{item link|Minigun}})。
  
;指令语法: <code>bot_dontmove <''0/1''></code>
+
;格式:<code>bot_forceattack_down <''0/1''></code>
::允许或禁止机器人进行移动。
+
;参数:
;例子: <code>bot_dontmove 1</code>意为禁止所有机器人移动
+
:<code><''integer''></code>
 +
::''1'' 为开启,''0'' 为关闭(默认)。
 +
;例子:
 +
:<code>bot_forceattack_down 1</code>
 
|-
 
|-
|{{nw|<big>'''bot_forceattack'''</big>}}
+
|{{nw|<big>'''<code>bot_forcefireweapon</code>'''</big>}}
|这会强制所有机器人开火,无论它们手上使用的是什么[[weapon/zh-hans|武器]]。如果<code>bot_forceattack2</code>指令设置成''0'',那么机器人会使用主武器开火。如果设置成''1'',那它们则使用副武器开火。
+
|强制所有拥有指定武器的人机切换到此武器并进行攻击。
 +
如果有人机没有此种武器,则不会对其有任何影响(除非它正在使用其他武器进行攻击,在这种情况下它将会停止攻击)。
  
如果<code>bot_mimic</code>指令生效时(设置成''1''),那么强制开火指令就不会生效。
+
;格式:<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}}并反复开火,其他人机则原地待命。
  
;指令语法: <code>bot_forceattack <''0/1''></code>
+
::若要让所有人机停止攻击,则只需输入一个游戏中不存在的武器的的文件名即可。任何未带有“tf_weapon”前缀的武器均不属于《军团要塞2》的武器,因此人机无法使用其进行攻击,例如<code>''bot_forcefireweapon ,,''</code>
::设置为''0''时,机器人则不会开火。设置为''1''时,机器人则会开火。
 
;例子: <code>bot_forceattack 1</code> 意为机器人会进行自动开火。
 
 
|-
 
|-
|{{nw|<big>'''bot_forceattack2'''</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>'''bot_forceattack_down'''</big>}}
+
|{{nw|<big>'''<code>bot_crouch</code>'''</big>}}
|设置机器人的开火方式,分点射和连射两种。当设置为''0''时,机器人则会像不断点击开火键一样进行点射(对[[Pistol/zh-hans|手枪]]有效,但对[[Heavy/zh-hans|机枪手]]的[[Minigun/zh-hans|迷你机枪]]无效)。当设置为''1''时,机器人则会像按着开火键不放一样进行连射(对重机枪手来说有用)。
+
|强制所有人机持续蹲伏。
 +
;格式:<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_forceattack_down <''0/1''></code>
+
;格式:<code>bot_mirror <''name''></code>
::''1''为开启,''0''为关闭
+
::其中“''name''”处填写要镜像的人机的名称。
;例子: <code>bot_forceattack_down 1</code> 意为所有机器人进行连射。
+
;例子:
 +
:<code>bot_mirror bot01</code>
 
|-
 
|-
|{{nw|<big>'''bot_forcefireweapon'''</big>}}
+
|{{nw|<big>'''<code>bot_mimic</code>'''</big>}}
|强制拥有指定武器的机器人切换到此武器并进行开火。
+
|人机将会通过 index 来执行玩家的用户命令行,即模仿玩家的行为。
如果一个机器人没有此种武器,则不会对其有影响。
+
人机将会执行玩家发出的所有按键行为,包括模仿玩家的移动、转身、跳跃、攻击等。但人机不会模仿玩家的呼叫医生、切换武器和嘲讽的行为。
;指令语法: <code>bot_forcefireweapon <''weapon filename''></code>
+
 
::''filename''一般填武器的名称''tf_weapon_ <weapon name>''.
+
请注意,该指令的效果将会覆盖指令<code>bot_forceattack</code>的效果,但不会覆盖<code>bot_dontmove</code>的效果。
;例子: <code>bot_forcefireweapon tf_weapon_fists</code> 会使所有[[Heavy/zh-hans|重机枪手]]使用他们的[[Fists/zh-hans|拳头]]进行攻击,而其他机器人则会原地待命。
 
<code>bot_forcefireweapon tf_weapon_shotgun_pyro</code> 会使所有[[Pyro/zh-hans|火焰兵]]机器人使用[[Shotgun/zh-hans|霰弹枪]]开火,而且他机器人则原地待命。
 
  
::如果要想所有机器人停止开火,只需输入一个游戏中不存在的武器的名称即可。而且任何前端没有tf_weapon的武器不算军团要塞2的武器,因此机器人不会开火,例如''bot_forcefireweapon ,,''
+
;格式:<code>bot_mimic <''integer''></code>
::由于机器人的装备无法更换,因此无法命令他们使用非默认武器外的武器。
+
;参数:
 +
:<code><''integer''></code>
 +
::''1'' 表示开启,''0'' 表示关闭(默认)。
 +
;例子:
 +
:<code>bot_mimic 1</code>
 
|-
 
|-
|{{nw|<big>'''bot_kill'''</big>}}
+
|{{nw|<big>'''<code>bot_mimic_inverse</code>'''</big>}}
|
+
|指定人机与玩家反向移动;玩家向左移动时,人机将会向右移动,玩家向前移动则人机向后移动,以此类推。
杀死指定机器人。
+
人机的视角方向则不受其影响。
;指令语法: <code>bot_kill <''bot name''></code>
+
 
::强制指定机器人自杀。
+
;格式:<code>bot_mimic_inverse <''integer''></code>
;例子: <code>bot_kill bot01</code> 意为强制让机器人01号自杀。
+
;参数:
 +
:<code><''integer''></code>
 +
::''1'' 表示开启,''0'' 表示关闭(默认)。
 +
;例子:
 +
:<code>bot_mimic_inverse 1</code>
 
|-
 
|-
|{{nw|<big>'''bot_mimic'''</big>}}
+
|{{nw|<big>'''<code>bot_mimic_yaw_offset</code>'''</big>}}
|机器人模拟玩家的动作。
+
|指定人机的朝向角度。
机器人会模仿玩家的按键行为,即模仿玩家的人物动作。例如例如移动、转身、跳跃、开火等。
+
人机将会朝向一个指定的方向,其方向根据玩家的位置而定。默认设置为 ''180'',此时所有的人机都会面朝着玩家。而将其设置 ''0'' 时,所有人机都会面朝玩家所朝向的方向。
  
这个指令的效果会覆盖指令<code>bot_forceattack</code>的效果,但不会覆盖指令<code>bot_dontmove</code>的效果。
+
;格式:<code>bot_mimic_yaw_offset <''0-360''></code>
 +
::以度为单位,指定人机的朝向角度。
 +
;例子:
 +
:<code>bot_mimic_yaw_offset 180</code>
 +
|-
 +
|{{nw|<big>'''<code>bot_randomnames</code>'''</big>}}
 +
|赋予机器人随机名字,名字列表如下
  
;指令语法: <code>bot_mimic <''0/1''></code>
+
;格式:<code>bot_randomnames <''integer''></code>
::''1''表示开启,''0''表示关闭。
+
;参数:
;例子: <code>bot_mimic 1</code> 意为机器人模仿玩家动作。
+
:<code><''integer''></code>
 +
::''1'' 表示开启,''0'' 表示关闭(默认)。
 +
;例子:
 +
:<code>bot_randomnames 1</code>
 
|-
 
|-
|{{nw|<big>'''bot_mimic_yaw_offset'''</big>}}
+
|{{nw|<big>'''<code>bot_refill</code>'''</big>}}
|
+
|为所有的人机补满弹药(包括工程师的[[metal/zh-hans|金属]])和生命值。
指定机器人的朝向。
 
机器人会转身面向一个指定的方向,其方向根据玩家而定。如果角度设置为''180'',则所有机器人都会面向玩家。设置为''0''时,所有机器人都会面向玩家所面向的方向。
 
  
;指令语法: <code>bot_mimic_yaw_offset <''0-360''></code>
+
;格式:<code>bot_refill</code>
::设置机器人的朝向
 
;例子: <code>bot_mimic_yaw_offset 180</code>
 
 
|-
 
|-
|{{nw|<big>'''bot_randomnames'''</big>}}
+
|{{nw|<big>'''<code>bot_saveme</code>'''</big>}}
|赋予机器人随机名字,名字列表如下
+
|让所有人机呼叫医生,相当于向所有人机发出了指令<code>bot_command <''name''> "voicemenu 0 0"</code>。
  
===机器人名称===
+
;格式:<code>bot_saveme <''integer''></code>
游戏中的机器人已经有很多被设定好的名字,其中一些与Valve出品的某些游戏有联系。当然有些与军团要塞2本本身有联系。有些名字这是根据STEAM社区论坛成员的要求而添加的。如果您遇到了列表中没有出现的名字,请帮助我们补充,谢谢。 <!--如果您遇到了列表中没有出现的名字,请帮助我们补充,谢谢-->
+
;参数:
{{Bot names}}
+
:<code><''integer''></code>
;指令格式: <code>bot_randomnames <''0/1''></code>
+
::设置为 ''1'' 时所有人机都将呼叫医生,默认设置为 ''0''(禁用)。
::''1''为开启随机名字,''0''为关闭。
 
;例子: <code>bot_randomnames 1</code>
 
 
|-
 
|-
|{{nw|<big>'''bot_refill'''</big>}}
+
|{{nw|<big>'''<code>bot_selectweaponslot</code>'''</big>}}
|为所有机器人补充弹药,包括工程师的[[Metal/zh-hans|金属]]。  
+
|强制一个人机切换到指定的武器栏位。若要指定单独某个人机切换武器,请改用指令<code>''cc_bot_selectweapon''</code>
  
指令格式: <code>bot_refill</code>
+
;格式:<code>bot_selectweaponslot <''n''> </code>
 +
;参数:
 +
:<code><''n''></code>
 +
::将“''n''”设置为人机应该切换到的武器栏位。
 +
::0 表示主武器;1 表示副武器;2 表示近战武器;3 表示特殊武器(例如间谍的烟盒,工程师的PDA)。
 +
;例子:
 +
:<code>bot_selectweaponslot 2 </code>
 
|-
 
|-
|{{nw|<big>'''bot_saveme'''</big>}}
+
|{{nw|<big>'''<code>bot_teleport</code>'''</big>}}
|强制所有机器人呼叫医生,这相当于对所有机器人使用指令<code>bot_command <''botname''> "voicemenu 0 0"</code>
+
|将一个指定的机器人传送到指定的坐标上。
指令格式: <code>bot_saveme <''0/1''></code>
+
在控制台中输入<code>Status</code>即可获取玩家当前所在位置的地图坐标。
::''1''为开启,''0''为关闭。
+
 
 +
;格式:<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>'''bot_selectweaponslot'''</big>}}
+
|{{nw|<big>'''<code>bot_whack</code>'''</big>}}
|让第一个加入的机器人切换指定的武器。
+
|将玩家造成的致命伤害给予指定的人机。
0 = 主武器; 1 = 副武器; 2 = 近战武器; 3 = 特殊武器(例如间谍的烟盒,工程师的PDA)
+
该指令基本是以当前选择的武器来秒杀机器人的,可能是在开发过程中进行测试所用的。值得注意的是,只有当<code>mp_friendlyfire</code>设置为 1 时,玩家才能使用<code>bot_whack</code>来击杀队友,否则用来秒杀队友将不会有任何效果。
这个指令只对最先加入的机器人有效。而且目前并未发现能对特定机器人生效。
 
  
;指令格式: <code>bot_selectweaponslot <''n''></code>
+
;格式:<code>bot_whack <''name''></code>
::''n''为上面提到的武器种类代码。
+
;参数:
;例子: <code>bot_selectweaponslot 2</code> 意为让第一个机器人切换到近战武器。
+
:<code><''name''></code>
 +
::将要“秒杀”的人机的名称。
 +
;例子:
 +
:<code>bot_whack bot01</code>
 
|-
 
|-
|{{nw|<big>'''bot_teleport'''</big>}}
+
|{{nw|<big>'''<code>cc_bot_selectweapon</code>'''</big>}}
|传送指定的机器人到给定的坐标。
+
|强制人机切换到指定的武器栏位。
可以通过在控制台输入<code>Status</code>来查看玩家当前所在位置的地图坐标。
 
  
;指令格式: <code>bot_teleport <''botname''> <''X''> <''Y''> <''Z''> <''Pitch''> <''Yaw''> <''Roll''></code>
+
;格式:<code>cc_bot_selectweapon <''name''> <''n''> </code>
::''botname''指的是机器人的名字.
+
;参数:
::<code>''X'' ''Y'' ''Z''</code>指的是地图的坐标。
+
:<code><''n''></code>
::<code>''Pitch'' ''Yaw'' ''Roll''</code>指的是机器人传送后所要面对的方向。
+
::将“''n''”设置为人机应该切换到的武器栏位。
;例子: <code>bot_teleport bot01 -4815 1385 -447 0 0 0</code> 意为传送机器人01号到坐标-4815 1385 -447,朝向为正前方。
+
::0 表示主武器;1 表示副武器;2 表示近战武器;3 表示特殊武器。
 +
:<code><''name''></code>
 +
::将要切换武器栏位的人机的名称。
 +
;例子:
 +
:<code>cc_bot_selectweapon bot12 2</code>,效果为让名为 bot12 的人机切换到近战武器。
 
|-
 
|-
|{{nw|<big>'''bot_whack'''</big>}}
+
|{{nw|<big>'''{{code|bot_hurt}}'''</big>}}
|给予机器人致命的伤害。这种伤害类型取决于玩家当前所使用的武器,这条指令可能是在开发过程中进行测试所用的。
+
|对人机造成指定的伤害,可面向团队或全体执行。
  
;指令格式: bot_whack <''botname''>
+
;格式:{{code|bot_hurt [<''name''>] [<''team''>] [<''damage''>]}}
::''botname''指的是指定机器人的名字。
+
;参数:
;例子: bot_whack bot109 意为给予机器人109号致命的伤害。
+
:<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 点伤害。
 
|}
 
|}
  
==参考文献==
+
== {{common string|Notes}} ==
<references/>  
+
* MvM人机也可以使用{{code|nb_}}进行控制(比如使用{{code|nb_select}}和{{code|nb_warp_selected_here}}来把人机传送到特定的位置)。但这一功能不适用于TF人机。
 +
 
 +
=={{common string|References}}==
 +
<references/>
  
 
[[Category:Customization/zh-hans]]
 
[[Category:Customization/zh-hans]]
 
[[Category:Gameplay/zh-hans]]
 
[[Category:Gameplay/zh-hans]]

Revision as of 13:04, 15 May 2024

一个士兵人机在Dustbowl训练地图上活动
本条目的主题是游戏《军团要塞2》中由电脑控制的玩家。
人类队友可能会批评你,但这些没有灵魂的人机会吗?会。它们又不是瞎子。但他们是哑巴,所以你的无能将会是它们入土都说不出来的秘密。
士兵

人机 / Bot,又称机器人或电脑玩家,是服务器上被电脑控制的玩家。在军团要塞 2 中有两种人机:智能人机以及木偶人机。智能人机采用了复杂的人工智能编码,其目的是为了模拟玩家在游戏中的行为,可在未开启作弊的情况下使用。木偶人机没有人工智能编码,因此它们不会自动活动,但它们在游戏测试和训练的用途上很有帮助。木偶人机需要服务器开启作弊模式才能使用,并且此时也会禁用成就系统。

基础智能人机

智能机器人能够学习玩家的动作并且不会受玩家直接控制。同时,它们都是以随机方式选择兵种的。他们使用的是基于《求生之路》系列中生还者人机以及被感染者 AI 所使用的复杂人工智能代码[1]。添加智能人机不需要服务器开启作弊功能,所以可以借此完成各种成就;不过有一个例外:人机在被击杀后并没有死亡定格照;因此也无法让玩家通过智能人机来达成与死亡定格照相关的成就。此外,用奇异属性的武器杀死人机也不会增加武器的杀敌计数,除非武器应用了奇异升级部件:机器人消灭数,在这种情况下,杀敌数会添加到奇异部件上,而非武器本身。

智能人机具有从简单到专家的四个技术水平等级。Sigsegv对该技术水平差异进行了[1]

智能人机在以下情况能够间接地被玩家进行一定程度的控制:

  • 准备阶段期间,被玩家准星所瞄准的任意一方人机都将做出嘲讽动作。
  • 当玩家使用语音指令“医生!”时,附近的友方医生人机就会前来提供治疗。
  • 当治疗玩家的医生人机的 ÜberCharge 就绪时,玩家使用“冲!冲!冲!”或者“激活 Ubercharge!”语音指令会让它立刻激活 ÜberCharge。
  • 如果医生人机的治疗目标或它自身受到重创时,它会立刻激活自己的 ÜberCharge。
  • 人机会尝试加入队友的同伴嘲讽(例如击掌!)或集体嘲讽(例如康茄舞)。

寻路

具备官方人机支持的地图

地图 游戏模式 文件名
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
Enclosure 推车 pl_enclosure_final
Goldrush 推车 pl_goldrush
Gravestone 推车 pl_rumble_event
Hoodoo 推车 pl_hoodoo_final
Precipice 推车 pl_precipice_event_final
Swiftwater 推车 pl_swiftwater_final1
Thundermountain 推车 pl_thundermountain
Upward 推车 pl_upward
Pier 推车 pl_pier
Wutville 推车 pl_wutville_event

蓝队的电脑玩家会在其中一个蓝队出生点内卡住。因此,蓝队仅可能在那个特定出生点阶段内完全碾压或几乎不损兵折将的情况下才能获胜。

在不支持人机的地图上使用人机

参考:Navigation Meshes ,源于 Valve 开发者社区
  1. 导航网格编辑需要启用作弊,因此要在控制台中键入“sv_cheats 1”。
  2. 使用“nav_generate”指令构建初始导航网格。
  3. 等待游戏生成 AI 路径,可在控制台中跟踪进度。
  4. 地图将重新加载。
  5. 选择性地调整生成的导航网格,进而添加缺失的数据并移除错误的数据。使用“nav_edit 1”进入导航网格编辑模式。
  6. 重新加载/重启服务器(可选,但如果跳过这一步则会禁用成就功能)。
  7. 打开控制台,如上所示输入“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

智能人机指令

有关更全面的指令列表,请见军团要塞2控制台指令和变量一览表 ,源于 Valve 开发者社区

若要在已支持的地图上使用智能人机,服务器管理员应该在控制台中输入以下指令(有些指令可能需要将sv_cheats设置为 1):

指令 说明
tf_bot_add 该指令将在双方队伍中随机添加一个或多个随机兵种的智能人机。游戏还会在默认名称集合中随机挑选一个名称分配给该人机。
格式:tf_bot_add [<count>] [<class>] [<team>] [<difficulty>] [<name>] [noquota]
参数:
<count>
添加指定数量人机。如果省略该参数,则每次只会添加一个人机。
如果玩家试图添加超过服务器最大玩家数量的人机,则会无法生效并在控制台中显示一条错误消息。
如果mp_teams_unbalance_limit太低,则往一个队伍添加更多的人机仍然有可能会触发自动平衡,从而使两队人数相等。
<class>
指定人机所选兵种的英文名称,其中class处可以填写DemomanEngineerHeavyWeaponsMedicPyroScoutSoldierSoldierSoldierSpy
<team>
指定人机所加入的队伍的英文名称,其中team处可以填写red或者blue
<difficulty>
设置人机的难度等级,其中difficulty处可以填写easy(简单)、normal(普通)、hard(困难)或expert(专家)。
<name>
设置所连接的人机的名字。
noquota
如果存在明确的‘noquota’短语,则人机将会被排除在人机配额管理系统之外。详见tf_bot_quota
例子:输入tf_bot_add red 3 heavyweapons easy可以在红队添加三个简单难度的机枪手人机。
tf_bot_difficulty 定义所要加入游戏的人机的基技术等级。
格式:tf_bot_difficulty <level>
参数:
<level>
设置人机的的技术难度等级,以数字表示。取值分别为: 0 表示简单, 1 表示普通, 2 表示困难, 3 表示专家。默认等级为“普通”(1)。
例子:tf_bot_difficulty 2可以将该指令执行后所创建的所有人机的难度设置为“困难”。
tf_bot_fire_weapon_allowed 决定人机是否应该发动攻击。如果选择禁用,人机仍然可以使用某些不具备破坏性的武器,如医疗枪。但存在一个例外,即医生人机仍然会使用注射枪开火。此外,爆破手人机仍然可以引爆尚存的黏弹,但不会再放置新的黏弹。
格式:tf_bot_fire_weapon_allowed <integer>
参数:
<integer>
1 或 0。默认为 1(启用武器)。
例子:tf_bot_fire_weapon_allowed 0可以禁用人机的武器,除了极个别例外。
tf_bot_force_class 如果设置为一个兵种名称,则所有人机都将作为该兵种重新生成。
格式:tf_bot_force_class <class>
参数:
<class>
class处可以填写DemomanEngineerHeavyWeaponsMedicPyroScoutSoldierSoldierSoldierSpy。默认为“”(即空白)。
例如:tf_bot_force_class medic可以让所有人机作为医生重新生成。
tf_bot_force_jump If enabled, forces bots to repeatedly jump over and over.
Syntax
tf_bot_force_jump <integer>
Parameters
<integer>
Either 1 or 0. Default is 0 (disabled).
Example
tf_bot_force_jump 1 will force AI bots to repeatedly jump.
tf_bot_join_after_player 如果参数不为零,则机器人将会在玩家加入游戏后跟随加入。
指令语法
tf_bot_join_after_player <integer>
参数说明
<integer>
此处可以填写 1 或者 0. 默认是 1 (即机器人会等待玩家)。
例子
tf_bot_join_after_player 0意为即使没有玩家加入游戏,也会添加机器人。
tf_bot_keep_class_after_death 如果参数为0,那么每次机器人重生时都会重新选择职业。
指令语法
tf_bot_keep_class_after_death <integer>
参数说明
<integer>
可以填写 1 或者 0。默认为0(开启此功能)。
例子
tf_bot_keep_class_after_death 1意为不允许机器人更换兵种。
tf_bot_kick

这个指令能将机器人踢出服务器。

指令语法
tf_bot_kick <name/all>
参数说明
<name/all>
填写想要踢出的机器人名称或是踢出所有机器人。
例子
tf_bot_kick CEDA意为将名称为"CEDA"的机器人踢出。
tf_bot_prefix_name_with_difficulty 如果参数不为零,则会在机器人名称之前添加其技能等级代码。
指令语法
tf_bot_prefix_name_with_difficulty <integer>
参数说明
<integer>
可以填写 1 或者 0。默认为0(不开启此功能)。
例子
tf_bot_prefix_name_with_difficulty 1以为机器人的名字会变为"1 Aimbot" (普通难度)或是"3 Saxton Hale" (专家难度).
tf_bot_quota 这个指令是用来决定服务器中机器人玩家的数目的,其非默认参数设置只有两种:"tf_bot_quota_mode" = "fill" or "match".
指令语法
tf_bot_quota <integer>
参数说明
<integer>
设定的数字为0至服务器最大人数之间的一个数字。默认为0。
例子
tf_bot_quota 2,如果tf_bot_quota_mode 设置为 match,则每有一名玩家加入服务器时,就添加2个机器人。服务器中每加入一名玩家时则会自动添加2个机器人。
tf_bot_quota_mode 决定机器人的分配类型。
指令语法
tf_bot_quota_mode<normal/fill/match>
参数说明
normal/fill/match
如果为'normal',服务器则不会增加或踢出任何机器人,除非有明确的指令;bot_quota的指令也无效。
如果为'fill',服务器则会根据玩家人数,按照1:1的比例增加机器人玩家。
如果为'match',则服务器会根据玩家人数按照1:N的比例增加机器人,此处N是指 bot_quota 设定的参数。
例子
tf_bot_quota_mode fill意为服务器永远保持与玩家人数相同数量的机器人玩家。

目前智能机器人的情况

智能机器人目前还算是在测试阶段而且随着每次游戏更新智能机器人都会得到一定改进。目前,经过无帽子更新,所有的兵种的智能机器人都能正常运作,包括曾经有问题的间谍。智能机器人只能在大部分官方的山丘之王地图、某些推车地图、攻防型地图 DustbowlGorge夺旗地图,以及 Mann Manor 上正常工作(在尾段两个地图中,智能机器人只能通过在控制台输入 tf_bot_add 指令来添加)。其他地图也可以使用这个方法添加机器人;但它们无法正常行动。

注:目前已经有一些较为流行的地图被添加了一个提前制造的机器人路线套装

智能机器人的行为

  • 机器人目前只会装备基础的配置
  • 简单难度上的机器人会很少使用主武器之外的武器。更高等级的机器人会在主武器弹匣用完后换到并使用它们的副武器。
  • 间谍狙击手机器人不会在简单模式上出现,而只能在普通和更高的等级中出现。
  • 目前机器人还不懂得使用特殊的跳跃,例如火箭跳或是黏弹跳,还不能搬运建筑。
  • 机器人在杀死玩家后,有几率立刻进行嘲讽,而且就算暴露在敌人火力下也会照做不误。曼恩 vs. 机器模式里的机器人有这种行为。
  • 间谍机器人(和玩家)在伪装着时会被其它的机器人忽略。但是,当碰到任何敌人机器人,入侵建筑物,开火,或隐形时,所有看到的机器人会将机器人/玩家称为间谍并不会忘记他,除非间谍在暗地里换伪装,暴露间谍的机器人死亡,或间谍用死亡之铃装死。
  • 火焰兵机器人会在非简单难度的游戏里十分频繁地使用压缩空气爆破来反弹敌方的飞行物。
  • 医生机器人大部分时候会先治疗其它的兵种而不是狙击手(和到更小的程度,工程师),就算 "医生!" 的语音指令被使用。
  • 医生机器人通常喜欢治疗机枪手,士兵,爆破手,和火焰兵,若被玩家玩儿的。如果没有人类玩家玩儿其中的一个兵种,他则很少会被一直治疗着。
  • 超级冲锋准备就绪的医生机器人会在受伤时启用超级冲锋。曼恩 vs. 机器模式里的 Über 医生有这种行为。
  • 如果一个伪装的间谍机器人在专家难度上见到敌人隐形,它会能够跟着他们,就算他们完全隐形并没有显示轮廓。
  • 机器人在准备阶段中不会开火除非它们先被攻击的(除了爆破手机器人放下黏性炸弹)。
  • 工程师机器人不会升级自己的传送装置或从它移除电子工兵,有时还不会修复自己的步哨枪就算不处于交火下。
  • 除了工程师,间谍,和狙击手,机器人在攻/防推车地图上会留在出生点上不动。
  • 间谍机器人,当被另一个机器人(或玩家)看到时,不会试图背刺而反会换到左轮手枪边射击边撤退。

Bugs

  • Bots may try to walk/shoot through unmovable objects such as walls.
  • Whenever a player/bot cloaks/decloaks or disguises/undisguises, the bots will 'see' players who are behind them and turn around, even if out of the bot's field of view. Note that this isn't due to any sounds made by the player (footsteps, miscellaneous weapon noises, etc.).
  • Though rarely, bots may stand inside one another during usage of an Engineer's Teleporter, and get stuck (can't move).
  • When bots use voice commands (such as "Spy!" and "Move Up!"), text versions of the voice commands do not display.
  • A Medic bot who is healing a player will not avoid enemy fire or collect health pickups, even if he is at critically low health.
  • Bots are able to move while taunting, making the Holiday Punch ineffective.
  • Recently attacked Medic bots will often fail to use their Syringe Gun to deal with enemies at non-melee range, instead switching to their Bonesaw, or even to their Medi Gun on extremely rare occasions.
  • Medic bots will fail to lead their aim or to compensate for gravity while firing the Syringe Gun. This may be due to the Syringe Gun not being properly identified as a non-hitscan weapon in the bot AI code.
  • Spy bots are able to see and follow cloaked Spies (AI or player) should one give himself away, regardless of difficulty level.
  • Even if a Spy is disguised as a class of his team (player only, as bots will never do this), enemies will still point him out as a Spy should he bump into an enemy.
  • Bots abide by Auto-balance rules. To be able to spawn bots on a specific team, you must set mp_teams_unbalance_limit to 0.
  • Engineer bots may ignore their buildings until they're destroyed.
  • Heavy bots will sometimes try to fire their Minigun even when out of ammo. (Although it seems to occur abundantly when the bot difficulty is set below Advanced)
  • Medic bots on the losing team will occasionally commit suicide during Humiliation when there are no enemies nearby. Players are unable to do the same, even using commands.
  • Setting the loadout menu's preview to BLU will cause RED bots to appear BLU.
  • Currently, bots do not work on the following types of game modes or maps, even with a generated navigation mesh. (Spies and Snipers may work, though.)
  • Bots that have their Melee weapons out will occasionally not switch to their other weapons, even if they pick up ammo.
    • This can be fixed by either killing them or just randomly.
  • After the Jungle Inferno Update, bots spawned with specific parameters (example:tf_bot_add 5 pyro blue normal) will die in their spawnrooms. This can be prevented with the command: tf_bot_reevaluate_class_in_spawnroom 0, which requires setting sv_cheats to 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 [<teamname/number>] [<classname>] [<name>] [<number>]
参数:
<number>
指定要添加的人机的数量。
<teamname/number>
指定人机所加入的团队的名称或编号,此处可以填写「RED」或「1」、「BLU」或「0」。
<classname>
指定人机的兵种类型,此处可以填写「Demoman」、「Engineer」、「Heavy」、「Medic」、「Pyro」、「Scout」、「Soldier」、「Sniper」或「Spy」。
<teleport>
将生成的人机传送到玩家准星所瞄准的位置上。
<targetdummy>
阻止已生成的人机流失生命值。
<name>
name”处可以填写任意内容。如果出现多人同名的情况,则会在所有同名名称的开头增加一个带括号的数字(从 1 开始递增)来进行编号区分,从最早加入的人机开始编号。例如,joe、(1)joe、(2)joe,等等。如果没有指定名称,则该人机的名称将会以在“bot”一词的末尾加上数字(从 01 开始递增)进行命名;例如,第一个人机的名称是「bot01」,下一个则是「bot02」,依此类推。
例子:
bot -team red -class Engineer -name joe,效果为在红队添加一个名为 joe 的工程师人机。
bot_changeclass 强制所有人机更换为指定的兵种类型。
格式:bot_changeclass <name> <classname>
参数:
<name>
目标人机的名称。
<classname>
人机将要切换到的兵种的名称。默认为“”(即空白)。
例子:
bot_changeclass bot01 Soldier,效果为将名为 bot01 的人机的兵种强制更改为“士兵”。
bot_changeteams

让所有人机强制更换队伍。如果有一个人机在红队,那么执行指令后它将会被更换到蓝队,反之亦然。

bot_command 代表特定的人机发送特定的指令。
格式:bot_command <name/all> <console command>
参数:
<name/all>
指定将要向其发送指令的人机的名称或 ID。填写“all”将向所有人机发送指令。
<console command>
可以填写控制台指令中列出的任意一项指令,以及作弊码中的部分指令。
例子 1
bot_command bot01 "voicemenu 0 0",效果为使 bot01 使用语音菜单中的 0 0 选项。
例子 2
bot_command bot01 "taunt",效果为使 bot01 使用嘲讽动作。
使用bot_command无法实现指定物品栏(栏位1,栏位2,等等)的指令,但是用bot_forcefireweapon等效替代,即让该兵种中的所有人机都切换指定某一栏位的武器并开始攻击,然后使其停止攻击。然而,你只能使某一兵种中的全部机器人才能实现该效果。
bot_dontmove 允许或禁止人机进行移动。当参数设置为 1 时,人机无法移动,但它们仍然可以转身和跳跃。注意配合指令bot_mimic一起使用,可以将人机移动到特定区域并让它们停留在原地。
格式:bot_dontmove <integer>
参数:
<integer>
当设置为 1 时,人机将被允许进行移动。默认值为 0(禁用)。
例子:
bot_dontmove 1
bot_forceattack 该指令将强制所有的人机以它们当前使用的任意武器自动进行攻击。如果bot_forceattack2的参数设置为 0,那么人机将执行主要攻击(primary_fire);如果参数为 1,那么人机将执行辅助攻击(secondary_fire)。

请注意,如果bot_mimic处于生效状态时(即参数为 1 ),则此操作将不会生效。

格式:bot_forceattack <integer>
参数:
<integer>
当设置为1时,所有人机都将开始攻击。默认值为 0(禁用)。
例子:
bot_forceattack 1
bot_forceattack2 bot_forceattack参数设置为 1 时,所有人机都将以它们当前使用的任意武器执行辅助攻击。
格式:bot_forceattack2 <integer>
参数:
<integer>
当设置为 1 时,人机将会执行其武器的辅助攻击(secondary_fire),当设置为 0 时,执行主要攻击(primary_fire)。
例子:
bot_forceattack2 1
bot_forceattack_down 指定人机的攻击方式,共有「点射」和「连射」这两种方式。如果参数设置为 0,人机就会表现得像是连续点击攻击键一样(适用于黏性炸弹发射器)。如果设置为 1,那么人机会表现得像是按住攻击键一样(适用于转轮机枪)。
格式:bot_forceattack_down <0/1>
参数:
<integer>
1 为开启,0 为关闭(默认)。
例子:
bot_forceattack_down 1
bot_forcefireweapon 强制所有拥有指定武器的人机切换到此武器并进行攻击。

如果有人机没有此种武器,则不会对其有任何影响(除非它正在使用其他武器进行攻击,在这种情况下它将会停止攻击)。

格式:bot_forcefireweapon <weapon filename>
filename”处一般填写武器的文件名,即「tf_weapon_ <weapon name>」。
例子:

bot_forcefireweapon tf_weapon_fists 会使所有机枪手人机切换到拳头并反复攻击,其他人机则原地待命。
bot_forcefireweapon tf_weapon_shotgun_pyro 会使所有火焰兵人机切换到霰弹枪并反复开火,其他人机则原地待命。

若要让所有人机停止攻击,则只需输入一个游戏中不存在的武器的的文件名即可。任何未带有“tf_weapon”前缀的武器均不属于《军团要塞2》的武器,因此人机无法使用其进行攻击,例如bot_forcefireweapon ,,
bot_jump 强制所有人机反复进行跳跃。
格式:bot_jump <integer>
参数:
<integer>
当设置为 1 时,所有的人机都将反复进行跳跃。默认值为 0(禁用)。
例子:
bot_jump 1
bot_crouch 强制所有人机持续蹲伏。
格式:bot_crouch <integer>
参数:
<integer>
当设置为 1 时,所有的人机都将保持蹲伏状态。默认值为 0(禁用)。
例子:
bot_crouch 1
bot_kick 按其名称来移除某一个人机,或者移除整一队人机,又或者移除所有的人机。
格式:bot_kick <name/team>
使指定的人机自杀死亡。
例子:
bot_kick bot01,效果为踢出名为“bot01”的人机(如果它存在的话)。
bot_kick red,效果为踢出所有位于红队的人机。
bot_kick blue,效果为踢出所有位于蓝队的人机。
bot_kick all,效果为踢出服务器内所有的人机。
bot_kill 击杀指定的人机。
格式:bot_kill <name>
参数:
<name>
使指定的人机自杀。
例子:
bot_kill bot01
bot_mirror 指定的人机将会镜像了玩家的装备配置(兵种、饰品和武器)。该指令存在有部分漏洞;例如,如果一个爆破手玩家装备了靴子和任意盾牌,镜像人机将仍会持有榴弹发射器黏性炸弹发射器,尽管其模型上已经显示有靴子和盾牌。镜像人机死亡后将不会保留之前的配置,必须要再次使用bot_mirror才能恢复镜像。
格式:bot_mirror <name>
其中“name”处填写要镜像的人机的名称。
例子:
bot_mirror bot01
bot_mimic 人机将会通过 index 来执行玩家的用户命令行,即模仿玩家的行为。

人机将会执行玩家发出的所有按键行为,包括模仿玩家的移动、转身、跳跃、攻击等。但人机不会模仿玩家的呼叫医生、切换武器和嘲讽的行为。

请注意,该指令的效果将会覆盖指令bot_forceattack的效果,但不会覆盖bot_dontmove的效果。

格式:bot_mimic <integer>
参数:
<integer>
1 表示开启,0 表示关闭(默认)。
例子:
bot_mimic 1
bot_mimic_inverse 指定人机与玩家反向移动;玩家向左移动时,人机将会向右移动,玩家向前移动则人机向后移动,以此类推。

人机的视角方向则不受其影响。

格式:bot_mimic_inverse <integer>
参数:
<integer>
1 表示开启,0 表示关闭(默认)。
例子:
bot_mimic_inverse 1
bot_mimic_yaw_offset 指定人机的朝向角度。

人机将会朝向一个指定的方向,其方向根据玩家的位置而定。默认设置为 180,此时所有的人机都会面朝着玩家。而将其设置 0 时,所有人机都会面朝玩家所朝向的方向。

格式:bot_mimic_yaw_offset <0-360>
以度为单位,指定人机的朝向角度。
例子:
bot_mimic_yaw_offset 180
bot_randomnames 赋予机器人随机名字,名字列表如下
格式:bot_randomnames <integer>
参数:
<integer>
1 表示开启,0 表示关闭(默认)。
例子:
bot_randomnames 1
bot_refill 为所有的人机补满弹药(包括工程师的金属)和生命值。
格式:bot_refill
bot_saveme 让所有人机呼叫医生,相当于向所有人机发出了指令bot_command <name> "voicemenu 0 0"
格式:bot_saveme <integer>
参数:
<integer>
设置为 1 时所有人机都将呼叫医生,默认设置为 0(禁用)。
bot_selectweaponslot 强制一个人机切换到指定的武器栏位。若要指定单独某个人机切换武器,请改用指令cc_bot_selectweapon
格式:bot_selectweaponslot <n>
参数:
<n>
将“n”设置为人机应该切换到的武器栏位。
0 表示主武器;1 表示副武器;2 表示近战武器;3 表示特殊武器(例如间谍的烟盒,工程师的PDA)。
例子:
bot_selectweaponslot 2
bot_teleport 将一个指定的机器人传送到指定的坐标上。

在控制台中输入Status即可获取玩家当前所在位置的地图坐标。

格式:bot_teleport <name> <X> <Y> <Z> <Pitch> <Yaw> <Roll>
其中“name”处填写所要传送的人机的名称或 ID。
参数:
<name>
所要传送的人机的名称。
<X> <Y> <Z>
人机将要被传送到的地图坐标。
<Pitch> <Yaw> <Roll>
人机传送后所要面朝的方向。
例子:
bot_teleport bot01 -4815 1385 -447 0 0 0,效果为将 bot01 传送到坐标 -4815 1385 -447,朝向为正前方。
bot_whack 将玩家造成的致命伤害给予指定的人机。

该指令基本是以当前选择的武器来秒杀机器人的,可能是在开发过程中进行测试所用的。值得注意的是,只有当mp_friendlyfire设置为 1 时,玩家才能使用bot_whack来击杀队友,否则用来秒杀队友将不会有任何效果。

格式:bot_whack <name>
参数:
<name>
将要“秒杀”的人机的名称。
例子:
bot_whack bot01
cc_bot_selectweapon 强制人机切换到指定的武器栏位。
格式:cc_bot_selectweapon <name> <n>
参数:
<n>
将“n”设置为人机应该切换到的武器栏位。
0 表示主武器;1 表示副武器;2 表示近战武器;3 表示特殊武器。
<name>
将要切换武器栏位的人机的名称。
例子:
cc_bot_selectweapon bot12 2,效果为让名为 bot12 的人机切换到近战武器。
bot_hurt 对人机造成指定的伤害,可面向团队或全体执行。
格式:bot_hurt [<name>] [<team>] [<damage>]
参数:
<name>
指定对其造成伤害的人机的名称。
<team>
指定对其造成伤害的人机的团队名称,此处可填写「RED」、「BLU」或「all」。
<damage>
指定人机将要受到的伤害。如果设置为负数,则人机将会获得生命值(包括超量治疗)。
<burn>
使人机燃烧。但不会受到任何后续燃烧伤害。
例子:
bot_hurt -name joe -team red -damage 150,效果为使名为 joe 的红队人机受到 150 点伤害。

注释

  • MvM人机也可以使用nb_进行控制(比如使用nb_selectnb_warp_selected_here来把人机传送到特定的位置)。但这一功能不适用于TF人机。

参考内容