UW2_PRC8/_module/nss/nwnx_events.nss
Jaysyn904 5197ad9a4d Initial upload
Initial upload
2023-09-25 20:24:01 -04:00

1283 lines
48 KiB
Plaintext

/// @addtogroup events Events
/// @brief Provides an interface for plugins to create event-based systems, and exposes some events through that interface.
/// @{
/// @file nwnx_events.nss
#include "nwnx"
const string NWNX_Events = "NWNX_Events"; ///< @private
/**
# Events
__________________________________________
## Associate Events
- NWNX_ON_ADD_ASSOCIATE_BEFORE
- NWNX_ON_ADD_ASSOCIATE_AFTER
- NWNX_ON_REMOVE_ASSOCIATE_BEFORE
- NWNX_ON_REMOVE_ASSOCIATE_AFTER
`OBJECT_SELF` = The owner of the associate.
Event Data Tag | Type | Notes
----------------------|--------|-------
ASSOCIATE_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Stealth Events
- NWNX_ON_ENTER_STEALTH_BEFORE
- NWNX_ON_ENTER_STEALTH_AFTER
- NWNX_ON_EXIT_STEALTH_BEFORE
- NWNX_ON_EXIT_STEALTH_AFTER
`OBJECT_SELF` = The creature entering or exiting stealth.
_______________________________________
## Examine Events
- NWNX_ON_EXAMINE_OBJECT_BEFORE
- NWNX_ON_EXAMINE_OBJECT_AFTER
`OBJECT_SELF` = The player examining the object
Event Data Tag | Type | Notes
----------------------|--------|-------
EXAMINEE_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject()
TRAP_EXAMINE_SUCCESS | int | For trap examine only, whether the examine succeeded
_______________________________________
## Validate Use Item Events
- NWNX_ON_VALIDATE_USE_ITEM_BEFORE
- NWNX_ON_VALIDATE_USE_ITEM_AFTER
`OBJECT_SELF` = The creature using the item
Event Data Tag | Type | Notes |
------------------------|--------|-------|
ITEM_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject()|
BEFORE_RESULT | int | TRUE/FALSE, only in _AFTER events|
@note Setting the result to "0" will cause the item to appear unusable (red) in the inventory.
@note Setting the result of this event will NOT prevent the item from being equipped, only used (e.g. scrolls/wands). See the "NWNX_ON_VALIDATE_ITEM_EQUIP_*" events to control equip behaviour.
@note If the BEFORE event is not skipped, BEFORE_RESULT is the value of running the function normally. Otherwise, this is the set result value.
_______________________________________
## Use Item Events
- NWNX_ON_USE_ITEM_BEFORE
- NWNX_ON_USE_ITEM_AFTER
`OBJECT_SELF` = The creature using the item
Event Data Tag | Type | Notes |
------------------------|--------|-------|
ITEM_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject()|
TARGET_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject()|
ITEM_PROPERTY_INDEX | int | |
ITEM_SUB_PROPERTY_INDEX | int | |
TARGET_POSITION_X | float | |
TARGET_POSITION_Y | float | |
TARGET_POSITION_Z | float | |
@note You can set the event result to "0" (send feedback to the client that the item cannot be used, default)
or "1" to suppress that feedback.
_______________________________________
## Item Container Events
- NWNX_ON_ITEM_INVENTORY_OPEN_BEFORE
- NWNX_ON_ITEM_INVENTORY_OPEN_AFTER
- NWNX_ON_ITEM_INVENTORY_CLOSE_BEFORE
- NWNX_ON_ITEM_INVENTORY_CLOSE_AFTER
`OBJECT_SELF` = The container
Event Data Tag | Type | Notes
----------------------|--------|-------
OWNER | object |Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Ammunition Reload Events
- NWNX_ON_ITEM_AMMO_RELOAD_BEFORE
- NWNX_ON_ITEM_AMMO_RELOAD_AFTER
`OBJECT_SELF` = The creature whose inventory we're searching for the item type
Event Data Tag | Type | Notes
----------------------|------|-------
BASE_ITEM_ID | int | The base item type being sought (arrow, bolt, bullet)
BASE_ITEM_NTH | int | Find the Nth instance of this item
ACTION_RESULT | int | The object that was determined in BEFORE (only in after)
_______________________________________
## Scroll Learn Events
- NWNX_ON_ITEM_SCROLL_LEARN_BEFORE
- NWNX_ON_ITEM_SCROLL_LEARN_AFTER
`OBJECT_SELF` = The creature learning the scroll
Event Data Tag | Type | Notes
----------------------|--------|-------
SCROLL | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Validate Item Equip Events
- NWNX_ON_VALIDATE_ITEM_EQUIP_BEFORE
- NWNX_ON_VALIDATE_ITEM_EQUIP_AFTER
`OBJECT_SELF` = The creature trying to equip the item
Event Data Tag | Type | Notes |
----------------------|--------|-------|
ITEM | object | Convert to object with NWNX_Object_StringToObject()|
SLOT | int | INVENTORY_SLOT_* Constant|
BEFORE_RESULT | int | TRUE/FALSE, only in _AFTER events|
@note Manually setting the result of this event will skip all game checks for item slot validity. The client will block incompatible types (weapons into armor slots) in the GUI, but this will work using ActionEquipItem().
@note To show this item as unusable to the PC (red in the inventory), use in combination with the "NWNX_ON_VALIDATE_USE_ITEM_*" events.
@note If the BEFORE event is not skipped, BEFORE_RESULT is the value of running the function normally. Otherwise, this is the set result value.
_______________________________________
## Item Equip Events
- NWNX_ON_ITEM_EQUIP_BEFORE
- NWNX_ON_ITEM_EQUIP_AFTER
`OBJECT_SELF` = The creature equipping the item
Event Data Tag | Type | Notes |
----------------------|--------|-------|
ITEM | object | Convert to object with NWNX_Object_StringToObject()|
SLOT | int | |
_______________________________________
## Item Unequip Events
- NWNX_ON_ITEM_UNEQUIP_BEFORE
- NWNX_ON_ITEM_UNEQUIP_AFTER
`OBJECT_SELF` = The creature unequipping the item
Event Data Tag | Type | Notes
----------------------|--------|-------
ITEM | object | Convert to object with NWNX_Object_StringToObject()
@note These events do not trigger when equipment is replaced by equipping another item.
_______________________________________
## Item Destroy Events
- NWNX_ON_ITEM_DESTROY_OBJECT_BEFORE
- NWNX_ON_ITEM_DESTROY_OBJECT_AFTER
- NWNX_ON_ITEM_DECREMENT_STACKSIZE_BEFORE
- NWNX_ON_ITEM_DECREMENT_STACKSIZE_AFTER
`OBJECT_SELF` = The item triggering the event
@note Use of `NWNX_ON_ITEM_(DESTROY_OBJECT|DECREMENT_STACKSIZE)_*` conflicts with object event handler profiling
_______________________________________
## Item Use Lore To Identify Events
- NWNX_ON_ITEM_USE_LORE_BEFORE
- NWNX_ON_ITEM_USE_LORE_AFTER
`OBJECT_SELF` = The player attempting to identify an item with their lore skill
Event Data Tag | Type | Notes
----------------------|--------|-------
ITEM | object |Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Item Pay To Identify Events
- NWNX_ON_ITEM_PAY_TO_IDENTIFY_BEFORE
- NWNX_ON_ITEM_PAY_TO_IDENTIFY_AFTER
`OBJECT_SELF` = The player attempting to pay to identify an item
Event Data Tag | Type | Notes
----------------------|--------|-------
ITEM | object | Convert to object with NWNX_Object_StringToObject()
STORE | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Item Split Events
- NWNX_ON_ITEM_SPLIT_BEFORE
- NWNX_ON_ITEM_SPLIT_AFTER
`OBJECT_SELF` = The player attempting to split an item
Event Data Tag | Type | Notes|
----------------------|--------|-------|
ITEM | object | Convert to object with NWNX_Object_StringToObject()|
NUMBER_SPLIT_OFF | int | |
_______________________________________
## Feat Use Events
- NWNX_ON_USE_FEAT_BEFORE
- NWNX_ON_USE_FEAT_AFTER
`OBJECT_SELF` = The object using the feat
Event Data Tag | Type | Notes |
----------------------|--------|-------|
FEAT_ID | int | |
SUBFEAT_ID | int | |
TARGET_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject() |
AREA_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject() |
TARGET_POSITION_X | float | |
TARGET_POSITION_Y | float | |
TARGET_POSITION_Z | float | |
_______________________________________
## DM Give Events
- NWNX_ON_DM_GIVE_GOLD_BEFORE
- NWNX_ON_DM_GIVE_GOLD_AFTER
- NWNX_ON_DM_GIVE_XP_BEFORE
- NWNX_ON_DM_GIVE_XP_AFTER
- NWNX_ON_DM_GIVE_LEVEL_BEFORE
- NWNX_ON_DM_GIVE_LEVEL_AFTER
- NWNX_ON_DM_GIVE_ALIGNMENT_BEFORE
- NWNX_ON_DM_GIVE_ALIGNMENT_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes |
----------------------|--------|-------|
AMOUNT | int | |
OBJECT | object | Convert to object with NWNX_Object_StringToObject() |
ALIGNMENT_TYPE | int | Only valid for `NWNX_ON_DM_GIVE_ALIGNMENT_*` |
_______________________________________
## DM Spawn Object Events
- NWNX_ON_DM_SPAWN_OBJECT_BEFORE
- NWNX_ON_DM_SPAWN_OBJECT_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes |
----------------------|--------|-------|
AREA | object | Convert to object with NWNX_Object_StringToObject() |
OBJECT | object | Only returns a valid object in *_AFTER |
OBJECT_TYPE | int | Returns `NWNX_EVENTS_OBJECT_TYPE_*` |
POS_X | float | |
POS_Y | float | |
POS_Z | float | |
_______________________________________
## DM Give Item Events
- NWNX_ON_DM_GIVE_ITEM_BEFORE
- NWNX_ON_DM_GIVE_ITEM_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET | object | Convert to object with NWNX_Object_StringToObject()
ITEM | object | Only returns a valid object in *_AFTER
_______________________________________
## DM Multiple Object Action Events
- NWNX_ON_DM_HEAL_BEFORE
- NWNX_ON_DM_HEAL_AFTER
- NWNX_ON_DM_KILL_BEFORE
- NWNX_ON_DM_KILL_AFTER
- NWNX_ON_DM_TOGGLE_INVULNERABLE_BEFORE
- NWNX_ON_DM_TOGGLE_INVULNERABLE_AFTER
- NWNX_ON_DM_FORCE_REST_BEFORE
- NWNX_ON_DM_FORCE_REST_AFTER
- NWNX_ON_DM_LIMBO_BEFORE
- NWNX_ON_DM_LIMBO_AFTER
- NWNX_ON_DM_TOGGLE_AI_BEFORE
- NWNX_ON_DM_TOGGLE_AI_AFTER
- NWNX_ON_DM_TOGGLE_IMMORTAL_BEFORE
- NWNX_ON_DM_TOGGLE_IMMORTAL_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes
----------------------|--------|-------
NUM_TARGETS | int | The number of targets affected
TARGET_* | object | * = 1 <= NUM_TARGETS
_______________________________________
## DM Single Object Action Events
- NWNX_ON_DM_GOTO_BEFORE
- NWNX_ON_DM_GOTO_AFTER
- NWNX_ON_DM_POSSESS_BEFORE
- NWNX_ON_DM_POSSESS_AFTER
- NWNX_ON_DM_POSSESS_FULL_POWER_BEFORE
- NWNX_ON_DM_POSSESS_FULL_POWER_AFTER
- NWNX_ON_DM_TOGGLE_LOCK_BEFORE
- NWNX_ON_DM_TOGGLE_LOCK_AFTER
- NWNX_ON_DM_DISABLE_TRAP_BEFORE
- NWNX_ON_DM_DISABLE_TRAP_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET | object | Convert to object with NWNX_Object_StringToObject()
@note If `TARGET` is `OBJECT_INVALID` for `NWNX_ON_DM_POSSESS_*`, the DM is unpossessing.
_______________________________________
## DM Jump Events
- NWNX_ON_DM_JUMP_TO_POINT_BEFORE
- NWNX_ON_DM_JUMP_TO_POINT_AFTER
- NWNX_ON_DM_JUMP_TARGET_TO_POINT_BEFORE
- NWNX_ON_DM_JUMP_TARGET_TO_POINT_AFTER
- NWNX_ON_DM_JUMP_ALL_PLAYERS_TO_POINT_BEFORE
- NWNX_ON_DM_JUMP_ALL_PLAYERS_TO_POINT_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes |
----------------------|--------|-------|
TARGET_AREA | object | Convert to object with NWNX_Object_StringToObject() |
POS_X | float | |
POS_Y | float | |
POS_Z | float | |
NUM_TARGETS | int | Only valid for NWNX_ON_DM_JUMP_TARGET_TO_POINT_* |
TARGET_* | object | * = 1 <= NUM_TARGETS, Only valid for NWNX_ON_DM_JUMP_TARGET_TO_POINT_* |
_______________________________________
## DM Change Difficulty Events
- NWNX_ON_DM_CHANGE_DIFFICULTY_BEFORE
- NWNX_ON_DM_CHANGE_DIFFICULTY_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes |
----------------------|--------|-------|
DIFFICULTY_SETTING | int | |
_______________________________________
## DM View Inventory Events
- NWNX_ON_DM_VIEW_INVENTORY_BEFORE
- NWNX_ON_DM_VIEW_INVENTORY_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes
----------------------|--------|-------
OPEN_INVENTORY | int | TRUE if opening an inventory, FALSE if closing
TARGET | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## DM Spawn Trap Events
- NWNX_ON_DM_SPAWN_TRAP_ON_OBJECT_BEFORE
- NWNX_ON_DM_SPAWN_TRAP_ON_OBJECT_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes
----------------------|--------|-------
AREA | object | Convert to object with NWNX_Object_StringToObject()
TARGET | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## DM Dump Locals Events
- NWNX_ON_DM_DUMP_LOCALS_BEFORE
- NWNX_ON_DM_DUMP_LOCALS_AFTER
`OBJECT_SELF` = The DM
Event Data Tag | Type | Notes
----------------------|--------|-------
TYPE | int | 0 = dm_dumplocals, 1 = dm_dumparealocals, 3 = dm_dumpmodulelocals
TARGET | object | Convert to object with NWNX_Object_StringToObject()
Note: For TYPE 1/2, use GetArea(TARGET) or GetModule()
_______________________________________
## DM Other Events
- NWNX_ON_DM_APPEAR_BEFORE
- NWNX_ON_DM_APPEAR_AFTER
- NWNX_ON_DM_DISAPPEAR_BEFORE
- NWNX_ON_DM_DISAPPEAR_AFTER
- NWNX_ON_DM_SET_FACTION_BEFORE
- NWNX_ON_DM_SET_FACTION_AFTER
- NWNX_ON_DM_TAKE_ITEM_BEFORE
- NWNX_ON_DM_TAKE_ITEM_AFTER
- NWNX_ON_DM_SET_STAT_BEFORE
- NWNX_ON_DM_SET_STAT_AFTER
- NWNX_ON_DM_GET_VARIABLE_BEFORE
- NWNX_ON_DM_GET_VARIABLE_AFTER
- NWNX_ON_DM_SET_VARIABLE_BEFORE
- NWNX_ON_DM_SET_VARIABLE_AFTER
- NWNX_ON_DM_SET_TIME_BEFORE
- NWNX_ON_DM_SET_TIME_AFTER
- NWNX_ON_DM_SET_DATE_BEFORE
- NWNX_ON_DM_SET_DATE_AFTER
- NWNX_ON_DM_SET_FACTION_REPUTATION_BEFORE
- NWNX_ON_DM_SET_FACTION_REPUTATION_AFTER
- NWNX_ON_DM_GET_FACTION_REPUTATION_BEFORE
- NWNX_ON_DM_GET_FACTION_REPUTATION_AFTER
`OBJECT_SELF` = The DM
_______________________________________
## Client Disconnect Events
- NWNX_ON_CLIENT_DISCONNECT_BEFORE
- NWNX_ON_CLIENT_DISCONNECT_AFTER
`OBJECT_SELF` = The player disconnecting from the server
@note This event also runs when a player connects to the server but cancels out of character select.
OBJECT_SELF will be OBJECT_INVALID in this case.
_______________________________________
## Client Connect Events
- NWNX_ON_CLIENT_CONNECT_BEFORE
- NWNX_ON_CLIENT_CONNECT_AFTER
`OBJECT_SELF` = The module
Event Data Tag | Type | Notes
----------------------|--------|-------
PLAYER_NAME | string | Player name of the connecting client
CDKEY | string | Public cdkey of the connecting client
IS_DM | int | Whether the client is connect as DM (1/0)
IP_ADDRESS | string | The IP address of the connecting client
@note Skipping the _BEFORE event will cause the client's connection to be denied.
You can optionally pass a reason for this in the event result.
_______________________________________
## Combat Round Start Events
- NWNX_ON_START_COMBAT_ROUND_BEFORE
- NWNX_ON_START_COMBAT_ROUND_AFTER
`OBJECT_SELF` = The creature starting the combat round
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Cast Spell Events
- NWNX_ON_CAST_SPELL_BEFORE
- NWNX_ON_CAST_SPELL_AFTER
`OBJECT_SELF` = The creature casting the spell
Event Data Tag | Type | Notes |
----------------------|--------|-------|
SPELL_ID | int | |
TARGET_POSITION_X | float | |
TARGET_POSITION_Y | float | |
TARGET_POSITION_Z | float | |
TARGET_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject() |
ITEM_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject() |
MULTI_CLASS | int | |
SPELL_COUNTERED | int | Returns TRUE if spell was countered else FALSE |
COUNTERING_SPELL | int | Returns TRUE if cast as counter else FALSE |
PROJECTILE_PATH_TYPE | int | |
IS_INSTANT_SPELL | int | Returns TRUE if spell was instant else FALSE |
@note the stock nwscript GetMetaMagicFeat() function will return any metamagic used.
_______________________________________
## Set Memorized Spell Slot Events
- NWNX_SET_MEMORIZED_SPELL_SLOT_BEFORE
- NWNX_SET_MEMORIZED_SPELL_SLOT_AFTER
`OBJECT_SELF` = The creature who's memorizing the spell
Event Data Tag | Type | Notes |
----------------------|--------|-------|
SPELL_MULTICLASS | int | Index of the spell casting class (0-2) |
SPELL_LEVEL | int | |
SPELL_SLOT | int | |
SPELL_ID | int | |
SPELL_DOMAIN | int | |
SPELL_METAMAGIC | int | |
SPELL_FROMCLIENT | int | |
ACTION_RESULT | int | |
_______________________________________
## Clear Memorized Spell Slot Events
- NWNX_CLEAR_MEMORIZED_SPELL_SLOT_BEFORE
- NWNX_CLEAR_MEMORIZED_SPELL_SLOT_AFTER
`OBJECT_SELF` = The creature whose spellbook is being changed
Event Data Tag | Type | Notes |
----------------------|--------|-------|
SPELL_MULTICLASS | int | Index of the spell casting class (0-2) |
SPELL_LEVEL | int | |
SPELL_SLOT | int | |
_______________________________________
## Healer Kit Use Events
- NWNX_ON_HEALER_KIT_BEFORE
- NWNX_ON_HEALER_KIT_AFTER
`OBJECT_SELF` = The creature using the Healer's Kit
Event Data Tag | Type | Notes |
----------------------|--------|-------|
TARGET_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject() |
ITEM_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject() |
ITEM_PROPERTY_INDEX | int | |
MOVE_TO_TARGET | int | |
ACTION_RESULT | int | |
_______________________________________
## Party Action Events
- NWNX_ON_PARTY_*_BEFORE
- NWNX_ON_PARTY_*_AFTER
`OBJECT_SELF` = The player doing the action
Replace * with an event listed below
Event | Event Data Tag | Type | Notes |
----------------|-----------------------|--------|-------|
LEAVE | LEAVING | object | Convert to object with NWNX_Object_StringToObject() |
KICK | KICKED | object | Convert to object with NWNX_Object_StringToObject() |
TRANSFER_LEADERSHIP | NEW_LEADER | object | Convert to object with NWNX_Object_StringToObject() |
INVITE | INVITED | object | Convert to object with NWNX_Object_StringToObject() |
IGNORE_INVITATION | INVITED_BY | object | Convert to object with NWNX_Object_StringToObject() |
ACCEPT_INVITATION | INVITED_BY | object | Convert to object with NWNX_Object_StringToObject() |
REJECT_INVITATION | INVITED_BY | object | Convert to object with NWNX_Object_StringToObject() |
KICK_HENCHMAN | INVITED_BY | object | Convert to object with NWNX_Object_StringToObject() |
_______________________________________
## Combat Mode Toggle Events
- NWNX_ON_COMBAT_MODE_ON
- NWNX_ON_COMBAT_MODE_OFF
`OBJECT_SELF` = The Player Character toggling the mode
Event Data Tag | Type | Notes
----------------------|--------|-------
COMBAT_MODE_ID | int | See below
The `COMBAT_MODE_ID` returned does not match the `COMBAT_MODE_*` NWScript constants. Use the following:
Combat Mode | ID
----------------------|----
NONE | 0
PARRY | 1
POWER_ATTACK | 2
IMPROVED_POWER_ATTACK | 3
COUNTERSPELL | 4
FLURRY_OF_BLOWS | 5
RAPID_SHOT | 6
EXPERTISE | 7
IMPROVED_EXPERTISE | 8
DEFENSIVE_CASTING | 9
DIRTY_FIGHTING | 10
DEFENSIVE_STANCE | 11
@note Requires @ref combatmodes "NWNX_CombatModes" plugin to work.
_______________________________________
## Use Skill Events
- NWNX_ON_USE_SKILL_BEFORE
- NWNX_ON_USE_SKILL_AFTER
`OBJECT_SELF` = The creature using the skill
Event Data Tag | Type | Notes |
----------------------|--------|-------|
USED_ITEM_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject() |
TARGET_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject() |
SKILL_ID | int | |
SUB_SKILL_ID | int | |
TARGET_POSITION_X | float | |
TARGET_POSITION_Y | float | |
TARGET_POSITION_Z | float | |
@note Probably only really works with the following activated skills:
`SKILL_ANIMAL_EMPATHY`, `SKILL_DISABLE_TRAP`, `SKILL_HEAL`, `SKILL_OPEN_LOCK`,
`SKILL_PICK_POCKET`, `SKILL_TAUNT`
_______________________________________
## Map Pin Events
- NWNX_ON_MAP_PIN_ADD_PIN_BEFORE
- NWNX_ON_MAP_PIN_ADD_PIN_AFTER
- NWNX_ON_MAP_PIN_CHANGE_PIN_BEFORE
- NWNX_ON_MAP_PIN_CHANGE_PIN_AFTER
- NWNX_ON_MAP_PIN_DESTROY_PIN_BEFORE
- NWNX_ON_MAP_PIN_DESTROY_PIN_AFTER
`OBJECT_SELF` = The player performing the map pin action
Event Data Tag | Type | Notes
----------------------|--------|-------
PIN_X | float | Not available in DESTROY event
PIN_Y | float | Not available in DESTROY event
PIN_ID | int | Not available in ADD events. Use `GetLocalInt(oPC, "NW_TOTAL_MAP_PINS")`
PIN_NOTE | string | Not available in DESTROY event
_______________________________________
## Spot/Listen Detection Events
- NWNX_ON_DO_LISTEN_DETECTION_BEFORE
- NWNX_ON_DO_LISTEN_DETECTION_AFTER
- NWNX_ON_DO_SPOT_DETECTION_BEFORE
- NWNX_ON_DO_SPOT_DETECTION_AFTER
`OBJECT_SELF` = The creature doing the detecting
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET | object | Convert to object with NWNX_Object_StringToObject()
TARGET_INVISIBLE | int | TRUE/FALSE
BEFORE_RESULT | int | TRUE/FALSE, only in _AFTER events
_______________________________________
## Polymorph Events
- NWNX_ON_POLYMORPH_BEFORE
- NWNX_ON_POLYMORPH_AFTER
- NWNX_ON_UNPOLYMORPH_BEFORE
- NWNX_ON_UNPOLYMORPH_AFTER
`OBJECT_SELF` = The creature doing the un/polymorphing
Event Data Tag | Type | Notes
----------------------|--------|-------
POLYMORPH_TYPE | int | Appearance polymorphing into. Only for ON_POLYMORPH
@warning If skipping the ON_POLYMORPH event, in some cases bioware scripts will enter an endless loop
trying to merge item properties.\n
This can be seen in `x2_s2_gwildshp` with the minotaur form with the following line:
`IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE);`
If you want to skip this, you need to make sure oWeaponOld != oWeaponNew
_______________________________________
## Effect Applied/Removed Events
- NWNX_ON_EFFECT_APPLIED_BEFORE
- NWNX_ON_EFFECT_APPLIED_AFTER
- NWNX_ON_EFFECT_REMOVED_BEFORE
- NWNX_ON_EFFECT_REMOVED_AFTER
`OBJECT_SELF` = The target of the effect
Event Data Tag | Type | Notes |
----------------------|--------|-------|
UNIQUE_ID | int | |
CREATOR | object | Convert to object with NWNX_Object_StringToObject() |
TYPE | int | The effect type, does not match NWScript constants See: https://github.com/nwnxee/unified/blob/master/NWNXLib/API/Constants/Effect.hpp#L8 |
SUB_TYPE | int | SUBTYPE_* |
DURATION_TYPE | int | DURATION_TYPE_* |
DURATION | float | |
SPELL_ID | int | |
CASTER_LEVEL | int | |
CUSTOM_TAG | string | |
INT_PARAM_* | int | * = 1-8 |
FLOAT_PARAM_* | float | * = 1-4 |
STRING_PARAM_* | string | * = 1-6 |
OBJECT_PARAM_* | object | * = 1-4, Convert to object with NWNX_Object_StringToObject() |
@note Only fires for Temporary or Permanent effects, does not include VisualEffects or ItemProperty effects.
_______________________________________
## Quickchat Events
- NWNX_ON_QUICKCHAT_BEFORE
- NWNX_ON_QUICKCHAT_AFTER
`OBJECT_SELF` = The player using the quick chat command
Event Data Tag | Type | Notes
----------------------|--------|-------
QUICKCHAT_COMMAND | int | `VOICE_CHAT_*` constants
_______________________________________
## Inventory Open Events
- NWNX_ON_INVENTORY_OPEN_BEFORE
- NWNX_ON_INVENTORY_OPEN_AFTER
`OBJECT_SELF` = The player opening the inventory
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET_INVENTORY | object | Pretty sure this is always the player
_______________________________________
## Inventory Select Panel Events
- NWNX_ON_INVENTORY_SELECT_PANEL_BEFORE
- NWNX_ON_INVENTORY_SELECT_PANEL_AFTER
`OBJECT_SELF` = The player changing inventory panels
Event Data Tag | Type | Notes
----------------------|--------|-------
CURRENT_PANEL | int | The current panel, index starts at 0
SELECTED_PANEL | int | The selected panel, index starts at 0
_______________________________________
## Barter Start Events
- NWNX_ON_BARTER_START_BEFORE
- NWNX_ON_BARTER_START_AFTER
`OBJECT_SELF` = The player who initiated the barter
Event Data Tag | Type | Notes
----------------------|--------|-------
BARTER_TARGET | object | The other player involved in the barter
_______________________________________
## Barter End Events
- NWNX_ON_BARTER_END_BEFORE
- NWNX_ON_BARTER_END_AFTER
`OBJECT_SELF` = The player who initiated the barter
Event Data Tag | Type | Notes
------------------------------|--------|-------
BARTER_TARGET | object | The other player involved in the barter
BARTER_COMPLETE | int | TRUE/FALSE - whether the barter completed successfully
BARTER_INITIATOR_ITEM_COUNT | int | How many items the initiator traded away, only in _BEFORE events
BARTER_TARGET_ITEM_COUNT | int | How many items the target traded away, only in _BEFORE events
BARTER_INITIATOR_ITEM_* | object | Convert to object with NWNX_Object_StringToObject(), only in _BEFORE events
BARTER_TARGET_ITEM_* | object | Convert to object with NWNX_Object_StringToObject(), only in _BEFORE events
_______________________________________
## Trap Events
- NWNX_ON_TRAP_DISARM_BEFORE
- NWNX_ON_TRAP_DISARM_AFTER
- NWNX_ON_TRAP_ENTER_BEFORE
- NWNX_ON_TRAP_ENTER_AFTER
- NWNX_ON_TRAP_EXAMINE_BEFORE
- NWNX_ON_TRAP_EXAMINE_AFTER
- NWNX_ON_TRAP_FLAG_BEFORE
- NWNX_ON_TRAP_FLAG_AFTER
- NWNX_ON_TRAP_RECOVER_BEFORE
- NWNX_ON_TRAP_RECOVER_AFTER
- NWNX_ON_TRAP_SET_BEFORE
- NWNX_ON_TRAP_SET_AFTER
`OBJECT_SELF` = The creature performing the trap action
Event Data Tag | Type | Notes
----------------------|--------|-------
TRAP_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject()
TRAP_FORCE_SET | int | TRUE/FALSE, only in ENTER events
ACTION_RESULT | int | TRUE/FALSE, only in _AFTER events (not ENTER)
_______________________________________
## Timing Bar Events
- NWNX_ON_TIMING_BAR_START_BEFORE
- NWNX_ON_TIMING_BAR_START_AFTER
- NWNX_ON_TIMING_BAR_STOP_BEFORE
- NWNX_ON_TIMING_BAR_STOP_AFTER
- NWNX_ON_TIMING_BAR_CANCEL_BEFORE
- NWNX_ON_TIMING_BAR_CANCEL_AFTER
`OBJECT_SELF` = The player the timing bar is for
Event Data Tag | Type | Notes
----------------------|--------|-------
EVENT_ID | int | The type of timing bar, see constants below, only in _START_ events
DURATION | int | Length of time (in milliseconds) the bar is set to last, only in _START_ events
_______________________________________
## Webhook Events
- NWNX_ON_WEBHOOK_SUCCESS
- NWNX_ON_WEBHOOK_FAILURE
`OBJECT_SELF` = The module object
Event Data Tag | Type | Notes |
----------------------|--------|-------|
STATUS | int | The return code after posting to the server |
MESSAGE | string | The full constructed message sent |
HOST | string | |
PATH | string | |
RATELIMIT_LIMIT | int | Discord: The number of requests that can be made in a limited period |
RATELIMIT_REMAINING | int | Discord: The number of remaining requests that can be made before rate limited |
RATELIMIT_RESET | int | Discord: Timestamp when the rate limit resets |
RETRY_AFTER | float | Milliseconds until another webhook is allowed when rate limited |
FAIL_INFO | string | The reason the hook failed aside from rate limits |
@note Requires @ref webhook "NWNX_WebHook" plugin to work.
_______________________________________
## Servervault Events
- NWNX_ON_CHECK_STICKY_PLAYER_NAME_RESERVED_BEFORE
- NWNX_ON_CHECK_STICKY_PLAYER_NAME_RESERVED_AFTER
`OBJECT_SELF` = The module
Event Data Tag | Type | Notes
----------------------|--------|-------
PLAYER_NAME | string | Player name of the connecting client
CDKEY | string | Public cdkey of the connecting client
LEGACY_CDKEY | string | Public cdkey from earlier versions of NWN
IS_DM | int | Whether the client is connecting as DM (1/0)
@note Skipping the _BEFORE event will cause no player names to be accepted unless you SetEventResult("1")
_______________________________________
## Server Character Save Events
- NWNX_ON_SERVER_CHARACTER_SAVE_BEFORE
- NWNX_ON_SERVER_CHARACTER_SAVE_AFTER
`OBJECT_SELF` = The player character being saved.
@note This is called once for every character when the server is exiting and when the server is saved, or when ExportSingleCharacter() & ExportAllCharacters() is called.
_______________________________________
## Export Character Events
- NWNX_ON_CLIENT_EXPORT_CHARACTER_BEFORE
- NWNX_ON_CLIENT_EXPORT_CHARACTER_AFTER
`OBJECT_SELF` = The player
Note: This event runs when the player clicks the "Save Character" button in the options menu to export their character to their localvault.
_______________________________________
## Levelling Events
- NWNX_ON_LEVEL_UP_BEFORE
- NWNX_ON_LEVEL_UP_AFTER
- NWNX_ON_LEVEL_UP_AUTOMATIC_BEFORE
- NWNX_ON_LEVEL_UP_AUTOMATIC_AFTER
- NWNX_ON_LEVEL_DOWN_BEFORE
- NWNX_ON_LEVEL_DOWN_AFTER
`OBJECT_SELF` = The creature levelling up or down, automatic is for henchmen levelling
_______________________________________
## Container Change Events
- NWNX_ON_INVENTORY_ADD_ITEM_BEFORE
- NWNX_ON_INVENTORY_ADD_ITEM_AFTER
- NWNX_ON_INVENTORY_REMOVE_ITEM_BEFORE
- NWNX_ON_INVENTORY_REMOVE_ITEM_AFTER
@note NWNX_ON_INVENTORY_REMOVE_ITEM_* is not skippable
`OBJECT_SELF` = The container
Event Data Tag | Type | Notes
----------------------|--------|-------
ITEM | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Gold Events
- NWNX_ON_INVENTORY_ADD_GOLD_BEFORE
- NWNX_ON_INVENTORY_ADD_GOLD_AFTER
- NWNX_ON_INVENTORY_REMOVE_GOLD_BEFORE
- NWNX_ON_INVENTORY_REMOVE_GOLD_AFTER
`OBJECT_SELF` = The creature gaining or losing gold
Event Data Tag | Type | Notes
----------------------|--------|-------
GOLD | int | The amount of gold added or removed
@warning While these events are skippable, you should be very careful about doing so.
It's very easy to create situations where players can dupe their gold or worse.
_______________________________________
## PVP Attitude Change Events
- NWNX_ON_PVP_ATTITUDE_CHANGE_BEFORE
- NWNX_ON_PVP_ATTITUDE_CHANGE_AFTER
`OBJECT_SELF` = The player performing the attitude change
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET_OBJECT_ID | object | Convert to object with NWNX_Object_StringToObject()
ATTITUDE | int | 0 = Dislike, 1 = Like
_______________________________________
## Input Walk To Events
- NWNX_ON_INPUT_WALK_TO_WAYPOINT_BEFORE
- NWNX_ON_INPUT_WALK_TO_WAYPOINT_AFTER
`OBJECT_SELF` = The player clicking somewhere to move
Event Data Tag | Type | Notes |
----------------------|--------|-------|
AREA | object | Convert to object with NWNX_Object_StringToObject() |
POS_X | float | |
POS_Y | float | |
POS_Z | float | |
RUN_TO_POINT | int | TRUE if player is running, FALSE if player is walking (eg when shift clicking) |
_______________________________________
## Material Change Events
- NWNX_ON_MATERIALCHANGE_BEFORE
- NWNX_ON_MATERIALCHANGE_AFTER
`OBJECT_SELF` = The creature walking on a different surface material
Event Data Tag | Type | Notes
----------------------|--------|-------
MATERIAL_TYPE | int | See surfacemat.2da for values
@note: After a PC transitions to a new area, a surface material change event
won't fire until after the PC moves.
_______________________________________
## Input Attack Events
- NWNX_ON_INPUT_ATTACK_OBJECT_BEFORE
- NWNX_ON_INPUT_ATTACK_OBJECT_AFTER
`OBJECT_SELF` = The creature attacking
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET | object | Convert to object with NWNX_Object_StringToObject()
PASSIVE | int | TRUE / FALSE
CLEAR_ALL_ACTIONS | int | TRUE / FALSE
ADD_TO_FRONT | int | TRUE / FALSE
_______________________________________
## Input Force Move To Events
- NWNX_ON_INPUT_FORCE_MOVE_TO_OBJECT_BEFORE
- NWNX_ON_INPUT_FORCE_MOVE_TO_OBJECT_AFTER
`OBJECT_SELF` = The creature forcibly moving
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Input Cast Spell Evens
- NWNX_ON_INPUT_CAST_SPELL_BEFORE
- NWNX_ON_INPUT_CAST_SPELL_AFTER
`OBJECT_SELF` = The creature casting a spell
Event Data Tag | Type | Notes
----------------------|--------|-------
TARGET | object | Convert to object with NWNX_Object_StringToObject()
SPELL_ID | int |
MULTICLASS | int |
DOMAIN_LEVEL | int |
META_TYPE | int |
INSTANT | int | TRUE / FALSE
PROJECTILE_PATH | int |
SPONTANEOUS | int | TRUE / FALSE
FAKE | int | TRUE / FALSE
FEAT | int | -1 when not cast from a feat
CASTER_LEVEL | int |
IS_AREA_TARGET | int | TRUE / FALSE
POS_X | float |
POS_Y | float |
POS_Z | float |
@note This event runs the moment a creature starts casting
_______________________________________
## Input Keyboard Events
- NWNX_ON_INPUT_KEYBOARD_BEFORE
- NWNX_ON_INPUT_KEYBOARD_AFTER
`OBJECT_SELF` = The player
Event Data Tag | Type | Notes
----------------------|--------|-------
KEY | string | The key pressed by the player, one of the following: W A S D Q E
@note To stop the player from moving you can do something like below, since normal immobilizing effects stop the client
from sending input.
location locPlayer = GetLocation(oPlayer);
object oBoulder = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_boulder", locPlayer, FALSE, "TESTPLC");
NWNX_Object_SetPosition(oPlayer, GetPositionFromLocation(locPlayer));
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oBoulder);
_______________________________________
## Object Lock Events
- NWNX_ON_OBJECT_LOCK_BEFORE
- NWNX_ON_OBJECT_LOCK_AFTER
`OBJECT_SELF` = The object doing the locking
Event Data Tag | Type | Notes
----------------------|--------|-------
DOOR | object | Convert to object with NWNX_Object_StringToObject()
_______________________________________
## Object Unlock Events
- NWNX_ON_OBJECT_UNLOCK_BEFORE
- NWNX_ON_OBJECT_UNLOCK_AFTER
`OBJECT_SELF` = The object doing the unlocking
Event Data Tag | Type | Notes
----------------------|--------|-------
DOOR | object | Convert to object with NWNX_Object_StringToObject()
THIEVES_TOOL | object | Convert to object with NWNX_Object_StringToObject()
ACTIVE_PROPERTY_INDEX | int |
_______________________________________
## UUID Collision Events
- NWNX_ON_UUID_COLLISION_BEFORE
- NWNX_ON_UUID_COLLISION_AFTER
`OBJECT_SELF` = The object that caused the UUID collision
Event Data Tag | Type | Notes
----------------------|--------|-------
UUID | string | The UUID
Note: To get the existing object with `UUID` you can use GetObjectByUUID(), be aware that this event runs before the
object is added to the world which means many functions (for example `GetArea(OBJECT_SELF)`) will not work.
_______________________________________
## Resource Events
- NWNX_ON_RESOURCE_ADDED
- NWNX_ON_RESOURCE_REMOVED
- NWNX_ON_RESOURCE_MODIFIED
`OBJECT_SELF` = The module
Event Data Tag | Type | Notes
----------------------|--------|-------
ALIAS | string | NWNX for /nwnx, DEVELOPMENT for /development
RESREF | string | The ResRef of the file
TYPE | int | The type of the file, see NWNX_UTIL_RESREF_TYPE_*
Note: These events fire when a file gets added/removed/modified in the /nwnx or /development folder
_______________________________________
## ELC Events
- NWNX_ON_ELC_VALIDATE_CHARACTER_BEFORE
- NWNX_ON_ELC_VALIDATE_CHARACTER_AFTER
`OBJECT_SELF` = The player
Note: NWNX_ELC must be loaded for these events to work. The `_AFTER` event only fires if the character successfully
completes validation.
_______________________________________
## Quickbar Events
- NWNX_ON_QUICKBAR_SET_BUTTON_BEFORE
- NWNX_ON_QUICKBAR_SET_BUTTON_AFTER
`OBJECT_SELF` = The player
Event Data Tag | Type | Notes
----------------------|--------|-------
BUTTON | int | The quickbar button slot, 0-35
TYPE | int | The type of quickbar button set, see NWNX_PLAYER_QBS_TYPE_* in nwnx_player_qbs.nss
Note: Skipping the event does not prevent the client from changing the button clientside, the change won't however
be saved to the bic file.
_______________________________________
## Calendar Events
- NWNX_ON_CALENDAR_HOUR
- NWNX_ON_CALENDAR_DAY
- NWNX_ON_CALENDAR_MONTH
- NWNX_ON_CALENDAR_YEAR
- NWNX_ON_CALENDAR_DAWN
- NWNX_ON_CALENDAR_DUSK
`OBJECT_SELF` = The module
Event Data Tag | Type | Notes
----------------------|--------|-------
OLD | int | The (Hour/Day/Month/Year) before the change. Not available in DAWN/DUSK.
NEW | int | The (Hour/Day/Month/Year) after the change. Not available in DAWN/DUSK.
_______________________________________
*/
/*
const int NWNX_EVENTS_OBJECT_TYPE_CREATURE = 5;
const int NWNX_EVENTS_OBJECT_TYPE_ITEM = 6;
const int NWNX_EVENTS_OBJECT_TYPE_TRIGGER = 7;
const int NWNX_EVENTS_OBJECT_TYPE_PLACEABLE = 9;
const int NWNX_EVENTS_OBJECT_TYPE_WAYPOINT = 12;
const int NWNX_EVENTS_OBJECT_TYPE_ENCOUNTER = 13;
const int NWNX_EVENTS_OBJECT_TYPE_PORTAL = 15;
*/
/*
const int NWNX_EVENTS_TIMING_BAR_TRAP_FLAG = 1;
const int NWNX_EVENTS_TIMING_BAR_TRAP_RECOVER = 2;
const int NWNX_EVENTS_TIMING_BAR_TRAP_DISARM = 3;
const int NWNX_EVENTS_TIMING_BAR_TRAP_EXAMINE = 4;
const int NWNX_EVENTS_TIMING_BAR_TRAP_SET = 5;
const int NWNX_EVENTS_TIMING_BAR_REST = 6;
const int NWNX_EVENTS_TIMING_BAR_UNLOCK = 7;
const int NWNX_EVENTS_TIMING_BAR_LOCK = 8;
const int NWNX_EVENTS_TIMING_BAR_CUSTOM = 10;
*/
/// @brief Scripts can subscribe to events.
///
/// Some events are dispatched via the NWNX plugin (see NWNX_EVENTS_EVENT_* constants).
/// Others can be signalled via script code via NWNX_Events_SignalEvent().
/// @param evt The event name.
/// @param script The script to call when the event fires.
void NWNX_Events_SubscribeEvent(string evt, string script);
/// @brief Unsubscribe a script from an event
/// @param evt The event name.
/// @param script The script.
void NWNX_Events_UnsubscribeEvent(string evt, string script);
/// Pushes event data at the provided tag, which subscribers can access with GetEventData.
/// This should be called BEFORE SignalEvent.
void NWNX_Events_PushEventData(string tag, string data);
/// Signals an event. This will dispatch a notification to all subscribed handlers.
/// Returns TRUE if anyone was subscribed to the event, FALSE otherwise.
int NWNX_Events_SignalEvent(string evt, object target);
/// Retrieves the event data for the currently executing script.
/// THIS SHOULD ONLY BE CALLED FROM WITHIN AN EVENT HANDLER.
string NWNX_Events_GetEventData(string tag);
/// Skips execution of the currently executing event.
/// If this is a NWNX event, that means that the base function call won't be called.
/// This won't impact any other subscribers, nor dispatch for before / after functions.
/// For example, if you are subscribing to NWNX_ON_EXAMINE_OBJECT_BEFORE, and you skip ...
/// - The other subscribers will still be called.
/// - The original function in the base game will be skipped.
/// - The matching after event (NWNX_ON_EXAMINE_OBJECT_AFTER) will also be executed.
///
/// THIS SHOULD ONLY BE CALLED FROM WITHIN AN EVENT HANDLER.
/// ONLY WORKS WITH THE FOLLOWING EVENTS:
/// - Feat events
/// - Item events
/// - Healer's Kit event
/// - CombatMode events
/// - Party events
/// - Skill events
/// - Map events
/// - Listen/Spot Detection events
/// - Polymorph events
/// - DMAction events
/// - Client connect event
/// - Client Export Character event
/// - Spell events
/// - QuickChat events
/// - Barter event (START only)
/// - Trap events
/// - Sticky Player Name event
/// - Server Character Save Events
/// - Add/RemoveGold events
/// - PVP Attitude Change events
/// - {Enter|Exit}Stealth events
/// - Object {Lock|Unlock} events
/// - Quickbar Events
void NWNX_Events_SkipEvent();
/// Set the return value of the event.
///
/// THIS SHOULD ONLY BE CALLED FROM WITHIN AN EVENT HANDLER.
/// ONLY WORKS WITH THE FOLLOWING EVENTS:
/// - Use Item event - "1" or "0" to send feedback whether item use is allowed
/// - Validate Use Item Event - "1" or "0" to show the item is unusable (red) in the player inventory.
/// - Healer's Kit event
/// - Listen/Spot Detection events -> "1" or "0"
/// - OnClientConnectBefore -> Reason for disconnect if skipped
/// - Ammo Reload event -> Forced ammunition returned
/// - Trap events -> "1" or "0"
/// - Sticky Player Name event -> "1" or "0"
void NWNX_Events_SetEventResult(string data);
/// Returns the current event name
///
/// Returns "" on error
string NWNX_Events_GetCurrentEvent();
/// Toggles DispatchListMode for sEvent+sScript
/// If enabled, sEvent for sScript will only be signalled if the target object is on its dispatch list.
void NWNX_Events_ToggleDispatchListMode(string sEvent, string sScript, int bEnable);
/// Add oObject to the dispatch list for sEvent+sScript.
void NWNX_Events_AddObjectToDispatchList(string sEvent, string sScript, object oObject);
/// Remove oObject from the dispatch list for sEvent+sScript.
void NWNX_Events_RemoveObjectFromDispatchList(string sEvent, string sScript, object oObject);
/// @}
void NWNX_Events_SubscribeEvent(string evt, string script)
{
string sFunc = "SubscribeEvent";
NWNX_PushArgumentString(NWNX_Events, sFunc, script);
NWNX_PushArgumentString(NWNX_Events, sFunc, evt);
NWNX_CallFunction(NWNX_Events, sFunc);
}
void NWNX_Events_UnsubscribeEvent(string evt, string script)
{
string sFunc = "UnsubscribeEvent";
NWNX_PushArgumentString(NWNX_Events, sFunc, script);
NWNX_PushArgumentString(NWNX_Events, sFunc, evt);
NWNX_CallFunction(NWNX_Events, sFunc);
}
void NWNX_Events_PushEventData(string tag, string data)
{
string sFunc = "PushEventData";
NWNX_PushArgumentString(NWNX_Events, sFunc, data);
NWNX_PushArgumentString(NWNX_Events, sFunc, tag);
NWNX_CallFunction(NWNX_Events, sFunc);
}
int NWNX_Events_SignalEvent(string evt, object target)
{
string sFunc = "SignalEvent";
NWNX_PushArgumentObject(NWNX_Events, sFunc, target);
NWNX_PushArgumentString(NWNX_Events, sFunc, evt);
NWNX_CallFunction(NWNX_Events, sFunc);
return NWNX_GetReturnValueInt(NWNX_Events, sFunc);
}
string NWNX_Events_GetEventData(string tag)
{
string sFunc = "GetEventData";
NWNX_PushArgumentString(NWNX_Events, sFunc, tag);
NWNX_CallFunction(NWNX_Events, sFunc);
return NWNX_GetReturnValueString(NWNX_Events, sFunc);
}
void NWNX_Events_SkipEvent()
{
string sFunc = "SkipEvent";
NWNX_CallFunction(NWNX_Events, sFunc);
}
void NWNX_Events_SetEventResult(string data)
{
string sFunc = "SetEventResult";
NWNX_PushArgumentString(NWNX_Events, sFunc, data);
NWNX_CallFunction(NWNX_Events, sFunc);
}
string NWNX_Events_GetCurrentEvent()
{
string sFunc = "GetCurrentEvent";
NWNX_CallFunction(NWNX_Events, sFunc);
return NWNX_GetReturnValueString(NWNX_Events, sFunc);
}
void NWNX_Events_ToggleDispatchListMode(string sEvent, string sScript, int bEnable)
{
string sFunc = "ToggleDispatchListMode";
NWNX_PushArgumentInt(NWNX_Events, sFunc, bEnable);
NWNX_PushArgumentString(NWNX_Events, sFunc, sScript);
NWNX_PushArgumentString(NWNX_Events, sFunc, sEvent);
NWNX_CallFunction(NWNX_Events, sFunc);
}
void NWNX_Events_AddObjectToDispatchList(string sEvent, string sScript, object oObject)
{
string sFunc = "AddObjectToDispatchList";
NWNX_PushArgumentObject(NWNX_Events, sFunc, oObject);
NWNX_PushArgumentString(NWNX_Events, sFunc, sScript);
NWNX_PushArgumentString(NWNX_Events, sFunc, sEvent);
NWNX_CallFunction(NWNX_Events, sFunc);
}
void NWNX_Events_RemoveObjectFromDispatchList(string sEvent, string sScript, object oObject)
{
string sFunc = "RemoveObjectFromDispatchList";
NWNX_PushArgumentObject(NWNX_Events, sFunc, oObject);
NWNX_PushArgumentString(NWNX_Events, sFunc, sScript);
NWNX_PushArgumentString(NWNX_Events, sFunc, sEvent);
NWNX_CallFunction(NWNX_Events, sFunc);
}