Update repo (#1)
* Update README.md * Update and rename [AV]LockGuard-object.lslp to [AV]LockGuard-object.lsl * Update [AV]LockGuard-object.lsl * Update [AV]LockGuard-object.lsl * Update [AV]LockGuard-object.lsl * Update and rename [AV]LockGuard.lslp to [AV]LockGuard.lsl * Update and rename shared props via BUTTON.lslp to shared props via BUTTON.lsl * Update and rename shared props via POSE.lslp to shared props via POSE.lsl
This commit is contained in:
parent
ff60b814dc
commit
5c4f5b3418
9 changed files with 497 additions and 395 deletions
25
AVsitter2/Plugins/AVprop/shared props via BUTTON.lsl
Normal file
25
AVsitter2/Plugins/AVprop/shared props via BUTTON.lsl
Normal file
|
@ -0,0 +1,25 @@
|
|||
// Shared props with BUTTON (alpha) v0.01a
|
||||
//
|
||||
// Allows props to be rezzed by button. They won't derez when sitters "swap" or
|
||||
// if only one avatar stands up. Requires [AV]prop script from AVsitter2
|
||||
// box 2.1-09.01 or later. Shared props should use PROP3 in the AVpos notecard
|
||||
// (a special prop type specifically for shared props).
|
||||
//
|
||||
// example use:
|
||||
//
|
||||
// BUTTON myprop|555 <--- rez the prop
|
||||
// BUTTON [CLEAR]|555 <--- clear all props
|
||||
// BUTTON remprop_myprop|555 <--- derez the prop
|
||||
// PROP3 myprop|object|0|<0,0,0><0,0,0> <--- define the prop (in any SITTER)
|
||||
|
||||
default
|
||||
{
|
||||
link_message(integer sender, integer num, string msg, key id)
|
||||
{
|
||||
if (num != 555) return
|
||||
|
||||
llMessageLinked(LINK_THIS, 90220, "remprop_" + msg, NULL_KEY); // remove the prop
|
||||
llMessageLinked(LINK_THIS, 90220, msg, NULL_KEY); // rez the prop
|
||||
llMessageLinked(LINK_THIS, 90005, "", id); // give back the menu
|
||||
}
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
/******************************************************************
|
||||
* Shared props with BUTTON (alpha) v0.01a
|
||||
* Allows props to be rezzed by button. They won't derez when sitters "swap" or if only one avatar stands up.
|
||||
* Requires [AV]prop script from AVsitter2 box 2.1-09.01 or later.
|
||||
* Shared props should use PROP3 in the AVpos notecard (a special prop type specifically for shared props).
|
||||
*
|
||||
* example use:
|
||||
|
||||
BUTTON myprop|555 <--- rez the prop
|
||||
BUTTON [CLEAR]|555 <--- clear all props
|
||||
BUTTON remprop_myprop|555 <--- derez the prop
|
||||
PROP3 myprop|object|0|<0,0,0><0,0,0> <--- define the prop (in any SITTER)
|
||||
|
||||
******************************************************************/
|
||||
|
||||
|
||||
/******************************************************************
|
||||
* DON'T EDIT BELOW THIS UNLESS YOU KNOW WHAT YOU'RE DOING!
|
||||
******************************************************************/
|
||||
|
||||
default{
|
||||
link_message(integer sender, integer num, string msg, key id){
|
||||
if(num==555){
|
||||
llMessageLinked(LINK_THIS,90220,"remprop_"+msg,""); //remove the prop
|
||||
llMessageLinked(LINK_THIS,90220,msg,""); //rez the prop
|
||||
llMessageLinked(LINK_THIS,90005,"",id); //give back the menu
|
||||
}
|
||||
}
|
||||
}
|
230
AVsitter2/Plugins/AVprop/shared props via POSE.lsl
Normal file
230
AVsitter2/Plugins/AVprop/shared props via POSE.lsl
Normal file
|
@ -0,0 +1,230 @@
|
|||
// Shared prop script (alpha) v0.04a
|
||||
//
|
||||
// - Allows props to be "shared" i.e. props will rez while any one of a number
|
||||
// of POSE/SYNC are playing for any avatar.
|
||||
// - Also replaces the need for the "Rez Same Prop for Several Poses" script.
|
||||
// - Requires [AV]prop script from AVsitter2 box 2.1-09 or later.
|
||||
// - Shared props should use PROP3 in the AVpos notecard (a special prop type
|
||||
// specifically for shared props).
|
||||
// - Shared props can be set up in SITTER 0 section of the AVpos notecard in a
|
||||
// regular setup prim, or in a dedicated rezzer prim.
|
||||
// - Props for a specific sitter can use PROP, PROP1 or PROP2.
|
||||
// - All props referenced by this script should be named different from pose
|
||||
// names (unlike basic props, which do have names that match poses).
|
||||
//
|
||||
// - SITTER_SITTER_PROPS_N_POSES is your list of SITTER#, PROP names, and
|
||||
// POSE/SYNC names the props are for.
|
||||
// e.g: 0, "weights", "stand1,stand2"
|
||||
// - SITTER with -1 indicates the prop is for all sitters (i.e. shared prop,
|
||||
// that should use PROP3 in the AVpos notecard).
|
||||
// e.g: -1,"prop1", "sit1,sit2,sit3"
|
||||
//
|
||||
// - "*" for POSE name indicates the prop should rez for all poses.
|
||||
|
||||
list SITTER_PROPS_N_POSES = [
|
||||
-1, "prop1", "sit1,sit2,sit3",
|
||||
-1, "prop2", "sit4,sync2",
|
||||
-1, "prop3", "sync1,sync2",
|
||||
0, "hat", "*",
|
||||
0, "weights", "weights1,weights2",
|
||||
1, "weights", "weights1,weights2"
|
||||
];
|
||||
|
||||
|
||||
list SITTER_PRIMS; // which prims have AVsitter setups
|
||||
list SITTER_POSES_BY_PRIM; // which poses are playing for each sitter in each prim
|
||||
list SITTERS_BY_PRIM; // which sitters are occupied in each setup prim
|
||||
list REZZED; // which props are rezzed, for which avatars
|
||||
integer ANY_SITTERS; // if avatars are sitting
|
||||
|
||||
rez_derez()
|
||||
{
|
||||
integer i;
|
||||
for (; i < llGetListLength(SITTER_PROPS_N_POSES); i += 3)
|
||||
{
|
||||
integer wasRezzed = llList2Integer(REZZED, i);
|
||||
integer forSitter = llList2Integer(SITTER_PROPS_N_POSES, i);
|
||||
list poses = llParseString2List(llList2String(SITTER_PROPS_N_POSES, i + 2), [","], []);
|
||||
|
||||
integer j;
|
||||
for (; j < llGetListLength(poses); j++)
|
||||
{
|
||||
integer k;
|
||||
for (; k < llGetListLength(SITTER_PRIMS); k++)
|
||||
{
|
||||
list SITTER_POSES_IN_PRIM = llParseStringKeepNulls(llList2String(SITTER_POSES_BY_PRIM, k), ["|"], []);
|
||||
|
||||
integer found = llListFindList(SITTER_POSES_IN_PRIM, [llList2String(poses, j)]);
|
||||
if (~found || llList2String(poses, j) == "*")
|
||||
{
|
||||
list SITTERS_IN_PRIM = llParseStringKeepNulls(llList2String(SITTERS_BY_PRIM, k), ["|"], []);
|
||||
|
||||
integer l = found;
|
||||
for (; l < llGetListLength(SITTERS_IN_PRIM); l++)
|
||||
{
|
||||
if (forSitter == -1 || forSitter == l)
|
||||
{
|
||||
if ((llList2String(SITTER_POSES_IN_PRIM, l) == llList2String(poses, j) || llList2String(poses, j) == "*") && llList2String(SITTERS_IN_PRIM, l) != "")
|
||||
{
|
||||
if (!llList2Integer(REZZED, i))
|
||||
{
|
||||
string uuid;
|
||||
if (forSitter == l)
|
||||
{
|
||||
uuid = llList2String(SITTERS_IN_PRIM,l);
|
||||
}
|
||||
|
||||
// llOwnerSay("===REZ====" + llList2String(SITTER_PROPS_N_POSES, i + 1) + "for uuid:" + uuid);
|
||||
|
||||
// rez our prop
|
||||
llMessageLinked(LINK_THIS, 90220, llList2String(SITTER_PROPS_N_POSES, i + 1), uuid);
|
||||
|
||||
REZZED = llListReplaceList(REZZED, [TRUE, uuid], i, i + 1);
|
||||
}
|
||||
jump done;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (wasRezzed)
|
||||
{
|
||||
string uuid;
|
||||
if (~llList2Integer(SITTER_PROPS_N_POSES, i))
|
||||
{
|
||||
uuid = llList2String(SITTER_PROPS_N_POSES, i);
|
||||
}
|
||||
|
||||
// llOwnerSay("===DEREZ====" + llList2String(SITTER_PROPS_N_POSES, i + 1) + "for uuid:" + uuid);
|
||||
|
||||
// remove our prop
|
||||
llMessageLinked(LINK_THIS, 90220, "remprop_" + llList2String(SITTER_PROPS_N_POSES, i + 1), uuid);
|
||||
|
||||
REZZED = llListReplaceList(REZZED, [FALSE], i, i);
|
||||
}
|
||||
@done;
|
||||
}
|
||||
}
|
||||
|
||||
list fill_array(integer x)
|
||||
{
|
||||
list array;
|
||||
|
||||
integer i;
|
||||
for (; i < x; i++)
|
||||
{
|
||||
array += "";
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
default
|
||||
{
|
||||
state_entry()
|
||||
{
|
||||
REZZED = fill_array(llGetListLength(SITTER_PROPS_N_POSES));
|
||||
}
|
||||
|
||||
link_message(integer sender, integer num, string msg, key id)
|
||||
{
|
||||
// if props were cleared with a BUTTON
|
||||
if (msg == "[CLEAR]")
|
||||
{
|
||||
REZZED = fill_array(llGetListLength(SITTER_PROPS_N_POSES));
|
||||
}
|
||||
// pose played
|
||||
else if (num == 90045)
|
||||
{
|
||||
list data = llParseStringKeepNulls(msg, ["|"], []);
|
||||
integer SITTER_NUMBER = (integer)llList2String(data, 0);
|
||||
string POSE_NAME = llList2String(data, 1);
|
||||
list SITTERS_IN_PRIM = llParseStringKeepNulls(llList2String(data, 4), ["@"], []);
|
||||
list LAST_SITTERS_IN_PRIM;
|
||||
list SITTER_POSES_IN_PRIM;
|
||||
|
||||
integer index = llListFindList(SITTER_PRIMS, [sender]);
|
||||
if (~index)
|
||||
{
|
||||
SITTER_POSES_IN_PRIM = llParseStringKeepNulls(llList2String(SITTER_POSES_BY_PRIM, index), ["|"], []);
|
||||
SITTER_PRIMS = llDeleteSubList(SITTER_PRIMS, index, index);
|
||||
SITTER_POSES_BY_PRIM = llDeleteSubList(SITTER_POSES_BY_PRIM, index, index);
|
||||
LAST_SITTERS_IN_PRIM = llParseStringKeepNulls(llList2String(SITTERS_BY_PRIM, index), ["|"], []);
|
||||
SITTERS_BY_PRIM = llDeleteSubList(SITTERS_BY_PRIM, index, index);
|
||||
|
||||
// if the sitters have swapped, consider any props for the changed sitters derezzed
|
||||
integer i;
|
||||
for (; i < llGetListLength(LAST_SITTERS_IN_PRIM); i++)
|
||||
{
|
||||
if (llList2String(SITTERS_IN_PRIM, i) != llList2String(LAST_SITTERS_IN_PRIM, i))
|
||||
{
|
||||
integer j;
|
||||
for (; j < llGetListLength(SITTER_PROPS_N_POSES); j += 3)
|
||||
{
|
||||
if (llList2Integer(SITTER_PROPS_N_POSES, j) == i)
|
||||
{
|
||||
REZZED = llListReplaceList(REZZED, [FALSE, ""], j, j + 1);
|
||||
// llOwnerSay("rezzed:" + llList2CSV(REZZED));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SITTER_POSES_IN_PRIM = fill_array(llGetListLength(SITTERS_IN_PRIM));
|
||||
}
|
||||
|
||||
SITTER_POSES_IN_PRIM = llListReplaceList(SITTER_POSES_IN_PRIM, [POSE_NAME], SITTER_NUMBER, SITTER_NUMBER);
|
||||
SITTER_PRIMS += sender;
|
||||
SITTER_POSES_BY_PRIM += llDumpList2String(SITTER_POSES_IN_PRIM, "|");
|
||||
SITTERS_BY_PRIM += llDumpList2String(SITTERS_IN_PRIM, "|");
|
||||
|
||||
rez_derez();
|
||||
}
|
||||
// sitter stands
|
||||
else if (num == 90065)
|
||||
{
|
||||
integer index = llListFindList(SITTER_PRIMS, [sender]);
|
||||
if (~index)
|
||||
{
|
||||
list SITTER_POSES_IN_PRIM = llParseStringKeepNulls(llList2String(SITTER_POSES_BY_PRIM, index), ["|"], []);
|
||||
SITTER_POSES_IN_PRIM = llListReplaceList(SITTER_POSES_IN_PRIM, [""], (integer)msg, (integer)msg);
|
||||
SITTER_POSES_BY_PRIM = llListReplaceList(SITTER_POSES_BY_PRIM, [llDumpList2String(SITTER_POSES_IN_PRIM, "|")], index, index);
|
||||
list SITTERS_IN_PRIM = llParseStringKeepNulls(llList2String(SITTERS_BY_PRIM, index), ["|"], []);
|
||||
SITTERS_IN_PRIM = llListReplaceList(SITTERS_IN_PRIM, [""], (integer)msg, (integer)msg);
|
||||
SITTERS_BY_PRIM = llListReplaceList(SITTERS_BY_PRIM, [llDumpList2String(SITTERS_IN_PRIM, "|")], index, index);
|
||||
|
||||
rez_derez();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
changed(integer change)
|
||||
{
|
||||
if (change & CHANGED_LINK)
|
||||
{
|
||||
integer IS_SITTER;
|
||||
|
||||
// someone is sitting
|
||||
if (llGetAgentSize(llGetLinkKey(llGetNumberOfPrims())))
|
||||
{
|
||||
IS_SITTER = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
SITTER_PRIMS = [];
|
||||
SITTER_POSES_BY_PRIM = [];
|
||||
SITTERS_BY_PRIM = [];
|
||||
}
|
||||
|
||||
if (IS_SITTER != ANY_SITTERS)
|
||||
{
|
||||
ANY_SITTERS = IS_SITTER;
|
||||
|
||||
rez_derez();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,179 +0,0 @@
|
|||
/******************************************************************
|
||||
* Shared prop script (alpha) v0.04a
|
||||
* Allows props to be "shared" i.e. props will rez while any one of a number of POSE/SYNC are playing for any avatar.
|
||||
* Also replaces the need for the "Rez Same Prop for Several Poses" script.
|
||||
* Requires [AV]prop script from AVsitter2 box 2.1-09 or later.
|
||||
* Shared props should use PROP3 in the AVpos notecard (a special prop type specifically for shared props).
|
||||
* Shared props can be set up in SITTER 0 section of the AVpos notecard in a regular setup prim, or in a dedicated rezzer prim.
|
||||
* Props for a specific sitter can use PROP, PROP1 or PROP2.
|
||||
* All props referenced by this script should be named different from pose names (unlike basic props, which do have names that match poses).
|
||||
******************************************************************/
|
||||
|
||||
/******************************************************************
|
||||
SITTER_SITTER_PROPS_N_POSES is your list of SITTER#, PROP names, and POSE/SYNC names the props are for.
|
||||
e.g: 0,"weights", "stand1,stand2"
|
||||
|
||||
-1 for SITTER indicates the prop is for all sitters (i.e. shared prop, that should use PROP3 in the AVpos notecard).
|
||||
e.g: -1,"prop1", "sit1,sit2,sit3"
|
||||
|
||||
"*" for POSE name indicates the prop should rez for all poses.
|
||||
******************************************************************/
|
||||
|
||||
list SITTER_PROPS_N_POSES = [
|
||||
-1,"prop1", "sit1,sit2,sit3",
|
||||
-1,"prop2", "sit4,sync2",
|
||||
-1,"prop3", "sync1,sync2",
|
||||
0,"hat", "*",
|
||||
0,"weights", "weights1,weights2",
|
||||
1,"weights", "weights1,weights2"
|
||||
];
|
||||
|
||||
/******************************************************************
|
||||
* DON'T EDIT BELOW THIS UNLESS YOU KNOW WHAT YOU'RE DOING!
|
||||
******************************************************************/
|
||||
|
||||
list SITTER_PRIMS; // which prims have AVsitter setups
|
||||
list SITTER_POSES_BY_PRIM; // which poses are playing for each sitter in each prim
|
||||
list SITTERS_BY_PRIM; // which sitters are occupied in each setup prim
|
||||
|
||||
list REZZED; // which props are rezzed, for which avatars
|
||||
|
||||
integer ANY_SITTERS; // if avatars are sitting
|
||||
|
||||
rez_derez(){
|
||||
integer i;
|
||||
for (i=0;i<llGetListLength(SITTER_PROPS_N_POSES);i+=3){
|
||||
integer wasRezzed=llList2Integer(REZZED,i);
|
||||
integer forSitter = llList2Integer(SITTER_PROPS_N_POSES,i);
|
||||
list poses = llParseString2List(llList2String(SITTER_PROPS_N_POSES,i+2),[","],[]);
|
||||
integer j;
|
||||
for (j=0;j<llGetListLength(poses);j++){
|
||||
integer k;
|
||||
for (k=0;k<llGetListLength(SITTER_PRIMS);k++){
|
||||
list SITTER_POSES_IN_PRIM=llParseStringKeepNulls(llList2String(SITTER_POSES_BY_PRIM,k),["|"],[]);
|
||||
integer index = llListFindList(SITTER_POSES_IN_PRIM,[llList2String(poses,j)]);
|
||||
if(~index || llList2String(poses,j)=="*"){
|
||||
list SITTERS_IN_PRIM=llParseStringKeepNulls(llList2String(SITTERS_BY_PRIM,k),["|"],[]);
|
||||
integer l;
|
||||
for (l=index;l<llGetListLength(SITTERS_IN_PRIM);l++){
|
||||
if(forSitter==-1 || forSitter==l){
|
||||
if((llList2String(SITTER_POSES_IN_PRIM,l)==llList2String(poses,j) || llList2String(poses,j)=="*") && llList2String(SITTERS_IN_PRIM,l)!=""){
|
||||
if(!llList2Integer(REZZED,i)){
|
||||
string uuid;
|
||||
if(forSitter==l){
|
||||
uuid = llList2String(SITTERS_IN_PRIM,l);
|
||||
}
|
||||
//llOwnerSay("===REZ===="+llList2String(SITTER_PROPS_N_POSES,i+1)+"for uuid:"+uuid);
|
||||
llMessageLinked(LINK_THIS,90220,llList2String(SITTER_PROPS_N_POSES,i+1),uuid); // rez our prop.
|
||||
REZZED=llListReplaceList(REZZED,[TRUE,uuid],i,i+1);
|
||||
}
|
||||
jump done;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(wasRezzed){
|
||||
string uuid;
|
||||
if(~llList2Integer(SITTER_PROPS_N_POSES,i)){
|
||||
uuid=llList2String(SITTER_PROPS_N_POSES,i);
|
||||
}
|
||||
//llOwnerSay("===DEREZ===="+llList2String(SITTER_PROPS_N_POSES,i+1)+"for uuid:"+uuid);
|
||||
llMessageLinked(LINK_THIS,90220,"remprop_"+llList2String(SITTER_PROPS_N_POSES,i+1),uuid); // remove our prop.
|
||||
REZZED=llListReplaceList(REZZED,[FALSE],i,i);
|
||||
}
|
||||
@done;
|
||||
}
|
||||
}
|
||||
|
||||
list fill_array(integer x){
|
||||
list array;
|
||||
integer i;
|
||||
for (i=0;i<x;i++){
|
||||
array+="";
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
default{
|
||||
|
||||
state_entry(){
|
||||
REZZED=fill_array(llGetListLength(SITTER_PROPS_N_POSES));
|
||||
}
|
||||
|
||||
link_message(integer sender, integer num, string msg, key id){
|
||||
if(msg=="[CLEAR]"){ // if props were cleared with a BUTTON
|
||||
REZZED=fill_array(llGetListLength(SITTER_PROPS_N_POSES));
|
||||
}
|
||||
else if(num==90045){ // pose played
|
||||
list data = llParseStringKeepNulls(msg,["|"],[]);
|
||||
integer SITTER_NUMBER = (integer)llList2String(data,0);
|
||||
string POSE_NAME = llList2String(data,1);
|
||||
list SITTERS_IN_PRIM = llParseStringKeepNulls(llList2String(data,4),["@"],[]);
|
||||
list LAST_SITTERS_IN_PRIM;
|
||||
list SITTER_POSES_IN_PRIM;
|
||||
integer index = llListFindList(SITTER_PRIMS,[sender]);
|
||||
if(~index){
|
||||
SITTER_POSES_IN_PRIM=llParseStringKeepNulls(llList2String(SITTER_POSES_BY_PRIM,index),["|"],[]);
|
||||
SITTER_PRIMS=llDeleteSubList(SITTER_PRIMS,index,index);
|
||||
SITTER_POSES_BY_PRIM=llDeleteSubList(SITTER_POSES_BY_PRIM,index,index);
|
||||
LAST_SITTERS_IN_PRIM=llParseStringKeepNulls(llList2String(SITTERS_BY_PRIM,index),["|"],[]);
|
||||
SITTERS_BY_PRIM=llDeleteSubList(SITTERS_BY_PRIM,index,index);
|
||||
|
||||
// if the sitters have swapped, consider any props for the changed sitters derezzed
|
||||
integer i;
|
||||
for (i=0;i<llGetListLength(LAST_SITTERS_IN_PRIM);i++){
|
||||
if(llList2String(SITTERS_IN_PRIM,i)!=llList2String(LAST_SITTERS_IN_PRIM,i)){
|
||||
integer j;
|
||||
for (j=0;j<llGetListLength(SITTER_PROPS_N_POSES);j+=3){
|
||||
if (llList2Integer(SITTER_PROPS_N_POSES,j)==i){
|
||||
REZZED=llListReplaceList(REZZED,[FALSE,""],j,j+1);
|
||||
//llOwnerSay("rezzed:"+llDumpList2String(REZZED,","));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
SITTER_POSES_IN_PRIM=fill_array(llGetListLength(SITTERS_IN_PRIM));
|
||||
}
|
||||
SITTER_POSES_IN_PRIM=llListReplaceList(SITTER_POSES_IN_PRIM,[POSE_NAME],SITTER_NUMBER,SITTER_NUMBER);
|
||||
SITTER_PRIMS+=sender;
|
||||
SITTER_POSES_BY_PRIM+=llDumpList2String(SITTER_POSES_IN_PRIM,"|");
|
||||
SITTERS_BY_PRIM+=llDumpList2String(SITTERS_IN_PRIM,"|");
|
||||
|
||||
rez_derez();
|
||||
}
|
||||
else if(num==90065){ // sitter stands
|
||||
integer index = llListFindList(SITTER_PRIMS,[sender]);
|
||||
if(~index){
|
||||
list SITTER_POSES_IN_PRIM=llParseStringKeepNulls(llList2String(SITTER_POSES_BY_PRIM,index),["|"],[]);
|
||||
SITTER_POSES_IN_PRIM=llListReplaceList(SITTER_POSES_IN_PRIM,[""],(integer)msg,(integer)msg);
|
||||
SITTER_POSES_BY_PRIM=llListReplaceList(SITTER_POSES_BY_PRIM,[llDumpList2String(SITTER_POSES_IN_PRIM,"|")],index,index);
|
||||
list SITTERS_IN_PRIM=llParseStringKeepNulls(llList2String(SITTERS_BY_PRIM,index),["|"],[]);
|
||||
SITTERS_IN_PRIM = llListReplaceList(SITTERS_IN_PRIM,[""],(integer)msg,(integer)msg);
|
||||
SITTERS_BY_PRIM = llListReplaceList(SITTERS_BY_PRIM,[llDumpList2String(SITTERS_IN_PRIM,"|")],index,index);
|
||||
rez_derez();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
changed(integer change){
|
||||
if(change & CHANGED_LINK){
|
||||
integer IS_SITTER;
|
||||
if(llGetAgentSize(llGetLinkKey(llGetNumberOfPrims()))){ // someone is sitting
|
||||
IS_SITTER=TRUE;
|
||||
}
|
||||
else{
|
||||
SITTER_PRIMS=[];
|
||||
SITTER_POSES_BY_PRIM=[];
|
||||
SITTERS_BY_PRIM=[];
|
||||
}
|
||||
if(IS_SITTER!=ANY_SITTERS){
|
||||
ANY_SITTERS=IS_SITTER;
|
||||
rez_derez();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue