env_message

env_message是一个点实体,可用于所有Source游戏。 在玩家hud上显示信息的实体, 定义于 /scripts/titles.txt
文件。

在源代码中,它由class
CMessage
代表,定义在EnvMessage.cpp
。
本地信息的语法
每条信息都定义于titles.txt 遵循其他valve文本结构. 譬如: Title { Text Value }
. 这条信息可以引用 localized 文本,并且前缀是 #
。
文本可以采用不同的格式设置,取决于语法提供的内容. 这个resource/clientscheme.res
负责字体的族, 大小和信息的宽度,而改变大小在此文件的这个CenterPrintText
项目内。
可以定义变量,会影响以下信息直到被其他信息取代。
变量 | 参数 | 描述 |
---|---|---|
$position | 浮点型,浮点型 | 文本在屏幕上的位置, 第一个是水平方向位置,第二个是垂直方向。 -1则是中间。 |
$effect | 整数型 | 如何显示。0是淡入淡出类型,1是闪烁,2是逐字写入。 |
$fxtime | 浮点型 | 一个前沿高光延迟于文本的时间。 |
$color | R G B | 颜色,参数是R G B(0~255)。 |
$fadein | 浮点型 | 信息的每个字符淡入的时间/秒 |
$fadeout | 浮点型 | 同上,但是是淡出。 |
$holdtime | 浮点型 | 淡入到淡出的持续时间。 |
你也可以自己单独修改文件来应用自己的条目,以下是HL2默认的。
信息值 | 打印的文本 |
---|---|
CR1 | Testing 1 |
CR2 | Testing 2 |
CR3 | Testing 3 |
GAMEOVER_ALLY | ASSIGNMENT: TERMINATED
SUBJECT: FREEMAN REASON: FAILURE TO PRESERVE MISSION-CRITICAL PERSONNEL |
GAMEOVER_OBJECT | ASSIGNMENT: TERMINATED
SUBJECT: FREEMAN REASON: FAILURE TO PRESERVE MISSION-CRITICAL RESOURCES |
GAMEOVER_TIMER | ASSIGNMENT: TERMINATED
SUBJECT: FREEMAN REASON: FAILURE TO PREVENT TIME-CRITICAL SEQUENCE |
GAMEOVER_STUCK | ASSIGNMENT: TERMINATED
SUBJECT: FREEMAN REASON: DEMONSTRATION OF EXCEEDINGLY POOR JUDGMENT |
CHAPTER1_TITLE | POINT INSERTION |
CHAPTER2_TITLE | "A RED LETTER DAY" |
CHAPTER3_TITLE | ROUTE KANAL |
CHAPTER4_TITLE | WATER HAZARD |
CHAPTER5_TITLE | BLACK MESA EAST |
CHAPTER6_TITLE | "WE DON'T GO TO RAVENHOLM..." |
CHAPTER7_TITLE | HIGHWAY 17 |
CHAPTER8_TITLE | SANDTRAPS |
CHAPTER9_TITLE | NOVA PROSPEKT |
CHAPTER9A_TITLE | ENTANGLEMENT |
CHAPTER10_TITLE | ANTICITIZEN ONE |
CHAPTER11_TITLE | "FOLLOW FREEMAN!" |
CHAPTER12_TITLE | OUR BENEFACTORS |
CHAPTER13_TITLE | DARK ENERGY |
GAMESAVED | Saved... |
GAMETITLE | Half-Life |
标签/Flags
- 1: Play Once - 只显示一次
- 2: All Clients - 对所有客户端显示
键值
- Message Text (message)
<字符串>
- 显示的信息,见上面的条目。
- Sound Effect (messagesound)
<sound>
- 当信息显示后会播放此声音效果, 由实体的位置发出。.
- Volume 0-10 (messagevolume)
<字符串>
- 声音效果的音量大小。
- Sound Radius (messageattenuation)
<choices>
- 声音效果的播放半径:
- 0: Small Radius /小范围
- 1: Medium Radius /中等
- 2: Large Radius /大
- 3: Play Everywhere /任何地方
Base:
- Classname (classname)
<string>
- 实体名称。实体名称可以用
AddOutput
来修改,有可能导致错误,影响引擎的处理方式。 - Name (targetname)
<string>
- 自己可定义的实体名字,注意,classname是实体名(如prop_static)而不是其名字!
- Global Entity Name (globalname)
<string>
- 实体链接到下一张图采用的名称,当玩家过度到下一张图的时候,会保持上一张图实体的状态。
- Parent (parentname)
<targetname>
- 实体的父级实体,该实体可以与父实体保持移动偏移。名称后面可以添加一个附属点,以逗号隔开。 任何实体都可以是父实体,甚至是点实体。 转换至下一张地图的实体关系会依然存在。例如
trigger_transition
, 一些不适合做父实体的实体可能难以运行,利用phys_constraint
可以解决。*注:翻译略有出入,请只在意第一句或查看原文(英文)。 - Origin (X Y Z) (origin)
<coordinates>
- 实体处于世界中的位置,旋转实体会以实体坐标原点旋转。
- Pitch Yaw Roll (X Y Z) (angles)
<angle>
- 实体在世界中的方位,Pitch围绕X轴旋转,可以称为俯仰角。Yaw围绕Z轴旋转,可以称为偏航角,roll围绕Y轴旋转,可以称为翻滚角。
注意:尽管Hammer不显示新角度,但其仍然适用于固实体。
- Flags (spawnflags)
<integer>
- 实体所具有的标志/标签,依实体所具有而定。
- Response Contexts (ResponseContext)
<string>
- 实体预定义的响应上下文(链接上下文)。格式:
key:value,key:value,...
。可以由filtered过滤。 - Effects (effects)
<integer>
!FGD - 效果标志,在hammer中不显示,但它确确存在。
- Local Time (ltime)
<float>
!FGD - 实体的本地时间,区别于全局时间,主要用于物理效果计算,在hammer中不显示。
- Next Think (nextthink)
<float>
!FGD - 实体再次 thinks 时间。在hammer中不显示。
- Hammer ID (hammerid)
<integer>
!FGD - 实体的Hammer ID。主要用于插件和debug指令,如
ent_keyvalue
. 可以用"hammerid" 或者 "id" 键值来手动分配. 在run-time时候生成的实体不会分配ID。在hammer中不显示。 - Disable for Xbox 360 (disableX360)
<boolean>
(in all games since) !FGD
- 如果设置为"Yes",在XBOX360游戏机上不显示此实体。
- Entity Scripts (vscripts)
<scriptlist>
(in all games since)
- 实体生成后可通过输出调用的VScript脚本文件,所有脚本都处于同一脚本域,会覆盖相同名称的变量和功能函数等。
- Script think function (thinkfunction)
<string>
(in all games since)
- 脚本功能函数名,每秒自动会调用此函数10次,比较于logic_timer更方便。 请避免 expensive(昂贵)的效果操作,会损失性能。
- Lag Compensation (LagCompensate)
<boolean>
(in all games since) !FGD
- 设置"Yes"会延迟补偿该实体,请谨慎使用。在hammer中不显示。
- Is Automatic-Aim Target (is_autoaim_target)
<boolean>
(in all games since) !FGD
- 设置为"1"会减慢该实体在十字准心下方时,控制杆的瞄准运动。
输入
ShowMessage
- 显示信息并播放声音效果。
基础:
Kill
- 从这个世界中删除此实体。
KillHierarchy
- 功能类似于
Kill
,尽管此实体与其父实体都被删除了,但比Kill
快一点。 SetParent
<字符串>
- 跟随此实体移动,详见Entity Hierarchy (parenting).
SetParentAttachment
<字符串>
- 修改此实体到父实体的特定附属点。实体会传送,以至于其骨骼方位与附属匹配。在使用此输入前必须设置好实体的父实体。
SetParentAttachmentMaintainOffset
<字符串>
- 同上,但不传送。实体接受到此输出后保留与父级的相对位置。
ClearParent
- 取消绑定父实体,以至于此实体可以自由行动。
AddOutput
<字符串>
- 评估此实体的输出/键值(类似于增加输出给某实体)。
格式:<key/键> <value/值>
格式:<output name/输出名> <targetname/目标名>:<inputname/输入名>:<parameter/参数>:<delay/延迟>:<最大触发数,-1代表无限。>
FireUser1
toFireUser4
- 触发
OnUser
输出; 详见 User Inputs and Outputs。 Use
!FGD- 类似于玩家按 +use(使用,默认E按钮); 也许不会做什么事! 也可以通过创建未指定的输入来调用输出。
这个输入不存在于Valve的 FGD中。 DispatchEffect
<字符串>
!FGD- 在实体的原点坐标设置一个特定效果。自从
后由粒子系统取代。
DispatchResponse
<字符串>
!FGD- 向实体发送一个上下文。 详见 Response 和 Concept.
AddContext
<字符串>
- 添加到实体的response contexts/响应上下文列表。格式
<key/键>:<value/值>
. RemoveContext
<字符串>
- 从实体列表删除一个上下文。名字应与现有上下文进行匹配。
ClearContext
<字符串>
- 删除实体的所有上下文。
RunScriptFile
<script>
(in all games since)
- 从硬盘执行一个VScript脚本文件,不带文件后缀名。会合并接收实体的脚本域。
RunScriptCode
<字符串>
(in all games since)
- (执行脚本代码。)执行一段接收实体域的脚本源代码。通过控制台触发,可能需要英文双引号。
警告:切勿在此输入的元素内使用字符串!它将破坏VMF ,由嵌套引号引起!你必须用文本编辑器手动删除来修复!
CallScriptFunction
<字符串>
(in all games since) !FGD
- 在接受实体脚本域上执行一段vscript函数。
SetLocalOrigin
<坐标>
(in all games since) !FGD
- 将此实体设置到地图上某点。如果此实体是某实体父级,那么它的子级也会随着偏移。
SetLocalAngles
<角度>
(in all games since) !FGD
- 设置实体的角度(朝向)。
输出
OnShowMessage
- 当显示信息时触发。
基础:
OnUser1
toOnUser4
- 这些输出将分别响应于
FireUser1
toFireUser4
输入。 详见 User Inputs and Outputs. OnKilled
(only in)
- 当实体被Kill输入时响应此输出。
参见
game_text
- 类似的实体,可以定义文本位置。env_hudhint
-类似的实体。