Script:Day Random Sounds

From Second Life Wiki
Revision as of 09:17, 12 July 2012 by Silent Mole (talk | contribs) (Created page with "<lsl> →‎This script will play the sounds in the object's inventory randomly during the region's day.: float MinimumSeconds = 10.0; float MaximumSeconds = 30.0; float volum…")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

<lsl> /*

 This script will play the sounds in the object's inventory randomly during the region's day.
  • /

float MinimumSeconds = 10.0; float MaximumSeconds = 30.0; float volume = 0.5; // How loud? Between 0 and 1. float DaylightCheckSeconds = 60.0;

/////////////////////////////////////////////////////////////////////// integer sounds = 0; // # sounds in inventory list soundnames; // names of sounds in inventory /////////////////////////////////////////////////////////////////////// LoadSounds() {

   soundnames = [];
   sounds = llGetInventoryNumber( INVENTORY_SOUND );
   integer n;
   for ( n=0; n < sounds; ++n )
   {
       soundnames += llGetInventoryName( INVENTORY_SOUND, n );
   }

} /////////////////////////////////////////////////////////////////////// integer IsSunUp() {

   vector sunPosition = llGetSunDirection();
   return ( sunPosition.z > 0 );

} /////////////////////////////////////////////////////////////////////// default {

   state_entry()
   {
       LoadSounds();

       if ( sounds > 0 )
           llSetTimerEvent( 0.1 );
       else
           llOwnerSay("No sounds.");
   }

   timer()
   {
       if ( IsSunUp() == TRUE )
       {
           integer random = (integer) llFrand ( sounds );
           string sound = llList2String( soundnames, random );
           llTriggerSound( sound, volume );
           llSetTimerEvent( MinimumSeconds + (llFrand( MaximumSeconds - MinimumSeconds)) );
       }
       else
           llSetTimerEvent( DaylightCheckSeconds );
   }

   changed (integer change)
   { 
       if (change & CHANGED_INVENTORY)
       {
           llResetScript();
       }
   }

} </lsl>