Fix several calls that had wraparound hazards.
llGetSubString("abc", 3, -1) gives "abc"; llList2List(L, 1, -1) gives L when L has length 1. In general, llGetSubString or llList2List return the whole thing when the starting index is grater than the last element in the list. There were a number of spots with that hazard, so fix all we found.
This commit is contained in:
parent
aa9cba13a5
commit
bf8f10bfe6
15 changed files with 39 additions and 39 deletions
|
@ -109,7 +109,7 @@ default
|
||||||
|
|
||||||
state_entry()
|
state_entry()
|
||||||
{
|
{
|
||||||
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), -1);
|
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), 99999);
|
||||||
notecard_key = llGetInventoryKey(notecard_name);
|
notecard_key = llGetInventoryKey(notecard_name);
|
||||||
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD)
|
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD)
|
||||||
{
|
{
|
||||||
|
@ -225,10 +225,10 @@ default
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||||
data = llStringTrim(data, STRING_TRIM);
|
data = llStringTrim(data, STRING_TRIM);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
||||||
if (command == "SITTER")
|
if (command == "SITTER")
|
||||||
{
|
{
|
||||||
|
@ -236,7 +236,7 @@ default
|
||||||
}
|
}
|
||||||
else if (notecard_section == SCRIPT_CHANNEL && command == "CAMERA")
|
else if (notecard_section == SCRIPT_CHANNEL && command == "CAMERA")
|
||||||
{
|
{
|
||||||
string part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, -1), "|"), STRING_TRIM);
|
string part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, 99999), "|"), STRING_TRIM);
|
||||||
list sequence = llParseString2List(part1, ["|"], []);
|
list sequence = llParseString2List(part1, ["|"], []);
|
||||||
camera_triggers += part0;
|
camera_triggers += part0;
|
||||||
camera_settings += part1;
|
camera_settings += part1;
|
||||||
|
|
|
@ -177,7 +177,7 @@ default
|
||||||
{
|
{
|
||||||
data = llStringTrim(data, STRING_TRIM);
|
data = llStringTrim(data, STRING_TRIM);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
if (command == "TIMER")
|
if (command == "TIMER")
|
||||||
{
|
{
|
||||||
TIMER_DEFAULT = llList2Integer(parts, 0);
|
TIMER_DEFAULT = llList2Integer(parts, 0);
|
||||||
|
|
|
@ -1209,7 +1209,7 @@ state running
|
||||||
{
|
{
|
||||||
data = llStringTrim(data, STRING_TRIM);
|
data = llStringTrim(data, STRING_TRIM);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
||||||
part0 = llGetSubString(part0, 0, 22);
|
part0 = llGetSubString(part0, 0, 22);
|
||||||
if (command == "WAITPOSE")
|
if (command == "WAITPOSE")
|
||||||
|
|
|
@ -88,7 +88,7 @@ Readout_Say(string say, string 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)) & 0x3FFFFFFF ^ 0xBFFFFFFF), 6, 99999);
|
||||||
}
|
}
|
||||||
|
|
||||||
init_sitters()
|
init_sitters()
|
||||||
|
@ -416,10 +416,10 @@ default
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||||
data = llStringTrim(data, STRING_TRIM);
|
data = llStringTrim(data, STRING_TRIM);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
if (command == "SITTER")
|
if (command == "SITTER")
|
||||||
{
|
{
|
||||||
notecard_section = llList2Integer(parts, 0);
|
notecard_section = llList2Integer(parts, 0);
|
||||||
|
|
|
@ -269,7 +269,7 @@ integer prop_menu(integer return_pages, key av)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
menu_items1 += llGetSubString(llList2String(llParseString2List(llList2String(MENU_LIST, i), ["|"], []), 0), 2, -1);
|
menu_items1 += llGetSubString(llList2String(llParseString2List(llList2String(MENU_LIST, i), ["|"], []), 0), 2, 99999);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -589,15 +589,15 @@ default
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||||
data = llStringTrim(data, STRING_TRIM);
|
data = llStringTrim(data, STRING_TRIM);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
||||||
string part1 = llList2String(parts, 1);
|
string part1 = llList2String(parts, 1);
|
||||||
if (llGetListLength(parts) > 1)
|
if (llGetListLength(parts) > 1)
|
||||||
{
|
{
|
||||||
part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, -1), SEP), STRING_TRIM);
|
part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, 99999), SEP), STRING_TRIM);
|
||||||
}
|
}
|
||||||
if (command == "TEXT")
|
if (command == "TEXT")
|
||||||
{
|
{
|
||||||
|
|
|
@ -378,7 +378,7 @@ default
|
||||||
{
|
{
|
||||||
if (llList2Key(SITTERS, i) == sitting_av_or_sitter || id == "" || (string)sitting_av_or_sitter == (string)i)
|
if (llList2Key(SITTERS, i) == sitting_av_or_sitter || id == "" || (string)sitting_av_or_sitter == (string)i)
|
||||||
{
|
{
|
||||||
remove_sitter_props_by_pose((string)i + "|" + llGetSubString(msg, 8, -1), TRUE);
|
remove_sitter_props_by_pose((string)i + "|" + llGetSubString(msg, 8, 99999), TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -603,10 +603,10 @@ default
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||||
data = llStringTrim(data, STRING_TRIM);
|
data = llStringTrim(data, STRING_TRIM);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
if (command == "SITTER")
|
if (command == "SITTER")
|
||||||
{
|
{
|
||||||
notecard_section = (integer)llList2String(parts, 0);
|
notecard_section = (integer)llList2String(parts, 0);
|
||||||
|
|
|
@ -269,7 +269,7 @@ default
|
||||||
{
|
{
|
||||||
list datalist = llParseString2List(data, [" "], []);
|
list datalist = llParseString2List(data, [" "], []);
|
||||||
string command = llList2String(datalist, 0);
|
string command = llList2String(datalist, 0);
|
||||||
data = llStringTrim(llDumpList2String(llList2List(datalist, 1, -1), " "), STRING_TRIM);
|
data = llStringTrim(llDumpList2String(llList2List(datalist, 1, 99999), " "), STRING_TRIM);
|
||||||
list commands = ["PLAY", "WAIT", "SAY", "WHISPER", "SOUND", "LOOP"];
|
list commands = ["PLAY", "WAIT", "SAY", "WHISPER", "SOUND", "LOOP"];
|
||||||
if (command == "DEBUG")
|
if (command == "DEBUG")
|
||||||
{
|
{
|
||||||
|
|
|
@ -196,7 +196,7 @@ default
|
||||||
{
|
{
|
||||||
string command = llStringTrim(llGetSubString(data, 1, llSubStringIndex(data, "}") - 1), STRING_TRIM);
|
string command = llStringTrim(llGetSubString(data, 1, llSubStringIndex(data, "}") - 1), STRING_TRIM);
|
||||||
data = llDumpList2String(llParseString2List(data, [" "], [""]), "");
|
data = llDumpList2String(llParseString2List(data, [" "], [""]), "");
|
||||||
data = llGetSubString(data, llSubStringIndex(data, "}") + 1, -1);
|
data = llGetSubString(data, llSubStringIndex(data, "}") + 1, 99999);
|
||||||
list parts = llParseStringKeepNulls(data, ["<"], []);
|
list parts = llParseStringKeepNulls(data, ["<"], []);
|
||||||
vector pos = (vector)("<" + llList2String(parts, 1));
|
vector pos = (vector)("<" + llList2String(parts, 1));
|
||||||
pos = (pos - target_prim_pos) / target_prim_rot;
|
pos = (pos - target_prim_pos) / target_prim_rot;
|
||||||
|
|
|
@ -147,7 +147,7 @@ default
|
||||||
if (llGetSubString(notecard_name, 0, 9) == ".MENUITEMS")
|
if (llGetSubString(notecard_name, 0, 9) == ".MENUITEMS")
|
||||||
{
|
{
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseString2List(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseString2List(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
if (command == "TOMENU" || command == "MENU")
|
if (command == "TOMENU" || command == "MENU")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,10 +85,10 @@ default
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||||
data = llStringTrim(data, STRING_TRIM);
|
data = llStringTrim(data, STRING_TRIM);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseString2List(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseString2List(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
if (command == "POSE" || command == "SYNC")
|
if (command == "POSE" || command == "SYNC")
|
||||||
{
|
{
|
||||||
list anims = llList2ListStrided(llDeleteSubList(parts, 0, 0), 0, -1, 2);
|
list anims = llList2ListStrided(llDeleteSubList(parts, 0, 0), 0, -1, 2);
|
||||||
|
|
|
@ -111,7 +111,7 @@ default
|
||||||
if (distance <= mysize.x / 2)
|
if (distance <= mysize.x / 2)
|
||||||
{
|
{
|
||||||
objects_to_update += id;
|
objects_to_update += id;
|
||||||
objects_files += llDumpList2String(llList2List(data, 1, -1), "|");
|
objects_files += llDumpList2String(llList2List(data, 1, 99999), "|");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -527,7 +527,7 @@ default
|
||||||
else if (llGetSubString(msg, 0, 0) == "{")
|
else if (llGetSubString(msg, 0, 0) == "{")
|
||||||
{
|
{
|
||||||
msg = strReplace(msg, "{P:", "{");
|
msg = strReplace(msg, "{P:", "{");
|
||||||
list parts = llParseStringKeepNulls(llDumpList2String(llParseString2List(llGetSubString(msg, llSubStringIndex(msg, "}") + 1, -1), [" "], [""]), ""), ["<"], []);
|
list parts = llParseStringKeepNulls(llDumpList2String(llParseString2List(llGetSubString(msg, llSubStringIndex(msg, "}") + 1, 99999), [" "], [""]), ""), ["<"], []);
|
||||||
vector pos2 = (vector)("<" + llList2String(parts, 1));
|
vector pos2 = (vector)("<" + llList2String(parts, 1));
|
||||||
vector rot2 = (vector)("<" + llList2String(parts, 2));
|
vector rot2 = (vector)("<" + llList2String(parts, 2));
|
||||||
string result = "<" + FormatFloat(pos2.x, 3) + "," + FormatFloat(pos2.y, 3) + "," + FormatFloat(pos2.z, 3) + ">";
|
string result = "<" + FormatFloat(pos2.x, 3) + "," + FormatFloat(pos2.y, 3) + "," + FormatFloat(pos2.z, 3) + ">";
|
||||||
|
@ -597,7 +597,7 @@ default
|
||||||
if (llSubStringIndex(llList2String(SITTER_POSES, i), "P:") == 0)
|
if (llSubStringIndex(llList2String(SITTER_POSES, i), "P:") == 0)
|
||||||
{
|
{
|
||||||
type = "POSE";
|
type = "POSE";
|
||||||
temp_pose_name = llGetSubString(temp_pose_name, 2, -1);
|
temp_pose_name = llGetSubString(temp_pose_name, 2, 99999);
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_THIS, 90301, (string)i, llList2String(SITTER_POSES, i) + "|" + llList2String(POS_LIST, i) + "|" + llList2String(ROT_LIST, i) + "|");
|
llMessageLinked(LINK_THIS, 90301, (string)i, llList2String(SITTER_POSES, i) + "|" + llList2String(POS_LIST, i) + "|" + llList2String(ROT_LIST, i) + "|");
|
||||||
vector pos = llList2Vector(POS_LIST, i);
|
vector pos = llList2Vector(POS_LIST, i);
|
||||||
|
@ -910,7 +910,7 @@ default
|
||||||
}
|
}
|
||||||
else if (OLD_HELPER_METHOD)
|
else if (OLD_HELPER_METHOD)
|
||||||
{
|
{
|
||||||
integer sitter = (integer)llGetSubString(name, llSubStringIndex(name, " ") + 1, -1);
|
integer sitter = (integer)llGetSubString(name, llSubStringIndex(name, " ") + 1, 99999);
|
||||||
if (llList2String(data, 0) == "ANIMA")
|
if (llList2String(data, 0) == "ANIMA")
|
||||||
{
|
{
|
||||||
llMessageLinked(LINK_THIS, 90075, (string)sitter, llList2Key(data, 1));
|
llMessageLinked(LINK_THIS, 90075, (string)sitter, llList2Key(data, 1));
|
||||||
|
|
|
@ -194,10 +194,10 @@ default
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||||
data = llStringTrim(data, STRING_TRIM);
|
data = llStringTrim(data, STRING_TRIM);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseString2List(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseString2List(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
string part0 = llList2String(parts, 0);
|
string part0 = llList2String(parts, 0);
|
||||||
if (command == "TEXT")
|
if (command == "TEXT")
|
||||||
{
|
{
|
||||||
|
|
|
@ -221,7 +221,7 @@ sittargets()
|
||||||
{
|
{
|
||||||
integer next = llListFindList(SITTERS_SITTARGETS, [1000]);
|
integer next = llListFindList(SITTERS_SITTARGETS, [1000]);
|
||||||
string desc = (string)llGetLinkPrimitiveParams(i, [PRIM_DESC]);
|
string desc = (string)llGetLinkPrimitiveParams(i, [PRIM_DESC]);
|
||||||
desc = llGetSubString(desc, llSubStringIndex(desc, "#") + 1, -1);
|
desc = llGetSubString(desc, llSubStringIndex(desc, "#") + 1, 99999);
|
||||||
if (desc != "-1")
|
if (desc != "-1")
|
||||||
{
|
{
|
||||||
list data = llParseStringKeepNulls(desc, ["-"], []);
|
list data = llParseStringKeepNulls(desc, ["-"], []);
|
||||||
|
@ -364,7 +364,7 @@ apply_current_anim(integer broadcast)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
POSENAME = llGetSubString(POSENAME, 2, -1);
|
POSENAME = llGetSubString(POSENAME, 2, 99999);
|
||||||
}
|
}
|
||||||
string OLD_SYNC;
|
string OLD_SYNC;
|
||||||
if (OLD_POSE_NAME != CURRENT_POSE_NAME)
|
if (OLD_POSE_NAME != CURRENT_POSE_NAME)
|
||||||
|
@ -454,7 +454,7 @@ default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
{
|
{
|
||||||
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), -1);
|
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), 99999);
|
||||||
while (llGetInventoryType(memoryscript) != INVENTORY_SCRIPT)
|
while (llGetInventoryType(memoryscript) != INVENTORY_SCRIPT)
|
||||||
{
|
{
|
||||||
llSleep(0.1);
|
llSleep(0.1);
|
||||||
|
@ -1105,7 +1105,7 @@ default
|
||||||
string posename = CURRENT_POSE_NAME;
|
string posename = CURRENT_POSE_NAME;
|
||||||
if (llGetSubString(CURRENT_POSE_NAME, 0, 1) == "P:")
|
if (llGetSubString(CURRENT_POSE_NAME, 0, 1) == "P:")
|
||||||
{
|
{
|
||||||
posename = llGetSubString(CURRENT_POSE_NAME, 2, -1);
|
posename = llGetSubString(CURRENT_POSE_NAME, 2, 99999);
|
||||||
}
|
}
|
||||||
llMessageLinked(LINK_THIS, 90070, (string)SCRIPT_CHANNEL, MY_SITTER); // 90070=update SITTERS after permissions granted
|
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);
|
||||||
|
@ -1157,15 +1157,15 @@ default
|
||||||
// Request next line
|
// Request next line
|
||||||
notecard_query = llGetNotecardLine(notecard_name, ++reused_variable);
|
notecard_query = llGetNotecardLine(notecard_name, ++reused_variable);
|
||||||
|
|
||||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||||
data = llStringTrim(data, STRING_TRIM_HEAD);
|
data = llStringTrim(data, STRING_TRIM_HEAD);
|
||||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||||
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
||||||
string part1;
|
string part1;
|
||||||
if (llGetListLength(parts) > 1)
|
if (llGetListLength(parts) > 1)
|
||||||
{
|
{
|
||||||
part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, -1), SEP), STRING_TRIM);
|
part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, 99999), SEP), STRING_TRIM);
|
||||||
}
|
}
|
||||||
if (command == "SITTER")
|
if (command == "SITTER")
|
||||||
{
|
{
|
||||||
|
@ -1187,7 +1187,7 @@ default
|
||||||
reading_notecard_section = TRUE;
|
reading_notecard_section = TRUE;
|
||||||
if (llGetListLength(parts) > 1)
|
if (llGetListLength(parts) > 1)
|
||||||
{
|
{
|
||||||
SITTER_INFO = llList2List(parts, 1, -1);
|
SITTER_INFO = llList2List(parts, 1, 99999);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -1282,7 +1282,7 @@ default
|
||||||
if (llGetSubString(data, 0, 0) == "{")
|
if (llGetSubString(data, 0, 0) == "{")
|
||||||
{
|
{
|
||||||
command = llStringTrim(llGetSubString(data, 1, llSubStringIndex(data, "}") - 1), STRING_TRIM);
|
command = llStringTrim(llGetSubString(data, 1, llSubStringIndex(data, "}") - 1), STRING_TRIM);
|
||||||
parts = llParseStringKeepNulls(llDumpList2String(llParseString2List(llGetSubString(data, llSubStringIndex(data, "}") + 1, -1), [" "], [""]), ""), ["<"], []);
|
parts = llParseStringKeepNulls(llDumpList2String(llParseString2List(llGetSubString(data, llSubStringIndex(data, "}") + 1, 99999), [" "], [""]), ""), ["<"], []);
|
||||||
string pos = "<" + llList2String(parts, 1);
|
string pos = "<" + llList2String(parts, 1);
|
||||||
string rot = "<" + llList2String(parts, 2);
|
string rot = "<" + llList2String(parts, 2);
|
||||||
if (command == FIRST_POSENAME || "P:" + command == FIRST_POSENAME)
|
if (command == FIRST_POSENAME || "P:" + command == FIRST_POSENAME)
|
||||||
|
|
|
@ -193,7 +193,7 @@ integer animation_menu(integer animation_menu_function)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
menu_items1 += llGetSubString(m, 2, -1);
|
menu_items1 += llGetSubString(m, 2, 99999);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -227,7 +227,7 @@ default
|
||||||
state_entry()
|
state_entry()
|
||||||
{
|
{
|
||||||
memory();
|
memory();
|
||||||
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), -1);
|
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), 99999);
|
||||||
if (SCRIPT_CHANNEL)
|
if (SCRIPT_CHANNEL)
|
||||||
main_script += " " + (string)SCRIPT_CHANNEL;
|
main_script += " " + (string)SCRIPT_CHANNEL;
|
||||||
if (llGetInventoryType(main_script) == INVENTORY_SCRIPT)
|
if (llGetInventoryType(main_script) == INVENTORY_SCRIPT)
|
||||||
|
@ -323,7 +323,7 @@ default
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
current_menu = llListFindList(MENU_LIST, ["T:" + llGetSubString(llList2String(MENU_LIST, current_menu), 2, -1)]);
|
current_menu = llListFindList(MENU_LIST, ["T:" + llGetSubString(llList2String(MENU_LIST, current_menu), 2, 99999)]);
|
||||||
if (current_menu != -1)
|
if (current_menu != -1)
|
||||||
{
|
{
|
||||||
current_menu -= 1;
|
current_menu -= 1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue