Advertisement
Madi_Perth

Untitled

Jan 3rd, 2024
978
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Linden Scripting 2.50 KB | Source Code | 0 0
  1. // Drop unlimited 9 second song clips into the obect and touch to play.
  2. // Owner only use
  3.  
  4. //user variables
  5.  
  6. integer waves_to_preload = 2;
  7. float preload_load_time = 0.5;
  8. float timer_interval = 8.9; //8.9 works best for 9 second sound files
  9. integer timer_started;
  10.  
  11. //program variables
  12. list invlist;
  13. integer total_wave_files;
  14. integer last_wave_file_number;
  15. integer i;
  16. integer c;
  17. string preloading_wave_name;
  18. string playing_wave_name;
  19. integer play = FALSE;
  20.  
  21. sound()
  22. {
  23.         total_wave_files = llGetInventoryNumber(INVENTORY_SOUND);
  24.         last_wave_file_number = total_wave_files - 1;
  25.         float length = total_wave_files*9.0;
  26.         integer c = 0;
  27.         llSetSoundQueueing(TRUE);
  28.         integer x = total_wave_files;
  29.         llOwnerSay("(" + llGetScriptName() + ") " + llGetSubString((string)(x * preload_load_time),0,3) + " sec buffering..");
  30.         timer_started = FALSE;
  31.         for (c = 0 ; c <= (x - 1) ; c++) {
  32.             preloading_wave_name = llGetInventoryName(INVENTORY_SOUND, c);                          
  33.             llTriggerSound(preloading_wave_name, 0.0);
  34.             llPreloadSound(preloading_wave_name);
  35.             // finishing preloading.
  36.             if ( ((total_wave_files - c) * preload_load_time) < timer_interval && !timer_started) {
  37.                 llSetTimerEvent(timer_interval);
  38.                 timer_started = TRUE;
  39.             }
  40.             llSleep(preload_load_time);
  41.         }
  42.         i=0; c=0;
  43.        // llOwnerSay("Done! Playing..  (" + (string)llFloor(length) + " secs) Click to stop.");
  44. }
  45.  
  46. default
  47. {
  48.     on_rez(integer start_param)
  49.     {
  50.         llResetScript();
  51.     }
  52.    
  53.     attach(key id)
  54.     {
  55.             if (!play) {
  56.                 sound();
  57.             } else {
  58.                 llSetTimerEvent(0.0);
  59.                 llStopSound();
  60.                 llOwnerSay("Stopping..");
  61.             }
  62.             play = !play;
  63.     }
  64.    
  65.     timer()
  66.     {
  67.         if ( i > last_wave_file_number ) i = 0;
  68.             playing_wave_name = llGetInventoryName(INVENTORY_SOUND, i);
  69.             llPlaySound(playing_wave_name, 1.0);
  70.        
  71.             if(i + waves_to_preload <= last_wave_file_number)  
  72.             {
  73.                 preloading_wave_name = llGetInventoryName(INVENTORY_SOUND, i + waves_to_preload);
  74.                  llTriggerSound(llGetInventoryName(INVENTORY_SOUND,  i + waves_to_preload), 0.0);
  75.                  llPreloadSound(llGetInventoryName(INVENTORY_SOUND,  i + waves_to_preload));
  76.             }
  77.         i++;
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement