aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/1AOor2.lsl
diff options
context:
space:
mode:
Diffstat (limited to '1AOor2.lsl')
-rw-r--r--1AOor2.lsl62
1 files 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
477 llKey2Name(Owner) + " would like to do '" + What + "' with you.", 477 llKey2Name(Owner) + " would like to do '" + What + "' with you.",
478 "Yes|No", "COUPLE_YES " + Stalkee + "|COUPLE_NO " + Stalkee); 478 "Yes|No", "COUPLE_YES " + Stalkee + "|COUPLE_NO " + Stalkee);
479 sendScript(lCMD, "1ring", [fINT, id, Stalkee, "GOTO", Stalkee]); 479 sendScript(lCMD, "1ring", [fINT, id, Stalkee, "GOTO", Stalkee]);
480 addEvent(120.0, "COUPLE_TIMEOUT"); 480 addEvent(300.0, "COUPLE_TIMEOUT");
481 } 481 }
482 return FALSE; 482 return FALSE;
483 } 483 }
@@ -625,6 +625,11 @@ d("SIT_DONE for " + llKey2Name(data));
625 osMakeNotecard(".POSITIONS", data); 625 osMakeNotecard(".POSITIONS", data);
626 S("Current positions saved to the .POSITIONS notecard."); 626 S("Current positions saved to the .POSITIONS notecard.");
627 } 627 }
628 else if ("SWAP" == cmd)
629 {
630 Swapped = !Swapped;
631 checkSitters(TRUE);
632 }
628 else if ("TPRIM" == cmd) 633 else if ("TPRIM" == cmd)
629 { 634 {
630 if (Attached) 635 if (Attached)
@@ -751,6 +756,7 @@ integer PIN;
751key Leader = NULL_KEY; 756key Leader = NULL_KEY;
752float LeaderOffset = 0.0; 757float LeaderOffset = 0.0;
753key Controller = NULL_KEY; 758key Controller = NULL_KEY;
759integer Swapped = FALSE;
754 760
755// AO 761// AO
756integer Lag = 100; 762integer Lag = 100;
@@ -884,7 +890,7 @@ integer findPose(string name) {return listFindString(Poses, name, psSTRIDE);}
884savePose(string name, string anim, string exp, string posRot) 890savePose(string name, string anim, string exp, string posRot)
885{ 891{
886 integer f = findPose(name); 892 integer f = findPose(name);
887 posRot = normPose(posRot); 893
888 if (-1 != f) 894 if (-1 != f)
889 { 895 {
890 if ("" == anim) 896 if ("" == anim)
@@ -894,32 +900,10 @@ savePose(string name, string anim, string exp, string posRot)
894 } 900 }
895 else if ("" == posRot) posRot = llList2String(Poses, f + psPOSROT); 901 else if ("" == posRot) posRot = llList2String(Poses, f + psPOSROT);
896 Poses = llListReplaceList(Poses, [name, anim, exp, posRot], f, f + psSTRIDE - 1); 902 Poses = llListReplaceList(Poses, [name, anim, exp, posRot], f, f + psSTRIDE - 1);
897 }
898 else 903 else
899 Poses += [name, anim, exp, posRot]; 904 Poses += [name, anim, exp, posRot];
900} 905}
901 906
902string normPose(string posRot)
903{
904 // Subtract the x,y of the first from both to normalise it around the prim.
905 // NOTE - only handles the first two.
906 list p = llParseStringKeepNulls(posRot, ["|"], []);
907 string pr0 = llList2String(p, 0);
908 integer jx0 = llSubStringIndex(pr0, "><");
909 vector minp = (vector) llGetSubString(pr0, 0, jx0);
910 vector minr = (vector) llGetSubString(pr0, jx0 + 1, -1);
911 string pr1 = llList2String(p, 1);
912 integer jx1 = llSubStringIndex(pr1, "><");
913 vector maxp = (vector) llGetSubString(pr1, 0, jx1);
914 vector maxr = (vector) llGetSubString(pr1, jx1 + 1, -1);
915 maxp.x = maxp.x - minp.x;
916 maxp.y = maxp.y - minp.y;
917 minp.x = 0.0; minp.y = 0.0;
918 maxr.z = maxr.z - minr.z;
919 minr.z = 0.0;
920 return prStr(((string) minp) + ((string) minr)) + "|" + prStr(((string) maxp) + ((string) maxr));
921}
922
923list reportPose() 907list reportPose()
924{ 908{
925 list result = []; 909 list result = [];
@@ -1612,7 +1596,6 @@ checkSitters(integer del)
1612} 1596}
1613 1597
1614// AO functions. 1598// AO functions.
1615list States = [];
1616integer loadCard(string card, integer casperMode) 1599integer loadCard(string card, integer casperMode)
1617{ 1600{
1618 if (NULL_KEY != llGetInventoryKey(card)) 1601 if (NULL_KEY != llGetInventoryKey(card))
@@ -1621,7 +1604,7 @@ integer loadCard(string card, integer casperMode)
1621 string section = ""; 1604 string section = "";
1622 integer l = osGetNumberOfNotecardLines(card); 1605 integer l = osGetNumberOfNotecardLines(card);
1623 integer i; 1606 integer i;
1624 States = initialStates; 1607
1625 for (i = 0; i <= l; ++i) 1608 for (i = 0; i <= l; ++i)
1626 { 1609 {
1627 string line = osGetNotecardLine(card, i); 1610 string line = osGetNotecardLine(card, i);
@@ -1653,29 +1636,14 @@ integer loadCard(string card, integer casperMode)
1653 } 1636 }
1654 if ("" != name) 1637 if ("" != name)
1655 { 1638 {
1656 found = llListFindList(States, [name]); 1639 found = findPose(name);
1657 if ((0 <= found) && ((found % 2) == 0)) 1640 if (-1 != found)
1658 { 1641 {
1659 string data = llList2String(States, found + 1); 1642 string data = llList2String(Poses, found + psANIM);
1660 if ("" != data) data += "|"; 1643 if ("" != data) data += "|" + rest;
1661 States = llListReplaceList(States, [name, data + rest], found, found + 1); 1644 rest = data;
1662 } 1645 }
1663 else States += [name, rest]; 1646 savePose("AO_" + name, rest, NULL_KEY, NULL_KEY);
1664 }
1665 }
1666 l = llGetListLength(States);
1667 for (i = 0; i < l; i += 2)
1668 {
1669 list nA = llParseStringKeepNulls(llList2String(States, i + 1), ["|"], []);
1670 integer m = llGetListLength(nA);
1671 integer j;
1672 for (j = 0; j < m; ++j)
1673 {
1674 list a = llCSV2List(llList2String(nA, j));
1675 integer n = llGetListLength(a);
1676 integer k;
1677 for (k = 0; k < n; ++k)
1678 checkAnim(llList2String(a, k));
1679 } 1647 }
1680 } 1648 }
1681 d("Read " + card + " in " + (string) (llGetTimeOfDay() - now) + " seconds."); 1649 d("Read " + card + " in " + (string) (llGetTimeOfDay() - now) + " seconds.");