Difference between revisions of "OnClientLeave"

From NWN Lexicon
Jump to: navigation, search
(Created page with "=OnClientLeave= The script attached to this event fires when a client leaves the module. This can be used to remove any custom creatures spawned because of the appearance o...")
 
Line 31: Line 31:
 
====Example====
 
====Example====
  
<font color="#007f00">// In the Client Exit, the actual object (now almost like a dead-AI
+
<nwscript>
  </font><font color="#007f00">// NPC) still exsists, but the PC's properties do not.
+
// In the Client Exit, the actual object (now almost like a dead-AI
  </font>
+
  // NPC) still exsists, but the PC's properties do not.
  <font color="#007f00">// In this example, we know GetName will work, such as a
+
   
  </font><font color="#007f00">// characters name "Hero". If we used GetPlayername(), it
+
  // In this example, we know GetName will work, such as a
  </font><font color="#007f00">// wouldn't return a valid string, mearly "".
+
  // characters name "Hero". If we used GetPlayername(), it
  </font>
+
  // wouldn't return a valid string, mearly "".
  <font color="#007f00">// Other things that would be useful might be GetLocalInt(),  
+
   
  </font><font color="#007f00">// GetLocalString(), GetLocalLocation() and so on. These might
+
  // Other things that would be useful might be GetLocalInt(),  
  </font><font color="#007f00">// be stored to the database, for example, for when they re-log
+
  // GetLocalString(), GetLocalLocation() and so on. These might
  </font><font color="#007f00">// into the server next time.
+
  // be stored to the database, for example, for when they re-log
  </font>
+
  // into the server next time.
  <font color="#0000ff">void</font> main()
+
   
 +
  void main()
 
  {
 
  {
     <font color="#007f00">// Valid data we could use:
+
     // Valid data we could use:
</font>    <font color="#0000ff">object</font> oPC = GetExitingObject();
+
    object oPC = GetExitingObject();
 
   
 
   
     <font color="#007f00">// If they have an item, of tag SHOUT_EXIT, we shout to the
+
     // If they have an item, of tag SHOUT_EXIT, we shout to the
</font>    <font color="#007f00">// world we have exited. As it is the module shouting, it should  
+
    // world we have exited. As it is the module shouting, it should  
</font>    <font color="#007f00">// appear as "[SERVER]" as the shouter name.
+
    // appear as "[SERVER]" as the shouter name.
</font>    <font color="#0000ff">if</font>(GetIsObjectValid(GetItemPossessedBy(oPC, <font color="#00007f">"SHOUT_EXIT"</font>))
+
    if(GetIsObjectValid(GetItemPossessedBy(oPC, "SHOUT_EXIT"))
 
     {
 
     {
         <font color="#007f00">// Shout
+
         // Shout
</font>        SpeakString(<font color="#00007f">"Leaving!"</font> + GetName(oPC), TALKVOLUME_SHOUT);
+
        SpeakString("Leaving!" + GetName(oPC), TALKVOLUME_SHOUT);
 
     }
 
     }
 
  }
 
  }
 +
</nwscript>
  
 
====See Also====
 
====See Also====

Revision as of 21:54, 25 August 2012

OnClientLeave

The script attached to this event fires when a client leaves the module. This can be used to remove any custom creatures spawned because of the appearance of a particular PC or a variety of other things. During this event, the player has already left. All data that pertains to the player is unavailable (GetPCPlayerName, GetPCPublicCDKey, GetPCIPAddress) and the player has become detatched from the character object, hence GetIsPC returns false. If you want any of this information at time of client leave, you must have already stored this information (on client enter is a good time to do this). Also, due to this, no locals can be stored on the PC at this time. If you want to store information pertaining to the player during this event, store it on the module with something to indicate which player and character it is for.


Trigger

Whenever a player logs out of a server or leaves the module.


Function(s)

GetExitingObject() returns the PC who is leaving.


Remarks

You can get any information off the GetExtingObject(), which basically means you can store, for example, thier location, and get it locally - SetLocalLocation() and GetLocalLocation() respectivly. There is also little point having anything in this in single player modules. The player never leaves - they can only exit (and thus either start again, or load up a saved game).


Known Bugs

GetPlayername doesn't work properly during this event; it does not return an object that can be saved to the database. See above for reasons, and the other functions that do not return data.


Example

 // In the Client Exit, the actual object (now almost like a dead-AI
 // NPC) still exsists, but the PC's properties do not.
 
 // In this example, we know GetName will work, such as a
 // characters name "Hero". If we used GetPlayername(), it
 // wouldn't return a valid string, mearly "".
 
 // Other things that would be useful might be GetLocalInt(), 
 // GetLocalString(), GetLocalLocation() and so on. These might
 // be stored to the database, for example, for when they re-log
 // into the server next time.
 
 void main()
 {
     // Valid data we could use:
     object oPC = GetExitingObject();
 
     // If they have an item, of tag SHOUT_EXIT, we shout to the
     // world we have exited. As it is the module shouting, it should 
     // appear as "[SERVER]" as the shouter name.
     if(GetIsObjectValid(GetItemPossessedBy(oPC, "SHOUT_EXIT"))
     {
         // Shout
         SpeakString("Leaving!" + GetName(oPC), TALKVOLUME_SHOUT);
     }
 }

See Also

functions: 

GetExitingObject()