Jump to content

Anyone know how to change this script?


Calvinmayers1
 Share

You are about to reply to a thread that has been inactive for 3275 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

float INTERVAL = 10.00;

integer LISTEN_CHAN = 2000;
integer SEND_CHAN = 2001;
float VOLUME = 1.0;

integer g_iSound;
integer tottrack;
integer g_iListenCtrl = -1;
integer g_iPlaying;
integer g_iLinked;
integer g_iStop;
integer g_iPod;
string g_sLink;

//DEBUG
integer g_iWasLinked;
integer g_iFinished;

Initialize()
{
    
    
    // reset listeners
    if ( g_iListenCtrl != -1 )
    {
        llListenRemove(g_iListenCtrl);
    }
    g_iListenCtrl = llListen(LISTEN_CHAN,"","","");
    g_iPlaying = 0;
    g_iLinked = 0;
}



PlaySong()
{
    integer i;

    g_iPlaying = 1;    
    llWhisper(0,"Playing...");
    llSetSoundQueueing(TRUE);
    tottrack = llGetInventoryNumber(INVENTORY_SOUND);
    llPlaySound(llGetInventoryName(INVENTORY_SOUND, 0),VOLUME);
    llPreloadSound(llGetInventoryName(INVENTORY_SOUND, 1));
    llSetTimerEvent(5.0);  // wait 5 seconds before queueing the second file
    g_iSound = 1;
//    for ( i = 1; i < tottrack; i++ )
//    {
//        llPreloadSound(llGetInventoryName(INVENTORY_SOUND, i));
//    }
}


StopSong()
{
    g_iPlaying = 0;
    llWhisper(0,"Stopping...");
    llStopSound();
    llSetTimerEvent(0.0);
}


integer CheckLink()
{
    string sLink;
    
    sLink = llGetLinkName(1);
    g_sLink = sLink;
    if ( llGetSubString(sLink,0,6) == "Jukebox" )
    {
        return TRUE;
    }
    return FALSE;
}


default
{
    state_entry()
    {
        Initialize();
    }
    
    on_rez(integer start_param)
    {
        Initialize();
        if ( start_param )
        {
            g_iPod = start_param - 1;
            if ( g_iPod )
            {
                } else {
                // Tell the controller what the CD key is so it can link
                llWhisper(SEND_CHAN,"LINK " + (string)llGetKey());
            }
        }
    }
    
    changed(integer change)
    {
        if ( change == CHANGED_LINK )
        {
            if ( llGetLinkNumber() == 0 )
            {
                StopSong();
                llDie();
            } else {
                if ( g_iStop )
                {
                    llMessageLinked(1,llGetLinkNumber(),"UNLINK","");
                } else {
                    llMessageLinked(1,llGetLinkNumber(),"LINKID","");
                    g_iWasLinked = 1;
                }
            }
        }
    }
    
    attach(key id)
    {
        if ( id == NULL_KEY )
        {
            llDie();
        } else {
            PlaySong();
        }
    }
    
    run_time_permissions(integer perm)
    {
        if ( perm == PERMISSION_ATTACH )
        {
            llAttachToAvatar(ATTACH_LSHOULDER);
            llSetTexture("clear",ALL_SIDES);
        }
    }
    
    touch_start(integer total_number)
    {
        integer i;
        
        for ( i = 0; i < total_number; i++ )
        {
                        {
llWhisper(0,"DEBUG: g_iPlaying=" + (string)g_iPlaying);
llWhisper(0,"DEBUG: Link=" + (string)llGetLinkNumber());
llWhisper(0,"DEBUG: g_iWasLinked=" + (string)g_iWasLinked);
llWhisper(0,"DEBUG: g_iFinished=" + (string)g_iFinished);
                if ( g_iPlaying )
                {
                    llWhisper(0,"Stopping...");
                    g_iPlaying = 0;
                    llStopSound();
                    llSetTimerEvent(0.0);
                } else {
                    PlaySong();
                }
            }
        }
    }
    
    listen(integer channel, string name, key id, string message)
    {
        if ( message == "RESET" )
        {
            if ( llGetLinkNumber() == 0 )
            {
                llDie();
            } else {
                llMessageLinked(1,llGetLinkNumber(),"UNLINK","");
            }
        }
        
        if ( message == "STOP" )
        {
            if ( g_iPod )
            {
                StopSong();
                llDetachFromAvatar();
            }
        }
    }

    link_message(integer sender_num, integer num, string str, key id)
    {
        if ( str == "PLAY" )
        {
            if ( !g_iPlaying )
            {
                PlaySong();
            }
            return;
        }
        
        if ( str == "STOP" )
        {
            g_iStop = 1;
            StopSong();
            llMessageLinked(1,llGetLinkNumber(),"UNLINK","");
        }
        
        if ( str == "VOLUME" )
        {
            VOLUME = (float)num / 10.0;
            llAdjustSoundVolume(VOLUME);
        }
    }
    
    timer()
    {
        if ( g_iPlaying )
        {
            if ( g_iSound == 1 )
            {
                llSetTimerEvent(INTERVAL);
            }
            llPlaySound(llGetInventoryName(INVENTORY_SOUND, g_iSound),VOLUME);
            if ( g_iSound < (tottrack - 1) )
            {
                llPreloadSound(llGetInventoryName(INVENTORY_SOUND, g_iSound+1));
            }
            g_iSound++;
            if ( g_iSound >= tottrack )
            {
                llSetTimerEvent(INTERVAL + 5.0);
                g_iPlaying = 0;
            }
        } else {
            if ( llGetLinkNumber() != 0 )
            {
                llSetTimerEvent(0.0);
                if ( g_iPod )
                {
                    llWhisper(SEND_CHAN,"FINISH");
                    llDetachFromAvatar();
                } else {
                    llMessageLinked(1,0,"FINISH","");
                    g_iFinished = 1;
                }
            }
        }
    }
}

i put this script into a hud with 6 songs in it and i put the hud on. It plays all 6 songs and i have to click them to get it to stop playing how do i get it so it dosent play them all at once when i put the hud on?

 

 

Link to comment
Share on other sites

You either completely rewrite the script, much of which is designed to cue up one song after the previous one, or you use the companion script (which is missing) to send a link message to control it.  If you notice, the companion script is expected to send a signal that is either "PLAY" (to start the music), "STOP" (to halt it), or "VOLUME" (to adjust the volume in the player).  So when you add that script to your HUD (or write a new one), it should take care of stopping and starting the music, as you wanted.

EDIT:  Well, probably not exactly the way you wanted.  The "PLAY" command always starts the music playing at track #1 and "STOP" not only halts the music but detaches the player, so you'll still need to do some tweaking to get the effect you want.  The guts of the player are there, though.

Link to comment
Share on other sites

In  that case, unless you still have the script that was designed to go with it, you'll need to post a request in the InWorld Employment forum to hire a scripter to write one and to make the reasonably small modifications that will turn individual songs on and off.  This is a fairly sophisticated script, so it may actually be more cost-effective to shop for a different one in Marketplace than it is to pay a scripter to do a custom modification of this one.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 3275 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...