info_director

From Valve Developer Community
Jump to: navigation, search
English 简体中文

求生之路系列 info_director是一个点实体English存在于求生之路系列。它是臭名昭著的 AI 导演,必须存在于每个求生之路和求生之路2地图中才能正常游戏。

导演几乎完全自动化,仅在设计时存在于其他设计师放置的实体需要与其进行通信的少数情况下,例如在战役开场动画开始时强迫幸存者到他们各自的 info_survivor_position

logic_director_query(存在于自 Left 4 Dead 2)可以输出导演的愤怒等级,让关卡设计师可以根据玩家的表现来调整条件。

强制至幸存者位置

如果幸存者设置了幸存者名称,导演可以强制所有幸存者站在 info_survivor_position 处。
这用于战役开始时,以防止幸存者在地图下方生成,或在结局中将幸存者传送出地图以暗示他们在逃离载具内。

为此,请转到 info_director 输出并添加以下输出:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnGameplayStart !self ForceSurvivorPositions <none> 0.00 No
Io11.png OnGameplayStart !self ReleaseSurvivorPositions <none> 0.20 No

注意事项

  • 使用 changelevel 控制台命令重新启动地图将导致导演忽略forcesurvivorpositions输入。
如果你在使用changelevel重新编译后重新启动地图并且你需要测试你的开场动画,请在之后使用kill控制台命令使任务失败,这将导致地图以重新启动的方式允许 info_director 使用forcesurvivorpositions输入,这也将允许你的相机运行。
  • logic_auto 不能触发forcesurvivorpositions除非地图是从游戏菜单中作为战役新加载的,或者在任务失败后重新启动。
为了解决这个问题,让导演使用ongamestart输入对自己调用forcesurvivorpositionsreleasesurvivorpositions。当你的战役准备好发布时,如果你仍然想这样做,你可以在最终编译之前安全地将其改回使用 logic_auto,因为玩家将从游戏菜单加载你的战役。

键值


Targetname:
Name (targetname) <string>
其他实体引用该实体的目标名称
Origin (X Y Z) (origin) <coordinates>
实体处于世界中的位置,旋转实体会以实体坐标原点旋转。

输入

Left 4 Dead 原始输入

PanicEvent
当地图发生某些你认为重要的事情时,应该让导演知道。
PanicEventControlled <int>
类似于恐慌事件,但允许通过波的数量对强度进行一些控制。早期地图的标准值为 1,后期地图为 2。
Note.png 注意:PanicEventControlled 仅适用于 L4D1。在 L4D2 中,运行导演脚本会触发一系列恐慌事件(以及更多!)。
ForceSurvivorPositions
让每个幸存者站在一个 info_survivor_position。
Note.png 注意:还隐藏 HUD,除了生还者模式和清道夫模式特定的 HUD。
ReleaseSurvivorPositions
让幸存者再次自由行动。
Note.png 注意:还可以再次启用 HUD。
FireConceptToAny <string>
向任何能够说出它的幸存者触发一个演讲概念。允许由地图实体触发幸存者对话(例如,带有参数 hospital04_path4 的毫不留情的电梯)
StartIntro
开场动画开始时触发。玩家在此(输出)激活时免疫伤害。不会产生丧尸或特殊感染者。
FinishIntro
开场动画结束时触发。玩家现在会受到伤害。鉴于玩家不再站在标记为 PLAYER_START 和/或 CHECKPOINT 的导航方块中,丧尸和特殊感染者可以生成。
EnableTankFrustration
可用于启用Tank玩家在太长时间没有伤害幸存者时得到的超时。
DisableTankFrustration
可用于禁用Tank玩家在太长时间没有伤害幸存者时得到的超时。

实体目标名:
Kill
从这个世界中删除此实体。
KillHierarchy
功能类似于Kill,尽管此实体与其父实体都被删除了,但比Kill快一点。
AddOutput<string>
在此实体上分配新的键值/输出。对于键值,有些依赖于额外的必要代码来运行,如果它只是通过这个输入改变就行不通。必须遵循严格的格式:
语法: 
// 更改键值的格式 "AddOutput [键] [值]"
//// 原始文本
"OnUser1" "!self,AddOutput,targetname new_name"

// 添加输出的格式 "AddOutput {目标名称}:{输入名称}:{参数}:{延迟}:{最大触发次数,-1 代表无限}"
//// 原始文本
"OnUser1" "!self:SetParent:!activator:0.0:-1"
// 参数可以留空但仍应包含空的空白
//// 原始文本
"OnUser1" "!self:ClearParent::0.0:-1"
FireUser1FireUser4
触发OnUser输出; 详见 User Inputs and Outputs
Use 不存在于FGD!
类似于玩家按 +use(使用,默认E按钮); 也许不会做什么事! 也可以通过创建未指定的输入来调用输出。
这个输入不存在于Valve的 FGD中。
RunScriptFile<script>| 脚本 (存在于自 Left 4 Dead 2)
从硬盘执行一个VScript脚本文件,不带文件后缀名。 会合并接收实体的脚本域。
RunScriptCode<string> (存在于自 Left 4 Dead 2)
(执行脚本代码。)执行一段接收实体域的脚本源代码。通过控制台触发,可能需要英文双引号。
Bug.png Bug: Left 4 Dead 2中,该代码是触发输出的实体的脚本域中执行, 接受输入的实体。
Warning.png 警告:切勿在此输入的元素内使用字符串!它将破坏VMF ,由嵌套引号引起!你必须用文本编辑器手动删除来修复!
CallScriptFunction<string> (存在于自 Left 4 Dead 2) 不存在于FGD!
在接受实体脚本域上执行一段vscript函数。
SetLocalOrigin<coordinates> (存在于自 Alien Swarm) 不存在于FGD!
将此实体设置到地图上某点。如果此实体是某实体父级,那么它的子级也会随着偏移。
SetLocalAngles<angles> (存在于自 Alien Swarm) 不存在于FGD!
设置实体的角度(朝向)。

Left 4 Dead 2 额外输入

以下是仅在 L4D2 中可用的额外输入。

BeginScript <string>
EndScript
Squirrel开始/结束一个导演脚本。"BeginScript" 将自动结束任何正在运行的脚本,以启动另一个脚本。
ScriptedPanicEvent
Squirrel运行一个脚本化的恐慌事件,类似于大结局的阶段事件。
ForcePanicEvent
触发恐慌事件,无论发生什么。
EndCustomScriptedStage
Squirrel结束脚本化的结局阶段。
IncrementTeamScore <int>
增加一个团队的分数。(2=survivors, 3=infected)
CreateNewJournal <string>
创建一个新日志。
WriteToJournal <string>
将任务写入到 I/O 日志。
ExecuteJournal <string>
执行指定日志中的所有任务
RefreshInitialSpawnPositions
去做:似乎将幸存者传送到他们生成的位置。

输出

Left 4 Dead 原始输出

OnGameplayStart
当地图加载后,所有玩家加入并开始游戏时触发。
OnPanicEventFinished
当恐慌事件完成时触发。

实体目标名:

OnUser1OnUser4
这些输出将分别响应于FireUser1FireUser4 输入。 详见 User Inputs and Outputs
OnKilled (存在于 求生之路系列)
当实体被删除时触发此输出。

Left 4 Dead 2 额外输出

以下是仅在 L4D2 中可用的附加输出。他们专注于新的清道夫模式和 vscripts。

OnCustomPanicStageFinished
当自定义恐慌事件或自定义结局的每个阶段结束时触发。依赖于 vscripts。
OnTeamScored
当一个团队在清道夫加油口中放置清道夫物品时触发。
OnScavengeRoundStart
当清道夫回合开始时触发。
OnScavengeOvertimeStart
计时器时间到,游戏进入超时赛时触发。
OnScavengeOvertimeCancel
时间被添加到计时器,结束超时赛。
OnScavengeTimerExpired
时间到了,比赛没有进入超时赛。
OnScavengeIntensityChanged <int>
当紧张等级被更改时触发。 1 = 最高强度,随着数字变大而降低。
OnUserDefinedScriptEvent1-4
从 Squirrel Script 触发的通用用户定义事件 (UserDefinedEvent1()-UserDefinedEvent4())

另请参阅