float LOUDNESS = 1.0; integer SHORTEST = 10; integer LONGEST = 600; float c_check_interval=0.5; integer s_running_timers=0; list s_timers_nexts=[]; list s_timers_intervals=[]; startTimer(integer x_id,float x_interval){ integer shift=1<next){ float interval=llList2Float(s_timers_intervals,x_timer); next=next+interval; if(now>next+interval)next=now+interval; s_timers_nexts=llListReplaceList(s_timers_nexts,[next],x_timer,x_timer); return 1; } } return 0; } default { changed(integer change) { if (change & (CHANGED_REGION_START | CHANGED_REGION)) { llResetScript(); } } state_entry() { if (SHORTEST < 10 ) SHORTEST = 10; if (LONGEST < 10 ) LONGEST = 10; if (SHORTEST > LONGEST) SHORTEST = LONGEST; startTimer(1, 1.0); } timer() { if(checkTimer(1)) { stopTimer(1); state noisy; } } on_rez(integer start_param) { startTimer(1, 1.0); } } state noisy { changed(integer change) { if (change & (CHANGED_REGION_START | CHANGED_REGION)) { llResetScript(); } } state_entry() { integer sounds = llGetInventoryNumber(INVENTORY_SOUND); if ( sounds <= 0 ) state default; string soundname = llGetInventoryName( INVENTORY_SOUND, llFloor(llFrand(sounds)) ); if ( soundname != "" ) { llPlaySound( soundname, LOUDNESS ); } state silent; } on_rez(integer start_param) { state default; } } state silent { changed(integer change) { if (change & (CHANGED_REGION_START | CHANGED_REGION)) { llResetScript(); } } state_entry() { startTimer(1, (float)(llFloor(llFrand(LONGEST - SHORTEST)) + SHORTEST)); } timer() { if(checkTimer(1)) { stopTimer(1); state noisy; } } on_rez(integer start_param) { state default; } }