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
(I paid for my source licence like they did. I'm as entitled as they are. Please review the ToS item 5 for Online Conduct. Adding information is less restrictive than deleting. Thank you.)
 
(33 intermediate revisions by 19 users not shown)
Line 1: Line 1:
{{wrongtitle|title=logic_timer}}
{{LanguageBar}}
{{base_point}}
{{TabsBar|main=s2|base=logic_timer}}
{{CD|CTimerEntity|base=CLogicalEntity|file1=logicentities.cpp}}
{{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.
{{Tip|Use with {{ent|logic_case}} for extremely random events.}}


==Entity Description==
== Keyvalues ==
[[Image:{{PAGENAME}}.png|right]]An entity that fires a timer event at regular, or random, intervals. It can also be set to oscillate between a high and low end, in which case it will fire alternating high/low outputs each time it fires.
{{KV Targetname}}
* An oscillator's first output will be an OnTimerHigh output.
{{KV|Use Random Time|intn=UseRandomTime|boolean|Makes the entity fire at random intervals. Range of values is restricted by the next two KVs. }}
* Use with [[logic_case]] for extremely random events.
{{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".}}
* Could be used to deploy [[env_headcrabcanister]]s at random intervals, instead of using fixed delays on the inputs.{{clr}}
{{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 StartDisabled}}


==Keyvalues==
== Flags ==
{{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>.}}


* {{KV Targetname}}
== Inputs ==
{{I|RefireTime|Set a new Refire Interval.|param=float}}
{{I|ResetTimer|Reset the timer. It will fire after the Refire Interval expires.}}
{{I|FireTimer|Force the timer to fire immediately.}}
{{I|Enable|Enable the timer. {{Note|Enabling the entity resets its timer.}}}}
{{I|Disable|Disable the timer.}}
{{I|Toggle|Toggle the timer on/off.}}
{{I|LowerRandomBound|Set a new Minimum Random Interval.|param=float}}
{{I|UpperRandomBound|Set a new Maximum Random Interval.|param=float}}
{{I|AddToTimer|Add time to 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|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}}


* {{KV EnableDisable}}
== Outputs ==
{{O|OnTimer|Fired when the timer expires.}}
{{O|OnTimerHigh|Fired every other time for an oscillating timer.}}
{{O|OnTimerLow|Fired every other time for an oscillating timer.}}


* '''UseRandomTime'''
== See also ==
: {{boolean}} If set, fires randomly at an interval from the last trigger.
* {{ent|logic_case}}
* [[Left 4 Dead 2/Script Functions/AddThinkToEnt]]


* '''LowerRandomBound'''
[[Category:IO System]]
: <float> If '''UseRandomTime''' is set, this is the minimum time between timer fires. The time will be a random number between this and the '''UpperRandomBound'''.
 
* '''UpperRandomBound'''
: <float> If '''UseRandomTime''' is set, this is the maximum time between timer fires. The time will be a random number between the '''LowerRandomBound''' and this.
 
* '''RefireTime'''
: <float> If '''UseRandomTime''' isn't set, this is the interval between timer fires, in seconds.
 
==Flags==
 
* 1 : Oscillator (alternates between OnTimerHigh and OnTimerLow outputs)
 
==Inputs==
 
* {{I Targetname}}
* {{I EnableDisable}}
 
* '''Toggle'''
: Toggle the timer on/off.
 
* '''RefireTime <integer>'''
: Set a new Refire Interval.
 
* '''FireTimer'''
: Force the timer to fire immediately.
 
* '''LowerRandomBound <float>'''
: Set a new Minimum Random Interval.
 
* '''UpperRandomBound <float>'''
: Set a new Maximum Random Interval.
 
* '''{{EP2 add|ResetTimer}}'''
* '''{{EP2 add|AddToTimer <float>}}'''
* '''{{EP2 add|SubtractFromTimer <float>}}'''
* '''{{EP2 add|UseRandomTime}}'''
 
==Outputs==
 
* {{O Targetname}}
 
* '''OnTimer'''
: Fired when the timer expires.
 
* '''OnTimerHigh'''
: Fired every other time for an oscillating timer.
 
* '''OnTimerLow'''
: Fired every other time for an oscillating timer.

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