This article's documentation is for anything that uses the Source engine. Click here for more information.

Logic timer: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
 
(19 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar}}
| ru=logic_timer:ru
{{TabsBar|main=s2|base=logic_timer}}
}}
{{CD|CTimerEntity|base=CLogicalEntity|file1=logicentities.cpp}}
{{base point|logic_timer|sprite=1}} It fires an [[output]] at regular or random intervals. It can optionally alternate between a "high" and a "low" output.
{{This is a|logical entity|name=logic_timer|sprite=1}} fires an [[output]] at regular or random intervals. It can optionally alternate between a "high" and a "low" output.
{{clr}}
{{Tip|Use with {{ent|logic_case}} for extremely random events.}}
 
{{note|Enabling the entity resets its timer.}}
{{tip|Use with [[logic_case]] for extremely random events.}}
{{warning|This entity uses a high amount of server bandwidth, especially with low refire intervals. Use a [[I/O]] loop with an entity such as {{ent|logic_relay}} for those cases.}}


== Keyvalues ==
== Keyvalues ==
{{KV Targetname}}
{{KV|Use Random Time|intn=UseRandomTime|boolean|Makes the entity fire at random intervals. Range of values is restricted by the next two KVs. }}
{{KV|Use Random Time|intn=UseRandomTime|boolean|Makes the entity fire at random intervals. Range of values is restricted by the next two KVs. }}
{{KV|Minimum Random Interval|intn=LowerRandomBound|float|If "Use Random Time" is set, this is the minimum time between timer fires. The time will be a random number between this and the "Maximum Random Interval".}}
{{KV|Minimum Random Interval|intn=LowerRandomBound|float|If "Use Random Time" is set, this is the minimum time between timer fires. The time will be a random number between this and the "Maximum Random Interval".}}
{{KV|Maximum Random Interval|intn=UpperRandomBound|float|If "Use Random Time" is set, this is the maximum time between timer fires. The time will be a random number between the "Minimum Random Interval" and this.}}
{{KV|Maximum Random Interval|intn=UpperRandomBound|float|If "Use Random Time" is set, this is the maximum time between timer fires. The time will be a random number between the "Minimum Random Interval" and this.}}
{{KV|Refire Interval|intn=RefireTime|float|If "Use Random Time" isn't set, this is the time between timer fires, in seconds. Make sure output delay times are less than this value.}}
{{KV|Refire Interval|intn=RefireTime|float|If "Use Random Time" isn't set, this is the time between timer fires, in seconds. Make sure output delay times are less than this value.}}
 
{{KV StartDisabled}}
{{KV EnableDisable}}
{{KV Targetname}}


== Flags ==
== Flags ==
* 1 : Oscillator (alternates between <code>OnTimerHigh</code> and <code>OnTimerLow</code> outputs)
{{fl|1|Oscillator|(alternates between <code>OnTimerHigh</code> and <code>OnTimerLow</code> outputs)}}
{{tip|It will start with <code>OnTimerLow</code>, and all the odd-numbered refires will be <code>OnTimerLow</code>.}}


== Inputs ==
== Inputs ==
{{IO|RefireTime|Set a new Refire Interval.|param=float}}
{{I|RefireTime|Set a new Refire Interval.|param=float}}
{{IO|ResetTimer|Reset the timer. It will fire after the Refire Interval expires.}}
{{I|ResetTimer|Reset the timer. It will fire after the Refire Interval expires.}}
{{IO|FireTimer|Force the timer to fire immediately.}}
{{I|FireTimer|Force the timer to fire immediately.}}
{{IO|Enable|Enable the timer.}}
{{I|Enable|Enable the timer. {{Note|Enabling the entity resets its timer.}}}}
{{IO|Disable|Disable the timer.}}
{{I|Disable|Disable the timer.}}
{{IO|Toggle|Toggle the timer on/off.}}
{{I|Toggle|Toggle the timer on/off.}}
{{IO|LowerRandomBound|Set a new Minimum Random Interval.|param=float}}
{{I|LowerRandomBound|Set a new Minimum Random Interval.|param=float}}
{{IO|UpperRandomBound|Set a new Maximum Random Interval.|param=float}}
{{I|UpperRandomBound|Set a new Maximum Random Interval.|param=float}}
{{IO|AddToTimer|Add time to the timer if it is currently enabled.  Does not change the Refire Interval.|param=float}}
{{I|AddToTimer|Add time to the timer if it is currently enabled.  Does not change the Refire Interval.|param=float}}
{{IO|SubtractFromTimer|Subtract time from the timer if it is currently enabled.  Does not change the Refire Interval.|param=float}}
{{I|SubtractFromTimer|Subtract time from the timer if it is currently enabled.  Does not change the Refire Interval.|param=float}}
{{I Targetname}}
{{I|UseRandomTime|0 or 1, whether random time is enabled. If random time starts enabled and gets disabled here, the refire interval is set to the Maximum Random Interval.|nofgd=1}}
{{I EnableDisable}}


== Outputs ==
== Outputs ==
{{IO|OnTimer|Fired when the timer expires.}}
{{O|OnTimer|Fired when the timer expires.}}
{{IO|OnTimerHigh|Fired every other time for an oscillating timer.}}
{{O|OnTimerHigh|Fired every other time for an oscillating timer.}}
{{IO|OnTimerLow|Fired every other time for an oscillating timer.}}
{{O|OnTimerLow|Fired every other time for an oscillating timer.}}
{{O Targetname}}
 
== See also ==
* {{ent|logic_case}}
* [[Left 4 Dead 2/Script Functions/AddThinkToEnt]]


[[Category:IO System]]
[[Category:IO System]]

Latest revision as of 06:47, 4 June 2025

English (en)Русский (ru)中文 (zh)Translate (Translate)
C++ Class hierarchy
CTimerEntity
CLogicalEntity
CServerOnlyEntity
CBaseEntity
C++ logicentities.cpp
Logic timer.png

logic_timer is a logical entity available in all Source Source games. fires an output at regular or random intervals. It can optionally alternate between a "high" and a "low" output.

Tip.pngTip:Use with logic_case for extremely random events.

Keyvalues

Name (targetname) <string>[ Edit ]
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentname or target).
Also displayed in Hammer's 2D views and Entity Report.
See also:  Generic Keyvalues, Inputs and Outputs available to all entities

Use Random Time (UseRandomTime) <boolean>
Makes the entity fire at random intervals. Range of values is restricted by the next two KVs.
Minimum Random Interval (LowerRandomBound) <float>
If "Use Random Time" is set, this is the minimum time between timer fires. The time will be a random number between this and the "Maximum Random Interval".
Maximum Random Interval (UpperRandomBound) <float>
If "Use Random Time" is set, this is the maximum time between timer fires. The time will be a random number between the "Minimum Random Interval" and this.
Refire Interval (RefireTime) <float>
If "Use Random Time" isn't set, this is the time between timer fires, in seconds. Make sure output delay times are less than this value.
Start Disabled (StartDisabled) <boolean>
Stay dormant until activated (with theEnableinput).

Flags

Oscillator : [1]
(alternates between OnTimerHigh and OnTimerLow outputs)
Tip.pngTip:It will start with OnTimerLow, and all the odd-numbered refires will be OnTimerLow.

Inputs

RefireTime <floatRedirectInput/float>
Set a new Refire Interval.
ResetTimer
Reset the timer. It will fire after the Refire Interval expires.
FireTimer
Force the timer to fire immediately.
Enable
Enable the timer.
Note.pngNote:Enabling the entity resets its timer.
Disable
Disable the timer.
Toggle
Toggle the timer on/off.
LowerRandomBound <floatRedirectInput/float>
Set a new Minimum Random Interval.
UpperRandomBound <floatRedirectInput/float>
Set a new Maximum Random Interval.
AddToTimer <floatRedirectInput/float>
Add time to the timer if it is currently enabled. Does not change the Refire Interval.
SubtractFromTimer <floatRedirectInput/float>
Subtract time from the timer if it is currently enabled. Does not change the Refire Interval.
UseRandomTime  !FGD
0 or 1, whether random time is enabled. If random time starts enabled and gets disabled here, the refire interval is set to the Maximum Random Interval.

Outputs

OnTimer
Fired when the timer expires.
OnTimerHigh
Fired every other time for an oscillating timer.
OnTimerLow
Fired every other time for an oscillating timer.

See also