跨地图触发事件
前言
随着关卡变得越来越复杂,您可能无法创建事件,例如,由于引擎限制,按钮会切换灯光。但是,这并不意味着不可能让激活器触发另一个地图中的事件。
一次性全局实体
第一部分重点介绍如何创建一个env_global,它只能在被触发器激活后触发一次,本部分中的触发器为一个按钮
地图设置
第一张地图:实体设置
在第一张地图,你需要:
- 一个触发器(在本案例中,一个命名为
button
,设置了Don't Move
且触发延迟(Delay Before Reset)为-1func_button将充当触发器) - An env_global named
light_global
- with aGlobal State To Read
set toturn_on_light
Global State To Read
can be anything, i.e. you can type anything in it. It is best to keep it simple and organized.- (Optional) A game_text named
text_button_on
to check the env_global's state
developer 4
if you want to print out entity information (such as outputs being called, etc.) and other meaningful information. The game_text entity is simply used to print text seperately from the developer
console command so that if your map has complex I/O sequences spamming (such as logic_timer and logic_case entities), the game_text makes it easier.
Second Map - Entity Setup
In the second map, you need:
- A logic_auto - with a
Global State To Read
set toturn_on_light
(it must be the same as the env_global's) - The entity you want to fire (in this example - a light named
red
)
The Input/Output Setup
First Map - Outputs
Open the activator (the button here) that will fire the env_global.
My Output > Target Entity Target Input Parameter Delay Only Once OnPressed light_global TurnOn <none> 0.00 Yes OnPressed !self Lock <none> 0.01 Yes
If you are using a game_text, fire it as well as you enable the env_global. Remember that the game_text is only used for debugging purposes. Remove it before shipping your level.
My Output > Target Entity Target Input Parameter Delay Only Once OnPressed text_button_on Display <none> 0.00 Yes
Second Map - Outputs
Open the logic_auto that will fire the entity or sequence (the light here).
My Output > Target Entity Target Input Parameter Delay Only Once OnMapSpawn red TurnOn <none> 0.00 Yes
OnMapTransition
with the logic_auto as crashing during a transition will cause problems when reloading a save. [todo tested in?]And that's it. If the button isn't pressed, the light will be off in the next level. As soon as it is pressed, the light will be turned on.
Multiple Use Env_Global
Let's say we want the light to be toggled on and off when pressing the button. It requires a little more setup, but the process is fairly easy.
First Map - Entity Setup
In the first map, you need:
- An activator (in this example - a button named
button
with a delay before reset set to-1
andToggle
andDon't Move
set inFlags
) - 2 env_global entities:
- The first one named
light_global
- with aGlobal State To Read
set toturn_on_light
- The second one named
light_global_off
- with aGlobal State To Read
set toturn_off_light
- The first one named
- (Optional) 2 game_text entities to check the env_global entities state
- The first one named
text_button_on
- The second one named
text_button_off
- The first one named
Second Map - Entity Setup
- 2 logic_auto entities:
- The first one with a
Global State To Read
set toturn_on_light
(it must be the same as the first env_global in the first map) - The second one with a
Global State To Read
set toturn_off_light
(it must be the same as the second env_global in the first map)
- The first one with a
- The entity you want to fire (in this example - a light named
red
)
First Map - Outputs
Open the activator (the button here) that will fire the env_global entities.
Second Map - Outputs
Open the logic_auto with Global State To Read
set to turn_on_light
(logic_auto that will turn on the light)
My Output > Target Entity Target Input Parameter Delay Only Once OnMapSpawn red TurnOn <none> 0.00 No
Open the logic_auto with Global State To Read
set to turn_off_light
(logic_auto that will turn off the light)
My Output > Target Entity Target Input Parameter Delay Only Once OnMapSpawn red TurnOff <none> 0.00 No
And that's all there is to it.
Wrapping Things Up
You can download the example VMFs here.
External links
Multiplayer - Change The Nature Of Next Round