Difference between revisions of "Events Reference"
imported>Catwheezle m (→See Also) |
(Unprofessional writing) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 29: | Line 29: | ||
== Calling Events == | == Calling Events == | ||
Calling events is identical to calling a [[Function Reference#Calling Functions|function]]. | Calling events is identical to calling a [[Function Reference#Calling Functions|function]]. | ||
==A note about events== | |||
Events are not like the old block types. When you make an event in your script that extends ObjectReference or ReferenceAlias you are essentially creating a new version of that event, and you need to declare it with the same number of parameters. Those parameters are then used inside the script. | |||
You should pretty much just copy and paste the events straight from the wiki, unless you desire to change the name of the parameters for some reason. | |||
For example: | |||
<source lang="papyrus"> | |||
Event OnHit(ObjectReference akAggressor, Form akWeapon, Projectile akProjectile) | |||
EndEvent | |||
</source> | |||
You might be tempted to try something like this: | |||
<source lang="papyrus"> | |||
Event OnHit(Game.GetPlayer()) | |||
;do something | |||
EndEvent | |||
</source> | |||
'''However, that does NOT work.''' | |||
Instead what you need to do is something like this: | |||
<source lang="papyrus"> | |||
Event OnHit(ObjectReference akAggressor, Form akWeapon, Projectile akProjectile) | |||
if akAggressor != game.getPlayer() | |||
return | |||
endif | |||
;do something | |||
EndEvent | |||
</source> | |||
== See Also == | == See Also == | ||
*[[Events]] | *[[Events]] | ||
*[[Function Reference]] | |||
{{Languages|Events_Reference}} | |||
[[Category:Scripting]] | [[Category:Scripting]] | ||
[[Category:Papyrus]] | [[Category:Papyrus]] | ||
[[Category:Papyrus Language Reference]] | [[Category:Papyrus Language Reference]] |
Latest revision as of 15:06, 18 August 2024
Events are special functions that the game will call when something happens. Note that simply defining an event won't make the game call it, you must follow the name and argument list of an event that the game already sends you.
Event Definition[edit | edit source]
<event> ::= <event header> [<function block> 'endEvent']
Function headers must always be followed by a standard function block and "EndEvent", unless they are native (which are handled by the game).
Event Header[edit | edit source]
<event header> ::= 'Event' <identifier> '(' [<parameters>] ')' ['Native'] <flags>*
The event header is identical to the function header, but does not allow for return types or allow for the "Global" flag.
Parameters[edit | edit source]
The parameters are identical to the function parameter list, but should match the data that the game will send to the event.
Examples[edit | edit source]
; A simple activate event handler
Event OnActivate(ObjectReference akActivator)
PlayAnimation("CoolStuff")
endEvent
Special Variables[edit | edit source]
Event special variables are identical to a non-global function's.
Calling Events[edit | edit source]
Calling events is identical to calling a function.
A note about events[edit | edit source]
Events are not like the old block types. When you make an event in your script that extends ObjectReference or ReferenceAlias you are essentially creating a new version of that event, and you need to declare it with the same number of parameters. Those parameters are then used inside the script.
You should pretty much just copy and paste the events straight from the wiki, unless you desire to change the name of the parameters for some reason.
For example:
Event OnHit(ObjectReference akAggressor, Form akWeapon, Projectile akProjectile)
EndEvent
You might be tempted to try something like this:
Event OnHit(Game.GetPlayer())
;do something
EndEvent
However, that does NOT work.
Instead what you need to do is something like this:
Event OnHit(ObjectReference akAggressor, Form akWeapon, Projectile akProjectile)
if akAggressor != game.getPlayer()
return
endif
;do something
EndEvent
See Also[edit | edit source]
Language: | English • 日本語 |
---|