Walking Sound (NewAge)

From Second Life Wiki
Revision as of 11:34, 22 July 2010 by Asia Snowfall (talk | contribs)
Jump to navigation Jump to search

NewAge Walking Sound Version 1 Copy and Paste Script into your object/shoes that will play the walking sounds and edit the configuration section '// Configure;'


<lsl> ///////////////////////////////// // NewAge Walking Sound Script // By Asia Snowfall // Version 1.0 /////////////////////////////////

// Configure;

string Default_Start_Walking_Sound = ""; // Paste in the UUID for the sound that will play when avatar starts to walk

string Default_Walking_Sound = ""; // Paste in the UUID for the sound that will play during walking

string Default_Stop_Walking_Sound = ""; // Paste in the UUID for the sound that will play when avatar stops walking

float Walking_Sound_Speed = 0.2; // This feature is added so that creators can match the sound speed to walking motion

float Volume_For_Sounds = 1.0; // This is for the volume of the sounds played, 1.0 = Max, 0.0 = Mute

// API Sound Feature // Allows customers to add their own sounds to the script by placing sounds into object inventory

string API_Start_Walking_Sound_Name = "start"; // If there is a sound name in inventory with this name somewhere in the sound name, it will load as an API Sound to start walking

string API_Walking_Sound_Name = "loop"; // If there is a sound name in inventory with this name somewhere in the sound name, it will load as an API Sound to play during walking

string API_Stop_Walking_Sound_Name = "stop"; // If there is a sound name in inventory with this name somewhere in the sound name, it will load as an API Sound to play when avatar stops walking

// Varibles;

string API_Start_Sound; string API_Walking_Sound; string API_Stop_Sound;

// Integer Varibles

integer walking = FALSE;

// Float Varibles

float seconds_to_check_when_avatar_walks = 0.01;

// Pre-made functions

key llGetObjectOwner() {

   list details = llGetObjectDetails(llGetKey(), [OBJECT_OWNER]);
   return (key)llList2CSV(details);

}

asLoadSounds() {

   API_Start_Sound = "";
   API_Walking_Sound = "";
   API_Stop_Sound = "";
   integer i = 0;
   integer a = llGetInventoryNumber(INVENTORY_SOUND)-1;
   string name;
   do
   {
       name = llGetInventoryName(INVENTORY_SOUND, i);
       if(llStringLength(name) > 0)
       {
           if(llSubStringIndex(name, API_Start_Walking_Sound_Name) != -1)
           {
               API_Start_Sound = name;
           }
           else if(llSubStringIndex(name, API_Walking_Sound_Name) != -1)
           {
               API_Walking_Sound = name;
           }
           else if(llSubStringIndex(name, API_Stop_Walking_Sound_Name) != -1)
           {
               API_Stop_Sound = name;
           }
       }
   }while(i++<a);

}

integer CheckMono() {

   if(llGetFreeMemory() > 40000)
   {
       return TRUE;
   }
   else
   {
       return FALSE;
   }

}

default {

   state_entry()
   {
       if(CheckMono() == FALSE)
       {
           llInstantMessage(llGetObjectOwner(), "This script will run better in Mono");
       }
       if(llGetAttached() != 0)
       {
           llSetTimerEvent(seconds_to_check_when_avatar_walks);
           asLoadSounds();
       }
       else
       {
           llSetTimerEvent(0);
           llInstantMessage(llGetObjectOwner(), "Sounds disabled, Please attach object to your avatar");
       }
   }
   attach(key id)
   {
       llResetScript();
   }
   changed(integer p)
   {
       if(llGetInventoryNumber(INVENTORY_SOUND) > 0)
       {
           asLoadSounds();
       }
   }
   timer()
   {
       if(llGetAgentInfo(llGetObjectOwner()) & AGENT_WALKING)
       {
           llSetTimerEvent(Walking_Sound_Speed);
           if(walking == FALSE)
           {
               if(llStringLength(API_Start_Sound) > 0)
               {
                   llTriggerSound(API_Start_Sound, Volume_For_Sounds);
               }
               else if(llStringLength(Default_Start_Walking_Sound) > 0)
               {
                   llTriggerSound(Default_Start_Walking_Sound, Volume_For_Sounds);
               }
               walking = TRUE;
               llSetTimerEvent(Walking_Sound_Speed);
           }
           else if(walking == TRUE)
           {
               if(llStringLength(API_Walking_Sound) > 0)
               {
                   llTriggerSound(API_Walking_Sound, Volume_For_Sounds);
               }
               else if(llStringLength(Default_Walking_Sound) > 0)
               {
                   llTriggerSound(Default_Walking_Sound, Volume_For_Sounds);
               }
           }
       }
       else
       {
           if(walking == TRUE)
           {
               walking = FALSE;
               if(llStringLength(API_Stop_Sound) > 0)
               {
                   llTriggerSound(API_Stop_Sound, Volume_For_Sounds);
               }
               else if(llStringLength(Default_Stop_Walking_Sound) > 0)
               {
                   llTriggerSound(Default_Stop_Walking_Sound, Volume_For_Sounds);
               }
               llSetTimerEvent(seconds_to_check_when_avatar_walks);
           }
       }
   }

} </lsl>