Events
What are Postal3Script events?
Events are essentially "signals" triggered by an outside source while the entity is in a state or pattern.
Types of Events
Events can be Global, State, or Pattern only.
Tip
Events that were called successfully will always override the caller
, if that happens you can do
TargetCaller 1
or access Object:caller
or do conditional checks like
IfAttr "caller.ea_health > 0 ..."
in the same pattern.
Global Events Example
Warning
Must be placed before or after the States bracket!
behavior
{
name bh_Postal3ScriptDocs
inherited bh_npc
// Placing the events bracket here will make them global!
events
{
OnHit "ExecutePattern st_util.xpt_ThatHurtYouKnow"
OnISmellFood "State st_food"
}
States
{
st_init
{
Group Neutral
Patterns
{
pt_default
{
actions
{
ExecutePattern bh_base:st_init.pt_default
}
}
}
}
}
// It works here too!
events
{
OnTimer_tPoop "State st_poop"
}
}
State Events Example
Warning
Must be placed after the State's 'Patterns' bracket!
behavior
{
name bh_Postal3ScriptDocs
inherited bh_npc
States
{
st_idle
{
Group Neutral
Patterns
{
pt_default
{
actions
{
Timer tResting,60
Pattern pt_rest
}
}
pt_rest
{
actions
{
// Note: this animation doesn't exists in Postal 3
Sequence seq.IDLE_SLEEP,999
}
}
pt_wakeup
{
actions
{
// Note: this animation doesn't exists in Postal 3
Sequence seq.IDLE_WAKEUP
WaitForEnd 1
Wait 2
State st_start
}
}
}
// Events will execute in any of the patterns above!
events
{
// After 60 seconds this executes
OnTimer_tResting "Pattern pt_wakeup"
// I was hit by someone...
OnHit "Pattern pt_wakeup"
// I'm now pissed, literally
OnNasty "Pattern pt_wakeup"
}
}
}
}
Pattern Events Example
Warning
Must be placed after the Pattern's 'actions' bracket!
behavior
{
name bh_Postal3ScriptDocs
inherited bh_npc
States
{
st_idle
{
Group Neutral
Patterns
{
pt_default
{
actions
{
Timer tResting,60
Pattern pt_rest
}
}
pt_rest
{
actions
{
// Note: this animation doesn't exists in Postal 3
Sequence seq.IDLE_SLEEP,999
}
// These events will now only execute in pt_rest
events
{
// After 60 seconds this executes
OnTimer_tResting "Pattern pt_wakeup"
// I'm now pissed, literally
OnNasty "Pattern pt_wakeup"
// I was hit by someone...
OnHit "Pattern pt_wakeup"
}
}
pt_wakeup
{
actions
{
// Note: this animation doesn't exists in Postal 3
Sequence seq.IDLE_WAKEUP
WaitForEnd 1
Wait 2
State st_start
}
}
}
}
}
}
Automatically Created Events
There are several Postal3Script functions that automatically create Events, here you can find all of them below, and the correspending functions:
OnAE_[name]
-- AreaEvent
OnTimer_[name]
-- Timer
OnAnim[animevent]
-- Sequence (Note: Model animations need to have an anim event embedded)
OnAttrMin_[attribute]
-- ChangeAttr
OnAttrMax_[attribute]
-- ChangeAttr
OnAttrChange_[attribute]
-- ChangeAttr
OnAttrRemove_[attribute]
-- RemoveAttr
OnFire_[name]
-- Fire Functions