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

Ai script conditions: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
 
 
(46 intermediate revisions by 22 users not shown)
Line 1: Line 1:
ai_script_conditions
{{LanguageBar}}
{{Ent not in fgd}}
{{CD|CAI_ScriptConditions|file1=ai_scriptconditions.cpp}}
{{This is a|point entity|name=ai_script_conditions|except=Left 4 Dead series}}
It allows a mapper to define a list of [[condition]]s relating to the player, an NPC, and an optional target, that trigger events when the conditions are fulfilled.


AI Script Conditions
Fired only once, automatically, when the condition is first fulfilled, then disables itself. Use <code>Enable</code> inputs to recheck conditions.


KEYS
An example of its use is on [[d2_coast_03]]. When Odessa holds out the rocket launcher for Gordon to grab, an <code>ai_script_conditions</code> is used to tell how close the player is to Odessa. When the player is within a very small range, Odessa drops the weapon. 99% percent of the time, the player will be close enough that they will then automatically pick up the {{ent|weapon_rpg}}.


Name targetname <target_source> The name that other entities refer to this entity by.
{{note|Distances do account for crouching. A proximity condition that is fulfilled while not crouching might be unfulfilled while crouching.}}


Actor Actor <target_destination> NPC Target
{{note|{{cmd|notarget}} will affect [[LOS]] conditions.}}


Start Disabled StartDisabled <choices>
{{bug|This entity is hardcoded to be based on the SP player, causing a crash when enabled in multiplayer games.}}


Minimum state MinimumState <choices>


Maximum state MaximumState <choices>
==ConVars/Commands==
{{varcom|start}}
{{varcom|ai_debugscriptconditions|0|01|Prints to the console what conditions need to be met, when conditions are satisfied, etc. Requires {{cmd|developer|1}}.}}
{{varcom|end}}


Actor is running a script? ScriptStatus <choices>
==Flags==
{{fl|1|Fire outputs with the Actor as [[!activator]]}}


Required Time RequiredTime <float> Duration of time that all the conditions must be true
==Keyvalues==
{{KV Targetname}}
{{KV|Actor|intn=Actor|target_destination|NPC we should be concerned with.}}
{{KV|Minimum State|intn=MinimumState|choices|Minimum state of selected target NPC - if for example alert is set, while idle it will do nothing.
:*1: Idle
:*2: Alert
:*3: Combat}}
{{KV|Maximum State|intn=MaximumState|choices|Maximum state of selected target NPC - if for example alert is set, while combat it will do nothing.
:*1: Idle
:*2: Alert
:*3: Combat}}
{{KV|Actor is running a script?|intn=ScriptStatus|choices|Is NPC running a script?{{clarify}}
:*1: No
:*2: Yes
:*3: Don`t care}}
{{KV|Required Time|intn=RequiredTime|float|Duration of time that all the conditions must be true for the entity to consider them fulfilled.}}
{{KV|Minimum time out|intn=MinTimeout|float|Minimum time before <code>OnConditionsTimeout</code> is fired. 0 {{=}} never expire.}}
{{KV|Maximum time out|intn=MaxTimeout|float|Maximum time before <code>OnConditionsTimeout</code> is fired - 0 {{=}} ignore. (If you don't specify a Maximum timeout, conditions will time out at exactly Minimum Time Out. If you DO specify a Maximum time out, timeout will occur randomly between Minimum and Maximum time out values.)}}
{{KV|Actor see Player|intn=ActorSeePlayer|choices|Select if actor has to have [[LOS]] to player
:*1: No
:*2: Yes
:*3: Don`t care}}
{{KV|Player distance|intn=PlayerActorProximity|float|The distance the player must or must not be to the actor. Negative values for NOT, 0 for ignore.}}
{{KV|Player FOV for Actor|intn=PlayerActorFOV|float|Specify angle of view cone in degrees. Negative value {{=}} NOT in this view cone.}}
{{KV|Player FOV to actor is a true view cone|intn=PlayerActorFOVTrueCone|choices|Player's view cone is evaluated as a true cone, not pie slice.
:*1: No - Tall pie slice (Ignores the Z position of things being looked at. Could potentially include objects directly above or below the player even if player can't see them on the screen.)
:*2: Yes - True view cone (See objects by an actual cone)}}
{{KV|Player has LOS to Actor|intn=PlayerActorLOS|choices|Checks that the player has clear Line of Sight to the Actor.
:*1: No
:*2: Yes
:*3: Don't care}}
{{KV|Target|intn=target|target_destination|Optional third entity to include in conditions.}}
{{KV|Actor Sees Target|intn=ActorSeeTarget|choices|NPC can see the target
:*1: No
:*2: Yes
:*3: Don`t care}}
{{KV|Target distance|intn=ActorTargetProximity|float|The distance the actor must or must not be to the Target. Negative values for NOT, 0 for ignore.}}
{{KV|Player distance from Target|intn=PlayerTargetProximity|float|The distance the player must or must not be to the Target. Negative values for NOT, 0 for ignore.}}
{{KV|Player FOV for Target|intn=PlayerTargetFOV|float|Specify angle of view cone in degrees. Negative value {{=}} NOT}}
{{KV|Player FOV to target is a true view cone|intn=PlayerTargetFOVTrueCone|choices|Player's view cone is evaluated as a true cone, not pie slice.
:*1: No - Tall pie slice (Ignores the Z position of things being looked at. Could potentially include objects directly above or below the player even if player can't see them on the screen.)
:*2: Yes - True view cone (See objects by an actual cone)}}
{{KV|Player has LOS to Target|intn=PlayerTargetLOS|choices|Checks that the player has clear Line of Sight to the '''Target'''.
:*1: No
:*2: Yes
:*3: Don`t care}}
{{KV|Player blocking Actor|intn=PlayerBlockingActor|choices|Checks that the player is blocking the '''Actor''''s path.
:*1: No
:*2: Yes
:*3: Don`t care}}
{{KV|Actor in Player`s PVS|intn=ActorInPVS|choices|Checks that the actor is in the player's [[PVS]]
:*1: No
:*2: Yes
:*3: Don`t care}}
{{KV|Actor in Vehicle|intn=ActorInVehicle|choices|Checks if actor is in a vehicle.
:*1: No
:*2: Yes
:*3: Don`t care}}
{{KV|Player in Vehicle|intn=PlayerInVehicle|choices|Checks if player is in a vehicle.}}
:*1: No
:*2: Yes
:*3: Don`t care
{{KV StartDisabled}}


Minimum time out MinTimeout <float> Minimum time before OnConditionsTimeout is fired. 0 = never expire
==Inputs==
{{I EnableDisable}}


Maximum time out MaxTimeout <float> Maximum time before OnConditionsTimeout is fired. 0 = ignore
==Outputs==
{{O|OnConditionsSatisfied|Fired when AI conditions are satisfied.}}
{{O|OnConditionsTimeout|Fired when AI conditions timed out.}}
{{O|NoValidActors|Fired if/when there are no matching actors in the map.}}


Actor Sees Player ActorSeePlayer <choices>
[[Category:AI]]
 
Player distance PlayerActorProximity <float> The distance the player must/must not be to the actor. Negative values for NOT, 0 for ignore.
 
Player FOV for Actor  PlayerActorFOV <float> Specify angle of view cone in degrees. Negative value = NOT
 
Play FOV to Actor is a true view cone PlayerActorFOVTrueCone <choices> Player's view cone is evaluated as a true cone, not pie slice
 
Player has LOS to Actor PlayerActorLOS <choices> Checks that the player has clear Line of Sight to the Actor
 
Target (Optional) target <target_destination> Optional entity to include in conditions
 
Actor Sees Target ActorSeeTarget <choices>
 
Target distance ActorTargetProximity <float> The distance the actor must/must not be to the Target. Negative values for NOT, 0 for ignore.
 
Player distance from Target PlayerTargetProximity <float> The distance the player must/must not be to the Target. Negative values for NOT, 0 for ignore.
 
Player FOV for Target PlayerTargetFOV <float> Specify angle of view cone in degrees. Negative value = NOT
 
Play FOV to Target is a true view cone PlayerTargetFOVTrueCone <choices> Player's view cone is evaluated as a true cone, not pie slice
 
Player has LOS to Target PlayerTargetLOS <choices> Checks that the player has clear Line of Sight to the Target
 
Player blocking Actor PlayerBlockingActor <choices> Checks that the player is blocking the Actor's path
 
 
INPUTS
 
Kill Removes this entity from the world.
 
KillHierarchy Removes this entity and all its children from the world.
 
AddOutput <string> Adds an entity I/O connection to this entity. Format: <output name> <targetname>:<inputname>:<parameter>:<delay>:<max times to fire (-1 == infinite)>. Very dangerous, use with care.
 
FireUser1 Causes this entity's OnUser1 output to be fired.
 
FireUser2 Causes this entity's OnUser2 output to be fired.
 
FireUser3 Causes this entity's OnUser3 output to be fired.
 
FireUser4 Causes this entity's OnUser4 output to be fired.
 
Enable Enable this entity
 
Disable Disable this entity
 
 
OUTPUTS
 
OnUser1 Fired in response to FireUser1 input.
 
OnUser2 Fired in response to FireUser2 input.
 
OnUser3 Fired in response to FireUser3 input.
 
OnUser4 Fired in response to FireUser4 input.
 
OnConditionsSatisfied Fires when AI conditions satisfied
 
OnConditionsTimeout Fires when AI conditions timed out

Latest revision as of 06:46, 4 June 2025

English (en)Translate (Translate)
Icon-NotInFGD.png
This entity is not in the Counter-Strike: SourceDay of Defeat: SourceTeam Fortress 2Counter-Strike: Global Offensive FGD by default.
See below for instructions on making it available.
C++ Class hierarchy
CAI_ScriptConditions
CBaseEntity
C++ ai_scriptconditions.cpp

ai_script_conditions is a point entity available in all Source Source games except Left 4 Dead seriesLeft 4 Dead series Left 4 Dead series. It allows a mapper to define a list of conditions relating to the player, an NPC, and an optional target, that trigger events when the conditions are fulfilled.

Fired only once, automatically, when the condition is first fulfilled, then disables itself. Use Enable inputs to recheck conditions.

An example of its use is on d2_coast_03. When Odessa holds out the rocket launcher for Gordon to grab, an ai_script_conditions is used to tell how close the player is to Odessa. When the player is within a very small range, Odessa drops the weapon. 99% percent of the time, the player will be close enough that they will then automatically pick up the weapon_rpg.

Note.pngNote:Distances do account for crouching. A proximity condition that is fulfilled while not crouching might be unfulfilled while crouching.
Note.pngNote:notarget will affect LOS conditions.
Icon-Bug.pngBug:This entity is hardcoded to be based on the SP player, causing a crash when enabled in multiplayer games.  [todo tested in ?]


ConVars/Commands

Cvar/Command Parameters or default value Descriptor Effect
ai_debugscriptconditions 0 0 disables, 1 enables Prints to the console what conditions need to be met, when conditions are satisfied, etc. Requires developer 1.

Flags

Fire outputs with the Actor as !activator : [1]

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

Actor (Actor) <targetname>
NPC we should be concerned with.
Minimum State (MinimumState) <choices>
Minimum state of selected target NPC - if for example alert is set, while idle it will do nothing.
  • 1: Idle
  • 2: Alert
  • 3: Combat
Maximum State (MaximumState) <choices>
Maximum state of selected target NPC - if for example alert is set, while combat it will do nothing.
  • 1: Idle
  • 2: Alert
  • 3: Combat
Actor is running a script? (ScriptStatus) <choices>
Is NPC running a script?[Clarify]
  • 1: No
  • 2: Yes
  • 3: Don`t care
Required Time (RequiredTime) <float>
Duration of time that all the conditions must be true for the entity to consider them fulfilled.
Minimum time out (MinTimeout) <float>
Minimum time before OnConditionsTimeout is fired. 0 = never expire.
Maximum time out (MaxTimeout) <float>
Maximum time before OnConditionsTimeout is fired - 0 = ignore. (If you don't specify a Maximum timeout, conditions will time out at exactly Minimum Time Out. If you DO specify a Maximum time out, timeout will occur randomly between Minimum and Maximum time out values.)
Actor see Player (ActorSeePlayer) <choices>
Select if actor has to have LOS to player
  • 1: No
  • 2: Yes
  • 3: Don`t care
Player distance (PlayerActorProximity) <float>
The distance the player must or must not be to the actor. Negative values for NOT, 0 for ignore.
Player FOV for Actor (PlayerActorFOV) <float>
Specify angle of view cone in degrees. Negative value = NOT in this view cone.
Player FOV to actor is a true view cone (PlayerActorFOVTrueCone) <choices>
Player's view cone is evaluated as a true cone, not pie slice.
  • 1: No - Tall pie slice (Ignores the Z position of things being looked at. Could potentially include objects directly above or below the player even if player can't see them on the screen.)
  • 2: Yes - True view cone (See objects by an actual cone)
Player has LOS to Actor (PlayerActorLOS) <choices>
Checks that the player has clear Line of Sight to the Actor.
  • 1: No
  • 2: Yes
  • 3: Don't care
Target (target) <targetname>
Optional third entity to include in conditions.
Actor Sees Target (ActorSeeTarget) <choices>
NPC can see the target
  • 1: No
  • 2: Yes
  • 3: Don`t care
Target distance (ActorTargetProximity) <float>
The distance the actor must or must not be to the Target. Negative values for NOT, 0 for ignore.
Player distance from Target (PlayerTargetProximity) <float>
The distance the player must or must not be to the Target. Negative values for NOT, 0 for ignore.
Player FOV for Target (PlayerTargetFOV) <float>
Specify angle of view cone in degrees. Negative value = NOT
Player FOV to target is a true view cone (PlayerTargetFOVTrueCone) <choices>
Player's view cone is evaluated as a true cone, not pie slice.
  • 1: No - Tall pie slice (Ignores the Z position of things being looked at. Could potentially include objects directly above or below the player even if player can't see them on the screen.)
  • 2: Yes - True view cone (See objects by an actual cone)
Player has LOS to Target (PlayerTargetLOS) <choices>
Checks that the player has clear Line of Sight to the Target.
  • 1: No
  • 2: Yes
  • 3: Don`t care
Player blocking Actor (PlayerBlockingActor) <choices>
Checks that the player is blocking the Actor's path.
  • 1: No
  • 2: Yes
  • 3: Don`t care
Actor in Player`s PVS (ActorInPVS) <choices>
Checks that the actor is in the player's PVS
  • 1: No
  • 2: Yes
  • 3: Don`t care
Actor in Vehicle (ActorInVehicle) <choices>
Checks if actor is in a vehicle.
  • 1: No
  • 2: Yes
  • 3: Don`t care
Player in Vehicle (PlayerInVehicle) <choices>
Checks if player is in a vehicle.
  • 1: No
  • 2: Yes
  • 3: Don`t care
Start Disabled (StartDisabled) <boolean>
Stay dormant until activated (with theEnableinput).

Inputs

EnableDisable:

Enable / Disable
Enable/disable this entity from performing its task. It might also disappear from view.

Outputs

OnConditionsSatisfied
Fired when AI conditions are satisfied.
OnConditionsTimeout
Fired when AI conditions timed out.
NoValidActors
Fired if/when there are no matching actors in the map.