Ai script conditions: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
m (removed {{DISPLAYTITLE}}, covered by the hl2 point template)
(figured out the real reason some of these were breaking, also updates)
Line 1: Line 1:
{{hl2 point|ai_script_conditions}}
{{lang|Ai script conditions}}
{{hl2 point|ai_script_conditions}} 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.


==Entity description==
Fired only once, automatically, when the condition is first fulfilled, then disables itself. Use <code>Enable</code> inputs to recheck conditions.
The [[keyvalue]]s for this [[entity]] allow a mapper to define a list of [[condition]]s relating to the player, an NPC and a target (optional), to trigger events when these conditions are fulfilled.


For an example of its use, see {{ent|d2_coast_03}} (when Odessa gives Gordon the rocket launcher).
An example of its use is on {{ent|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}}.


Fired only once, automatically, when the condition is first fulfilled, then disables itself. Use "Enable" inputs to recheck conditions.
{{note|Distances do account for crouching. A proximity condition that is fulfilled while not crouching might be unfulfilled while crouching.}}


==Keyvalues==
{{note|{{ent|notarget}} will affect [[LOS]] conditions.}}
{{KV|Actor|target_destination|NPC Target.}}


{{KV|Minimum State|choices|Minimum state of selected target NPC - if for example alert is set, while idle it will do nothing}}
{{code class|CAI_ScriptConditions|ai_scriptconditions.cpp}}
:* 1 : Idle
:* 2 : Alert
:* 3 : Combat


{{KV|Maximum State|choices|Maximum state of selected target NPC - if for example alert is set, while combat it will do nothing}}
==ConVars/Commands==
:* 1 : Idle
{{varcom|start}}
:* 2 : Alert
{{varcom|ai_debugscriptconditions|0|01|Prints to the console what conditions need to be met, when conditions are satisfied, etc. Requires {{ent|developer|1}}.}}
:* 3 : Combat
{{varcom|end}}


{{KV|Actor is running a script?|choices|Is NPC running a script?}}
==Flags==
:* 1 : No
*1: Fire outputs with the Actor as [[!activator]]
:* 2 : Yes
:* 3 : Don`t care


{{KV|Required Time|float|Duration of time that all the conditions must be true.}}
==Keyvalues==
 
{{KV|Actor (Actor)|target_destination|NPC we should be concerned with.}}
{{KV|Minimum time out|float|Minimum}} time before ''OnConditionsTimeout'' is fired - 0 = never expire
{{KV|Minimum State (MinimumState)|choices|Minimum state of selected target NPC - if for example alert is set, while idle it will do nothing.
 
:*1: Idle
{{KV|Maximum time out|float|Maximum}} time before ''OnConditionsTimeout'' is fired - 0 = ignore
:*2: Alert
 
:*3: Combat}}
{{KV|Actor see Player|choices|Select if actor has to have LOS to player}}
{{KV|Maximum State (MaximumState)|choices|Maximum state of selected target NPC - if for example alert is set, while combat it will do nothing.
:* 1 : No
:*1: Idle
:* 2 : Yes
:*2: Alert
:* 3 : Don`t care
:*3: Combat}}
 
{{KV|Actor is running a script? (ScriptStatus)|choices|Is NPC running a script?{{clarify}}
{{KV|Player distance|float|The distance the player must/must not be to the actor. Negative values for NOT, 0 for ignore.}}
:*1: No
 
:*2: Yes
{{KV|Player FOV for Actor.|float|Specify}} angle of view cone in degrees. Negative value = NOT
:*3: Don`t care}}
 
{{KV|Required Time (RequiredTime)|float|Duration of time that all the conditions must be true for the entity to consider them fulfilled.}}
{{KV|Player FOV to actor is a true view cone|choices|Player's view cone is evaluated as a true cone, not pie slice.}}
{{KV|Minimum time out (MinTimeout)|float|Minimum time before <code>OnConditionsTimeout</code> is fired. 0 {{=}} never expire.}}
:* 1 : No - Tall pie slice
{{KV|Maximum time out (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.)}}
:* 2 : Yes - True view cone
{{KV|Actor see Player (ActorSeePlayer)|choices|Select if actor has to have [[LOS]] to player
 
:*1: No
{{KV|Player has LOS to Actor|choices|Checks that the player has clear Line of Sight to the Actor.}}
:*2: Yes
:* 1 : No
:*3: Don`t care}}
:* 2 : Yes
{{KV|Player distance (PlayerActorProximity)|float|The distance the player must or must not be to the actor. Negative values for NOT, 0 for ignore.}}
:* 3 : Don`t care
{{KV|Player FOV for Actor (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 (PlayerActorFOVTrueCone)|choices|Player's view cone is evaluated as a true cone, not pie slice.
{{KV|Target (Optional)|target_destination|Optional entity to include in conditions.}}
:*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|Actor Sees Target|choices|
{{KV|Player has LOS to Actor (PlayerActorLOS)|choices|Checks that the player has clear Line of Sight to the Actor.
:* 1 : No
:*1: No
:* 2 : Yes
:*2: Yes
:* 3 : Don`t care}}
:*3: Don't care}}
 
{{KV|Target (target)|target_destination|Optional third entity to include in conditions.}}
{{KV|Target distance|float|The distance the actor must/must not be to the Target. Negative values for NOT, 0 for ignore.}}
{{KV|Actor Sees Target (ActorSeeTarget)|choices|NPC can see the target
 
:*1: No
{{KV|Player distance from Target|float|The distance the player must/must not be to the Target. Negative values for NOT, 0 for ignore.}}
:*2: Yes
 
:*3: Don`t care}}
{{KV|Player FOV for Target|float|Specify}} angle of view cone in degrees. Negative value = NOT
{{KV|Target distance (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 (PlayerTargetProximity)|float|The distance the player must or must not be to the Target. Negative values for NOT, 0 for ignore.}}
{{KV|Player FOV to target is a true view cone|choices|Player's view cone is evaluated as a true cone, not pie slice.}}
{{KV|Player FOV for Target (PlayerTargetFOV)|float|Specify angle of view cone in degrees. Negative value {{=}} NOT}}
:* 1 : No - Tall pie slice
{{KV|Player FOV to target is a true view cone (PlayerTargetFOVTrueCone)|choices|Player's view cone is evaluated as a true cone, not pie slice.
:* 2 : Yes - True view cone
:*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|choices|Checks that the player has clear Line of Sight to the Target.}}
{{KV|Player has LOS to Target (PlayerTargetLOS)|choices|Checks that the player has clear Line of Sight to the '''Target'''.
:* 1 : No
:*1: No
:* 2 : Yes
:*2: Yes
:* 3 : Don`t care
:*3: Don`t care}}
 
{{KV|Player blocking Actor (PlayerBlockingActor)|choices|Checks that the player is blocking the '''Actor''''s path.
{{KV|Player blocking Actor|choices|Checks that the player is blocking the Actor's path.}}
:*1: No
:* 1 : No
:*2: Yes
:* 2 : Yes
:*3: Don`t care}}
:* 3 : Don`t care
{{KV|Actor in Player`s PVS (ActorInPVS)|choices|Checks that the actor is in the player's [[PVS]]
 
:*1: No
{{KV|Actor in Player`s PVS|choices|Checks that the actor is in the player's PVS}}
:*2: Yes
:* 1 : No
:*3: Don`t care}}
:* 2 : Yes
{{KV|Actor in Vehicle (ActorInVehicle)|choices|Checks is actor is in a vehicle.
:* 3 : Don`t care
:*1: No
 
:*2: Yes
{{KV|Actor in Vehicle|choices|Checks the actor's state in a vehicle.}}
:*3: Don`t care}}
:* 1 : No
{{KV|Player in Vehicle (PlayerInVehicle)|choices|Checks if player is in a vehicle.}}
:* 2 : Yes
:*1: No
:* 3 : Don`t care
:*2: Yes
 
:*3: Don`t care
{{KV|Player in Vehicle|choices|Checks the player's state in a vehicle.}}
{{KV EnableDisable}}
:* 1 : No
{{KV BaseEntity|base=1}}
:* 2 : Yes
:* 3 : Don`t care
 
{{KV Targetname}}
 
==Flags==
* 1 : Fire outputs with the Actor as Activator


==Inputs==
==Inputs==
{{I Targetname}}
{{I EnableDisable}}
{{I EnableDisable}}
{{I BaseEntity|base=1}}


==Outputs==
==Outputs==
{{O Targetname}}
{{IO|OnConditionsSatisfied|Fired when AI conditions are satisfied.}}
 
{{IO|OnConditionsTimeout|Fired when AI conditions timed out.}}
{{IO|OnConditionsSatisfied|Fires when AI conditions satisfied.}}
{{IO|NoValidActor|Fired if/when there are no matching actors in the map.}}
 
{{O BaseEntity}}
{{IO|OnConditionsTimeout|Fires when AI conditions timed out.}}
 
{{IO|NoValidActor|Fires if/when there are no matching actors in the map.}}


[[Category:AI]]
[[Category:AI]]
[[Category:Entities]]

Revision as of 11:02, 4 September 2018

English (en)Translate (Translate)

Template:Hl2 point 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.
C++ In code, it is represented by theCAI_ScriptConditionsclass, defined in theai_scriptconditions.cppfile.

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

Keyvalues

Actor (Actor) ([todo internal name (i)]) <targetname>
NPC we should be concerned with.
Minimum State (MinimumState) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <choices>
Is NPC running a script?[Clarify]
  • 1: No
  • 2: Yes
  • 3: Don`t care
Required Time (RequiredTime) ([todo internal name (i)]) <float>
Duration of time that all the conditions must be true for the entity to consider them fulfilled.
Minimum time out (MinTimeout) ([todo internal name (i)]) <float>
Minimum time before OnConditionsTimeout is fired. 0 = never expire.
Maximum time out (MaxTimeout) ([todo internal name (i)]) <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) ([todo internal name (i)]) <choices>
Select if actor has to have LOS to player
  • 1: No
  • 2: Yes
  • 3: Don`t care
Player distance (PlayerActorProximity) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <choices>
Checks that the player has clear Line of Sight to the Actor.
  • 1: No
  • 2: Yes
  • 3: Don't care
Target (target) ([todo internal name (i)]) <targetname>
Optional third entity to include in conditions.
Actor Sees Target (ActorSeeTarget) ([todo internal name (i)]) <choices>
NPC can see the target
  • 1: No
  • 2: Yes
  • 3: Don`t care
Target distance (ActorTargetProximity) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <float>
Specify angle of view cone in degrees. Negative value = NOT
Player FOV to target is a true view cone (PlayerTargetFOVTrueCone) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <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) ([todo internal name (i)]) <choices>
Checks that the actor is in the player's PVS
  • 1: No
  • 2: Yes
  • 3: Don`t care
Actor in Vehicle (ActorInVehicle) ([todo internal name (i)]) <choices>
Checks is actor is in a vehicle.
  • 1: No
  • 2: Yes
  • 3: Don`t care
Player in Vehicle (PlayerInVehicle) ([todo internal name (i)]) <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.
NoValidActor
Fired if/when there are no matching actors in the map.