Walking Sound (NewAge)

From Second Life Wiki
Jump to: navigation, 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;'


/////////////////////////////////
// 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);
            }
        }
    }
}