110 lines
3.9 KiB
Plaintext
110 lines
3.9 KiB
Plaintext
integer button_listen_chan = 1347453635;
|
|
integer speaker_listen_chan = 1347453636;
|
|
integer number_of_speakers = 6;
|
|
integer loop_length = 5;
|
|
integer current_timer_sec = 1;
|
|
integer current_speaker = 1;
|
|
integer reset_count_start = 0;
|
|
list sound_list = [
|
|
"button_01", "219c5d93-6c09-31c5-fb3f-c5fe7495c115",
|
|
"button_02", "e057c244-5768-1056-c37e-1537454eeb62",
|
|
"button_03", "0cb7b00a-4c10-6948-84de-a93c09af2ba9",
|
|
"button_04", "3c8fc726-1fd6-862d-fa01-16c5b2568db6",
|
|
"button_05", "2c346eda-b60c-ab33-1119-b8941916a499",
|
|
"button_06", "c825dfbc-9827-7e02-6507-3713d18916c1"
|
|
];
|
|
list timer_events = [];
|
|
|
|
default
|
|
{
|
|
state_entry() {
|
|
llListen(button_listen_chan, "", NULL_KEY, "");
|
|
llSetTimerEvent(1.0);
|
|
reset_count_start = 0;
|
|
}
|
|
|
|
on_rez(integer start_param) {
|
|
llResetScript();
|
|
reset_count_start = 0;
|
|
}
|
|
|
|
touch_start(integer total_number) {
|
|
reset_count_start = 1;
|
|
}
|
|
|
|
touch_end(integer total_number) {
|
|
reset_count_start = 0;
|
|
}
|
|
|
|
listen(integer channel, string name, key id, string message) {
|
|
integer button_index = llListFindList(sound_list, [message]);
|
|
string sound_uuid = "";
|
|
if (button_index != -1) {
|
|
sound_uuid = llList2String(sound_list, button_index + 1);
|
|
} else {
|
|
list call_parts = llParseString2List(message, ["+"], []);
|
|
//llOwnerSay("sound parts - " + llDumpList2String(call_parts, " > ") + " - message - " + message);
|
|
if (llList2String(call_parts, 1) == "loop") {
|
|
integer button_index = llListFindList(sound_list, [llList2String(call_parts, 0)]);
|
|
if (button_index != -1) {
|
|
string loop_sound_uuid = llList2String(sound_list, button_index + 1);
|
|
if (llStringLength(loop_sound_uuid) == 36) {
|
|
timer_events += [(current_timer_sec), loop_sound_uuid];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (llStringLength(sound_uuid) > 0) {
|
|
//llOwnerSay("sound UUID - " + sound_uuid);
|
|
llSay(speaker_listen_chan, (string) current_speaker + "+" + sound_uuid);
|
|
if (current_speaker < number_of_speakers) {
|
|
++current_speaker;
|
|
} else {
|
|
current_speaker = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
timer() {
|
|
integer number_of_items = llGetListLength(timer_events);
|
|
integer list_looper = 0;
|
|
|
|
for (list_looper = 0; list_looper <= number_of_items; list_looper += 2) {
|
|
if (llList2Integer(timer_events, list_looper) == current_timer_sec) {
|
|
string sound_uuid = llList2String(timer_events, list_looper + 1);
|
|
//llOwnerSay("sound looped UUID - " + sound_uuid);
|
|
llSay(speaker_listen_chan, (string) current_speaker + "+" + sound_uuid);
|
|
if (current_speaker < number_of_speakers) {
|
|
++current_speaker;
|
|
} else {
|
|
current_speaker = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (current_timer_sec < loop_length) {
|
|
list_looper = 0;
|
|
++ current_timer_sec;
|
|
} else {
|
|
//llOwnerSay("Loop reset - " + llDumpList2String(timer_events, " > "));
|
|
current_timer_sec = 1;
|
|
}
|
|
|
|
if (reset_count_start > 0) {
|
|
integer reset_in = 4 - reset_count_start;
|
|
if (reset_in < 0) {
|
|
reset_in = 0;
|
|
}
|
|
llOwnerSay("Resetting in: " + (string) reset_in + "...");
|
|
if (reset_count_start >= 4) {
|
|
timer_events = [];
|
|
reset_count_start = 0;
|
|
llOwnerSay("Loops Reset");
|
|
} else {
|
|
++reset_count_start;
|
|
}
|
|
}
|
|
}
|
|
}
|