Difference between revisions of "OnPlayerTileAction"

From NWN Lexicon
Jump to: navigation, search
(Created page with "{{NWNEE}}__NOTOC__ The script attached to this event fires when [https://nwn.wiki/display/NWN1/surfacemat.2da surfacemat.2da] actions are used. It must be set using SetEvent...")
 
 
Line 14: Line 14:
  
  
====Remarks====
+
====Setup====
  
 
'''Note:''' A script for the OnPlayerTileAction event cannot be specified in module properties.  There is no default script for this event, so no action will be taken unless a script is assigned to this event.  To assign a script to this event, use this code:  
 
'''Note:''' A script for the OnPlayerTileAction event cannot be specified in module properties.  There is no default script for this event, so no action will be taken unless a script is assigned to this event.  To assign a script to this event, use this code:  
Line 20: Line 20:
 
SetEventScript(GetModule(), EVENT_SCRIPT_MODULE_ON_PLAYER_TILE_ACTION, "script_name").
 
SetEventScript(GetModule(), EVENT_SCRIPT_MODULE_ON_PLAYER_TILE_ACTION, "script_name").
 
</nwscript>
 
</nwscript>
 +
 +
 +
====Remarks====
  
 
This allows actions to be selected under the radial when right clicking a location on the ground if a suitable action is found under the [https://nwn.wiki/display/NWN1/surfacemat.2da surfacemat.2da] file. The actions appear under "More actions" and cannot be added to the quickbar, but up to 8 can be defined with different names and icons using new columns.
 
This allows actions to be selected under the radial when right clicking a location on the ground if a suitable action is found under the [https://nwn.wiki/display/NWN1/surfacemat.2da surfacemat.2da] file. The actions appear under "More actions" and cannot be added to the quickbar, but up to 8 can be defined with different names and icons using new columns.

Latest revision as of 02:28, 24 July 2021

Nwnee logo.jpg Note: This article documents Neverwinter Nights: Enhanced Edition new content or changes/updates/fixes to 1.69 functions. These are all listed under the category and patches pages.

The script attached to this event fires when surfacemat.2da actions are used. It must be set using SetEventScript (for instance in OnModuleLoad).

Trigger

When EnterTargetingMode is used and the player either selects a target or manually exits targeting mode.


Function(s)


Setup

Note: A script for the OnPlayerTileAction event cannot be specified in module properties. There is no default script for this event, so no action will be taken unless a script is assigned to this event. To assign a script to this event, use this code:

SetEventScript(GetModule(), EVENT_SCRIPT_MODULE_ON_PLAYER_TILE_ACTION, "script_name").


Remarks

This allows actions to be selected under the radial when right clicking a location on the ground if a suitable action is found under the surfacemat.2da file. The actions appear under "More actions" and cannot be added to the quickbar, but up to 8 can be defined with different names and icons using new columns.

Once the action is selected the script is run (if set) and you can get the ID of the action, the player that triggered it (which you can also find out the area from) and the position chosen.

You could use this for various things:

  • Teleporting and jumping around
  • Assigning location based commands for AI companions ("go here")
  • Bring up skill based actions such as "investigate", "search", "nature" etc.
  • Allow the ground itself to be examined


Known Bugs

Version

This event was added in 1.84.8193.29 of NWN:EE.


Example

// Simple example to use OnPlayerTileAction to fire a VFX at the given location
void main()
{
    // Define variables
    int nAction = GetLastTileActionId();
    vector vPosition = GetLastTileActionPosition();
    object oPlayer = GetLastPlayerToDoTileAction();
    location lTarget = Location(GetArea(oPlayer), vPosition, 0.0);
 
    // We play a VFX at the target location depending on the action ID
    int nVFX;
    switch(nAction)
    {
        case 1: nVFX = VFX_FNF_GAS_EXPLOSION_ACID; break;
        case 2: nVFX = VFX_FNF_HOWL_MIND; break;
        case 3: nVFX = VFX_FNF_PWKILL; break;
        case 4: nVFX = VFX_FNF_MYSTICAL_EXPLOSION; break;
        case 5: nVFX = VFX_FNF_LOS_HOLY_30; break;
        case 6: nVFX = VFX_FNF_SUMMON_GATE; break;
        case 7: nVFX = VFX_FNF_WEIRD; break;
        case 8: nVFX = VFX_FNF_TIME_STOP; break;
    }
    // Apply VFX
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(nVFX), lTarget);
}

See Also

functions:

GetLastTileActionId GetLastTileActionPosition GetLastPlayerToDoTileAction