Comment and formatting changes; no actual code changes.
- Add spaces between functions. - Add comments on numeric codes and a few others. - Reformat lists and one function. - Remove spaces at EOL. - Use actual copyright symbol.
This commit is contained in:
parent
ef3adcce5e
commit
2488349a1b
26 changed files with 500 additions and 203 deletions
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
string notecard_name = "AVpos";
|
string notecard_name = "AVpos";
|
||||||
string main_script = "[AV]sitA";
|
string main_script = "[AV]sitA";
|
||||||
|
@ -26,6 +26,7 @@ list camera_triggers;
|
||||||
list camera_settings;
|
list camera_settings;
|
||||||
integer lastByButton = -1;
|
integer lastByButton = -1;
|
||||||
string lastPose;
|
string lastPose;
|
||||||
|
|
||||||
integer get_number_of_scripts()
|
integer get_number_of_scripts()
|
||||||
{
|
{
|
||||||
integer i = 1;
|
integer i = 1;
|
||||||
|
@ -35,7 +36,9 @@ integer get_number_of_scripts()
|
||||||
}
|
}
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -43,11 +46,13 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Readout_Say(string say, string SCRIPT_CHANNEL)
|
Readout_Say(string say, string SCRIPT_CHANNEL)
|
||||||
{
|
{
|
||||||
llSleep(0.2);
|
llSleep(0.2);
|
||||||
llMessageLinked(LINK_THIS, 90022, say, SCRIPT_CHANNEL);
|
llMessageLinked(LINK_THIS, 90022, say, SCRIPT_CHANNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
set_camera(integer byButton)
|
set_camera(integer byButton)
|
||||||
{
|
{
|
||||||
if (mySitter)
|
if (mySitter)
|
||||||
|
@ -89,6 +94,7 @@ set_camera(integer byButton)
|
||||||
llRequestPermissions(mySitter, PERMISSION_CONTROL_CAMERA);
|
llRequestPermissions(mySitter, PERMISSION_CONTROL_CAMERA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
run_time_permissions(integer perm)
|
run_time_permissions(integer perm)
|
||||||
|
@ -98,6 +104,7 @@ default
|
||||||
set_camera(FALSE);
|
set_camera(FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state_entry()
|
state_entry()
|
||||||
{
|
{
|
||||||
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), -1);
|
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), -1);
|
||||||
|
@ -108,6 +115,7 @@ default
|
||||||
notecard_query = llGetNotecardLine(notecard_name, 0);
|
notecard_query = llGetNotecardLine(notecard_name, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
if (sender == llGetLinkNumber())
|
if (sender == llGetLinkNumber())
|
||||||
|
@ -193,6 +201,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_INVENTORY)
|
if (change & CHANGED_INVENTORY)
|
||||||
|
@ -203,6 +212,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// For use attaching particle chains to LockGuard V2 compatible cuffs such as Open Collar
|
// For use attaching particle chains to LockGuard V2 compatible cuffs such as Open Collar
|
||||||
// This script should be placed inside the prim that contains your poses and props.
|
// This script should be placed inside the prim that contains your poses and props.
|
||||||
// Inspiration and function (not code) from the Bright CISS system by Shan Bright & Innula Zenovka.
|
// Inspiration and function (not code) from the Bright CISS system by Shan Bright & Innula Zenovka.
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter™ Xcite!";
|
string product = "AVsitter™ Xcite!";
|
||||||
string version = "1.02";
|
string version = "1.02";
|
||||||
string notecard_name = "[AV]Xcite_settings";
|
string notecard_name = "[AV]Xcite_settings";
|
||||||
|
@ -27,6 +27,7 @@ string CURRENT_POSE;
|
||||||
list TIMERS;
|
list TIMERS;
|
||||||
list SITTERS;
|
list SITTERS;
|
||||||
integer DEBUG;
|
integer DEBUG;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -34,7 +35,9 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
key key_request;
|
key key_request;
|
||||||
|
|
||||||
string parse_text(string say)
|
string parse_text(string say)
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -49,10 +52,12 @@ string parse_text(string say)
|
||||||
}
|
}
|
||||||
return say;
|
return say;
|
||||||
}
|
}
|
||||||
|
|
||||||
string strReplace(string str, string search, string replace)
|
string strReplace(string str, string search, string replace)
|
||||||
{
|
{
|
||||||
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -61,6 +66,7 @@ default
|
||||||
Out(0, "Loading...");
|
Out(0, "Loading...");
|
||||||
notecard_query = llGetNotecardLine(notecard_name, 0);
|
notecard_query = llGetNotecardLine(notecard_name, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_INVENTORY)
|
if (change & CHANGED_INVENTORY)
|
||||||
|
@ -78,6 +84,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
if (sender == llGetLinkNumber())
|
if (sender == llGetLinkNumber())
|
||||||
|
@ -142,6 +149,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -154,6 +162,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product;
|
string product;
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
integer RELAY_CHANNEL = -1812221819;
|
integer RELAY_CHANNEL = -1812221819;
|
||||||
|
@ -40,6 +40,7 @@ string iconSubtract = "[➖]";
|
||||||
string pagedMenuText;
|
string pagedMenuText;
|
||||||
list pagedMenuButtons;
|
list pagedMenuButtons;
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -47,20 +48,24 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string strReplace(string str, string search, string replace)
|
string strReplace(string str, string search, string replace)
|
||||||
{
|
{
|
||||||
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list buttons)
|
list order_buttons(list buttons)
|
||||||
{
|
{
|
||||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
relay(key av, string msg)
|
relay(key av, string msg)
|
||||||
{
|
{
|
||||||
msg = "RLV," + (string)av + "," + msg;
|
msg = "RLV," + (string)av + "," + msg;
|
||||||
Out(1, "Sending RLV Command: " + msg);
|
Out(1, "Sending RLV Command: " + msg);
|
||||||
llSay(RELAY_CHANNEL, msg);
|
llSay(RELAY_CHANNEL, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_menu(string worn, list slots)
|
remove_menu(string worn, list slots)
|
||||||
{
|
{
|
||||||
list menu_items;
|
list menu_items;
|
||||||
|
@ -81,6 +86,7 @@ remove_menu(string worn, list slots)
|
||||||
}
|
}
|
||||||
new_paged_menu(menu + " menu for " + llKey2Name(SLAVE) + "\n\nThe captive" + text, menu_items);
|
new_paged_menu(menu + " menu for " + llKey2Name(SLAVE) + "\n\nThe captive" + text, menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
new_paged_menu(string text, list menu_items)
|
new_paged_menu(string text, list menu_items)
|
||||||
{
|
{
|
||||||
pagedMenuText = text;
|
pagedMenuText = text;
|
||||||
|
@ -88,6 +94,7 @@ new_paged_menu(string text, list menu_items)
|
||||||
menuPage = 0;
|
menuPage = 0;
|
||||||
paged_menu();
|
paged_menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
paged_menu()
|
paged_menu()
|
||||||
{
|
{
|
||||||
list MypagedMenuButtons = pagedMenuButtons;
|
list MypagedMenuButtons = pagedMenuButtons;
|
||||||
|
@ -116,12 +123,14 @@ paged_menu()
|
||||||
Out(1, "paged menu:" + llDumpList2String(MypagedMenuButtons, ","));
|
Out(1, "paged menu:" + llDumpList2String(MypagedMenuButtons, ","));
|
||||||
dialog(pagedMenuText, ["[BACK]"] + MypagedMenuButtons);
|
dialog(pagedMenuText, ["[BACK]"] + MypagedMenuButtons);
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog(string text, list buttons)
|
dialog(string text, list buttons)
|
||||||
{
|
{
|
||||||
while (llGetListLength(buttons) % 3)
|
while (llGetListLength(buttons) % 3)
|
||||||
buttons += " ";
|
buttons += " ";
|
||||||
llDialog(CONTROLLER, "AVsitter™ RLV " + product + " " + version + "\n\n" + text, order_buttons(buttons), menu_channel);
|
llDialog(CONTROLLER, "AVsitter™ RLV " + product + " " + version + "\n\n" + text, order_buttons(buttons), menu_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_script(string reason)
|
remove_script(string reason)
|
||||||
{
|
{
|
||||||
string message = "\n" + llGetScriptName() + " ==Script Removed==\n\n" + reason;
|
string message = "\n" + llGetScriptName() + " ==Script Removed==\n\n" + reason;
|
||||||
|
@ -129,11 +138,13 @@ remove_script(string reason)
|
||||||
llInstantMessage(llGetOwner(), message);
|
llInstantMessage(llGetOwner(), message);
|
||||||
llRemoveInventory(llGetScriptName());
|
llRemoveInventory(llGetScriptName());
|
||||||
}
|
}
|
||||||
|
|
||||||
main_menu()
|
main_menu()
|
||||||
{
|
{
|
||||||
menu = "";
|
menu = "";
|
||||||
dialog("Un/Dress menu for " + llKey2Name(SLAVE), ["[BACK]", "Browse #RLV", "Fast Strip", "Undress", "Detach"]);
|
dialog("Un/Dress menu for " + llKey2Name(SLAVE), ["[BACK]", "Browse #RLV", "Fast Strip", "Undress", "Detach"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -148,6 +159,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state running
|
state running
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -185,6 +197,7 @@ state running
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer channel, string name, key id, string msg)
|
listen(integer channel, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
Out(1, "Listen Received: " + msg);
|
Out(1, "Listen Received: " + msg);
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter™ RLV";
|
string product = "AVsitter™ RLV";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
integer ignorenextswap;
|
integer ignorenextswap;
|
||||||
|
@ -72,6 +72,7 @@ integer subControl;
|
||||||
string ping;
|
string ping;
|
||||||
integer captureOnAsk = TRUE;
|
integer captureOnAsk = TRUE;
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -79,19 +80,23 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string strReplace(string str, string search, string replace)
|
string strReplace(string str, string search, string replace)
|
||||||
{
|
{
|
||||||
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list buttons)
|
list order_buttons(list buttons)
|
||||||
{
|
{
|
||||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
relay(key av, string msg)
|
relay(key av, string msg)
|
||||||
{
|
{
|
||||||
msg = "RLV," + (string)av + "," + msg;
|
msg = "RLV," + (string)av + "," + msg;
|
||||||
llSay(RELAY_CHANNEL, msg);
|
llSay(RELAY_CHANNEL, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
string humantime()
|
string humantime()
|
||||||
{
|
{
|
||||||
integer hours = TimelockSecUntilRelease / 3600;
|
integer hours = TimelockSecUntilRelease / 3600;
|
||||||
|
@ -119,6 +124,7 @@ string humantime()
|
||||||
}
|
}
|
||||||
return hours_text + minutes_text + seconds_text;
|
return hours_text + minutes_text + seconds_text;
|
||||||
}
|
}
|
||||||
|
|
||||||
Timelock_menu()
|
Timelock_menu()
|
||||||
{
|
{
|
||||||
menu = "Timelock";
|
menu = "Timelock";
|
||||||
|
@ -150,6 +156,7 @@ Timelock_menu()
|
||||||
}
|
}
|
||||||
dialog(text, ["[BACK]", pauseButton, hidButton] + menu_items);
|
dialog(text, ["[BACK]", pauseButton, hidButton] + menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
relay_select_menu()
|
relay_select_menu()
|
||||||
{
|
{
|
||||||
menu = "SELECT";
|
menu = "SELECT";
|
||||||
|
@ -173,6 +180,7 @@ relay_select_menu()
|
||||||
}
|
}
|
||||||
dialog(text, menu_items);
|
dialog(text, menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
playpose(string pose, string target_sitter)
|
playpose(string pose, string target_sitter)
|
||||||
{
|
{
|
||||||
if (pose)
|
if (pose)
|
||||||
|
@ -181,6 +189,7 @@ playpose(string pose, string target_sitter)
|
||||||
llMessageLinked(LINK_SET, 90000, pose, target_sitter);
|
llMessageLinked(LINK_SET, 90000, pose, target_sitter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rlv_top_menu()
|
rlv_top_menu()
|
||||||
{
|
{
|
||||||
menu = "";
|
menu = "";
|
||||||
|
@ -240,6 +249,7 @@ rlv_top_menu()
|
||||||
}
|
}
|
||||||
dialog(text, extra + menu_items);
|
dialog(text, extra + menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
capture_attempt(key id, string target_sitter)
|
capture_attempt(key id, string target_sitter)
|
||||||
{
|
{
|
||||||
if (RLV_ON)
|
if (RLV_ON)
|
||||||
|
@ -258,10 +268,12 @@ capture_attempt(key id, string target_sitter)
|
||||||
playpose(SUBPOSE, id);
|
playpose(SUBPOSE, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog(string text, list buttons)
|
dialog(string text, list buttons)
|
||||||
{
|
{
|
||||||
llDialog(CONTROLLER, product + " " + version + "\n\n" + text, order_buttons(buttons), menu_channel);
|
llDialog(CONTROLLER, product + " " + version + "\n\n" + text, order_buttons(buttons), menu_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
reset()
|
reset()
|
||||||
{
|
{
|
||||||
CAPTIVES = [];
|
CAPTIVES = [];
|
||||||
|
@ -273,6 +285,7 @@ reset()
|
||||||
TimelockSecUntilRelease = defaultTimelock;
|
TimelockSecUntilRelease = defaultTimelock;
|
||||||
hovertext();
|
hovertext();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsit_all()
|
unsit_all()
|
||||||
{
|
{
|
||||||
integer i = llGetNumberOfPrims();
|
integer i = llGetNumberOfPrims();
|
||||||
|
@ -282,6 +295,7 @@ unsit_all()
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
release_all()
|
release_all()
|
||||||
{
|
{
|
||||||
while (llGetListLength(CAPTIVES))
|
while (llGetListLength(CAPTIVES))
|
||||||
|
@ -289,12 +303,14 @@ release_all()
|
||||||
release(llList2Key(CAPTIVES, 1), FALSE);
|
release(llList2Key(CAPTIVES, 1), FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stop()
|
stop()
|
||||||
{
|
{
|
||||||
release_all();
|
release_all();
|
||||||
unsit_all();
|
unsit_all();
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
release(key SLAVE, integer allowUnsit)
|
release(key SLAVE, integer allowUnsit)
|
||||||
{
|
{
|
||||||
integer index = llListFindList(CAPTIVES, [SLAVE]);
|
integer index = llListFindList(CAPTIVES, [SLAVE]);
|
||||||
|
@ -314,6 +330,7 @@ release(key SLAVE, integer allowUnsit)
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
start_relay_search()
|
start_relay_search()
|
||||||
{
|
{
|
||||||
DETECTED_AVATAR_KEYS = [];
|
DETECTED_AVATAR_KEYS = [];
|
||||||
|
@ -324,6 +341,7 @@ start_relay_search()
|
||||||
SEARCHhandle = llListen(RELAY_SEARCH_CHANNEL, "", "", "");
|
SEARCHhandle = llListen(RELAY_SEARCH_CHANNEL, "", "", "");
|
||||||
llSetTimerEvent(1.5);
|
llSetTimerEvent(1.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_script(string reason)
|
remove_script(string reason)
|
||||||
{
|
{
|
||||||
string message = "\n" + llGetScriptName() + " ==Script Removed==\n\n" + reason;
|
string message = "\n" + llGetScriptName() + " ==Script Removed==\n\n" + reason;
|
||||||
|
@ -334,6 +352,7 @@ remove_script(string reason)
|
||||||
llRemoveInventory(llGetScriptName());
|
llRemoveInventory(llGetScriptName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
new_controller(key id)
|
new_controller(key id)
|
||||||
{
|
{
|
||||||
CONTROLLER = id;
|
CONTROLLER = id;
|
||||||
|
@ -341,6 +360,7 @@ new_controller(key id)
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
menu_handle = llListen(menu_channel = ((integer)llFrand(2147483646) + 1) * -1, "", CONTROLLER, "");
|
menu_handle = llListen(menu_channel = ((integer)llFrand(2147483646) + 1) * -1, "", CONTROLLER, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
no_sensor_results()
|
no_sensor_results()
|
||||||
{
|
{
|
||||||
expecting_relay_results = FALSE;
|
expecting_relay_results = FALSE;
|
||||||
|
@ -351,6 +371,7 @@ no_sensor_results()
|
||||||
}
|
}
|
||||||
dialog("No avatars found in range!", menu_items);
|
dialog("No avatars found in range!", menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_unique_channels()
|
get_unique_channels()
|
||||||
{
|
{
|
||||||
RELAY_SEARCH_CHANNEL = (integer)llFrand(999999999) + 1;
|
RELAY_SEARCH_CHANNEL = (integer)llFrand(999999999) + 1;
|
||||||
|
@ -360,6 +381,7 @@ get_unique_channels()
|
||||||
llListenRemove(relay_handle);
|
llListenRemove(relay_handle);
|
||||||
relay_handle = llListen(RELAY_CHANNEL, "", "", ping = "ping," + (string)llGetKey() + ",ping,ping");
|
relay_handle = llListen(RELAY_CHANNEL, "", "", ping = "ping," + (string)llGetKey() + ",ping,ping");
|
||||||
}
|
}
|
||||||
|
|
||||||
check_submissive()
|
check_submissive()
|
||||||
{
|
{
|
||||||
relay(SLAVE, "@versionnew=" + (string)RELAY_CHECK_CHANNEL);
|
relay(SLAVE, "@versionnew=" + (string)RELAY_CHECK_CHANNEL);
|
||||||
|
@ -367,6 +389,7 @@ check_submissive()
|
||||||
llSensorRepeat("", llGetOwner(), PASSIVE, 0.1, PI, 2);
|
llSensorRepeat("", llGetOwner(), PASSIVE, 0.1, PI, 2);
|
||||||
slaveName = llKey2Name(SLAVE);
|
slaveName = llKey2Name(SLAVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
select_submissive_rlv()
|
select_submissive_rlv()
|
||||||
{
|
{
|
||||||
menu = "SUB_SELECT";
|
menu = "SUB_SELECT";
|
||||||
|
@ -403,6 +426,7 @@ select_submissive_rlv()
|
||||||
}
|
}
|
||||||
dialog(text, menu_items);
|
dialog(text, menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
find_seat(key id, integer index, string msg, integer captureSub)
|
find_seat(key id, integer index, string msg, integer captureSub)
|
||||||
{
|
{
|
||||||
if (~index)
|
if (~index)
|
||||||
|
@ -466,10 +490,12 @@ find_seat(key id, integer index, string msg, integer captureSub)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
info_dialog(key id, string text)
|
info_dialog(key id, string text)
|
||||||
{
|
{
|
||||||
llDialog(id, product + " " + version + "\n\nSorry, " + text + ".\n", [], -7947386);
|
llDialog(id, product + " " + version + "\n\nSorry, " + text + ".\n", [], -7947386);
|
||||||
}
|
}
|
||||||
|
|
||||||
hovertext()
|
hovertext()
|
||||||
{
|
{
|
||||||
string text;
|
string text;
|
||||||
|
@ -532,10 +558,12 @@ hovertext()
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_SET, 90014, llDumpList2String([CONTROLLER, llDumpList2String(CAPTIVES, ",")], "|"), "");
|
llMessageLinked(LINK_SET, 90014, llDumpList2String([CONTROLLER, llDumpList2String(CAPTIVES, ",")], "|"), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
ask_role(key id)
|
ask_role(key id)
|
||||||
{
|
{
|
||||||
llDialog(id, product + " " + version + "\n\nPlease select your role:\n", ["Dominant", "Submissive"], ASKROLE_CHANEL);
|
llDialog(id, product + " " + version + "\n\nPlease select your role:\n", ["Dominant", "Submissive"], ASKROLE_CHANEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
back(key id)
|
back(key id)
|
||||||
{
|
{
|
||||||
if (~llListFindList(SITTING_AVATARS, [id]))
|
if (~llListFindList(SITTING_AVATARS, [id]))
|
||||||
|
@ -547,6 +575,7 @@ back(key id)
|
||||||
llMessageLinked(LINK_THIS, 90007, "", id);
|
llMessageLinked(LINK_THIS, 90007, "", id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
integer isSub(key id)
|
integer isSub(key id)
|
||||||
{
|
{
|
||||||
integer index = llListFindList(DESIGNATIONS_NOW, [id]);
|
integer index = llListFindList(DESIGNATIONS_NOW, [id]);
|
||||||
|
@ -560,6 +589,7 @@ integer isSub(key id)
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -574,6 +604,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state running
|
state running
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -587,6 +618,7 @@ state running
|
||||||
notecard_query = llGetNotecardLine(notecard_name, 0);
|
notecard_query = llGetNotecardLine(notecard_name, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
if (num == 90030)
|
if (num == 90030)
|
||||||
|
@ -805,6 +837,7 @@ state running
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer channel, string name, key id, string msg)
|
listen(integer channel, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (channel == ASKROLE_CHANEL)
|
if (channel == ASKROLE_CHANEL)
|
||||||
|
@ -1048,6 +1081,7 @@ state running
|
||||||
hovertext();
|
hovertext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
no_sensor()
|
no_sensor()
|
||||||
{
|
{
|
||||||
if (slaveWearingRelay)
|
if (slaveWearingRelay)
|
||||||
|
@ -1064,6 +1098,7 @@ state running
|
||||||
no_sensor_results();
|
no_sensor_results();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sensor(integer total_number)
|
sensor(integer total_number)
|
||||||
{
|
{
|
||||||
expected_number = total_number;
|
expected_number = total_number;
|
||||||
|
@ -1078,6 +1113,7 @@ state running
|
||||||
no_sensor_results();
|
no_sensor_results();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
llSetTimerEvent(1);
|
llSetTimerEvent(1);
|
||||||
|
@ -1127,6 +1163,7 @@ state running
|
||||||
relay_select_menu();
|
relay_select_menu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_LINK)
|
if (change & CHANGED_LINK)
|
||||||
|
@ -1157,6 +1194,7 @@ state running
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
@ -1240,6 +1278,7 @@ state running
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer start)
|
on_rez(integer start)
|
||||||
{
|
{
|
||||||
get_unique_channels();
|
get_unique_channels();
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter™ Menu Control";
|
string product = "AVsitter™ Menu Control";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
string security_script = "[AV]root-security";
|
string security_script = "[AV]root-security";
|
||||||
|
@ -26,6 +26,7 @@ integer menu_channel;
|
||||||
integer menu_handle;
|
integer menu_handle;
|
||||||
key key_request;
|
key key_request;
|
||||||
integer verbose = 1;
|
integer verbose = 1;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -33,14 +34,17 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list buttons)
|
list order_buttons(list buttons)
|
||||||
{
|
{
|
||||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
string strReplace(string str, string search, string replace)
|
string strReplace(string str, string search, string replace)
|
||||||
{
|
{
|
||||||
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
controller_menu(key id)
|
controller_menu(key id)
|
||||||
{
|
{
|
||||||
CONTROLLER = id;
|
CONTROLLER = id;
|
||||||
|
@ -104,6 +108,7 @@ controller_menu(key id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog(string text, list menu_items, key id)
|
dialog(string text, list menu_items, key id)
|
||||||
{
|
{
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
|
@ -111,6 +116,7 @@ dialog(string text, list menu_items, key id)
|
||||||
llDialog(id, product + " " + version + "\n\n" + text + "\n", order_buttons(menu_items), menu_channel);
|
llDialog(id, product + " " + version + "\n\n" + text + "\n", order_buttons(menu_items), menu_channel);
|
||||||
llSetTimerEvent(120);
|
llSetTimerEvent(120);
|
||||||
}
|
}
|
||||||
|
|
||||||
integer check_for_RLV()
|
integer check_for_RLV()
|
||||||
{
|
{
|
||||||
if (llGetInventoryType(RLV_script) == INVENTORY_SCRIPT)
|
if (llGetInventoryType(RLV_script) == INVENTORY_SCRIPT)
|
||||||
|
@ -119,20 +125,24 @@ integer check_for_RLV()
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
{
|
{
|
||||||
llSetTimerEvent(0);
|
llSetTimerEvent(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer x)
|
on_rez(integer x)
|
||||||
{
|
{
|
||||||
llResetScript();
|
llResetScript();
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
if (num == 90007)
|
if (num == 90007)
|
||||||
|
@ -156,6 +166,7 @@ default
|
||||||
DESIGNATIONS_NOW = llParseStringKeepNulls(msg, ["|"], []);
|
DESIGNATIONS_NOW = llParseStringKeepNulls(msg, ["|"], []);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer channel, string name, key id, string message)
|
listen(integer channel, string name, key id, string message)
|
||||||
{
|
{
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
|
@ -185,6 +196,7 @@ default
|
||||||
controller_menu(id);
|
controller_menu(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (llGetAgentSize(llGetLinkKey(llGetNumberOfPrims())) == ZERO_VECTOR)
|
if (llGetAgentSize(llGetLinkKey(llGetNumberOfPrims())) == ZERO_VECTOR)
|
||||||
|
|
|
@ -1,19 +1,40 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
integer is_running = TRUE;
|
integer is_running = TRUE;
|
||||||
list facial_anim_list = ["express_afraid_emote", "express_anger_emote", "express_laugh_emote", "express_bored_emote", "express_cry_emote", "express_embarrassed_emote", "express_sad_emote", "express_toothsmile", "express_smile", "express_surprise_emote", "express_worry_emote", "express_repulsed_emote", "express_shrug_emote", "express_wink_emote", "express_disdain", "express_frown", "express_kiss", "express_open_mouth", "express_tongue_out"];
|
list facial_anim_list =
|
||||||
|
[ "express_afraid_emote"
|
||||||
|
, "express_anger_emote"
|
||||||
|
, "express_laugh_emote"
|
||||||
|
, "express_bored_emote"
|
||||||
|
, "express_cry_emote"
|
||||||
|
, "express_embarrassed_emote"
|
||||||
|
, "express_sad_emote"
|
||||||
|
, "express_toothsmile"
|
||||||
|
, "express_smile"
|
||||||
|
, "express_surprise_emote"
|
||||||
|
, "express_worry_emote"
|
||||||
|
, "express_repulsed_emote"
|
||||||
|
, "express_shrug_emote"
|
||||||
|
, "express_wink_emote"
|
||||||
|
, "express_disdain"
|
||||||
|
, "express_frown"
|
||||||
|
, "express_kiss"
|
||||||
|
, "express_open_mouth"
|
||||||
|
, "express_tongue_out"
|
||||||
|
];
|
||||||
|
|
||||||
integer IsInteger(string data)
|
integer IsInteger(string data)
|
||||||
{
|
{
|
||||||
return llParseString2List((string)llParseString2List(data, ["8", "9"], []), ["0", "1", "2", "3", "4", "5", "6", "7"], []) == [] && data != "";
|
return llParseString2List((string)llParseString2List(data, ["8", "9"], []), ["0", "1", "2", "3", "4", "5", "6", "7"], []) == [] && data != "";
|
||||||
|
@ -34,6 +55,7 @@ list running_sequence_indexes;
|
||||||
list running_pointers;
|
list running_pointers;
|
||||||
list SITTERS;
|
list SITTERS;
|
||||||
list SITTER_POSES;
|
list SITTER_POSES;
|
||||||
|
|
||||||
integer get_number_of_scripts()
|
integer get_number_of_scripts()
|
||||||
{
|
{
|
||||||
integer i = 1;
|
integer i = 1;
|
||||||
|
@ -43,7 +65,9 @@ integer get_number_of_scripts()
|
||||||
}
|
}
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -51,15 +75,18 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Readout_Say(string say, string SCRIPT_CHANNEL)
|
Readout_Say(string say, string SCRIPT_CHANNEL)
|
||||||
{
|
{
|
||||||
llSleep(0.2);
|
llSleep(0.2);
|
||||||
llMessageLinked(LINK_THIS, 90022, say, SCRIPT_CHANNEL);
|
llMessageLinked(LINK_THIS, 90022, say, SCRIPT_CHANNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
string Key2Number(key objKey)
|
string Key2Number(key objKey)
|
||||||
{
|
{
|
||||||
return llGetSubString((string)llAbs((integer)("0x" + llGetSubString((string)objKey, -8, -1)) & 1073741823 ^ -1073741825), 6, -1);
|
return llGetSubString((string)llAbs((integer)("0x" + llGetSubString((string)objKey, -8, -1)) & 1073741823 ^ -1073741825), 6, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
init_sitters()
|
init_sitters()
|
||||||
{
|
{
|
||||||
SITTERS = [];
|
SITTERS = [];
|
||||||
|
@ -71,10 +98,12 @@ init_sitters()
|
||||||
SITTER_POSES += "";
|
SITTER_POSES += "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string element(string text, integer x)
|
string element(string text, integer x)
|
||||||
{
|
{
|
||||||
return llList2String(llParseStringKeepNulls(text, ["|"], []), x);
|
return llList2String(llParseStringKeepNulls(text, ["|"], []), x);
|
||||||
}
|
}
|
||||||
|
|
||||||
start_sequence(integer sequence_index, key av)
|
start_sequence(integer sequence_index, key av)
|
||||||
{
|
{
|
||||||
integer wasRunning = llListFindList(running_sequence_indexes, [sequence_index]);
|
integer wasRunning = llListFindList(running_sequence_indexes, [sequence_index]);
|
||||||
|
@ -92,6 +121,7 @@ start_sequence(integer sequence_index, key av)
|
||||||
running_pointers += 0;
|
running_pointers += 0;
|
||||||
llSetTimerEvent(0.01);
|
llSetTimerEvent(0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
sequence()
|
sequence()
|
||||||
{
|
{
|
||||||
list anims;
|
list anims;
|
||||||
|
@ -162,6 +192,7 @@ sequence()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_sequences(key id)
|
remove_sequences(key id)
|
||||||
{
|
{
|
||||||
integer index;
|
integer index;
|
||||||
|
@ -186,6 +217,7 @@ remove_sequences(key id)
|
||||||
llSetTimerEvent(0);
|
llSetTimerEvent(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -198,15 +230,18 @@ default
|
||||||
notecard_query = llGetNotecardLine(notecard_name, 0);
|
notecard_query = llGetNotecardLine(notecard_name, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
sequence();
|
sequence();
|
||||||
llSetTimerEvent(1);
|
llSetTimerEvent(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer start)
|
on_rez(integer start)
|
||||||
{
|
{
|
||||||
is_running = TRUE;
|
is_running = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
if (num == 90100)
|
if (num == 90100)
|
||||||
|
@ -322,6 +357,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_INVENTORY)
|
if (change & CHANGED_INVENTORY)
|
||||||
|
@ -342,6 +378,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVmenu™";
|
string product = "AVmenu™";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -246,7 +246,7 @@ state prop
|
||||||
llSay(comm_channel, "SAVEPROP|" + (string)prop_id);
|
llSay(comm_channel, "SAVEPROP|" + (string)prop_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
if(llGetObjectMass(parentkey) == 0)
|
if(llGetObjectMass(parentkey) == 0)
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
string notecard_name = "AVpos";
|
string notecard_name = "AVpos";
|
||||||
string main_script = "[AV]sitA";
|
string main_script = "[AV]sitA";
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter™ sequence";
|
string product = "AVsitter™ sequence";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
string main_script = "[AV]sitA";
|
string main_script = "[AV]sitA";
|
||||||
|
@ -37,6 +37,7 @@ integer menu_handle;
|
||||||
integer playsounds = TRUE;
|
integer playsounds = TRUE;
|
||||||
integer no_waits_yet;
|
integer no_waits_yet;
|
||||||
integer verbose = 1;
|
integer verbose = 1;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -44,10 +45,12 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string strReplace(string str, string search, string replace)
|
string strReplace(string str, string search, string replace)
|
||||||
{
|
{
|
||||||
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
return llDumpList2String(llParseStringKeepNulls(str, [search], []), replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUGSay(integer level, string out)
|
DEBUGSay(integer level, string out)
|
||||||
{
|
{
|
||||||
if (DEBUG >= level)
|
if (DEBUG >= level)
|
||||||
|
@ -55,6 +58,7 @@ DEBUGSay(integer level, string out)
|
||||||
llWhisper(0, out);
|
llWhisper(0, out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
run_sequence()
|
run_sequence()
|
||||||
{
|
{
|
||||||
while (SEQUENCE_POINTER >= 0)
|
while (SEQUENCE_POINTER >= 0)
|
||||||
|
@ -152,6 +156,7 @@ run_sequence()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
integer get_number_of_scripts()
|
integer get_number_of_scripts()
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -159,6 +164,7 @@ integer get_number_of_scripts()
|
||||||
;
|
;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
string parse_text(string say)
|
string parse_text(string say)
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -173,6 +179,7 @@ string parse_text(string say)
|
||||||
}
|
}
|
||||||
return say;
|
return say;
|
||||||
}
|
}
|
||||||
|
|
||||||
start_sequence(integer index)
|
start_sequence(integer index)
|
||||||
{
|
{
|
||||||
no_waits_yet = (sequence_running = TRUE);
|
no_waits_yet = (sequence_running = TRUE);
|
||||||
|
@ -182,6 +189,7 @@ start_sequence(integer index)
|
||||||
CURRENT_SEQUENCE_DATAS = llParseStringKeepNulls(llList2String(SEQUENCE_DATA_DATAS, index), ["◆"], []);
|
CURRENT_SEQUENCE_DATAS = llParseStringKeepNulls(llList2String(SEQUENCE_DATA_DATAS, index), ["◆"], []);
|
||||||
DEBUGSay(1, "Sequence '" + CURRENT_SEQUENCE_NAME + "' Started!");
|
DEBUGSay(1, "Sequence '" + CURRENT_SEQUENCE_NAME + "' Started!");
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_sequence(integer stopSound)
|
stop_sequence(integer stopSound)
|
||||||
{
|
{
|
||||||
if (sequence_running)
|
if (sequence_running)
|
||||||
|
@ -196,6 +204,7 @@ stop_sequence(integer stopSound)
|
||||||
llStopSound();
|
llStopSound();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sequence_control()
|
sequence_control()
|
||||||
{
|
{
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
|
@ -209,16 +218,19 @@ sequence_control()
|
||||||
menu_handle = llListen(menu_channel, "", CONTROLLER, "");
|
menu_handle = llListen(menu_channel, "", CONTROLLER, "");
|
||||||
llDialog(CONTROLLER, product + " " + version + "\n\n[" + CURRENT_SEQUENCE_NAME + "]\n◀◀ = previous anim in sequence.\n▮▮ = pause sequence.\n▶▶ = skip to next anim in sequence.", order_buttons(["[BACK]"] + menu_items), menu_channel);
|
llDialog(CONTROLLER, product + " " + version + "\n\n[" + CURRENT_SEQUENCE_NAME + "]\n◀◀ = previous anim in sequence.\n▮▮ = pause sequence.\n▶▶ = skip to next anim in sequence.", order_buttons(["[BACK]"] + menu_items), menu_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list buttons)
|
list order_buttons(list buttons)
|
||||||
{
|
{
|
||||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
commit_sequence_data()
|
commit_sequence_data()
|
||||||
{
|
{
|
||||||
SEQUENCE_DATA_NAMES += CURRENT_SEQUENCE_NAME;
|
SEQUENCE_DATA_NAMES += CURRENT_SEQUENCE_NAME;
|
||||||
SEQUENCE_DATA_ACTIONS += llDumpList2String(CURRENT_SEQUENCE_ACTIONS, "◆");
|
SEQUENCE_DATA_ACTIONS += llDumpList2String(CURRENT_SEQUENCE_ACTIONS, "◆");
|
||||||
SEQUENCE_DATA_DATAS += llDumpList2String(CURRENT_SEQUENCE_DATAS, "◆");
|
SEQUENCE_DATA_DATAS += llDumpList2String(CURRENT_SEQUENCE_DATAS, "◆");
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -230,6 +242,7 @@ default
|
||||||
notecard_query = llGetNotecardLine(notecard_name, notecard_line);
|
notecard_query = llGetNotecardLine(notecard_name, notecard_line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_INVENTORY)
|
if (change & CHANGED_INVENTORY)
|
||||||
|
@ -240,6 +253,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
@ -279,6 +293,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state running
|
state running
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -290,6 +305,7 @@ state running
|
||||||
SITTERS += NULL_KEY;
|
SITTERS += NULL_KEY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
if (sender == llGetLinkNumber())
|
if (sender == llGetLinkNumber())
|
||||||
|
@ -360,6 +376,7 @@ state running
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer listen_channel, string name, key id, string msg)
|
listen(integer listen_channel, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (msg == "▮▮")
|
if (msg == "▮▮")
|
||||||
|
@ -401,16 +418,19 @@ state running
|
||||||
}
|
}
|
||||||
sequence_control();
|
sequence_control();
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
llSetTimerEvent(0);
|
llSetTimerEvent(0);
|
||||||
SEQUENCE_POINTER++;
|
SEQUENCE_POINTER++;
|
||||||
run_sequence();
|
run_sequence();
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer start)
|
on_rez(integer start)
|
||||||
{
|
{
|
||||||
playsounds = TRUE;
|
playsounds = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_LINK)
|
if (change & CHANGED_LINK)
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string notecard_basename = "AVpos";
|
string notecard_basename = "AVpos";
|
||||||
string name = "Anim";
|
string name = "Anim";
|
||||||
|
|
||||||
Readout_Say(string say)
|
Readout_Say(string say)
|
||||||
{
|
{
|
||||||
llSleep(0.2);
|
llSleep(0.2);
|
||||||
|
@ -22,6 +23,7 @@ Readout_Say(string say)
|
||||||
llRegionSayTo(llGetOwner(), 0, "◆" + say);
|
llRegionSayTo(llGetOwner(), 0, "◆" + say);
|
||||||
llSetObjectName(objectname);
|
llSetObjectName(objectname);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
float version = 1.2;
|
float version = 1.2;
|
||||||
string notecard_name = "AVpos";
|
string notecard_name = "AVpos";
|
||||||
string url = "https://avsitter.com/settings.php"; // the settings dump service remains up for AVsitter customers. settings clear periodically.
|
string url = "https://avsitter.com/settings.php"; // the settings dump service remains up for AVsitter customers. settings clear periodically.
|
||||||
|
@ -24,14 +24,18 @@ vector pos_offset;
|
||||||
string cache;
|
string cache;
|
||||||
string webkey;
|
string webkey;
|
||||||
integer webcount;
|
integer webcount;
|
||||||
web(string say, integer force){
|
|
||||||
cache+=say;
|
web(string say, integer force)
|
||||||
if(llStringLength(llEscapeURL(cache))>1024 || force){
|
{
|
||||||
|
cache += say;
|
||||||
|
if (llStringLength(llEscapeURL(cache)) > 1024 || force)
|
||||||
|
{
|
||||||
webcount++;
|
webcount++;
|
||||||
llHTTPRequest(url, [HTTP_METHOD,"POST",HTTP_MIMETYPE,"application/x-www-form-urlencoded",HTTP_VERIFY_CERT,FALSE], "w="+webkey+"&c="+(string)webcount+"&t="+llEscapeURL(cache));
|
llHTTPRequest(url, [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/x-www-form-urlencoded", HTTP_VERIFY_CERT, FALSE], "w=" + webkey + "&c=" + (string)webcount + "&t=" + llEscapeURL(cache));
|
||||||
cache="";
|
cache = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
integer IsVector(string s)
|
integer IsVector(string s)
|
||||||
{
|
{
|
||||||
list split = llParseString2List(s, [" "], ["<", ">", ","]);
|
list split = llParseString2List(s, [" "], ["<", ">", ","]);
|
||||||
|
@ -39,6 +43,7 @@ integer IsVector(string s)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return !((string)((vector)s) == (string)((vector)((string)llListInsertList(split, ["-"], 5))));
|
return !((string)((vector)s) == (string)((vector)((string)llListInsertList(split, ["-"], 5))));
|
||||||
}
|
}
|
||||||
|
|
||||||
string FormatFloat(float f, integer num_decimals)
|
string FormatFloat(float f, integer num_decimals)
|
||||||
{
|
{
|
||||||
float rounding = (float)(".5e-" + (string)num_decimals) - 5e-07;
|
float rounding = (float)(".5e-" + (string)num_decimals) - 5e-07;
|
||||||
|
@ -60,10 +65,12 @@ string FormatFloat(float f, integer num_decimals)
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
instructions()
|
instructions()
|
||||||
{
|
{
|
||||||
llOwnerSay("\n\nINSTRUCTIONS:\n\nFOR MOVING ALL POSE & PROP POSITIONS BY AN OFFSET:\nManual Position: specify a position offset on channel 5, and positions will be converted by that offset. E.g. /5 <0,0,1.5>\nManual Rotation: specify a rotation offset on channel 6 (in degrees), and rotations will be converted by that offset, relative to the prim center. E.g. /6 <0,0,180>\n\nFOR RELOCATING SCRIPTS TO NEW PRIM:\n1. Unlink your object and re-link so that the prim you want to move the animations from is the root prim, then place this script inside the root prim.\n2. Touch the prim you want to locate the poses to. This prim should be empty or contain a script with llPassTouches(TRUE);\n3. The script will read out the notecard in chat, with pos/rot modified to the prim you touched.\n\nHave Fun! :)\n");
|
llOwnerSay("\n\nINSTRUCTIONS:\n\nFOR MOVING ALL POSE & PROP POSITIONS BY AN OFFSET:\nManual Position: specify a position offset on channel 5, and positions will be converted by that offset. E.g. /5 <0,0,1.5>\nManual Rotation: specify a rotation offset on channel 6 (in degrees), and rotations will be converted by that offset, relative to the prim center. E.g. /6 <0,0,180>\n\nFOR RELOCATING SCRIPTS TO NEW PRIM:\n1. Unlink your object and re-link so that the prim you want to move the animations from is the root prim, then place this script inside the root prim.\n2. Touch the prim you want to locate the poses to. This prim should be empty or contain a script with llPassTouches(TRUE);\n3. The script will read out the notecard in chat, with pos/rot modified to the prim you touched.\n\nHave Fun! :)\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
cut_above_text()
|
cut_above_text()
|
||||||
{
|
{
|
||||||
webkey = (string)llGenerateKey();
|
webkey = (string)llGenerateKey();
|
||||||
|
@ -72,12 +79,14 @@ cut_above_text()
|
||||||
Readout_Say("--✄--COPY BELOW INTO \"AVpos\" NOTECARD--✄--");
|
Readout_Say("--✄--COPY BELOW INTO \"AVpos\" NOTECARD--✄--");
|
||||||
Readout_Say("");
|
Readout_Say("");
|
||||||
}
|
}
|
||||||
|
|
||||||
cut_below_text()
|
cut_below_text()
|
||||||
{
|
{
|
||||||
Readout_Say("");
|
Readout_Say("");
|
||||||
Readout_Say("--✄--COPY ABOVE INTO \"AVpos\" NOTECARD--✄--");
|
Readout_Say("--✄--COPY ABOVE INTO \"AVpos\" NOTECARD--✄--");
|
||||||
Readout_Say("");
|
Readout_Say("");
|
||||||
}
|
}
|
||||||
|
|
||||||
Readout_Say(string say)
|
Readout_Say(string say)
|
||||||
{
|
{
|
||||||
llSleep(0.1);
|
llSleep(0.1);
|
||||||
|
@ -85,8 +94,9 @@ Readout_Say(string say)
|
||||||
llSetObjectName("");
|
llSetObjectName("");
|
||||||
llRegionSayTo(llGetOwner(), 0, "◆" + say);
|
llRegionSayTo(llGetOwner(), 0, "◆" + say);
|
||||||
llSetObjectName(objectname);
|
llSetObjectName(objectname);
|
||||||
web(say+"\n",FALSE);
|
web(say + "\n", FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
integer check_in_root()
|
integer check_in_root()
|
||||||
{
|
{
|
||||||
if (llGetLinkNumber() > 1 || llGetInventoryType("AVpos") != INVENTORY_NOTECARD)
|
if (llGetLinkNumber() > 1 || llGetInventoryType("AVpos") != INVENTORY_NOTECARD)
|
||||||
|
@ -100,6 +110,7 @@ integer check_in_root()
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -109,6 +120,7 @@ default
|
||||||
llListen(5, "", llGetOwner(), "");
|
llListen(5, "", llGetOwner(), "");
|
||||||
llListen(6, "", llGetOwner(), "");
|
llListen(6, "", llGetOwner(), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
touch_start(integer touched)
|
touch_start(integer touched)
|
||||||
{
|
{
|
||||||
check_in_root();
|
check_in_root();
|
||||||
|
@ -122,6 +134,7 @@ default
|
||||||
notecard_query = llGetNotecardLine(notecard_name, notecard_line);
|
notecard_query = llGetNotecardLine(notecard_name, notecard_line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer chan, string name, key id, string msg)
|
listen(integer chan, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (chan == 5)
|
if (chan == 5)
|
||||||
|
@ -155,6 +168,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Owner_Say(string say)
|
Owner_Say(string say)
|
||||||
{
|
{
|
||||||
llOwnerSay(llGetScriptName() + ": " + say);
|
llOwnerSay(llGetScriptName() + ": " + say);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter2 MLP converter";
|
string product = "AVsitter2 MLP converter";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
string notecard_basename = "AVpos";
|
string notecard_basename = "AVpos";
|
||||||
|
@ -25,6 +25,7 @@ integer animator_count;
|
||||||
integer animator_total;
|
integer animator_total;
|
||||||
list ommit = ["default", "stand"];
|
list ommit = ["default", "stand"];
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -32,6 +33,7 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string FormatFloat(float f, integer num_decimals)
|
string FormatFloat(float f, integer num_decimals)
|
||||||
{
|
{
|
||||||
float rounding = (float)(".5e-" + (string)num_decimals) - 5e-07;
|
float rounding = (float)(".5e-" + (string)num_decimals) - 5e-07;
|
||||||
|
@ -53,6 +55,7 @@ string FormatFloat(float f, integer num_decimals)
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
finish()
|
finish()
|
||||||
{
|
{
|
||||||
if (llSubStringIndex(llGetObjectName(), "Utilities") == -1) // remove it except from Utilities box
|
if (llSubStringIndex(llGetObjectName(), "Utilities") == -1) // remove it except from Utilities box
|
||||||
|
@ -61,6 +64,7 @@ finish()
|
||||||
llRemoveInventory(llGetScriptName());
|
llRemoveInventory(llGetScriptName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get_notecards()
|
get_notecards()
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -77,6 +81,7 @@ get_notecards()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Readout_Say(string say)
|
Readout_Say(string say)
|
||||||
{
|
{
|
||||||
string objectname = llGetObjectName();
|
string objectname = llGetObjectName();
|
||||||
|
@ -84,6 +89,7 @@ Readout_Say(string say)
|
||||||
llRegionSayTo(llGetOwner(), 0, "◆" + say);
|
llRegionSayTo(llGetOwner(), 0, "◆" + say);
|
||||||
llSetObjectName(objectname);
|
llSetObjectName(objectname);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -105,6 +111,7 @@ default
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
|
|
@ -1,26 +1,28 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string notecard_basename = "AVpos";
|
string notecard_basename = "AVpos";
|
||||||
integer variable1;
|
integer variable1;
|
||||||
key notecard_query;
|
key notecard_query;
|
||||||
list ALL_USED_ANIMATIONS;
|
list ALL_USED_ANIMATIONS;
|
||||||
list UNUSED_ANIMS;
|
list UNUSED_ANIMS;
|
||||||
|
|
||||||
Owner_Say(string say)
|
Owner_Say(string say)
|
||||||
{
|
{
|
||||||
llOwnerSay(llGetScriptName() + ": " + say);
|
llOwnerSay(llGetScriptName() + ": " + say);
|
||||||
}
|
}
|
||||||
|
|
||||||
finish()
|
finish()
|
||||||
{
|
{
|
||||||
Owner_Say("Check complete, removing script.");
|
Owner_Say("Check complete, removing script.");
|
||||||
|
@ -31,6 +33,7 @@ finish()
|
||||||
llRemoveInventory(llGetScriptName());
|
llRemoveInventory(llGetScriptName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -51,6 +54,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
@ -100,6 +104,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer chan, string name, key id, string msg)
|
listen(integer chan, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (msg == "YES")
|
if (msg == "YES")
|
||||||
|
@ -116,6 +121,7 @@ default
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
Owner_Say("timeout");
|
Owner_Say("timeout");
|
||||||
|
|
|
@ -3,23 +3,26 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Simple script used for updating a large number of furniture items at once
|
* Simple script used for updating a large number of furniture items at once
|
||||||
* This script goes in each furniture prim that expects an update from the sender
|
* This script goes in each furniture prim that expects an update from the sender
|
||||||
* will auto-delete if a non-admin avatar rezzes the furniture
|
* will auto-delete if a non-admin avatar rezzes the furniture
|
||||||
*/
|
*/
|
||||||
|
|
||||||
integer pin = -29752;
|
integer pin = -29752;
|
||||||
|
|
||||||
|
// Enter the list of allowed avatar UUIDs here.
|
||||||
list admin_avatars = ["b30c9262-9abf-4cd1-9476-adcf5723c029", "f2e0ed5e-6592-4199-901d-a659c324ca94"];
|
list admin_avatars = ["b30c9262-9abf-4cd1-9476-adcf5723c029", "f2e0ed5e-6592-4199-901d-a659c324ca94"];
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -38,6 +41,7 @@ default
|
||||||
llSetRemoteScriptAccessPin(pin);
|
llSetRemoteScriptAccessPin(pin);
|
||||||
llListen(pin, "", "", "");
|
llListen(pin, "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
if (llGetLinkNumber() == 0 || llGetLinkNumber() == 1 && llGetInventoryType("[AV]object") != INVENTORY_SCRIPT)
|
if (llGetLinkNumber() == 0 || llGetLinkNumber() == 1 && llGetInventoryType("[AV]object") != INVENTORY_SCRIPT)
|
||||||
|
@ -49,6 +53,7 @@ default
|
||||||
}
|
}
|
||||||
llSetTimerEvent(10);
|
llSetTimerEvent(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer start)
|
on_rez(integer start)
|
||||||
{
|
{
|
||||||
if (start)
|
if (start)
|
||||||
|
@ -61,6 +66,7 @@ default
|
||||||
llRemoveInventory(llGetScriptName());
|
llRemoveInventory(llGetScriptName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer chan, string name, key id, string msg)
|
listen(integer chan, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (llGetOwnerKey(id) == llGetOwner())
|
if (llGetOwnerKey(id) == llGetOwner())
|
||||||
|
@ -84,6 +90,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_OWNER)
|
if (change & CHANGED_OWNER)
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Simple script used for updating a large number of furniture items at once
|
* Simple script used for updating a large number of furniture items at once
|
||||||
* This script goes in a "sender" prim along with the latest copies of the
|
* This script goes in a "sender" prim along with the latest copies of the
|
||||||
* (not running) scripts and inventory objects (e.g. prop objects)
|
* (not running) scripts and inventory objects (e.g. prop objects)
|
||||||
* Touching the sender will shout in a radius and update all prims that respond.
|
* Touching the sender will shout in a radius and update all prims that respond.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
integer pin = -29752;
|
integer pin = -29752;
|
||||||
string receiver_script = "update receiver (auto removing)";
|
string receiver_script = "update receiver (auto removing)";
|
||||||
list objects_to_update;
|
list objects_to_update;
|
||||||
|
@ -26,12 +26,13 @@ list objects_files;
|
||||||
integer menu_handle;
|
integer menu_handle;
|
||||||
key av;
|
key av;
|
||||||
integer listenhandle;
|
integer listenhandle;
|
||||||
|
|
||||||
particles_on(key target)
|
particles_on(key target)
|
||||||
{
|
{
|
||||||
llParticleSystem([
|
llParticleSystem([
|
||||||
PSYS_PART_FLAGS, 0 | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_FOLLOW_VELOCITY_MASK | PSYS_PART_EMISSIVE_MASK | PSYS_PART_TARGET_POS_MASK,
|
PSYS_PART_FLAGS, 0 | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK | PSYS_PART_FOLLOW_VELOCITY_MASK | PSYS_PART_EMISSIVE_MASK | PSYS_PART_TARGET_POS_MASK,
|
||||||
PSYS_SRC_PATTERN, 0 | PSYS_SRC_PATTERN_DROP,
|
PSYS_SRC_PATTERN, 0 | PSYS_SRC_PATTERN_DROP,
|
||||||
PSYS_PART_START_ALPHA, 1.00000,
|
PSYS_PART_START_ALPHA, 1.0,
|
||||||
PSYS_PART_END_ALPHA, 1,
|
PSYS_PART_END_ALPHA, 1,
|
||||||
PSYS_PART_START_COLOR, <1, 0, 0>,
|
PSYS_PART_START_COLOR, <1, 0, 0>,
|
||||||
PSYS_PART_END_COLOR, <0, 0, 1>,
|
PSYS_PART_END_COLOR, <0, 0, 1>,
|
||||||
|
@ -41,32 +42,35 @@ particles_on(key target)
|
||||||
PSYS_SRC_MAX_AGE, 0,
|
PSYS_SRC_MAX_AGE, 0,
|
||||||
PSYS_SRC_ACCEL, <0, 0, 0>,
|
PSYS_SRC_ACCEL, <0, 0, 0>,
|
||||||
PSYS_SRC_BURST_PART_COUNT, 250,
|
PSYS_SRC_BURST_PART_COUNT, 250,
|
||||||
PSYS_SRC_BURST_RADIUS, 0.00000,
|
PSYS_SRC_BURST_RADIUS, 0.0,
|
||||||
PSYS_SRC_BURST_RATE, 0.05766,
|
PSYS_SRC_BURST_RATE, 0.05766,
|
||||||
PSYS_SRC_BURST_SPEED_MIN, 0.07813,
|
PSYS_SRC_BURST_SPEED_MIN, 0.07813,
|
||||||
PSYS_SRC_BURST_SPEED_MAX, 0.15625,
|
PSYS_SRC_BURST_SPEED_MAX, 0.15625,
|
||||||
PSYS_SRC_INNERANGLE, 0.09375,
|
PSYS_SRC_INNERANGLE, 0.09375,
|
||||||
PSYS_SRC_OUTERANGLE, 0.00000,
|
PSYS_SRC_OUTERANGLE, 0.0,
|
||||||
PSYS_SRC_OMEGA, <0, 0, 0>,
|
PSYS_SRC_OMEGA, <0, 0, 0>,
|
||||||
PSYS_SRC_TEXTURE, (key)"",
|
PSYS_SRC_TEXTURE, (key)"",
|
||||||
PSYS_SRC_TARGET_KEY, target
|
PSYS_SRC_TARGET_KEY, target
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
{
|
{
|
||||||
llParticleSystem([]);
|
llParticleSystem([]);
|
||||||
listenhandle=llListen(pin, "", "", "");
|
listenhandle = llListen(pin, "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer x)
|
on_rez(integer x)
|
||||||
{
|
{
|
||||||
llResetScript();
|
llResetScript();
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
llSetTimerEvent(0);
|
llSetTimerEvent(0);
|
||||||
llListenRemove(listenhandle);
|
llListenRemove(listenhandle);
|
||||||
llRegionSayTo(av, 0, "Found " + (string)llGetListLength(objects_to_update) + " objects...");
|
llRegionSayTo(av, 0, "Found " + (string)llGetListLength(objects_to_update) + " objects...");
|
||||||
integer i;
|
integer i;
|
||||||
for (i = 0; i < llGetListLength(objects_to_update); i++)
|
for (i = 0; i < llGetListLength(objects_to_update); i++)
|
||||||
|
@ -146,6 +150,7 @@ default
|
||||||
llRegionSayTo(av, 0, "Updating Complete!");
|
llRegionSayTo(av, 0, "Updating Complete!");
|
||||||
llResetScript();
|
llResetScript();
|
||||||
}
|
}
|
||||||
|
|
||||||
touch_start(integer touched)
|
touch_start(integer touched)
|
||||||
{
|
{
|
||||||
if (llDetectedKey(0) == llGetOwner() || llSameGroup(llDetectedKey(0)))
|
if (llDetectedKey(0) == llGetOwner() || llSameGroup(llDetectedKey(0)))
|
||||||
|
@ -167,6 +172,7 @@ default
|
||||||
llSay(pin, "OBJECT_SEARCH|" + llDumpList2String(items, "|"));
|
llSay(pin, "OBJECT_SEARCH|" + llDumpList2String(items, "|"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer chan, string name, key id, string msg)
|
listen(integer chan, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (llGetOwnerKey(id) == llGetOwner())
|
if (llGetOwnerKey(id) == llGetOwner())
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
integer OLD_HELPER_METHOD;
|
integer OLD_HELPER_METHOD;
|
||||||
key key_request;
|
key key_request;
|
||||||
string url = "https://avsitter.com/settings.php"; // the settings dump service remains up for AVsitter customers. settings clear periodically.
|
string url = "https://avsitter.com/settings.php"; // the settings dump service remains up for AVsitter customers. settings clear periodically.
|
||||||
|
@ -46,6 +46,7 @@ list chosen_animations;
|
||||||
string cache;
|
string cache;
|
||||||
string webkey;
|
string webkey;
|
||||||
integer webcount;
|
integer webcount;
|
||||||
|
|
||||||
string FormatFloat(float f, integer num_decimals)
|
string FormatFloat(float f, integer num_decimals)
|
||||||
{
|
{
|
||||||
float rounding = (float)(".5e-" + (string)num_decimals) - 5e-07;
|
float rounding = (float)(".5e-" + (string)num_decimals) - 5e-07;
|
||||||
|
@ -67,6 +68,7 @@ string FormatFloat(float f, integer num_decimals)
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
web(integer force)
|
web(integer force)
|
||||||
{
|
{
|
||||||
if (llStringLength(llEscapeURL(cache)) > 1024 || force)
|
if (llStringLength(llEscapeURL(cache)) > 1024 || force)
|
||||||
|
@ -81,6 +83,7 @@ web(integer force)
|
||||||
cache = "";
|
cache = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Readout_Say(string say)
|
Readout_Say(string say)
|
||||||
{
|
{
|
||||||
string objectname = llGetObjectName();
|
string objectname = llGetObjectName();
|
||||||
|
@ -91,6 +94,7 @@ Readout_Say(string say)
|
||||||
say = "";
|
say = "";
|
||||||
web(FALSE);
|
web(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_all_anims(key id)
|
stop_all_anims(key id)
|
||||||
{
|
{
|
||||||
list animations = llGetAnimationList(id);
|
list animations = llGetAnimationList(id);
|
||||||
|
@ -100,14 +104,17 @@ stop_all_anims(key id)
|
||||||
llMessageLinked(LINK_THIS, 90002, llList2String(animations, i), id);
|
llMessageLinked(LINK_THIS, 90002, llList2String(animations, i), id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list buttons)
|
list order_buttons(list buttons)
|
||||||
{
|
{
|
||||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
string strReplace(string str, string search, string replace)
|
string strReplace(string str, string search, string replace)
|
||||||
{
|
{
|
||||||
return llDumpList2String(llParseStringKeepNulls((str = "") + str, [search], []), replace);
|
return llDumpList2String(llParseStringKeepNulls((str = "") + str, [search], []), replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
preview_anim(string anim, key id)
|
preview_anim(string anim, key id)
|
||||||
{
|
{
|
||||||
if (id)
|
if (id)
|
||||||
|
@ -116,6 +123,7 @@ preview_anim(string anim, key id)
|
||||||
llMessageLinked(LINK_THIS, 90001, anim, id);
|
llMessageLinked(LINK_THIS, 90001, anim, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
list get_choices()
|
list get_choices()
|
||||||
{
|
{
|
||||||
integer my_number_per_page = number_per_page;
|
integer my_number_per_page = number_per_page;
|
||||||
|
@ -129,7 +137,28 @@ list get_choices()
|
||||||
integer end = start + my_number_per_page;
|
integer end = start + my_number_per_page;
|
||||||
if (adding == "[FACE]")
|
if (adding == "[FACE]")
|
||||||
{
|
{
|
||||||
list facial_anim_list = ["none", "express_afraid_emote", "express_anger_emote", "express_laugh_emote", "express_bored_emote", "express_cry_emote", "express_embarrassed_emote", "express_sad_emote", "express_toothsmile", "express_smile", "express_surprise_emote", "express_worry_emote", "express_repulsed_emote", "express_shrug_emote", "express_wink_emote", "express_disdain", "express_frown", "express_kiss", "express_open_mouth", "express_tongue_out"];
|
list facial_anim_list =
|
||||||
|
[ "none"
|
||||||
|
, "express_afraid_emote"
|
||||||
|
, "express_anger_emote"
|
||||||
|
, "express_laugh_emote"
|
||||||
|
, "express_bored_emote"
|
||||||
|
, "express_cry_emote"
|
||||||
|
, "express_embarrassed_emote"
|
||||||
|
, "express_sad_emote"
|
||||||
|
, "express_toothsmile"
|
||||||
|
, "express_smile"
|
||||||
|
, "express_surprise_emote"
|
||||||
|
, "express_worry_emote"
|
||||||
|
, "express_repulsed_emote"
|
||||||
|
, "express_shrug_emote"
|
||||||
|
, "express_wink_emote"
|
||||||
|
, "express_disdain"
|
||||||
|
, "express_frown"
|
||||||
|
, "express_kiss"
|
||||||
|
, "express_open_mouth"
|
||||||
|
, "express_tongue_out"
|
||||||
|
];
|
||||||
i = llGetListLength(facial_anim_list);
|
i = llGetListLength(facial_anim_list);
|
||||||
options = llList2List(facial_anim_list, start, end - 1);
|
options = llList2List(facial_anim_list, start, end - 1);
|
||||||
}
|
}
|
||||||
|
@ -154,10 +183,12 @@ list get_choices()
|
||||||
menu_pages = llCeil((float)i / my_number_per_page);
|
menu_pages = llCeil((float)i / my_number_per_page);
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
ask_anim()
|
ask_anim()
|
||||||
{
|
{
|
||||||
choice_menu(get_choices(), "Choose anim" + sitter_text(sitter_count) + ":");
|
choice_menu(get_choices(), "Choose anim" + sitter_text(sitter_count) + ":");
|
||||||
}
|
}
|
||||||
|
|
||||||
choice_menu(list options, string menu_text)
|
choice_menu(list options, string menu_text)
|
||||||
{
|
{
|
||||||
last_text = menu_text;
|
last_text = menu_text;
|
||||||
|
@ -196,6 +227,7 @@ choice_menu(list options, string menu_text)
|
||||||
}
|
}
|
||||||
llDialog(controller, menu_text, order_buttons(menu_items), comm_channel);
|
llDialog(controller, menu_text, order_buttons(menu_items), comm_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
new_menu()
|
new_menu()
|
||||||
{
|
{
|
||||||
menu_page = 0;
|
menu_page = 0;
|
||||||
|
@ -208,15 +240,18 @@ new_menu()
|
||||||
string menu_text = "\nWhat would you like to create?\n";
|
string menu_text = "\nWhat would you like to create?\n";
|
||||||
llDialog(controller, menu_text, order_buttons(menu_items), comm_channel);
|
llDialog(controller, menu_text, order_buttons(menu_items), comm_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
end_helper_mode()
|
end_helper_mode()
|
||||||
{
|
{
|
||||||
llRegionSay(comm_channel, "DONEA");
|
llRegionSay(comm_channel, "DONEA");
|
||||||
helper_mode = FALSE;
|
helper_mode = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Out(string out)
|
Out(string out)
|
||||||
{
|
{
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
|
|
||||||
integer get_number_of_scripts()
|
integer get_number_of_scripts()
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -224,6 +259,7 @@ integer get_number_of_scripts()
|
||||||
;
|
;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
string convert_to_world_positions(integer num)
|
string convert_to_world_positions(integer num)
|
||||||
{
|
{
|
||||||
list details = llGetObjectDetails(llGetLinkKey(llGetLinkNumber()), [OBJECT_POS, OBJECT_ROT]);
|
list details = llGetObjectDetails(llGetLinkKey(llGetLinkNumber()), [OBJECT_POS, OBJECT_ROT]);
|
||||||
|
@ -231,10 +267,12 @@ string convert_to_world_positions(integer num)
|
||||||
vector target_pos = llList2Vector(POS_LIST, num) * llList2Rot(details, 1) + llList2Vector(details, 0);
|
vector target_pos = llList2Vector(POS_LIST, num) * llList2Rot(details, 1) + llList2Vector(details, 0);
|
||||||
return (string)target_pos + "|" + (string)target_rot;
|
return (string)target_pos + "|" + (string)target_rot;
|
||||||
}
|
}
|
||||||
|
|
||||||
string sitter_text(integer sitter)
|
string sitter_text(integer sitter)
|
||||||
{
|
{
|
||||||
return " for SITTER " + (string)sitter;
|
return " for SITTER " + (string)sitter;
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_script(string reason)
|
remove_script(string reason)
|
||||||
{
|
{
|
||||||
string message = "\n" + llGetScriptName() + " ==Script Removed==\n\n" + reason;
|
string message = "\n" + llGetScriptName() + " ==Script Removed==\n\n" + reason;
|
||||||
|
@ -242,6 +280,7 @@ remove_script(string reason)
|
||||||
llInstantMessage(llGetOwner(), message);
|
llInstantMessage(llGetOwner(), message);
|
||||||
llRemoveInventory(llGetScriptName());
|
llRemoveInventory(llGetScriptName());
|
||||||
}
|
}
|
||||||
|
|
||||||
done_choosing_anims()
|
done_choosing_anims()
|
||||||
{
|
{
|
||||||
string adding_text = llList2String(llParseString2List(adding, ["[", "]"], []), 0);
|
string adding_text = llList2String(llParseString2List(adding, ["[", "]"], []), 0);
|
||||||
|
@ -254,6 +293,7 @@ done_choosing_anims()
|
||||||
}
|
}
|
||||||
llTextBox(controller, "\nType a menu name for " + adding_text + text, comm_channel);
|
llTextBox(controller, "\nType a menu name for " + adding_text + text, comm_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
camera_menu()
|
camera_menu()
|
||||||
{
|
{
|
||||||
string text = "\nCamera:\n\n";
|
string text = "\nCamera:\n\n";
|
||||||
|
@ -267,6 +307,7 @@ camera_menu()
|
||||||
}
|
}
|
||||||
llDialog(controller, text, ["[BACK]", "[SAVE]", "[CLEAR]"], comm_channel);
|
llDialog(controller, text, ["[BACK]", "[SAVE]", "[CLEAR]"], comm_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsit_all()
|
unsit_all()
|
||||||
{
|
{
|
||||||
integer i = llGetNumberOfPrims();
|
integer i = llGetNumberOfPrims();
|
||||||
|
@ -277,6 +318,7 @@ unsit_all()
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
toggle_helper_mode()
|
toggle_helper_mode()
|
||||||
{
|
{
|
||||||
helper_mode = (!helper_mode);
|
helper_mode = (!helper_mode);
|
||||||
|
@ -308,6 +350,7 @@ toggle_helper_mode()
|
||||||
end_helper_mode();
|
end_helper_mode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -332,6 +375,7 @@ default
|
||||||
comm_channel -= 1000000000;
|
comm_channel -= 1000000000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
integer one = (integer)msg;
|
integer one = (integer)msg;
|
||||||
|
@ -571,6 +615,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_LINK)
|
if (change & CHANGED_LINK)
|
||||||
|
@ -594,6 +639,7 @@ default
|
||||||
llResetScript();
|
llResetScript();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
run_time_permissions(integer perm)
|
run_time_permissions(integer perm)
|
||||||
{
|
{
|
||||||
if (llGetPermissions() & PERMISSION_TRACK_CAMERA)
|
if (llGetPermissions() & PERMISSION_TRACK_CAMERA)
|
||||||
|
@ -613,6 +659,7 @@ default
|
||||||
camera_menu();
|
camera_menu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer chan, string name, key id, string msg)
|
listen(integer chan, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (chan == chat_channel)
|
if (chan == chat_channel)
|
||||||
|
@ -859,6 +906,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer x)
|
on_rez(integer x)
|
||||||
{
|
{
|
||||||
llResetScript();
|
llResetScript();
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string registration_product = "AVsitter2";
|
string registration_product = "AVsitter2";
|
||||||
string product = "AVhelper";
|
string product = "AVhelper";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
|
@ -28,6 +28,7 @@ vector default_size = <0.12,0.12,3.5>;
|
||||||
key key_request;
|
key key_request;
|
||||||
vector my_pos;
|
vector my_pos;
|
||||||
rotation my_rot;
|
rotation my_rot;
|
||||||
|
|
||||||
stop_all_anims()
|
stop_all_anims()
|
||||||
{
|
{
|
||||||
if (llAvatarOnSitTarget())
|
if (llAvatarOnSitTarget())
|
||||||
|
@ -46,6 +47,7 @@ stop_all_anims()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set_text()
|
set_text()
|
||||||
{
|
{
|
||||||
string text = "▽";
|
string text = "▽";
|
||||||
|
@ -62,6 +64,7 @@ set_text()
|
||||||
text = t + " " + (string)helper_index + "\n" + text;
|
text = t + " " + (string)helper_index + "\n" + text;
|
||||||
llSetLinkPrimitiveParamsFast(llGetLinkNumber(), [PRIM_TEXT, text, llList2Vector(colors, helper_index % llGetListLength(colors)), 1]);
|
llSetLinkPrimitiveParamsFast(llGetLinkNumber(), [PRIM_TEXT, text, llList2Vector(colors, helper_index % llGetListLength(colors)), 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
alpha = llList2Float(llGetPrimitiveParams([PRIM_COLOR, 0]), 1);
|
alpha = llList2Float(llGetPrimitiveParams([PRIM_COLOR, 0]), 1);
|
||||||
|
@ -88,6 +91,7 @@ setup()
|
||||||
}
|
}
|
||||||
llRegionSay(comm_channel, "REG|" + (string)sitter_number);
|
llRegionSay(comm_channel, "REG|" + (string)sitter_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -110,6 +114,7 @@ default
|
||||||
llSitTarget(-<0,0,0.35>, ZERO_ROTATION);
|
llSitTarget(-<0,0,0.35>, ZERO_ROTATION);
|
||||||
llSetStatus(STATUS_PHANTOM, TRUE);
|
llSetStatus(STATUS_PHANTOM, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer start)
|
on_rez(integer start)
|
||||||
{
|
{
|
||||||
llResetTime();
|
llResetTime();
|
||||||
|
@ -137,6 +142,7 @@ default
|
||||||
setup();
|
setup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer chan, string name, key id, string msg)
|
listen(integer chan, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (chan == 5 && id == CURRENT_AV)
|
if (chan == 5 && id == CURRENT_AV)
|
||||||
|
@ -216,6 +222,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
if (my_pos != llGetPos() || my_rot != llGetRot())
|
if (my_pos != llGetPos() || my_rot != llGetRot())
|
||||||
|
@ -229,6 +236,7 @@ default
|
||||||
llDie();
|
llDie();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_LINK)
|
if (change & CHANGED_LINK)
|
||||||
|
@ -255,6 +263,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
touch_start(integer total_number)
|
touch_start(integer total_number)
|
||||||
{
|
{
|
||||||
if (llGetStartParameter() != 0)
|
if (llGetStartParameter() != 0)
|
||||||
|
@ -262,6 +271,7 @@ default
|
||||||
llRegionSay(comm_channel, "MENU|" + (string)sitter_number + "|" + (string)llDetectedKey(0));
|
llRegionSay(comm_channel, "MENU|" + (string)sitter_number + "|" + (string)llDetectedKey(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
run_time_permissions(integer perm)
|
run_time_permissions(integer perm)
|
||||||
{
|
{
|
||||||
if (perm & PERMISSION_TRIGGER_ANIMATION)
|
if (perm & PERMISSION_TRIGGER_ANIMATION)
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter™ Security 2.2";
|
string product = "AVsitter™ Security 2.2";
|
||||||
string script_basename = "[AV]sitA";
|
string script_basename = "[AV]sitA";
|
||||||
string menucontrol_script = "[AV]root-control";
|
string menucontrol_script = "[AV]root-control";
|
||||||
|
@ -26,6 +26,7 @@ list MENU_TYPES = ["ALL", "OWNER", "GROUP"];
|
||||||
integer SIT_INDEX;
|
integer SIT_INDEX;
|
||||||
integer MENU_INDEX;
|
integer MENU_INDEX;
|
||||||
string lastmenu;
|
string lastmenu;
|
||||||
|
|
||||||
integer pass_security(key id, string context)
|
integer pass_security(key id, string context)
|
||||||
{
|
{
|
||||||
integer ALLOWED = FALSE;
|
integer ALLOWED = FALSE;
|
||||||
|
@ -47,6 +48,7 @@ integer pass_security(key id, string context)
|
||||||
}
|
}
|
||||||
return ALLOWED;
|
return ALLOWED;
|
||||||
}
|
}
|
||||||
|
|
||||||
check_sitters()
|
check_sitters()
|
||||||
{
|
{
|
||||||
integer i = llGetNumberOfPrims();
|
integer i = llGetNumberOfPrims();
|
||||||
|
@ -61,14 +63,17 @@ check_sitters()
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
back_to_adjust(integer SCRIPT_CHANNEL, key sitter)
|
back_to_adjust(integer SCRIPT_CHANNEL, key sitter)
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90101, (string)SCRIPT_CHANNEL + "|[ADJUST]", sitter);
|
llMessageLinked(LINK_SET, 90101, (string)SCRIPT_CHANNEL + "|[ADJUST]", sitter);
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list menu_items)
|
list order_buttons(list menu_items)
|
||||||
{
|
{
|
||||||
return llList2List(menu_items, -3, -1) + llList2List(menu_items, -6, -4) + llList2List(menu_items, -9, -7) + llList2List(menu_items, -12, -10);
|
return llList2List(menu_items, -3, -1) + llList2List(menu_items, -6, -4) + llList2List(menu_items, -9, -7) + llList2List(menu_items, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
register_touch(key id, integer animation_menu_function, integer active_prim, integer giveFailedMessage)
|
register_touch(key id, integer animation_menu_function, integer active_prim, integer giveFailedMessage)
|
||||||
{
|
{
|
||||||
if (pass_security(id, "MENU"))
|
if (pass_security(id, "MENU"))
|
||||||
|
@ -94,11 +99,13 @@ register_touch(key id, integer animation_menu_function, integer active_prim, int
|
||||||
llDialog(id, product + "\n\nSorry, Menu access is set to: " + llList2String(MENU_TYPES, MENU_INDEX), [], -164289491);
|
llDialog(id, product + "\n\nSorry, Menu access is set to: " + llList2String(MENU_TYPES, MENU_INDEX), [], -164289491);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
main_menu()
|
main_menu()
|
||||||
{
|
{
|
||||||
dialog("Sit access: " + llList2String(SIT_TYPES, SIT_INDEX) + "\nMenu access: " + llList2String(MENU_TYPES, MENU_INDEX) + "\n\nChange security settings:", ["[BACK]", "Sit", "Menu"]);
|
dialog("Sit access: " + llList2String(SIT_TYPES, SIT_INDEX) + "\nMenu access: " + llList2String(MENU_TYPES, MENU_INDEX) + "\n\nChange security settings:", ["[BACK]", "Sit", "Menu"]);
|
||||||
lastmenu = "";
|
lastmenu = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog(string text, list menu_items)
|
dialog(string text, list menu_items)
|
||||||
{
|
{
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
|
@ -106,6 +113,7 @@ dialog(string text, list menu_items)
|
||||||
llDialog(llGetOwner(), product + "\n\n" + text, order_buttons(menu_items), menu_channel);
|
llDialog(llGetOwner(), product + "\n\n" + text, order_buttons(menu_items), menu_channel);
|
||||||
llSetTimerEvent(600);
|
llSetTimerEvent(600);
|
||||||
}
|
}
|
||||||
|
|
||||||
integer check_for_RLV()
|
integer check_for_RLV()
|
||||||
{
|
{
|
||||||
if (llGetInventoryType(RLV_script) == INVENTORY_SCRIPT)
|
if (llGetInventoryType(RLV_script) == INVENTORY_SCRIPT)
|
||||||
|
@ -114,17 +122,20 @@ integer check_for_RLV()
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90202, (string)check_for_RLV(), "");
|
llMessageLinked(LINK_SET, 90202, (string)check_for_RLV(), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
llSetTimerEvent(0);
|
llSetTimerEvent(0);
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
if (num == 90201)
|
if (num == 90201)
|
||||||
|
@ -162,6 +173,7 @@ default
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer listen_channel, string name, key id, string msg)
|
listen(integer listen_channel, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (msg == "Sit")
|
if (msg == "Sit")
|
||||||
|
@ -198,6 +210,7 @@ default
|
||||||
}
|
}
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_LINK)
|
if (change & CHANGED_LINK)
|
||||||
|
@ -205,6 +218,7 @@ default
|
||||||
check_sitters();
|
check_sitters();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
touch_end(integer touched)
|
touch_end(integer touched)
|
||||||
{
|
{
|
||||||
if (check_for_RLV() || llGetAgentSize(llGetLinkKey(llGetNumberOfPrims())) != ZERO_VECTOR)
|
if (check_for_RLV() || llGetAgentSize(llGetLinkKey(llGetNumberOfPrims())) != ZERO_VECTOR)
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string script_basename = "[AV]sitA";
|
string script_basename = "[AV]sitA";
|
||||||
string menu_script = "[AV]menu";
|
string menu_script = "[AV]menu";
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
touch_end(integer touched)
|
touch_end(integer touched)
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter™ seat select";
|
string product = "AVsitter™ seat select";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
integer select_type;
|
integer select_type;
|
||||||
|
@ -31,6 +31,7 @@ integer menu_handle;
|
||||||
integer menu_type;
|
integer menu_type;
|
||||||
integer variable1;
|
integer variable1;
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -38,14 +39,17 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string strReplace(string str, string search, string replace)
|
string strReplace(string str, string search, string replace)
|
||||||
{
|
{
|
||||||
return llDumpList2String(llParseStringKeepNulls((str = "") + str, [search], []), replace);
|
return llDumpList2String(llParseStringKeepNulls((str = "") + str, [search], []), replace);
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list buttons)
|
list order_buttons(list buttons)
|
||||||
{
|
{
|
||||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
menu(key av)
|
menu(key av)
|
||||||
{
|
{
|
||||||
integer sitter_index = llListFindList(SITTERS, [av]);
|
integer sitter_index = llListFindList(SITTERS, [av]);
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter™";
|
string product = "AVsitter™";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
string notecard_name = "AVpos";
|
string notecard_name = "AVpos";
|
||||||
|
@ -82,6 +82,7 @@ string BRAND;
|
||||||
string onSit;
|
string onSit;
|
||||||
integer speed_index;
|
integer speed_index;
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -89,10 +90,12 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list buttons)
|
list order_buttons(list buttons)
|
||||||
{
|
{
|
||||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
integer get_number_of_scripts()
|
integer get_number_of_scripts()
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -100,12 +103,14 @@ integer get_number_of_scripts()
|
||||||
;
|
;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog(string text, list menu_items)
|
dialog(string text, list menu_items)
|
||||||
{
|
{
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
menu_handle = llListen(menu_channel = ((integer)llFrand(2147483646) + 1) * -1, "", CONTROLLER, "");
|
menu_handle = llListen(menu_channel = ((integer)llFrand(2147483646) + 1) * -1, "", CONTROLLER, "");
|
||||||
llDialog(CONTROLLER, product + " " + version + "\n\n" + text, order_buttons(menu_items), menu_channel);
|
llDialog(CONTROLLER, product + " " + version + "\n\n" + text, order_buttons(menu_items), menu_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
options_menu()
|
options_menu()
|
||||||
{
|
{
|
||||||
list menu_items;
|
list menu_items;
|
||||||
|
@ -139,6 +144,7 @@ options_menu()
|
||||||
menu_items += "[POSE]";
|
menu_items += "[POSE]";
|
||||||
dialog("Adjust:", ["[BACK]"] + menu_items);
|
dialog("Adjust:", ["[BACK]"] + menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
adjust_pose_menu()
|
adjust_pose_menu()
|
||||||
{
|
{
|
||||||
string posrot_button = "Position";
|
string posrot_button = "Position";
|
||||||
|
@ -150,10 +156,12 @@ adjust_pose_menu()
|
||||||
}
|
}
|
||||||
dialog("Personal adjustment:", ["[BACK]", posrot_button, value_button, "[DEFAULT]", "[SAVE]", "[SAVE ALL]", "X+", "Y+", "Z+", "X-", "Y-", "Z-"]);
|
dialog("Personal adjustment:", ["[BACK]", posrot_button, value_button, "[DEFAULT]", "[SAVE]", "[SAVE ALL]", "X+", "Y+", "Z+", "X-", "Y-", "Z-"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
integer IsInteger(string data)
|
integer IsInteger(string data)
|
||||||
{
|
{
|
||||||
return llParseString2List((string)llParseString2List(data, ["8", "9"], []), ["0", "1", "2", "3", "4", "5", "6", "7"], []) == [] && data != "";
|
return llParseString2List((string)llParseString2List(data, ["8", "9"], []), ["0", "1", "2", "3", "4", "5", "6", "7"], []) == [] && data != "";
|
||||||
}
|
}
|
||||||
|
|
||||||
wipe_sit_targets()
|
wipe_sit_targets()
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -166,10 +174,12 @@ wipe_sit_targets()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
primcount_error()
|
primcount_error()
|
||||||
{
|
{
|
||||||
llDialog(llGetOwner(), "\nThere aren't enough prims for required SitTargets.\nYou must have one prim for each avatar to sit!", [], 23658);
|
llDialog(llGetOwner(), "\nThere aren't enough prims for required SitTargets.\nYou must have one prim for each avatar to sit!", [], 23658);
|
||||||
}
|
}
|
||||||
|
|
||||||
sittargets()
|
sittargets()
|
||||||
{
|
{
|
||||||
wrong_primcount = FALSE;
|
wrong_primcount = FALSE;
|
||||||
|
@ -235,14 +245,16 @@ sittargets()
|
||||||
prep();
|
prep();
|
||||||
set_sittarget();
|
set_sittarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
prep()
|
prep()
|
||||||
{
|
{
|
||||||
has_security = (has_texture = FALSE);
|
has_security = (has_texture = FALSE);
|
||||||
if (!SCRIPT_CHANNEL)
|
if (!SCRIPT_CHANNEL)
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90201, "", "");
|
llMessageLinked(LINK_SET, 90201, "", ""); // 90201=Ask for info about plugins
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
release_sitter(integer i)
|
release_sitter(integer i)
|
||||||
{
|
{
|
||||||
SITTERS = llListReplaceList(SITTERS, [""], i, i);
|
SITTERS = llListReplaceList(SITTERS, [""], i, i);
|
||||||
|
@ -252,7 +264,7 @@ release_sitter(integer i)
|
||||||
{
|
{
|
||||||
if (MY_SITTER)
|
if (MY_SITTER)
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90065, (string)SCRIPT_CHANNEL, MY_SITTER);
|
llMessageLinked(LINK_SET, 90065, (string)SCRIPT_CHANNEL, MY_SITTER); // 90065=sitter gone
|
||||||
}
|
}
|
||||||
if (llGetAgentSize(MY_SITTER) != ZERO_VECTOR && CURRENT_ANIMATION_FILENAME != "")
|
if (llGetAgentSize(MY_SITTER) != ZERO_VECTOR && CURRENT_ANIMATION_FILENAME != "")
|
||||||
{
|
{
|
||||||
|
@ -263,6 +275,7 @@ release_sitter(integer i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set_sittarget()
|
set_sittarget()
|
||||||
{
|
{
|
||||||
vector target_pos = DEFAULT_POSITION;
|
vector target_pos = DEFAULT_POSITION;
|
||||||
|
@ -295,6 +308,7 @@ set_sittarget()
|
||||||
llLinkSitTarget(target, target_pos - <0.,0.,0.4> + llRot2Up(target_rot) * 0.05, target_rot);
|
llLinkSitTarget(target, target_pos - <0.,0.,0.4> + llRot2Up(target_rot) * 0.05, target_rot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
update_current_anim_name()
|
update_current_anim_name()
|
||||||
{
|
{
|
||||||
list SEQUENCE = llParseStringKeepNulls(CURRENT_ANIMATION_SEQUENCE, ["<22>"], []);
|
list SEQUENCE = llParseStringKeepNulls(CURRENT_ANIMATION_SEQUENCE, ["<22>"], []);
|
||||||
|
@ -306,6 +320,7 @@ update_current_anim_name()
|
||||||
}
|
}
|
||||||
llSetTimerEvent((float)llList2String(SEQUENCE, SEQUENCE_POINTER + 1));
|
llSetTimerEvent((float)llList2String(SEQUENCE, SEQUENCE_POINTER + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
apply_current_anim(integer broadcast)
|
apply_current_anim(integer broadcast)
|
||||||
{
|
{
|
||||||
SEQUENCE_POINTER = 0;
|
SEQUENCE_POINTER = 0;
|
||||||
|
@ -347,7 +362,7 @@ apply_current_anim(integer broadcast)
|
||||||
OLD_SYNC = OLD_POSE_NAME;
|
OLD_SYNC = OLD_POSE_NAME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_SET, 90045, llDumpList2String([SCRIPT_CHANNEL, POSENAME, CURRENT_ANIMATION_SEQUENCE, SET, llDumpList2String(SITTERS, "@"), OLD_SYNC, IS_SYNC], "|"), MY_SITTER);
|
llMessageLinked(LINK_SET, 90045, llDumpList2String([SCRIPT_CHANNEL, POSENAME, CURRENT_ANIMATION_SEQUENCE, SET, llDumpList2String(SITTERS, "@"), OLD_SYNC, IS_SYNC], "|"), MY_SITTER); // 90045=Broadcast info about pose playing
|
||||||
}
|
}
|
||||||
if (HASKEYFRAME)
|
if (HASKEYFRAME)
|
||||||
{
|
{
|
||||||
|
@ -369,6 +384,7 @@ apply_current_anim(integer broadcast)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sit_using_prim_params()
|
sit_using_prim_params()
|
||||||
{
|
{
|
||||||
integer sitter_prim = llGetNumberOfPrims();
|
integer sitter_prim = llGetNumberOfPrims();
|
||||||
|
@ -405,6 +421,7 @@ sit_using_prim_params()
|
||||||
llSetKeyframedMotion([], [KFM_COMMAND, KFM_CMD_PLAY]);
|
llSetKeyframedMotion([], [KFM_COMMAND, KFM_CMD_PLAY]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
end_sitter()
|
end_sitter()
|
||||||
{
|
{
|
||||||
llSetTimerEvent(0);
|
llSetTimerEvent(0);
|
||||||
|
@ -420,6 +437,7 @@ end_sitter()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -444,7 +462,7 @@ default
|
||||||
reading_notecard_section = TRUE;
|
reading_notecard_section = TRUE;
|
||||||
}
|
}
|
||||||
notecard_key = llGetInventoryKey(notecard_name);
|
notecard_key = llGetInventoryKey(notecard_name);
|
||||||
llMessageLinked(LINK_THIS, 90299, (string)SCRIPT_CHANNEL, "");
|
llMessageLinked(LINK_THIS, 90299, (string)SCRIPT_CHANNEL, ""); // 90299=send Reset to AVsitB
|
||||||
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD)
|
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD)
|
||||||
{
|
{
|
||||||
if (!SCRIPT_CHANNEL)
|
if (!SCRIPT_CHANNEL)
|
||||||
|
@ -454,6 +472,7 @@ default
|
||||||
notecard_query = llGetNotecardLine(notecard_name, reused_variable);
|
notecard_query = llGetNotecardLine(notecard_name, reused_variable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
SEQUENCE_POINTER += 2;
|
SEQUENCE_POINTER += 2;
|
||||||
|
@ -480,13 +499,15 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
touch_end(integer touched)
|
touch_end(integer touched)
|
||||||
{
|
{
|
||||||
if ((!SCRIPT_CHANNEL) && (!has_security) && MTYPE < 3)
|
if ((!SCRIPT_CHANNEL) && (!has_security) && MTYPE < 3)
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90005, "", llDetectedKey(0));
|
llMessageLinked(LINK_SET, 90005, "", llDetectedKey(0)); // 90005=send menu to user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer listen_channel, string name, key id, string msg)
|
listen(integer listen_channel, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
integer index = llListFindList(ADJUST_MENU, [msg]);
|
integer index = llListFindList(ADJUST_MENU, [msg]);
|
||||||
|
@ -503,7 +524,7 @@ default
|
||||||
index = llListFindList(["Position", "Rotation", "X+", "Y+", "Z+", "X-", "Y-", "Z-", "0.05m", "0.25m", "0.01m", "5°", "25°", "1°"], [msg]);
|
index = llListFindList(["Position", "Rotation", "X+", "Y+", "Z+", "X-", "Y-", "Z-", "0.05m", "0.25m", "0.01m", "5°", "25°", "1°"], [msg]);
|
||||||
if (msg == "[BACK]")
|
if (msg == "[BACK]")
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90005, "", llDumpList2String([CONTROLLER, MY_SITTER], "|"));
|
llMessageLinked(LINK_SET, 90005, "", llDumpList2String([CONTROLLER, MY_SITTER], "|")); // 90005=send menu to user
|
||||||
}
|
}
|
||||||
else if (msg == "[POSE]")
|
else if (msg == "[POSE]")
|
||||||
{
|
{
|
||||||
|
@ -606,26 +627,27 @@ default
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90100, (string)SCRIPT_CHANNEL + "|" + msg + "|" + (string)MY_SITTER + "|" + (string)OLD_HELPER_METHOD, id);
|
llMessageLinked(LINK_SET, 90100, (string)SCRIPT_CHANNEL + "|" + msg + "|" + (string)MY_SITTER + "|" + (string)OLD_HELPER_METHOD, id); // 90100=Menu choice
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
integer one = (integer)msg;
|
integer one = (integer)msg;
|
||||||
integer two = (integer)((string)id);
|
integer two = (integer)((string)id);
|
||||||
if (num == 90075)
|
if (num == 90075) // 90075=old-style helper ask to animate
|
||||||
{
|
{
|
||||||
if (one == SCRIPT_CHANNEL)
|
if (one == SCRIPT_CHANNEL)
|
||||||
{
|
{
|
||||||
llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION);
|
llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (num == 90076)
|
else if (num == 90076) // 90076=old-style helper stop animating
|
||||||
{
|
{
|
||||||
release_sitter(one);
|
release_sitter(one);
|
||||||
}
|
}
|
||||||
else if (num == 90030)
|
else if (num == 90030) // 90030=swap sitters
|
||||||
{
|
{
|
||||||
if (one == SCRIPT_CHANNEL || two == SCRIPT_CHANNEL)
|
if (one == SCRIPT_CHANNEL || two == SCRIPT_CHANNEL)
|
||||||
{
|
{
|
||||||
|
@ -647,27 +669,27 @@ default
|
||||||
SITTERS = llListReplaceList(llListReplaceList(SITTERS, [""], one, one), [""], two, two);
|
SITTERS = llListReplaceList(llListReplaceList(SITTERS, [""], one, one), [""], two, two);
|
||||||
MY_SITTER = llList2Key(SITTERS, SCRIPT_CHANNEL);
|
MY_SITTER = llList2Key(SITTERS, SCRIPT_CHANNEL);
|
||||||
}
|
}
|
||||||
else if (num == 90070)
|
else if (num == 90070) // 90070=update SITTERS after permission granted
|
||||||
{
|
{
|
||||||
if (one != SCRIPT_CHANNEL)
|
if (one != SCRIPT_CHANNEL)
|
||||||
{
|
{
|
||||||
SITTERS = llListReplaceList(SITTERS, [id], one, one);
|
SITTERS = llListReplaceList(SITTERS, [id], one, one);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (num == 90150)
|
if (num == 90150) // 90150=ask other AVsitA scripts to place their sittargets again
|
||||||
{
|
{
|
||||||
sittargets();
|
sittargets();
|
||||||
}
|
}
|
||||||
else if (num == 90202)
|
else if (num == 90202) // 90202=security script present in root
|
||||||
{
|
{
|
||||||
has_security = TRUE;
|
has_security = TRUE;
|
||||||
llPassTouches(has_security);
|
llPassTouches(has_security);
|
||||||
}
|
}
|
||||||
else if (num == 90203)
|
else if (num == 90203) // 90203=texture script present in root (unused)
|
||||||
{
|
{
|
||||||
has_texture = TRUE;
|
has_texture = TRUE;
|
||||||
}
|
}
|
||||||
else if (num == 90298)
|
else if (num == 90298) // 90298=show SitTargets (/5 targets)
|
||||||
{
|
{
|
||||||
integer target = my_sittarget;
|
integer target = my_sittarget;
|
||||||
if (llGetNumberOfPrims() == 1 && target == 1)
|
if (llGetNumberOfPrims() == 1 && target == 1)
|
||||||
|
@ -678,26 +700,26 @@ default
|
||||||
llSleep(5);
|
llSleep(5);
|
||||||
llSetLinkPrimitiveParams(target, [PRIM_TEXT, "", <1,1,1>, 1]);
|
llSetLinkPrimitiveParams(target, [PRIM_TEXT, "", <1,1,1>, 1]);
|
||||||
}
|
}
|
||||||
else if (num == 90011)
|
else if (num == 90011) // 90011=set link camera
|
||||||
{
|
{
|
||||||
llSetLinkCamera(LINK_THIS, (vector)msg, (vector)((string)id));
|
llSetLinkCamera(LINK_THIS, (vector)msg, (vector)((string)id));
|
||||||
}
|
}
|
||||||
else if (num == 90033)
|
else if (num == 90033) // 90033=clear menu listener
|
||||||
{
|
{
|
||||||
llListenRemove(menu_handle);
|
llListenRemove(menu_handle);
|
||||||
}
|
}
|
||||||
else if (id == MY_SITTER)
|
else if (id == MY_SITTER)
|
||||||
{
|
{
|
||||||
list data = llParseStringKeepNulls(msg, ["|"], []);
|
list data = llParseStringKeepNulls(msg, ["|"], []);
|
||||||
if (num == 90001)
|
if (num == 90001) // 90001=start an overlay animation
|
||||||
{
|
{
|
||||||
llStartAnimation(msg);
|
llStartAnimation(msg);
|
||||||
}
|
}
|
||||||
else if (num == 90002)
|
else if (num == 90002) // 90002=stop an overlay animation
|
||||||
{
|
{
|
||||||
llStopAnimation(msg);
|
llStopAnimation(msg);
|
||||||
}
|
}
|
||||||
else if (num == 90101)
|
else if (num == 90101) // 90101=menu option chosen
|
||||||
{
|
{
|
||||||
CONTROLLER = (key)llList2String(data, 2);
|
CONTROLLER = (key)llList2String(data, 2);
|
||||||
if (llList2String(data, 1) == "[ADJUST]")
|
if (llList2String(data, 1) == "[ADJUST]")
|
||||||
|
@ -737,7 +759,7 @@ default
|
||||||
}
|
}
|
||||||
if (one == SCRIPT_CHANNEL)
|
if (one == SCRIPT_CHANNEL)
|
||||||
{
|
{
|
||||||
if (num == 90055)
|
if (num == 90055) // 90055=anim info from AVsitB
|
||||||
{
|
{
|
||||||
list data = llParseStringKeepNulls(id, ["|"], []);
|
list data = llParseStringKeepNulls(id, ["|"], []);
|
||||||
OLD_POSE_NAME = CURRENT_POSE_NAME;
|
OLD_POSE_NAME = CURRENT_POSE_NAME;
|
||||||
|
@ -757,7 +779,7 @@ default
|
||||||
apply_current_anim((integer)llList2String(data, 4));
|
apply_current_anim((integer)llList2String(data, 4));
|
||||||
set_sittarget();
|
set_sittarget();
|
||||||
}
|
}
|
||||||
else if (num == 90057)
|
else if (num == 90057) // 90057=helper moved, update position
|
||||||
{
|
{
|
||||||
list data = llParseStringKeepNulls(id, ["|"], []);
|
list data = llParseStringKeepNulls(id, ["|"], []);
|
||||||
CURRENT_POSITION = (vector)llList2String(data, 0);
|
CURRENT_POSITION = (vector)llList2String(data, 0);
|
||||||
|
@ -766,6 +788,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_LINK)
|
if (change & CHANGED_LINK)
|
||||||
|
@ -831,11 +854,11 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
llRequestPermissions(llGetLinkKey(i), PERMISSION_TRIGGER_ANIMATION);
|
llRequestPermissions(llGetLinkKey(i), PERMISSION_TRIGGER_ANIMATION);
|
||||||
llMessageLinked(LINK_SET, 90060, (string)SCRIPT_CHANNEL, llGetLinkKey(i));
|
llMessageLinked(LINK_SET, 90060, (string)SCRIPT_CHANNEL, llGetLinkKey(i)); // 90060=new sitter
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_THIS, 90056, (string)SCRIPT_CHANNEL, llDumpList2String([CURRENT_POSE_NAME, CURRENT_ANIMATION_SEQUENCE, CURRENT_POSITION, CURRENT_ROTATION], "|"));
|
llMessageLinked(LINK_THIS, 90056, (string)SCRIPT_CHANNEL, llDumpList2String([CURRENT_POSE_NAME, CURRENT_ANIMATION_SEQUENCE, CURRENT_POSITION, CURRENT_ROTATION], "|")); // 90056=send anim info
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AVPRIMS += llGetLinkKey(i);
|
AVPRIMS += llGetLinkKey(i);
|
||||||
|
@ -854,7 +877,7 @@ default
|
||||||
{
|
{
|
||||||
if (MY_SITTER)
|
if (MY_SITTER)
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90065, (string)SCRIPT_CHANNEL, MY_SITTER);
|
llMessageLinked(LINK_SET, 90065, (string)SCRIPT_CHANNEL, MY_SITTER); // 90065=sitter gone
|
||||||
}
|
}
|
||||||
if (llGetAgentSize(MY_SITTER) != ZERO_VECTOR && (integer)CURRENT_ANIMATION_FILENAME)
|
if (llGetAgentSize(MY_SITTER) != ZERO_VECTOR && (integer)CURRENT_ANIMATION_FILENAME)
|
||||||
{
|
{
|
||||||
|
@ -913,11 +936,11 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
llRequestPermissions(actual_sitter, PERMISSION_TRIGGER_ANIMATION);
|
llRequestPermissions(actual_sitter, PERMISSION_TRIGGER_ANIMATION);
|
||||||
llMessageLinked(LINK_SET, 90060, (string)SCRIPT_CHANNEL, actual_sitter);
|
llMessageLinked(LINK_SET, 90060, (string)SCRIPT_CHANNEL, actual_sitter); // 90060=new sitter
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_THIS, 90056, (string)SCRIPT_CHANNEL, llDumpList2String([CURRENT_POSE_NAME, CURRENT_ANIMATION_SEQUENCE, CURRENT_POSITION, CURRENT_ROTATION], "|"));
|
llMessageLinked(LINK_THIS, 90056, (string)SCRIPT_CHANNEL, llDumpList2String([CURRENT_POSE_NAME, CURRENT_ANIMATION_SEQUENCE, CURRENT_POSITION, CURRENT_ROTATION], "|")); // 90056=send anim info
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -941,7 +964,7 @@ default
|
||||||
if (!SCRIPT_CHANNEL)
|
if (!SCRIPT_CHANNEL)
|
||||||
{
|
{
|
||||||
wipe_sit_targets();
|
wipe_sit_targets();
|
||||||
llMessageLinked(LINK_SET, 90150, "", "");
|
llMessageLinked(LINK_SET, 90150, "", ""); // 90150=ask other AVsitA scripts to place their sittargets again
|
||||||
}
|
}
|
||||||
prep();
|
prep();
|
||||||
}
|
}
|
||||||
|
@ -955,6 +978,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
run_time_permissions(integer perm)
|
run_time_permissions(integer perm)
|
||||||
{
|
{
|
||||||
if (perm & PERMISSION_TRIGGER_ANIMATION)
|
if (perm & PERMISSION_TRIGGER_ANIMATION)
|
||||||
|
@ -972,10 +996,10 @@ default
|
||||||
reused_key = "";
|
reused_key = "";
|
||||||
SITTERS = llListReplaceList(SITTERS, [CONTROLLER = (MY_SITTER = llGetPermissionsKey())], SCRIPT_CHANNEL, SCRIPT_CHANNEL);
|
SITTERS = llListReplaceList(SITTERS, [CONTROLLER = (MY_SITTER = llGetPermissionsKey())], SCRIPT_CHANNEL, SCRIPT_CHANNEL);
|
||||||
string channel_or_swap = (string)SCRIPT_CHANNEL;
|
string channel_or_swap = (string)SCRIPT_CHANNEL;
|
||||||
integer lnk = 90000;
|
integer lnk = 90000; // 90000=play pose
|
||||||
if (SWAPPED)
|
if (SWAPPED)
|
||||||
{
|
{
|
||||||
lnk = 90010;
|
lnk = 90010; // 90010=play pose, ignoring ETYPE
|
||||||
SWAPPED = FALSE;
|
SWAPPED = FALSE;
|
||||||
}
|
}
|
||||||
else if (llGetSubString(CURRENT_POSE_NAME, 0, 1) != "P:")
|
else if (llGetSubString(CURRENT_POSE_NAME, 0, 1) != "P:")
|
||||||
|
@ -987,7 +1011,7 @@ default
|
||||||
{
|
{
|
||||||
posename = llGetSubString(CURRENT_POSE_NAME, 2, -1);
|
posename = llGetSubString(CURRENT_POSE_NAME, 2, -1);
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_THIS, 90070, (string)SCRIPT_CHANNEL, MY_SITTER);
|
llMessageLinked(LINK_THIS, 90070, (string)SCRIPT_CHANNEL, MY_SITTER); // 90070=update SITTERS after permissions granted
|
||||||
llMessageLinked(LINK_THIS, lnk, posename, channel_or_swap);
|
llMessageLinked(LINK_THIS, lnk, posename, channel_or_swap);
|
||||||
if (wrong_primcount && WARN)
|
if (wrong_primcount && WARN)
|
||||||
{
|
{
|
||||||
|
@ -998,14 +1022,17 @@ default
|
||||||
if (has_security)
|
if (has_security)
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90006, (string)animation_menu_function, MY_SITTER);
|
llMessageLinked(LINK_SET, 90006, (string)animation_menu_function, MY_SITTER);
|
||||||
|
// Docs say 90006 is:
|
||||||
|
// "Register touch or sit to [AV]root-security script from [AV]sitA after permissions granted."
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90005, (string)animation_menu_function, llDumpList2String([CONTROLLER, MY_SITTER], "|"));
|
llMessageLinked(LINK_SET, 90005, (string)animation_menu_function, llDumpList2String([CONTROLLER, MY_SITTER], "|")); // 90005=send menu to user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
@ -1019,9 +1046,9 @@ default
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
llSetText("", <1,1,1>, 1);
|
llSetText("", <1,1,1>, 1);
|
||||||
llMessageLinked(LINK_SET, 90150, "", "");
|
llMessageLinked(LINK_SET, 90150, "", ""); // 90150=ask other AVsitA scripts to place their sittargets again
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_THIS, 90302, (string)SCRIPT_CHANNEL, llDumpList2String([llGetListLength(SITTERS), llDumpList2String(SITTER_INFO, "<22>"), SET, MTYPE, ETYPE, SWAP, FIRST_POSENAME, BRAND, CUSTOM_TEXT, llDumpList2String(ADJUST_MENU, "<22>"), SELECT, AMENU, OLD_HELPER_METHOD, RLVDesignations, onSit], "|"));
|
llMessageLinked(LINK_THIS, 90302, (string)SCRIPT_CHANNEL, llDumpList2String([llGetListLength(SITTERS), llDumpList2String(SITTER_INFO, "<22>"), SET, MTYPE, ETYPE, SWAP, FIRST_POSENAME, BRAND, CUSTOM_TEXT, llDumpList2String(ADJUST_MENU, "<22>"), SELECT, AMENU, OLD_HELPER_METHOD, RLVDesignations, onSit], "|")); // 90302=send notecard settings to AVsitB
|
||||||
reused_variable = (llGetFreeMemory() - 5000) / 100;
|
reused_variable = (llGetFreeMemory() - 5000) / 100;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1146,15 +1173,15 @@ default
|
||||||
FIRST_POSITION = (DEFAULT_POSITION = (CURRENT_POSITION = (vector)pos));
|
FIRST_POSITION = (DEFAULT_POSITION = (CURRENT_POSITION = (vector)pos));
|
||||||
FIRST_ROTATION = (DEFAULT_ROTATION = (CURRENT_ROTATION = (vector)rot));
|
FIRST_ROTATION = (DEFAULT_ROTATION = (CURRENT_ROTATION = (vector)rot));
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_THIS, 90301, (string)SCRIPT_CHANNEL, command + "|" + pos + "|" + rot);
|
llMessageLinked(LINK_THIS, 90301, (string)SCRIPT_CHANNEL, command + "|" + pos + "|" + rot); // 90301=send update to AVsitB
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
part0 = llGetSubString(part0, 0, 22);
|
part0 = llGetSubString(part0, 0, 22);
|
||||||
if (command == "SEQUENCE")
|
if (command == "SEQUENCE")
|
||||||
{
|
{
|
||||||
command = "BUTTON";
|
command = "BUTTON"; // Act as a button
|
||||||
part1 = "90210";
|
part1 = "90210"; // Link code: Trigger sequence
|
||||||
}
|
}
|
||||||
if (command == "POSE" || command == "SYNC" || command == "MENU" || command == "TOMENU" || command == "BUTTON")
|
if (command == "POSE" || command == "SYNC" || command == "MENU" || command == "TOMENU" || command == "BUTTON")
|
||||||
{
|
{
|
||||||
|
@ -1186,9 +1213,9 @@ default
|
||||||
}
|
}
|
||||||
else if (command == "BUTTON" && part1 == "")
|
else if (command == "BUTTON" && part1 == "")
|
||||||
{
|
{
|
||||||
part1 = "90200";
|
part1 = "90200"; // default to rez prop
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_THIS, 90300, (string)SCRIPT_CHANNEL, part0 + "|" + part1);
|
llMessageLinked(LINK_THIS, 90300, (string)SCRIPT_CHANNEL, part0 + "|" + part1); // 90300=update AVsitB
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
/*
|
/*
|
||||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* Copyright (c) the AVsitter Contributors (http://avsitter.github.io)
|
* Copyright © the AVsitter Contributors (http://avsitter.github.io)
|
||||||
* AVsitter™ is a trademark. For trademark use policy see:
|
* AVsitter™ is a trademark. For trademark use policy see:
|
||||||
* https://avsitter.github.io/TRADEMARK.mediawiki
|
* https://avsitter.github.io/TRADEMARK.mediawiki
|
||||||
*
|
*
|
||||||
* Please consider supporting continued development of AVsitter and
|
* Please consider supporting continued development of AVsitter and
|
||||||
* receive automatic updates and other benefits! All details and user
|
* receive automatic updates and other benefits! All details and user
|
||||||
* instructions can be found at http://avsitter.github.io
|
* instructions can be found at http://avsitter.github.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
string product = "AVsitter™";
|
string product = "AVsitter™";
|
||||||
string version = "2.2";
|
string version = "2.2";
|
||||||
string BRAND;
|
string BRAND;
|
||||||
|
@ -48,6 +48,7 @@ string RLVDesignations;
|
||||||
string onSit;
|
string onSit;
|
||||||
integer speed_index;
|
integer speed_index;
|
||||||
integer verbose = 0;
|
integer verbose = 0;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -55,22 +56,27 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "]:" + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
send_anim_info(integer broadcast)
|
send_anim_info(integer broadcast)
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_THIS, 90055, (string)SCRIPT_CHANNEL, llDumpList2String([llList2String(MENU_LIST, ANIM_INDEX), llList2String(DATA_LIST, ANIM_INDEX), llList2String(POS_ROT_LIST, ANIM_INDEX * 2), llList2String(POS_ROT_LIST, ANIM_INDEX * 2 + 1), broadcast, speed_index], "|"));
|
llMessageLinked(LINK_THIS, 90055, (string)SCRIPT_CHANNEL, llDumpList2String([llList2String(MENU_LIST, ANIM_INDEX), llList2String(DATA_LIST, ANIM_INDEX), llList2String(POS_ROT_LIST, ANIM_INDEX * 2), llList2String(POS_ROT_LIST, ANIM_INDEX * 2 + 1), broadcast, speed_index], "|"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Readout_Say(string say)
|
Readout_Say(string say)
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_THIS, 90022, say, (string)SCRIPT_CHANNEL);
|
llMessageLinked(LINK_THIS, 90022, say, (string)SCRIPT_CHANNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
list order_buttons(list buttons)
|
list order_buttons(list buttons)
|
||||||
{
|
{
|
||||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||||
}
|
}
|
||||||
|
|
||||||
memory()
|
memory()
|
||||||
{
|
{
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + (string)(MENU_LIST != []) + " Items Ready, Mem=" + (string)(65536 - llGetUsedMemory()));
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + (string)(MENU_LIST != []) + " Items Ready, Mem=" + (string)(65536 - llGetUsedMemory()));
|
||||||
}
|
}
|
||||||
|
|
||||||
integer animation_menu(integer animation_menu_function)
|
integer animation_menu(integer animation_menu_function)
|
||||||
{
|
{
|
||||||
if (animation_menu_function == -1 || (MENU_LIST != []) < 2 && (!helper_mode) && llGetInventoryType(select_script) == INVENTORY_SCRIPT)
|
if (animation_menu_function == -1 || (MENU_LIST != []) < 2 && (!helper_mode) && llGetInventoryType(select_script) == INVENTORY_SCRIPT)
|
||||||
|
@ -227,6 +233,7 @@ integer animation_menu(integer animation_menu_function)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -240,6 +247,7 @@ default
|
||||||
llResetOtherScript(main_script);
|
llResetOtherScript(main_script);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer listen_channel, string name, key id, string msg)
|
listen(integer listen_channel, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
string channel;
|
string channel;
|
||||||
|
@ -349,6 +357,7 @@ default
|
||||||
llMessageLinked(LINK_SET, 90101, llDumpList2String([SCRIPT_CHANNEL, msg, CONTROLLER], "|"), MY_SITTER);
|
llMessageLinked(LINK_SET, 90101, llDumpList2String([SCRIPT_CHANNEL, msg, CONTROLLER], "|"), MY_SITTER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_LINK)
|
if (change & CHANGED_LINK)
|
||||||
|
@ -372,6 +381,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
link_message(integer sender, integer num, string msg, key id)
|
link_message(integer sender, integer num, string msg, key id)
|
||||||
{
|
{
|
||||||
integer one = (integer)msg;
|
integer one = (integer)msg;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue