Difference between revisions of "User:Daemonika Nightfire/Scripts/Animation Sit"

From Second Life Wiki
Jump to navigation Jump to search
Line 72: Line 72:
  '''Sctipt Time''' ~0.002 ms
  '''Sctipt Time''' ~0.002 ms
<lsl>
<lsl>
string anim;
key avatar = "";
integer sitting;
string animation = "";
integer sitting = 0;
integer permission = 0;
 
default
default
{
{
     state_entry()
     state_entry()
     {
     {
         sitting = 0;
         animation = llGetInventoryName(INVENTORY_ANIMATION, 0);
        anim = llGetInventoryName(INVENTORY_ANIMATION, 0);
         llSitTarget(<-0.1,0.1,-0.43>,llEuler2Rot(<00,-90,-90>*DEG_TO_RAD));
         llSitTarget(<-0.1,0.1,-0.43>,llEuler2Rot(<00,-90,-90>*DEG_TO_RAD));
     }
     }
     run_time_permissions(integer perm)
   
     run_time_permissions(integer permission)
     {
     {
         if(perm & PERMISSION_TRIGGER_ANIMATION)
         if(permission & PERMISSION_TRIGGER_ANIMATION)
         {
         {
             sitting = 1;
             if(sitting)
             llStopAnimation("sit_generic");
             {
            llStopAnimation("sit");
                llStopAnimation("sit_generic");
            llStartAnimation(anim);
                llStopAnimation("sit");
                llStartAnimation(animation);
            }
         }
         }
     }
     }
   
     changed(integer change)
     changed(integer change)
     {
     {
         if(change & CHANGED_LINK)
         if(change & CHANGED_LINK)
         {
         {
            key avatar = llAvatarOnSitTarget();
             if(!sitting)
             if(llKey2Name(avatar) != "")
             {
             {
                sitting = 1;
                avatar = llAvatarOnSitTarget();
                 llRequestPermissions(avatar, PERMISSION_TRIGGER_ANIMATION);
                 llRequestPermissions(avatar, PERMISSION_TRIGGER_ANIMATION);
             }
             }
             else
             else if(sitting)
             {
             {
                 if((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) && sitting && llKey2Name(avatar) != "")
                 if(llKey2Name(avatar) != "")
                 {
                 {
                     llStopAnimation(anim);
                     llStopAnimation(animation);
                 }
                 }
                avatar = "";
                permission = 0;
                 sitting = 0;
                 sitting = 0;
             }
             }
         }
         }
         if(change & CHANGED_OWNER + CHANGED_REGION_START + CHANGED_INVENTORY)
         if(change & (CHANGED_OWNER|CHANGED_REGION_START|CHANGED_INVENTORY))
         {
         {
             llResetScript();
             llResetScript();
         }
         }
     }
     }
   
     on_rez(integer start_param)
     on_rez(integer start_param)
     {
     {

Revision as of 08:06, 31 August 2012

*DS* ~ Animation Sit with Show/Hide for Balls

To set the Position & Rotation of the Avatar, edit the following Line in each Script. <lsl> llSitTarget("Position in meters" <x,y,z>,llEuler2Rot("Rotation in degrees" <x,y,z>*DEG_TO_RAD)); </lsl> This Script must be placed together with a Pose / Animation in the Object.

Sctipt Time ~0.002 ms

<lsl> string anim; integer sitting; show() {

   llSetPrimitiveParams([PRIM_TEXT,"SIT HERE",<0.9,0.6,0.2>,1.0, PRIM_COLOR, ALL_SIDES,<1,1,1>,1.0]);

} hide() {

   llSetPrimitiveParams([PRIM_TEXT,"",ZERO_VECTOR,0.0, PRIM_COLOR, ALL_SIDES,ZERO_VECTOR,0.0]);

} default {

   state_entry()
   {
       show();
       sitting = 0;
       anim = llGetInventoryName(INVENTORY_ANIMATION, 0);
       llSitTarget(<-0.1,0.1,-0.43>,llEuler2Rot(<00,-90,-90>*DEG_TO_RAD));
   }
   run_time_permissions(integer perm)
   {
       if(perm & PERMISSION_TRIGGER_ANIMATION)
       {
           sitting = 1;
           llStopAnimation("sit_generic");
           llStopAnimation("sit");
           llStartAnimation(anim);
           hide();
       }
   }
   changed(integer change)
   {
       if(change & CHANGED_LINK)
       {
           key avatar = llAvatarOnSitTarget();
           if(llKey2Name(avatar) != "")
           {
               llRequestPermissions(avatar, PERMISSION_TRIGGER_ANIMATION);
           }
           else
           {
               show();
               if((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) && sitting && llKey2Name(avatar) != "")
               {
                   llStopAnimation(anim);
               }
               sitting = 0;
           }
       }
       if(change & CHANGED_OWNER + CHANGED_REGION_START + CHANGED_INVENTORY)
       {
           llResetScript();
       }
   }
   on_rez(integer start_param)
   {
       llResetScript();
   }

} </lsl>

*DS* ~ Animation Sit without Show/Hide for Furniture

This Script must be placed together with a Pose / Animation in the Object.

Sctipt Time ~0.002 ms

<lsl> key avatar = ""; string animation = ""; integer sitting = 0; integer permission = 0;

default {

   state_entry()
   {
       animation = llGetInventoryName(INVENTORY_ANIMATION, 0);
       llSitTarget(<-0.1,0.1,-0.43>,llEuler2Rot(<00,-90,-90>*DEG_TO_RAD));
   }
   
   run_time_permissions(integer permission)
   {
       if(permission & PERMISSION_TRIGGER_ANIMATION)
       {
           if(sitting)
           {
               llStopAnimation("sit_generic");
               llStopAnimation("sit");
               llStartAnimation(animation);
           }
       }
   }
   
   changed(integer change)
   {
       if(change & CHANGED_LINK)
       {
           if(!sitting)
           {
               sitting = 1;
               avatar = llAvatarOnSitTarget();
               llRequestPermissions(avatar, PERMISSION_TRIGGER_ANIMATION);
           }
           else if(sitting)
           {
               if(llKey2Name(avatar) != "")
               {
                   llStopAnimation(animation);
               }
               avatar = "";
               permission = 0;
               sitting = 0;
           }
       }
       if(change & (CHANGED_OWNER|CHANGED_REGION_START|CHANGED_INVENTORY))
       {
           llResetScript();
       }
   }
   
   on_rez(integer start_param)
   {
       llResetScript();
   }

} </lsl>