Cosmetic changes to AVprop (no code changes)
Add vertical space between functions and between events; format the attachment points list; add inline comments indicating the meaning of the 90xxx codes.
This commit is contained in:
parent
1f53bac37d
commit
5b6cd5763b
3 changed files with 127 additions and 23 deletions
|
@ -39,6 +39,7 @@ integer listen_handle;
|
||||||
integer number_per_page = 9;
|
integer number_per_page = 9;
|
||||||
integer menu_pages;
|
integer menu_pages;
|
||||||
string last_text;
|
string last_text;
|
||||||
|
|
||||||
integer pass_security(key id)
|
integer pass_security(key id)
|
||||||
{
|
{
|
||||||
integer access_allowed = FALSE;
|
integer access_allowed = FALSE;
|
||||||
|
@ -57,6 +58,7 @@ integer pass_security(key id)
|
||||||
}
|
}
|
||||||
return access_allowed;
|
return access_allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
check_avsit()
|
check_avsit()
|
||||||
{
|
{
|
||||||
if (llGetInventoryType(main_script) == INVENTORY_SCRIPT)
|
if (llGetInventoryType(main_script) == INVENTORY_SCRIPT)
|
||||||
|
@ -64,10 +66,12 @@ check_avsit()
|
||||||
remove_script("This script can not be used with the sit script in the same prim. Removing script!");
|
remove_script("This script can not be used with the sit script in the same prim. Removing script!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -75,6 +79,7 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Readout_Say(string say)
|
Readout_Say(string say)
|
||||||
{
|
{
|
||||||
llSleep(0.2);
|
llSleep(0.2);
|
||||||
|
@ -83,12 +88,14 @@ Readout_Say(string say)
|
||||||
llRegionSayTo(llGetOwner(), 0, "◆" + say);
|
llRegionSayTo(llGetOwner(), 0, "◆" + say);
|
||||||
llSetObjectName(objectname);
|
llSetObjectName(objectname);
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog(key av, string menu_text, list menu_items)
|
dialog(key av, string menu_text, list menu_items)
|
||||||
{
|
{
|
||||||
llDialog(av, product + " " + version + "\n\n" + menu_text, order_buttons(menu_items), menu_channel);
|
llDialog(av, product + " " + version + "\n\n" + menu_text, order_buttons(menu_items), menu_channel);
|
||||||
last_menu_unixtime = llGetUnixTime();
|
last_menu_unixtime = llGetUnixTime();
|
||||||
llSetTimerEvent(120);
|
llSetTimerEvent(120);
|
||||||
}
|
}
|
||||||
|
|
||||||
integer avprop_is_copy_transfer(integer owner_mask)
|
integer avprop_is_copy_transfer(integer owner_mask)
|
||||||
{
|
{
|
||||||
integer perms = llGetInventoryPermMask(prop_script, owner_mask);
|
integer perms = llGetInventoryPermMask(prop_script, owner_mask);
|
||||||
|
@ -98,6 +105,7 @@ integer avprop_is_copy_transfer(integer owner_mask)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
integer prim_is_mod()
|
integer prim_is_mod()
|
||||||
{
|
{
|
||||||
integer perms = llGetObjectPermMask(MASK_OWNER);
|
integer perms = llGetObjectPermMask(MASK_OWNER);
|
||||||
|
@ -107,6 +115,7 @@ integer prim_is_mod()
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
menu_check(string name, key id)
|
menu_check(string name, key id)
|
||||||
{
|
{
|
||||||
if (pass_security(id) == TRUE)
|
if (pass_security(id) == TRUE)
|
||||||
|
@ -129,6 +138,7 @@ menu_check(string name, key id)
|
||||||
llDialog(id, product + " " + version + "\n\n" + "Sorry, the owner has set this menu to: " + llList2String(MENUCONTROL_TYPES, MENUCONTROL_INDEX), [], -585868);
|
llDialog(id, product + " " + version + "\n\n" + "Sorry, the owner has set this menu to: " + llList2String(MENUCONTROL_TYPES, MENUCONTROL_INDEX), [], -585868);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
options_menu()
|
options_menu()
|
||||||
{
|
{
|
||||||
string text;
|
string text;
|
||||||
|
@ -147,6 +157,7 @@ options_menu()
|
||||||
text += "\n[RESET] = Reload notecard.";
|
text += "\n[RESET] = Reload notecard.";
|
||||||
dialog(llGetOwner(), text, menu_items);
|
dialog(llGetOwner(), text, menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
choice_menu(list options, string menu_text)
|
choice_menu(list options, string menu_text)
|
||||||
{
|
{
|
||||||
last_text = menu_text;
|
last_text = menu_text;
|
||||||
|
@ -186,6 +197,7 @@ choice_menu(list options, string menu_text)
|
||||||
}
|
}
|
||||||
dialog(llGetOwner(), menu_text, menu_items);
|
dialog(llGetOwner(), menu_text, menu_items);
|
||||||
}
|
}
|
||||||
|
|
||||||
list get_choices(integer page)
|
list get_choices(integer page)
|
||||||
{
|
{
|
||||||
menu_page = page;
|
menu_page = page;
|
||||||
|
@ -204,6 +216,7 @@ list get_choices(integer page)
|
||||||
menu_pages = llCeil((float)i / number_per_page);
|
menu_pages = llCeil((float)i / number_per_page);
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
@ -211,6 +224,7 @@ remove_script(string reason)
|
||||||
llInstantMessage(llGetOwner(), message);
|
llInstantMessage(llGetOwner(), message);
|
||||||
llRemoveInventory(llGetScriptName());
|
llRemoveInventory(llGetScriptName());
|
||||||
}
|
}
|
||||||
|
|
||||||
integer prop_menu(integer return_pages, key av)
|
integer prop_menu(integer return_pages, key av)
|
||||||
{
|
{
|
||||||
choosing = FALSE;
|
choosing = FALSE;
|
||||||
|
@ -277,14 +291,17 @@ integer prop_menu(integer return_pages, key av)
|
||||||
dialog(av, custom_text, menu_items1 + menu_items2);
|
dialog(av, custom_text, menu_items1 + menu_items2);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
naming()
|
naming()
|
||||||
{
|
{
|
||||||
llTextBox(llGetOwner(), "\nPlease type a button name for your prop\nProp: " + choice, menu_channel);
|
llTextBox(llGetOwner(), "\nPlease type a button name for your prop\nProp: " + choice, menu_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -298,10 +315,12 @@ default
|
||||||
Out(0, "Loading...");
|
Out(0, "Loading...");
|
||||||
notecard_query = llGetNotecardLine(notecard_name, notecard_line);
|
notecard_query = llGetNotecardLine(notecard_name, notecard_line);
|
||||||
}
|
}
|
||||||
|
|
||||||
timer()
|
timer()
|
||||||
{
|
{
|
||||||
llListenRemove(listen_handle);
|
llListenRemove(listen_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer listen_channel, string name, key id, string msg)
|
listen(integer listen_channel, string name, key id, string msg)
|
||||||
{
|
{
|
||||||
if (choice)
|
if (choice)
|
||||||
|
@ -319,9 +338,9 @@ default
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_THIS, 90173, msg, choice);
|
llMessageLinked(LINK_THIS, 90173, msg, choice); // add PROP line to [AV]prop
|
||||||
MENU_LIST = ["B:" + msg] + MENU_LIST;
|
MENU_LIST = ["B:" + msg] + MENU_LIST;
|
||||||
DATA_LIST = [90200] + DATA_LIST;
|
DATA_LIST = [90200] + DATA_LIST; // Rez prop (with menu)
|
||||||
}
|
}
|
||||||
choice = "";
|
choice = "";
|
||||||
options_menu();
|
options_menu();
|
||||||
|
@ -419,7 +438,7 @@ default
|
||||||
}
|
}
|
||||||
else if (msg == "[NEW]")
|
else if (msg == "[NEW]")
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_THIS, 90200, "", "");
|
llMessageLinked(LINK_THIS, 90200, "", ""); // Clear props
|
||||||
choice_menu(get_choices(0), "Please choose your prop:\n\n(Props must include the [AV]object script!)");
|
choice_menu(get_choices(0), "Please choose your prop:\n\n(Props must include the [AV]object script!)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -458,23 +477,23 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_THIS, 90020, "0", prop_script);
|
llMessageLinked(LINK_THIS, 90020, "0", prop_script); // Dump prop settings
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (msg == "[SAVE]" && id == llGetOwner())
|
else if (msg == "[SAVE]" && id == llGetOwner())
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_SET, 90101, "0|" + msg, "");
|
llMessageLinked(LINK_SET, 90101, "0|" + msg, ""); // Menu choice notification
|
||||||
options_menu();
|
options_menu();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (msg == "[CLEAR]")
|
else if (msg == "[CLEAR]")
|
||||||
{
|
{
|
||||||
Out(0, "Props have been cleared!");
|
Out(0, "Props have been cleared!");
|
||||||
llMessageLinked(LINK_THIS, 90200, "", "");
|
llMessageLinked(LINK_THIS, 90200, "", ""); // Clear props
|
||||||
}
|
}
|
||||||
else if (msg == "[RESET]")
|
else if (msg == "[RESET]")
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_THIS, 90200, "", "");
|
llMessageLinked(LINK_THIS, 90200, "", ""); // Clear props
|
||||||
llSleep(1);
|
llSleep(1);
|
||||||
llResetOtherScript(prop_script);
|
llResetOtherScript(prop_script);
|
||||||
llResetScript();
|
llResetScript();
|
||||||
|
@ -510,6 +529,7 @@ default
|
||||||
}
|
}
|
||||||
prop_menu(FALSE, id);
|
prop_menu(FALSE, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
touch_start(integer touched)
|
touch_start(integer touched)
|
||||||
{
|
{
|
||||||
if (MTYPE < 3)
|
if (MTYPE < 3)
|
||||||
|
@ -517,6 +537,7 @@ default
|
||||||
menu_check(llDetectedName(0), llDetectedKey(0));
|
menu_check(llDetectedName(0), llDetectedKey(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_INVENTORY)
|
if (change & CHANGED_INVENTORY)
|
||||||
|
@ -528,19 +549,20 @@ default
|
||||||
check_avsit();
|
check_avsit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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())
|
||||||
{
|
{
|
||||||
if (num == 90005)
|
if (num == 90005) // send menu to id
|
||||||
{
|
{
|
||||||
menu_check(llKey2Name(id), id);
|
menu_check(llKey2Name(id), id);
|
||||||
}
|
}
|
||||||
else if (num == 90022)
|
else if (num == 90022) // send dump to [AV]adjuster
|
||||||
{
|
{
|
||||||
Readout_Say(msg);
|
Readout_Say(msg);
|
||||||
}
|
}
|
||||||
else if (num == 90021)
|
else if (num == 90021) // end of dump
|
||||||
{
|
{
|
||||||
Readout_Say("");
|
Readout_Say("");
|
||||||
Readout_Say("--✄--COPY ABOVE INTO \"AVpos\" NOTECARD--✄--");
|
Readout_Say("--✄--COPY ABOVE INTO \"AVpos\" NOTECARD--✄--");
|
||||||
|
@ -548,6 +570,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
|
|
@ -31,6 +31,7 @@ integer prop_point;
|
||||||
integer experience_denied_reason;
|
integer experience_denied_reason;
|
||||||
key originalowner;
|
key originalowner;
|
||||||
key give_prop_warning_request;
|
key give_prop_warning_request;
|
||||||
|
|
||||||
unsit_all()
|
unsit_all()
|
||||||
{
|
{
|
||||||
integer i = llGetNumberOfPrims();
|
integer i = llGetNumberOfPrims();
|
||||||
|
@ -40,7 +41,9 @@ unsit_all()
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
integer verbose = 5;
|
integer verbose = 5;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -48,11 +51,13 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer start)
|
on_rez(integer start)
|
||||||
{
|
{
|
||||||
if (start)
|
if (start)
|
||||||
|
@ -61,6 +66,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state prop
|
state prop
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -93,6 +99,7 @@ state prop
|
||||||
llSetClickAction(CLICK_ACTION_TOUCH);
|
llSetClickAction(CLICK_ACTION_TOUCH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
attach(key id)
|
attach(key id)
|
||||||
{
|
{
|
||||||
if (comm_channel)
|
if (comm_channel)
|
||||||
|
@ -120,6 +127,7 @@ state prop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
touch_start(integer touched)
|
touch_start(integer touched)
|
||||||
{
|
{
|
||||||
if ((!llGetAttached()) && (prop_type == 2 || prop_type == 1))
|
if ((!llGetAttached()) && (prop_type == 2 || prop_type == 1))
|
||||||
|
@ -127,6 +135,7 @@ state prop
|
||||||
llRequestExperiencePermissions(llDetectedKey(0), "");
|
llRequestExperiencePermissions(llDetectedKey(0), "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
run_time_permissions(integer permissions)
|
run_time_permissions(integer permissions)
|
||||||
{
|
{
|
||||||
if (permissions & PERMISSION_ATTACH)
|
if (permissions & PERMISSION_ATTACH)
|
||||||
|
@ -146,6 +155,7 @@ state prop
|
||||||
llDie();
|
llDie();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
experience_permissions(key target_id)
|
experience_permissions(key target_id)
|
||||||
{
|
{
|
||||||
if (llGetAttached())
|
if (llGetAttached())
|
||||||
|
@ -157,12 +167,14 @@ state prop
|
||||||
llAttachToAvatarTemp(prop_point);
|
llAttachToAvatarTemp(prop_point);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
experience_permissions_denied(key agent_id, integer reason)
|
experience_permissions_denied(key agent_id, integer reason)
|
||||||
{
|
{
|
||||||
originalowner = llGetOwner();
|
originalowner = llGetOwner();
|
||||||
experience_denied_reason = reason;
|
experience_denied_reason = reason;
|
||||||
llRequestPermissions(agent_id, PERMISSION_ATTACH);
|
llRequestPermissions(agent_id, PERMISSION_ATTACH);
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer start)
|
on_rez(integer start)
|
||||||
{
|
{
|
||||||
if (!llGetAttached())
|
if (!llGetAttached())
|
||||||
|
@ -170,6 +182,7 @@ state prop
|
||||||
state restart_prop;
|
state restart_prop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer channel, string name, key id, string message)
|
listen(integer channel, string name, key id, string message)
|
||||||
{
|
{
|
||||||
list data = llParseString2List(message, ["|"], []);
|
list data = llParseString2List(message, ["|"], []);
|
||||||
|
@ -232,6 +245,7 @@ state prop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
state restart_prop
|
state restart_prop
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
|
|
@ -34,8 +34,51 @@ list sequential_prop_groups;
|
||||||
integer HAVENTNAGGED = TRUE;
|
integer HAVENTNAGGED = TRUE;
|
||||||
list SITTERS;
|
list SITTERS;
|
||||||
list SITTER_POSES;
|
list SITTER_POSES;
|
||||||
list ATTACH_POINTS = [ATTACH_CHEST, "chest", ATTACH_HEAD, "head", ATTACH_LSHOULDER, "left shoulder", ATTACH_RSHOULDER, "right shoulder", ATTACH_LHAND, "left hand", ATTACH_RHAND, "right hand", ATTACH_LFOOT, "left foot", ATTACH_RFOOT, "right foot", ATTACH_BACK, "back", ATTACH_PELVIS, "pelvis", ATTACH_MOUTH, "mouth", ATTACH_CHIN, "chin", ATTACH_LEAR, "left ear", ATTACH_REAR, "right ear", ATTACH_LEYE, "left eye", ATTACH_REYE, "right eye", ATTACH_NOSE, "nose", ATTACH_RUARM, "right upper arm", ATTACH_RLARM, "right lower arm", ATTACH_LUARM, "left upper arm", ATTACH_LLARM, "left lower arm", ATTACH_RHIP, "right hip", ATTACH_RULEG, "right upper leg", ATTACH_RLLEG, "right lower leg", ATTACH_LHIP, "left hip", ATTACH_LULEG, "left upper leg", ATTACH_LLLEG, "left lower leg", ATTACH_BELLY, "stomach", ATTACH_LEFT_PEC, "left pectoral", ATTACH_RIGHT_PEC, "right pectoral", ATTACH_HUD_CENTER_2, "HUD center 2", ATTACH_HUD_TOP_RIGHT, "HUD top right", ATTACH_HUD_TOP_CENTER, "HUD top", ATTACH_HUD_TOP_LEFT, "HUD top left", ATTACH_HUD_CENTER_1, "HUD center", ATTACH_HUD_BOTTOM_LEFT, "HUD bottom left", ATTACH_HUD_BOTTOM, "HUD bottom", ATTACH_HUD_BOTTOM_RIGHT, "HUD bottom right", 39, "neck", 40, "avatar center"];
|
list ATTACH_POINTS =
|
||||||
|
[ ATTACH_CHEST, "chest"
|
||||||
|
, ATTACH_HEAD, "head"
|
||||||
|
, ATTACH_LSHOULDER, "left shoulder"
|
||||||
|
, ATTACH_RSHOULDER, "right shoulder"
|
||||||
|
, ATTACH_LHAND, "left hand"
|
||||||
|
, ATTACH_RHAND, "right hand"
|
||||||
|
, ATTACH_LFOOT, "left foot"
|
||||||
|
, ATTACH_RFOOT, "right foot"
|
||||||
|
, ATTACH_BACK, "back"
|
||||||
|
, ATTACH_PELVIS, "pelvis"
|
||||||
|
, ATTACH_MOUTH, "mouth"
|
||||||
|
, ATTACH_CHIN, "chin"
|
||||||
|
, ATTACH_LEAR, "left ear"
|
||||||
|
, ATTACH_REAR, "right ear"
|
||||||
|
, ATTACH_LEYE, "left eye"
|
||||||
|
, ATTACH_REYE, "right eye"
|
||||||
|
, ATTACH_NOSE, "nose"
|
||||||
|
, ATTACH_RUARM, "right upper arm"
|
||||||
|
, ATTACH_RLARM, "right lower arm"
|
||||||
|
, ATTACH_LUARM, "left upper arm"
|
||||||
|
, ATTACH_LLARM, "left lower arm"
|
||||||
|
, ATTACH_RHIP, "right hip"
|
||||||
|
, ATTACH_RULEG, "right upper leg"
|
||||||
|
, ATTACH_RLLEG, "right lower leg"
|
||||||
|
, ATTACH_LHIP, "left hip"
|
||||||
|
, ATTACH_LULEG, "left upper leg"
|
||||||
|
, ATTACH_LLLEG, "left lower leg"
|
||||||
|
, ATTACH_BELLY, "stomach"
|
||||||
|
, ATTACH_LEFT_PEC, "left pectoral"
|
||||||
|
, ATTACH_RIGHT_PEC, "right pectoral"
|
||||||
|
, ATTACH_HUD_CENTER_2, "HUD center 2"
|
||||||
|
, ATTACH_HUD_TOP_RIGHT, "HUD top right"
|
||||||
|
, ATTACH_HUD_TOP_CENTER, "HUD top"
|
||||||
|
, ATTACH_HUD_TOP_LEFT, "HUD top left"
|
||||||
|
, ATTACH_HUD_CENTER_1, "HUD center"
|
||||||
|
, ATTACH_HUD_BOTTOM_LEFT, "HUD bottom left"
|
||||||
|
, ATTACH_HUD_BOTTOM, "HUD bottom"
|
||||||
|
, ATTACH_HUD_BOTTOM_RIGHT, "HUD bottom right"
|
||||||
|
, ATTACH_NECK, "neck"
|
||||||
|
, ATTACH_AVATAR_CENTER, "avatar center"
|
||||||
|
];
|
||||||
|
|
||||||
integer verbose = 5;
|
integer verbose = 5;
|
||||||
|
|
||||||
Out(integer level, string out)
|
Out(integer level, string out)
|
||||||
{
|
{
|
||||||
if (verbose >= level)
|
if (verbose >= level)
|
||||||
|
@ -43,10 +86,12 @@ Out(integer level, string out)
|
||||||
llOwnerSay(llGetScriptName() + "[" + version + "] " + out);
|
llOwnerSay(llGetScriptName() + "[" + version + "] " + 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 != "";
|
||||||
}
|
}
|
||||||
|
|
||||||
integer get_number_of_scripts()
|
integer get_number_of_scripts()
|
||||||
{
|
{
|
||||||
integer i = 1;
|
integer i = 1;
|
||||||
|
@ -56,6 +101,7 @@ integer get_number_of_scripts()
|
||||||
}
|
}
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
integer get_point(string text)
|
integer get_point(string text)
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -68,6 +114,7 @@ integer get_point(string text)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
rez_prop(integer index)
|
rez_prop(integer index)
|
||||||
{
|
{
|
||||||
integer type = llList2Integer(prop_types, index);
|
integer type = llList2Integer(prop_types, index);
|
||||||
|
@ -119,15 +166,18 @@ rez_prop(integer index)
|
||||||
llRezAtRoot(object, pos, ZERO_VECTOR, rot, int);
|
llRezAtRoot(object, pos, ZERO_VECTOR, rot, int);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
send_command(string command)
|
send_command(string command)
|
||||||
{
|
{
|
||||||
llRegionSay(comm_channel, command);
|
llRegionSay(comm_channel, command);
|
||||||
llSay(comm_channel, command);
|
llSay(comm_channel, command);
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_all_props()
|
remove_all_props()
|
||||||
{
|
{
|
||||||
send_command("REM_ALL");
|
send_command("REM_ALL");
|
||||||
}
|
}
|
||||||
|
|
||||||
rez_props_by_trigger(string pose_name)
|
rez_props_by_trigger(string pose_name)
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
|
@ -139,6 +189,7 @@ rez_props_by_trigger(string pose_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
list get_props_by_pose(string pose_name)
|
list get_props_by_pose(string pose_name)
|
||||||
{
|
{
|
||||||
list props_to_do;
|
list props_to_do;
|
||||||
|
@ -152,6 +203,7 @@ list get_props_by_pose(string pose_name)
|
||||||
}
|
}
|
||||||
return props_to_do;
|
return props_to_do;
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_props_by_sitter(string sitter, integer remove_type3)
|
remove_props_by_sitter(string sitter, integer remove_type3)
|
||||||
{
|
{
|
||||||
list text;
|
list text;
|
||||||
|
@ -176,10 +228,12 @@ remove_props_by_sitter(string sitter, integer remove_type3)
|
||||||
send_command(llDumpList2String([command] + text, "|"));
|
send_command(llDumpList2String([command] + text, "|"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_worn(key av)
|
remove_worn(key av)
|
||||||
{
|
{
|
||||||
send_command(llDumpList2String(["REM_WORN", av], "|"));
|
send_command(llDumpList2String(["REM_WORN", av], "|"));
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_sitter_props_by_pose(string sitter_pose, integer remove_type3)
|
remove_sitter_props_by_pose(string sitter_pose, integer remove_type3)
|
||||||
{
|
{
|
||||||
list text;
|
list text;
|
||||||
|
@ -214,6 +268,7 @@ remove_sitter_props_by_pose_group(string msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_props_by_group(integer gp)
|
remove_props_by_group(integer gp)
|
||||||
{
|
{
|
||||||
list text;
|
list text;
|
||||||
|
@ -236,11 +291,13 @@ remove_props_by_group(integer gp)
|
||||||
send_command(llDumpList2String([command] + text, "|"));
|
send_command(llDumpList2String([command] + text, "|"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Readout_Say(string say)
|
Readout_Say(string say)
|
||||||
{
|
{
|
||||||
llSleep(0.2);
|
llSleep(0.2);
|
||||||
llMessageLinked(LINK_THIS, 90022, say, "");
|
llMessageLinked(LINK_THIS, 90022, say, ""); // dump to [AV]adjuster
|
||||||
}
|
}
|
||||||
|
|
||||||
init_sitters()
|
init_sitters()
|
||||||
{
|
{
|
||||||
SITTERS = [];
|
SITTERS = [];
|
||||||
|
@ -252,16 +309,19 @@ init_sitters()
|
||||||
SITTER_POSES += "";
|
SITTER_POSES += "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init_channel()
|
init_channel()
|
||||||
{
|
{
|
||||||
llListenRemove(listen_handle);
|
llListenRemove(listen_handle);
|
||||||
comm_channel = ((integer)llFrand(8999) + 1000) * -1;
|
comm_channel = ((integer)llFrand(8999) + 1000) * -1;
|
||||||
listen_handle = llListen(comm_channel, "", "", "");
|
listen_handle = llListen(comm_channel, "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
string element(string text, integer x)
|
string element(string text, integer x)
|
||||||
{
|
{
|
||||||
return llList2String(llParseStringKeepNulls(text, ["|"], []), x);
|
return llList2String(llParseStringKeepNulls(text, ["|"], []), x);
|
||||||
}
|
}
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -276,15 +336,17 @@ default
|
||||||
notecard_query = llGetNotecardLine(notecard_name, 0);
|
notecard_query = llGetNotecardLine(notecard_name, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
on_rez(integer start)
|
on_rez(integer start)
|
||||||
{
|
{
|
||||||
init_channel();
|
init_channel();
|
||||||
}
|
}
|
||||||
|
|
||||||
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())
|
||||||
{
|
{
|
||||||
if (num == 90045)
|
if (num == 90045) // play pose
|
||||||
{
|
{
|
||||||
list data = llParseStringKeepNulls(msg, ["|"], []);
|
list data = llParseStringKeepNulls(msg, ["|"], []);
|
||||||
integer sitter = (integer)llList2String(data, 0);
|
integer sitter = (integer)llList2String(data, 0);
|
||||||
|
@ -298,7 +360,7 @@ default
|
||||||
rez_props_by_trigger(given_posename);
|
rez_props_by_trigger(given_posename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (num == 90200 || num == 90220)
|
else if (num == 90200 || num == 90220) // rez or clear prop with/without sending menu back
|
||||||
{
|
{
|
||||||
list ids = llParseStringKeepNulls(id, ["|"], []);
|
list ids = llParseStringKeepNulls(id, ["|"], []);
|
||||||
key sitting_av_or_sitter = (key)llList2String(ids, -1);
|
key sitting_av_or_sitter = (key)llList2String(ids, -1);
|
||||||
|
@ -353,13 +415,14 @@ default
|
||||||
}
|
}
|
||||||
if (sitting_av_or_sitter)
|
if (sitting_av_or_sitter)
|
||||||
{
|
{
|
||||||
if (num == 90200)
|
if (num == 90200) // send menu back?
|
||||||
{
|
{
|
||||||
|
// send menu to same id
|
||||||
llMessageLinked(LINK_THIS, 90005, "", id);
|
llMessageLinked(LINK_THIS, 90005, "", id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (num == 90101)
|
if (num == 90101) // menu choice
|
||||||
{
|
{
|
||||||
list data = llParseString2List(msg, ["|"], []);
|
list data = llParseString2List(msg, ["|"], []);
|
||||||
if (llList2String(data, 1) == "[SAVE]")
|
if (llList2String(data, 1) == "[SAVE]")
|
||||||
|
@ -367,7 +430,7 @@ default
|
||||||
llRegionSay(comm_channel, "PROPSEARCH");
|
llRegionSay(comm_channel, "PROPSEARCH");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (num == 90065)
|
else if (num == 90065) // stand up
|
||||||
{
|
{
|
||||||
remove_props_by_sitter(msg, FALSE);
|
remove_props_by_sitter(msg, FALSE);
|
||||||
remove_worn(id);
|
remove_worn(id);
|
||||||
|
@ -377,21 +440,21 @@ default
|
||||||
SITTERS = llListReplaceList(SITTERS, [NULL_KEY], index, index);
|
SITTERS = llListReplaceList(SITTERS, [NULL_KEY], index, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (num == 90030)
|
else if (num == 90030) // swap
|
||||||
{
|
{
|
||||||
remove_props_by_sitter(msg, FALSE);
|
remove_props_by_sitter(msg, FALSE);
|
||||||
remove_props_by_sitter((string)id, FALSE);
|
remove_props_by_sitter((string)id, FALSE);
|
||||||
SITTERS = llListReplaceList(SITTERS, [NULL_KEY], (integer)msg, (integer)msg);
|
SITTERS = llListReplaceList(SITTERS, [NULL_KEY], (integer)msg, (integer)msg);
|
||||||
SITTERS = llListReplaceList(SITTERS, [NULL_KEY], (integer)((string)id), (integer)((string)id));
|
SITTERS = llListReplaceList(SITTERS, [NULL_KEY], (integer)((string)id), (integer)((string)id));
|
||||||
}
|
}
|
||||||
else if (num == 90070)
|
else if (num == 90070) // update list of sitters
|
||||||
{
|
{
|
||||||
SITTERS = llListReplaceList(SITTERS, [id], (integer)msg, (integer)msg);
|
SITTERS = llListReplaceList(SITTERS, [id], (integer)msg, (integer)msg);
|
||||||
}
|
}
|
||||||
else if (num == 90171 || num == 90173)
|
else if (num == 90171 || num == 90173) // [AV]adjuster/[AV]menu add PROP line
|
||||||
{
|
{
|
||||||
integer sitter;
|
integer sitter;
|
||||||
if (num == 90171)
|
if (num == 90171) // [AV]adjuster?
|
||||||
{
|
{
|
||||||
sitter = (integer)msg;
|
sitter = (integer)msg;
|
||||||
prop_triggers += [llList2String(SITTER_POSES, sitter)];
|
prop_triggers += [llList2String(SITTER_POSES, sitter)];
|
||||||
|
@ -422,7 +485,7 @@ default
|
||||||
llSay(0, text);
|
llSay(0, text);
|
||||||
llSay(0, "Position your prop and click [SAVE].");
|
llSay(0, "Position your prop and click [SAVE].");
|
||||||
}
|
}
|
||||||
else if (num == 90020 && (string)id == llGetScriptName())
|
else if (num == 90020 && (string)id == llGetScriptName()) // dump our settings
|
||||||
{
|
{
|
||||||
integer i;
|
integer i;
|
||||||
for (; i < llGetListLength(prop_triggers); i++)
|
for (; i < llGetListLength(prop_triggers); i++)
|
||||||
|
@ -437,10 +500,11 @@ default
|
||||||
Readout_Say("PROP" + type + " " + llDumpList2String([element(llList2String(prop_triggers, i), 1), llList2String(prop_objects, i), element(llList2String(prop_groups, i), 1), llList2String(prop_positions, i), llList2String(prop_rotations, i), llList2String(prop_points, i)], "|"));
|
Readout_Say("PROP" + type + " " + llDumpList2String([element(llList2String(prop_triggers, i), 1), llList2String(prop_objects, i), element(llList2String(prop_groups, i), 1), llList2String(prop_positions, i), llList2String(prop_rotations, i), llList2String(prop_points, i)], "|"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_THIS, 90021, msg, llGetScriptName());
|
llMessageLinked(LINK_THIS, 90021, msg, llGetScriptName()); // notify finished dumping
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
changed(integer change)
|
changed(integer change)
|
||||||
{
|
{
|
||||||
if (change & CHANGED_INVENTORY)
|
if (change & CHANGED_INVENTORY)
|
||||||
|
@ -467,6 +531,7 @@ default
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listen(integer channel, string name, key id, string message)
|
listen(integer channel, string name, key id, string message)
|
||||||
{
|
{
|
||||||
list data = llParseStringKeepNulls(message, ["|"], []);
|
list data = llParseStringKeepNulls(message, ["|"], []);
|
||||||
|
@ -506,6 +571,7 @@ default
|
||||||
{
|
{
|
||||||
llSay(comm_channel, "ATTACHTO|" + (string)sitter_key + "|" + (string)id);
|
llSay(comm_channel, "ATTACHTO|" + (string)sitter_key + "|" + (string)id);
|
||||||
}
|
}
|
||||||
|
// send prop event notification
|
||||||
llMessageLinked(LINK_SET, 90500, llDumpList2String([llList2String(data, 0), llList2String(prop_triggers, prop_index), llList2String(prop_objects, prop_index), llList2String(llParseStringKeepNulls(llList2String(prop_groups, prop_index), ["|"], []), 1), id], "|"), sitter_key);
|
llMessageLinked(LINK_SET, 90500, llDumpList2String([llList2String(data, 0), llList2String(prop_triggers, prop_index), llList2String(prop_objects, prop_index), llList2String(llParseStringKeepNulls(llList2String(prop_groups, prop_index), ["|"], []), 1), id], "|"), sitter_key);
|
||||||
}
|
}
|
||||||
else if (llList2String(data, 0) == "NAG" && HAVENTNAGGED && (!llGetAttached()))
|
else if (llList2String(data, 0) == "NAG" && HAVENTNAGGED && (!llGetAttached()))
|
||||||
|
@ -514,6 +580,7 @@ default
|
||||||
HAVENTNAGGED = FALSE;
|
HAVENTNAGGED = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dataserver(key query_id, string data)
|
dataserver(key query_id, string data)
|
||||||
{
|
{
|
||||||
if (query_id == notecard_query)
|
if (query_id == notecard_query)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue