AI Scripting Reference
Commands for Unreal 2's AI Scripting system.
Commands
- addammo
- ammostring amount [maxclip] gives N units of specified ammo to NPC, if maxclip=1 makes sure clip is as full as possible
- agentbind
- inputname valuename sets and locks an agent input to a given value, for characters with agent-driven meshes
- agentcall
- actionname [wait] calls an agent action of the given name, for characters with agent-driven meshes
- agentexecute
- actiontext [wait] compiles and executes a GAL string on-the-fly as if were inside an action, and calls it
- agentunbind
- inputname unlocks an agent input previously locked and set with AgentBind
- animloop
- name [rate tweentime [wait]] loops specified anim on channel 0
- animloopex
- channel name [rate tweentime [wait]] loops specified anim on arbitrary channel
- animplay
- name [rate tweentime [wait]] plays specified anim on channel 0
- animplayex
- channel name [rate tweentime [wait]] plays specified anim on arbitrary channel
- animrelease
- allow NPC to control anims (currently idle only)
- animtween
- name [tweentime [wait]] tweens specified anim on channel 0
- animtweenex
- channel name [tweentime [wait]] tweens specified anim on arbitrary channel
- call
- label pushes line after current one and jumps to given label
- callscript
- scriptname pushes current script state and switches to specified file
- callend
- aborts any previously pushed call (can no longer return)
- clearevents
- clears any current onevents
- cleartimers
- clears any current general timers
- cleartriggers
- clears any current ontriggers
- consolecommand
- command executes given console command
- debugai
- 0/1 enables/disables debug AI mode in controlled NPC
- debugaievents
- 0/1 enables/disables debug events mode in controlled NPC
- debugaiflags
- ### explicitely sets debug AI flags in controlled NPC
- debugmode
- flags enables/disables various debug modes for the script controller
- decproperty
- name property value [#] decrements (integer) property in named actor by 1 or by #
- deployinventory
- S [1] deploy given inventory item [alt deploy it]
- destroy
- destroy controlled NPC (and controller)
- dialogdisable
- topicname disable this dialog node
- dialogenable
- topicname enable this dialog node
- dialogfar
- topicname speaker1 [speaker2] starts dialog b/w 2 npcs regardless of distance
- dialogfarwait
- topicname speaker1 [speaker2] waits for dialog b/w 2 npcs to finish
- dialoginitiate
- speaker topicname tries to initiate given dialog with given target
- dialogterminate
- speaker tries to remove NPC from dialog
- directionalpatrol
- 0/1 whether NPC faces in direction of patrol destination
- dormant
- 0/1 [1] toggle whether NPC (Pawn and Controller) is dormant (bStasis=true and Physics=PHYS_None) [1] means stay dormant even if script removed?
- dropinventory
- S drop given inventory item
- enableprobeevent
- probename 0|1 enables/disables NPC probe event (for performance) e.g. enableprobeevent seeplayer 0 → no more seeplayer events
- enablexmphandling
- 0/1 enables/disables NPC reacting to XMP items (inert 0/1 sets this to 1/0 use enablexmphandling 0/1 to override this).
- error
- used internally
- eventdisable
- event disables event
- eventenable
- event enables event
- eventwait
- event waits until event occurs
- findactor
- [name Min Max Type Vis Num gotolabel targetlabel] searches for actors in level (all args optional)
- fire
- [duration] fire (weapon / animation-based) for given duration
- firealt
- [duration] alt fire (weapon / animation-based) for given duration
- gib
- [bDestroy] [gorelevel] gib controlled NPC. If gib fails, bDestroy determines if npc is killed or destroyed. Gore level overrides the gibset's default gore level
- giball
- targetclass [bDestroy] [gorelevel] gib all actors of the given class. . If gib fails, bDestroy determines if npc is killed or destroyed. Gore level overrides the gibset's default gore level
- giveinventory
- inventorystring gives the specified inventory item to the NPC
- giveitemtoplayer
- inventorystring [ammocount] give item to player, if ammocount treats as ammo and adds this much ammo to player's inventory
- givetosseditem
- inventorystring add item to tossed items list
- gotoactor
- targetname [dist [face]] sends NPC to specifed actor at specified dist (error if target not found), face=1 ==> try to face target (e.g. for initiating dialog)
- gotoactorsafe
- targetname [dist [face]] sends NPC to specifed actor at specified dist (not an error if target not found), face=1 ==> try to face target (e.g. for initiating dialog)
- gotolabel
- label jumps to given label
- incproperty
- name property value [#] increments (integer) property in named actor by 1 or by #
- inert
- 0/1 toggles NPC reacting to sensory input – shorthand for toggling bump, hearnoise, seeplayer, tookdamage
- handlergroup
- denotes start of a new handler groups (can't be in one currently?)
- handlergroupend
- denotes end of a new handler groups (must be in one currently)
- headtracking
- 0/1
- jump
- X Y Z launch NPC in given direction
- kill
- kill controlled NPC (goes into dying state)
- killall
- targetclass kill all actors of the given class
- lockstep
- name [f] maintain given or current distance from named actor (for keeping squads in formation)
- message
- string [0|1|2] displays the given message in-game (surround with "" for multiple words) 0: onscreen 1: log 2: onscreen and log
- onevent
- xxx [gotolabel ### [clear]] when event xxx occurs, jumps to given label (or disables previous onevent)
- ontimer
- index [delay repeat gotolabel ###] adds a general-purpose timer
- ontrigger
- name [gotolabel ###] when trigger with given event name occurs, jumps to given label (or disables previous ontrigger)
- playsound
- name sound [slot [volume [bNoOverride [Radius [Pitch]]]]] plays sound through named actor (or self=controlled NPC)
- playsoundwait
- name sound [slot [volume [bNoOverride [Radius [Pitch]]]]] plays sound through named actor (or self=controlled NPC) and script waits for sound to finish
- playsoundtableslot
- name slot play sound belonging to the specified group from named pawn's sound table
- playsoundtableslotwait
- name slot play sound belonging to the specified group from named pawn's sound table and script waits for sound to finish
- removeinventory
- [string] removes all [or the specified] inventory from the NPC
- removeinventoryfromplayer
- [string] removes all [or the specified] inventory from the player
- removeitemfromplayer
- inventorystring add item to player's inventory
- removetosseditem
- inventorystring remove item from tossed items list
- resumepatrol
- startlabel endlabel finds the "best" destination at which the resume patrolling and jumps to that line
- return
- returns to most recently pushed line or script state (error if no applicable)
- rotate
- #.# rotate #.# degrees clockwise (right) relative to forward
- savedestination
- copies GotoActorTarget into SavedDestination for later use with resumepatrol
- sendevent
- EventName [triggerpawns] triggers all Actors with tag that matches given Event, or all NPCs
- setactorrangetest
- target distance sets the InRangeActor and InRangeDistance for ActorInRange/ActorOutOfRange events
- setaimodds
- odds sets odds of hitting target when firing weapon under script control
- setalert
- 0/1 controls whether NPC uses "alert" animations
- setammo
- ammostring amount [maxclip] makes sure NPC has exactly specified amount of given type of ammo, if maxclip=1 makes sure clip is as full as possible
- setfocus
- [name] set scripted focus to given actor or clear focus
- sethealth
- x.x sets controlled NPC's health to x.x
- setinventory
- targetname inventorystring sets target's selected inventory to x.x
- setlocation
- locationname [allowfail] move pawn to location of locationame
- setlocationnamed
- targetname locationname [allowfail] move actor matching targetname to location of locationame
- setlocationvector
- targetname X Y Z move targetname to given coordinates
- setmovespeed
- speed [stance] 0.01 to MaxDesiredSpeed (usually 1.0) – set speed used for scripted movement
- setmovespeedauto
- speed 0.01 to MaxDesiredSpeed (usually 1.0) – set speed used for autonomous movement
- setorders
- orders [OrdersObject [fparam [ordergiver]]] sets/clears orders
- setphysics
- physics
- setproperty
- targetname property value sets property in named actor to value
- setproperties
- classname property value sets given property in all actors which are a classname
- setsatellite
- satellitename [targetname] binds a mesh satellite node of the given name to the given target, for dynamic animations
- setscript
- filename [startlabel] switches over to the given script [at the given label]
- setskill
- skill set NPC's skill to given value (0.0..1.0)
- setstance
- stand / crouch / prone specifies stance that NPC should use while patrolling
- setstationary
- 1/0 [1] makes NPC immobile/mobile, optionally forever
- settacticalmovetype
- 0/1/2 sets tactical move type to use during scripted movement (0: none 1: basic 2: serpentine)
- setweapon
- weaponstring set NPC's weapon to specified one, spawning it if necessary
- shutdown
- 1/0 makes NPC as inert as possible without actually making it dormant or removing its controller
- sleep
- [x.x] puts controller to sleep for x.x seconds (defaults to "forever")
- sleeprand
- [x.x] puts controller to sleep for random time in 0..x.x seconds (x.x defaults to 1.0)
- spawn
- targetname S [1 [filename [startlabel]]] spawn given actor at targetname's location, if 1 is given, failure = error, optionally gives spawned NPCs a script
- stop
- stops execution, detaches script controller
- stopmovement
- stops NPC movement
- stopsound
- slot [bStopNoOverrideSounds] stops any sounds played through the named actor on the specified sound slot
- testactorinrange
- name distance if given actor is outside given distance of pawn ==> next command skipped
- testproperty
- name property value property != value ==> next command skipped (string comparison)
- testpropertyci
- name property value property != value ==> next command skipped (case-insensitive string comparison)
- testpropertye
- name property value property != value ==> next command skipped (numerical comparison)
- testpropertyg
- name property value property <= value ==> next command skipped (numerical comparison)
- testpropertyge
- name property value property < value ==> next command skipped (numerical comparison)
- testpropertyl
- name property value property >= value ==> next command skipped (numerical comparison)
- testpropertyle
- name property value property > value ==> next command skipped (numerical comparison)
- testrandom
- float (if random number in 0.0..1.0 > value ==> next command skipped)
- teststate
- name name (false ==> next command skipped)
- turntoactor
- targetname [LOS [Lock]] turn NPC to face named actor, LOS=0 ==> LOS not needed, LOS=1 ==> LOS needed, LOS=2 ==> LOS not needed but turn anyway, Lock means target actor won't be cleared
- unuse
- name unuse the named actor
- use
- name use the named actor
- usepickups
- 0/1 if 0, won't go after or pickup pickups
- weaponload
- load current weapon
- WeaponSetAmmoType
- ammoname
- WeaponSupportsAltFire
- weaponname 0/1 disables/enables NPC being able to alt fire weapon
- WeaponSupportsFire
- weaponname 0/1 disables/enables NPC being able to primary fire weapon
Events
- ActorInRange
- generated when the InRangeActor comes within the InRangeDistance
- ActorOutOfRange
- generated once when the InRangeActor comes goes out of the InRangeDistance
- AnimEnd
- goes to Controller unless Pawn has no Controller (dying state)
- AutoBegin
- goes to Controller, generated by U2NPCControllerScriptable
- AutoEnd
- goes to Controller, generated by Controller : seems to be used for after fighting conditions
- BumpEnemy
- NotifyBump –> Controller –> BumpEnemy/Friend/Other
- BumpFriend
- NotifyBump –> Controller –> BumpEnemy/Friend/Other
- BumpOther
- NotifyBump –> Controller –> BumpEnemy/Friend/Other
- BumpPlayer
- not an actual event: eventwait BumpPlayer –> BumpEnemy/BumpFriend checked for player
- DestinationReached
- goes to Controller
- DialogBegin
- generated by Controller before destroyed
- DialogUnPause
- generated when dialog unpauses npc's script
- Died
- generated by Controller before destroyed
- EnemyNotVisible
- goes to Controller
- HearNoiseFriendly
- HearNoise –> Controller –> HearNoiseFriendly
- HearNoiseOther
- HearNoise –> Controller –> HearNoiseOther
- HearNoiseThreat
- HearNoise –> Controller –> HearNoiseThreat
- InheritEnemy
- generated when NPC could inherit another NPC's Enemy
- ScriptedLanding
- generated when NPC in scripted state lands (not passed back to NPC)
- SeeAlertFriend
- SeeAlertFriend –> Controller
- SeeEnemy
- SeeEnemy –> Controller
- SeeFriend
- SeeFriend –> Controller –> SeeFriend
- SeeOther
- SeeOther –> Controller –> SeeOther
- SeePlayer
- not an actual event: eventwait SeePlayer –> SeeEnemy/SeeFriend checked for player
- TakeDamage
- goes to Pawn
- TookDamage
- eventTakeDamage –> TookDamage generated by U2NPCControllerScriptable
- TookDamageEnemy
- generated internall from TookDamage for use by scripts only
- TookDamageFriend
- generated internall from TookDamage for use by scripts only
- Trigger
- goes to Pawn then Controller
Related Topics
- Artificial Intelligence – A super topic for all AI
- AI Scripting
- ScriptedPawn
Discussion
Unknown: Maybe explain what these are and where to put them?
Unknown: I'll put that stuff in Basic AI Scripting Tutorial when I make it.
SuperApe: This page needs help. Is it purely U2? It should be applicable to all versions. Since, I'm working on the Basic AI Scripting Tutorial, I may revise this.
Category To Do – This page needs to be updated and made relevant to all Unreal versions as well as the current wiki structure.