State entry

From Second Life Wiki
Revision as of 06:48, 27 December 2012 by Omei Qunhua (talk | contribs) (Change example script as per article 'state'. Don't do state change from touch_start)
Jump to navigation Jump to search

Description

Event: state_entry( ){ ; }

Triggered on any state transition and startup


Specification

Triggered

  1. Script save or adding to object
  2. State change
    • A state_exit is triggered in the old state and the state_entry is triggered in the new state. All other events in the queue are lost as a result of the state change.
  3. On script reset, either by client or llResetScript/llResetOtherScript
  4. When the object is rezzed without a saved script status
    • If it was a copy taken from inworld
    • If the event had not been triggered due to no-script land.

Not Triggered

  1. When the object is rezzed with saved script status, not even on change of owner
    • Use on_rez event in this situation
  2. When the task moves to another SIM, nor on SIM restart

Examples

<lsl> default {

   state_entry()
   {
       llSay(0,
           "You either just saved the script after editing it"
           + "\nand/or the script (re)entered the default state.");

       llSetText("Click to change states", <1.0, 1.0, 1.0>, 1.0);
   }

   touch_end(integer num_detected)
   {
       // Note: NEVER do a state change from within a touch_start event -
       // - that can lead to the next touch_start on return to this state to be missed.
       // Here we do the state change safely, from within touch_end
       state two;
   }

   state_exit()
   {
       llSay(0, "The script leaves the default state.");
   }

}

state two {

   state_entry()
   {
       llSay(0, "The script entered state 'two'");
       state default;
   }

   state_exit()
   {
       llSay(0, "The script leaves state 'two'");
   }

} </lsl>

See Also

Events

•  on_rez Triggered when the object is rezzed
•  state_exit Triggered when the state is exited at state change

Functions

•  llResetScript Resets the script
•  llResetOtherScript Resets another script in the prim
•  llGetStartParameter The on_rez parameter (or llRemoteLoadScriptPin parameter)

Deep Notes

Issues

All Issues

~ Search JIRA for related Issues
   changing to same state triggers state_entry in mono compiled script

Signature

event void state_entry(  );