From 000cf0556d27b37da315d043beead6f80ab726ab Mon Sep 17 00:00:00 2001 From: onefang Date: Mon, 6 Sep 2021 22:11:32 +1000 Subject: Rip it a new one, the mop up. --- 1AOor2.lsl | 62 +++++++++++++++----------------------------------------------- 1 file changed, 15 insertions(+), 47 deletions(-) diff --git a/1AOor2.lsl b/1AOor2.lsl index d8e3095..156ef0a 100644 --- a/1AOor2.lsl +++ b/1AOor2.lsl @@ -477,7 +477,7 @@ integer doThing(key id, string button, string fr, string cmd, string data, integ llKey2Name(Owner) + " would like to do '" + What + "' with you.", "Yes|No", "COUPLE_YES " + Stalkee + "|COUPLE_NO " + Stalkee); sendScript(lCMD, "1ring", [fINT, id, Stalkee, "GOTO", Stalkee]); - addEvent(120.0, "COUPLE_TIMEOUT"); + addEvent(300.0, "COUPLE_TIMEOUT"); } return FALSE; } @@ -625,6 +625,11 @@ d("SIT_DONE for " + llKey2Name(data)); osMakeNotecard(".POSITIONS", data); S("Current positions saved to the .POSITIONS notecard."); } + else if ("SWAP" == cmd) + { + Swapped = !Swapped; + checkSitters(TRUE); + } else if ("TPRIM" == cmd) { if (Attached) @@ -751,6 +756,7 @@ integer PIN; key Leader = NULL_KEY; float LeaderOffset = 0.0; key Controller = NULL_KEY; +integer Swapped = FALSE; // AO integer Lag = 100; @@ -884,7 +890,7 @@ integer findPose(string name) {return listFindString(Poses, name, psSTRIDE);} savePose(string name, string anim, string exp, string posRot) { integer f = findPose(name); - posRot = normPose(posRot); + if (-1 != f) { if ("" == anim) @@ -894,32 +900,10 @@ savePose(string name, string anim, string exp, string posRot) } else if ("" == posRot) posRot = llList2String(Poses, f + psPOSROT); Poses = llListReplaceList(Poses, [name, anim, exp, posRot], f, f + psSTRIDE - 1); - } else Poses += [name, anim, exp, posRot]; } -string normPose(string posRot) -{ - // Subtract the x,y of the first from both to normalise it around the prim. - // NOTE - only handles the first two. - list p = llParseStringKeepNulls(posRot, ["|"], []); - string pr0 = llList2String(p, 0); - integer jx0 = llSubStringIndex(pr0, "><"); - vector minp = (vector) llGetSubString(pr0, 0, jx0); - vector minr = (vector) llGetSubString(pr0, jx0 + 1, -1); - string pr1 = llList2String(p, 1); - integer jx1 = llSubStringIndex(pr1, "><"); - vector maxp = (vector) llGetSubString(pr1, 0, jx1); - vector maxr = (vector) llGetSubString(pr1, jx1 + 1, -1); - maxp.x = maxp.x - minp.x; - maxp.y = maxp.y - minp.y; - minp.x = 0.0; minp.y = 0.0; - maxr.z = maxr.z - minr.z; - minr.z = 0.0; - return prStr(((string) minp) + ((string) minr)) + "|" + prStr(((string) maxp) + ((string) maxr)); -} - list reportPose() { list result = []; @@ -1612,7 +1596,6 @@ checkSitters(integer del) } // AO functions. -list States = []; integer loadCard(string card, integer casperMode) { if (NULL_KEY != llGetInventoryKey(card)) @@ -1621,7 +1604,7 @@ integer loadCard(string card, integer casperMode) string section = ""; integer l = osGetNumberOfNotecardLines(card); integer i; - States = initialStates; + for (i = 0; i <= l; ++i) { string line = osGetNotecardLine(card, i); @@ -1653,29 +1636,14 @@ integer loadCard(string card, integer casperMode) } if ("" != name) { - found = llListFindList(States, [name]); - if ((0 <= found) && ((found % 2) == 0)) + found = findPose(name); + if (-1 != found) { - string data = llList2String(States, found + 1); - if ("" != data) data += "|"; - States = llListReplaceList(States, [name, data + rest], found, found + 1); + string data = llList2String(Poses, found + psANIM); + if ("" != data) data += "|" + rest; + rest = data; } - else States += [name, rest]; - } - } - l = llGetListLength(States); - for (i = 0; i < l; i += 2) - { - list nA = llParseStringKeepNulls(llList2String(States, i + 1), ["|"], []); - integer m = llGetListLength(nA); - integer j; - for (j = 0; j < m; ++j) - { - list a = llCSV2List(llList2String(nA, j)); - integer n = llGetListLength(a); - integer k; - for (k = 0; k < n; ++k) - checkAnim(llList2String(a, k)); + savePose("AO_" + name, rest, NULL_KEY, NULL_KEY); } } d("Read " + card + " in " + (string) (llGetTimeOfDay() - now) + " seconds."); -- cgit v1.1