241 lines
5.1 KiB
Plaintext
241 lines
5.1 KiB
Plaintext
|
|
//Multi File Sound Player For Music Or Sounds Works Without Needing File Name changing If Named Right
|
||
|
|
//Script auto determin order of list of sound files in alphbetical order
|
||
|
|
|
||
|
|
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;
|
||
|
|
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;
|
||
|
|
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 )
|
||
|
|
{
|
||
|
|
llRequestPermissions(llGetOwner(),PERMISSION_ATTACH);
|
||
|
|
} else {
|
||
|
|
// Tell the controller what the CD key is so it can lin
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
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++ )
|
||
|
|
{
|
||
|
|
if ( llDetectedKey(i) == llGetOwner() )
|
||
|
|
{
|
||
|
|
if ( g_iPlaying )
|
||
|
|
{
|
||
|
|
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 )
|
||
|
|
{
|
||
|
|
llDetachFromAvatar();
|
||
|
|
} else {
|
||
|
|
llMessageLinked(1,0,"FINISH","");
|
||
|
|
g_iFinished = 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|