Jump to content

VirtualKitten

Resident
  • Posts

    916
  • Joined

  • Last visited

Everything posted by VirtualKitten

  1. Hi Frionil Fang, yes its true I only have two entries that i use. But am not using zero entry as it wont work for me oh dear or the child scripts I think you may have the reason silly kitten. for(i=0;i<llGetListLength(pClimbers);i++)
  2. Hmm it still seems to give 1 as only script number [15:31] VK EF Rope 2.14.6: climb num:1 assigned [15:31] VK EF Rope 2.14.6: id:1:Start,Animation|bottom|<-0.20,-0.1,0.0>|4|2|climb rope 6 hands wider [15:31] VK EF Rope 2.14.6: in set up,e5279b30-d4eb-4c1c-bb16-60fb118af213, Event_id 1 [15:31] VK EF Rope 2.14.6: id:1:Animation,Started [15:31] VK EF Rope 2.14.6: id:1:Change,Animation|climb rope 6 hands wider [15:31] VK EF Rope 2.14.6: Agent-pos:<206.44740, 185.20080, 2701.34600> [15:31] VK EF Rope 2.14.6: ,e5279b30-d4eb-4c1c-bb16-60fb118af213 [15:31] VK EF Rope 2.14.6: climb num:1 assigned [15:31] VK EF Rope 2.14.6: id:1:Start,Animation|bottom|<-0.20,-0.0,0.0>|4|2|climb rope 3 hands wider
  3. Hi thanks again for helping me.I think your suggesting pClimbers =llListReplaceList(pClimbers,[id],Event_id,); The Event Id is always animNum so script Climber 1 its one and script Climber 2 its two / Get our unique code to sent messages through. animNum = (integer)llGetSubString(llGetScriptName(),8,llStringLength(llGetScriptName()));
  4. uh I am not sure I understand either of you sorry my head is fried today . I walk you through it . pClimber is tracking the keys in the seat which is numbered from the climbers 1 , climber 2 etc list line 1 , 2 0 being not used one gets jumped off then its found by -1 key detection in climber 01 in line in do_climb_rope() Were it is if(link == -1) {llOwnerSay("Climber got of the rope. "+(string)pKey); llMessageLinked(LINK_THIS,animNum,"Animation,Stopped",climber);llResetScript(); return;} Then caught in main script in link_message link_message(integer SendersLink, integer Event_id, string data , key id) { //llOwnerSay("Main, id:"+(string)Event_id+":"+data); list p = llParseString2List(data,["|"],[]); if(Event_id==-100) { CheckAgentPosition((key)llList2String(p,0),(vector)llList2String(p,1)); } if(data=="Reset,All"){llResetScript();} if(data=="Animation,Started") { pClimbers =llListReplaceList(pClimbers,[id],Event_id,1); llOwnerSay(" in set up"+llDumpList2String(pClimbers,",")+", Event_id "+(string)Event_id); string name=llKey2Name(id); // if(name!=""){llOwnerSay(name + " has started climbing.");} if(start && anim!="") { // llStopAnimation(anim); llStartAnimation(anim); llMessageLinked(LINK_ROOT,Event_id,"Change,Animation|"+anim,id); } } if(data=="Animation,Stopped") { string name=llKey2Name(llList2Key(pClimbers,Event_id)); //if(name!=""){llOwnerSay(name + " has stopped climbing."); } pClimbers=llListReplaceList(pClimbers,[""],Event_id,Event_id); } } }
  5. Profaitchikenz Haiku Hi again. thanks for looking at this . I have re written my scripts as nothing has worked to date but am still not able to get two agents moving at same time in different scripts with llSetLinkPrimitiveParamsFast(link, I cannot find what is not happening with it . I think that the only thing that can be happing is that they are assigned same script but as all children scripts are named climber 1 .., climber 2 the id is retreived from this name and used by main script as identifier . As is clear in script. I have attached child doll climber which transverses rope both up and down and getting off with single person here : //start_unprocessed_text /*/|/Drag multiple copies into prim. # of copies=number of people */ //end_unprocessed_text //nfo_preprocessor_version 0 //program_version Firestorm-Release 6.5.3.65658 - Denise Rose //mono integer toggle; integer animNum; string pAnim; string anim; string pStr = ""; string pLoc = ""; vector pPos = ZERO_VECTOR; vector pSit_Pos = ZERO_VECTOR; rotation pSit_Rot= ZERO_ROTATION; vector pEnd_Pos = ZERO_VECTOR; rotation pEnd_Rot= ZERO_ROTATION; integer pEnd_link = -1; integer pSit_link = -1; key pEnd_Key = NULL_KEY; key pSit_Key = NULL_KEY; key pKey = NULL_KEY; string pTwist=""; integer link; key climber=NULL_KEY; integer _llObtainLinkFromKey(key l_key) { integer l_i = llGetNumberOfPrims(); if(llGetLinkKey(l_i ) == l_key) return l_i; for(; l_i--;) { if(llGetLinkKey(l_i ) == l_key) return l_i; } return -1; } do_climb_rope() { llSetTimerEvent(0); if( llGetAgentSize(pKey)==ZERO_VECTOR) { llOwnerSay("Stopping Animation");llStopAnimation(anim);llUnSit(pKey); llMessageLinked(LINK_SET,animNum,"Reset,All",llGetKey());return;} link = _llObtainLinkFromKey(pKey); if(link == -1) {llOwnerSay("Climber got of the rope. "+(string)pKey); llMessageLinked(LINK_THIS,animNum,"Animation,Stopped",climber);llResetScript(); return;} if(pLoc == "bottom") { if(llVecDist(pEnd_Pos, (pSit_Pos+pPos-<0.0,0.0,1.0>)) < 0.5) { llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL,( pSit_Pos+ pPos+<-1.5,0.0,-1.0>),PRIM_ROT_LOCAL,pSit_Rot*llEuler2Rot(DEG_TO_RAD*<0.0,0.0,270.0>)]); llMessageLinked(LINK_THIS,animNum,"Animation,Stopped",climber); //llResetScript(); return; } pPos.z+=0.5; llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, pSit_Pos+(vector)pPos,PRIM_ROT_LOCAL,(pSit_Rot*llEuler2Rot(DEG_TO_RAD*(vector)pTwist))]); } else if(pLoc="top") { if(llVecDist((pEnd_Pos+pPos+<0.0,0.0,-1.5>), pSit_Pos) < 0.5) { llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL,( pEnd_Pos+ pPos+<-1.0,0.0,1.0>),PRIM_ROT_LOCAL,(pEnd_Rot*llEuler2Rot(DEG_TO_RAD*(vector)pTwist))]); llMessageLinked(LINK_SET,animNum,"Stop,Animation",pKey); return; } pPos.z-=0.5; llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, pEnd_Pos+(vector)pPos,PRIM_ROT_LOCAL,(pEnd_Rot*llEuler2Rot(DEG_TO_RAD*(vector)pTwist))]); } if( llGetNumberOfPrims() > llGetObjectPrimCount( llGetKey() ) ) llSetTimerEvent( 1.0 ); else llSetTimerEvent(0); } default { state_entry() { pStr = ""; pLoc = ""; pPos = ZERO_VECTOR; pSit_Pos = ZERO_VECTOR; pSit_Rot= ZERO_ROTATION; pEnd_Pos = ZERO_VECTOR; pEnd_Rot= ZERO_ROTATION; pEnd_link = -1; pSit_link = -1; pEnd_Key = NULL_KEY; pSit_Key = NULL_KEY; pKey = NULL_KEY; pTwist=(string)ZERO_VECTOR; link =-1; climber=NULL_KEY; llSetTimerEvent(0); // Get our unique code to sent messages through. animNum = (integer)llGetSubString(llGetScriptName(),8,llStringLength(llGetScriptName())); llSay(0," • Climber " + (string)animNum+ " active"); } on_rez(integer start_param) { } link_message(integer sender, integer num, string str, key id) { if(num == -100) return; // not for us in the message handler. if(num != animNum) return; // not our seat do nothing. llOwnerSay("id:"+(string)num+ ":"+str); list p = llParseString2List(str,["|"],[]); pStr = llList2String(p,0); list L = llGetLinkPrimitiveParams( pSit_link,[PRIM_POS_LOCAL,PRIM_ROT_LOCAL]); pSit_Pos = llList2Vector(L,0); pSit_Rot = llList2Rot(L,1); L = llGetLinkPrimitiveParams( pEnd_link,[PRIM_POS_LOCAL,PRIM_ROT_LOCAL]); pEnd_Pos = llList2Vector(L,0); pEnd_Rot = llList2Rot(L,1); if(pStr=="Reset,All"){llResetScript();} if(pStr=="Stop,All" && climber!=NULL_KEY) { if(anim!=""){llStopAnimation(anim);} climber=NULL_KEY; } if(pStr=="Start,Animation" && climber==NULL_KEY) { pLoc = llList2String(p,1); pPos = (vector) llList2String(p,2); pSit_link = llList2Integer(p,3); pEnd_link =llList2Integer(p,4); pKey = id; pAnim = llList2String(p,5); if(llGetAgentSize(id)!=ZERO_VECTOR){ llRequestPermissions(id,PERMISSION_TRIGGER_ANIMATION | PERMISSION_CONTROL_CAMERA); } } if(pStr=="Stop,Animation" && climber!=NULL_KEY ) { if(anim!="") { llStopAnimation(anim); llUnSit(pKey); llMessageLinked(LINK_THIS,animNum,"Animation,Stopped",climber); llInstantMessage(climber,"You have stopped climbing" ); climber=NULL_KEY; pKey= NULL_KEY; } } if(pStr=="Change,Animation" && climber!=NULL_KEY) { pAnim = llList2String(p,1); if(llGetAgentSize(climber)!=ZERO_VECTOR ) { if(anim!=""){llStopAnimation(anim);} anim=(string) pAnim; llStartAnimation(anim); } else { llMessageLinked(LINK_THIS,animNum,"Animation,Stopped",climber); } } if(pStr=="Pause,Animation" && climber!=NULL_KEY) { if(anim!=""){llStopAnimation(anim);} } } timer() { do_climb_rope(); } run_time_permissions(integer perm) { if(perm & PERMISSION_TRIGGER_ANIMATION) { if(climber==NULL_KEY) { climber=llGetPermissionsKey(); llMessageLinked(LINK_ROOT,animNum,"Animation,Started",climber); if(pLoc == "bottom") llInstantMessage(climber,"You have started climbing" ); else llInstantMessage(climber,"You have started descending" ); llSetTimerEvent(1.0); } } else { llMessageLinked(LINK_ROOT,animNum,"Animation,Stopped",climber); llSetTimerEvent(0); llUnSit(climber); climber=NULL_KEY; } if (perm & PERMISSION_CONTROL_CAMERA) { llClearCameraParams(); if (toggle = !toggle) { // behind llSetCameraParams([ CAMERA_ACTIVE, 1, CAMERA_FOCUS, llGetPos(), CAMERA_POSITION, llGetPos() + (<-3.0, 0.0, 0.5> * llGetRot()), CAMERA_POSITION_LOCKED, TRUE ]); } else { // infront llSetCameraParams([ CAMERA_ACTIVE, 1, CAMERA_FOCUS, llGetPos(), CAMERA_POSITION, llGetPos() + (<3.0, 0.0, 0.5> * llGetRot()), CAMERA_POSITION_LOCKED, TRUE ]); } } } } My Main script is much slimmed down and I have placed llSensor local to ends in seperate scripts just posting link messages to main script , so that it does not have to check 64m. This appears to work for a single agent up and down . However the main script is supposed to provide a new script to run the new climber this is obtained from script name and defaults to script assigned by changed . I am unsure why when with two child scripts . The first climber climbs and the second sits and waits until first has left the script it was running in and then the next climber climbs this would be fantastic if this was the intent . I am running out of ideas why this is not working . I wonder if the are assigned same script but it does not appear to be the case. as I am not selling this I would welcome any help. changed(integer change) { vector avPos; rotation avRot; key agent = llGetLinkKey(llGetNumberOfPrims()); if(change & CHANGED_LINK) { if( llGetAgentSize(agent)==ZERO_VECTOR) {;return;} // llOwnerSay("Got Changed:"+(string)agent); key found_me = Check_4_KeyNot_Linked(); if(found_me == NULL_KEY && agent == NULL_KEY) { i = Line_Check_4_LastKeyNot_Linked(); if(llGetNumberOfPrims() == llGetObjectPrimCount(llGetKey())) { llMessageLinked(LINK_SET,llListFindList([pClimbers],[agent]),"Stop,Animation",agent); llOwnerSay("didnt find me sitting, please try again. "); jump exit2; } } //llOwnerSay("Got to find me :"+(string)agent+", List of agents "+llDumpList2String(near_me,";")); if(llGetListLength(near_me) == 0) {llInstantMessage(agent,"Please come closer to the Rope and try again.");llUnSit(agent);return;} //link = llGetNumberOfPrims(); Agent_Pos = (vector)llList2String(near_me,llListFindList(near_me,[agent])+1); if(Agent_Pos== ZERO_VECTOR && agent != NULL_KEY) { if( agent= NULL_KEY) llOwnerSay(" Please come closer to the rope. we could notfind your location at either end of the rope."); if(llGetNumberOfPrims() > llGetObjectPrimCount(llGetKey())+1) llOwnerSay("Re-setting cant find second avatar"); llResetScript(); llMessageLinked(LINK_SET,llListFindList([pClimbers],[agent]),"Stop,Animation",agent); llOwnerSay("Please come closer to the rope , and try again. : "+(string)agent); jump exit2; } llOwnerSay("Agent-pos:"+(string)Agent_Pos); if(llVecDist(Agent_Pos, (llGetPos()+Sit_Pos)) < 6.0) { m_seat="bottom"; if( llGetAgentSize(agent)!=ZERO_VECTOR) llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, Sit_Pos,PRIM_ROT_LOCAL,Sit_Rot]); //ControlCamera((vector)llList2String( llGetLinkPrimitiveParams(check_for_prim("bottom_seat#5"),[PRIM_POSITION]),0)); } else { m_seat = "top"; if( llGetAgentSize(agent)!=ZERO_VECTOR)llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, End_Pos,PRIM_ROT_LOCAL,End_Rot]); } integer j = llGetNumberOfPrims()-1; temp = Create_random_List_from_settings(anim_default); integer link =llGetNumberOfPrims(); if(_debug) llOwnerSay("DEBUG: line 706 CHANGED"+(string)llDumpList2String(temp,"|")); if(m_seat == "bottom") { llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL,(( Sit_Pos+ (vector)llJsonGetValue(SEATS_data,["seat"+(string)i,"pos"])+<-0.0,0.0,0.0>)),PRIM_ROT_LOCAL,Sit_Rot*llEuler2Rot(DEG_TO_RAD*<0.0,0.0,270.0>)]); if(find_anyone_up_or_down( agent,"top") == NULL_KEY) { llMessageLinked(LINK_SET,llListFindList([pClimbers],[agent]),"Stop,Animation",agent); llSay(0, "There are other forest folk comming down the rope please wait for them before climbing the rope , then please try again."); return; } } else { llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL,(( End_Pos+ (vector)llJsonGetValue(SEATS_data,["seat"+(string)i,"pos"])+<-0.0,0.0,0.0>)),PRIM_ROT_LOCAL,End_Rot*llEuler2Rot(DEG_TO_RAD*<0.0,0.0,270.0>)]); if(find_anyone_up_or_down( agent,"bottom") == NULL_KEY) { llMessageLinked(LINK_SET,llListFindList([pClimbers],[agent]),"Stop,Animation",agent); llSay(0, "There are other forest folk comming up the rope please wait for them before descending the rope , then please try again."); return; } } output = [(vector)llList2String(temp,0),(vector)llList2String(temp,1),llList2String(temp,3)]; llOwnerSay(""+llDumpList2String(pClimbers,",")); integer ii=llListFindList(pClimbers,[agent]); if(ii==-1) { for(i=1;i<llGetListLength(pClimbers);i++) { if(llList2String(pClimbers,i)=="") { pClimbNum=i; pClimbers=llListReplaceList(pClimbers,[(string)i],pClimbNum,pClimbNum); i=99; } } llOwnerSay("climb num:"+(string)pClimbNum+" assigned"); anim = llList2String(temp,3); string op = "Start,Animation|"+m_seat+"|"+llList2String(temp,0)+"|"+(string)bottom_seat+"|"+(string)top_seat+"|"+anim; // llOwnerSay("op: "+op); llMessageLinked(LINK_ROOT,pClimbNum,op,agent); } } @exit2; } Thanks for looking {{Hugs}} D
  6. Yes I did that llOwnerSay("top seat"+(string)top_seat+", bottom seat "+(string)bottom_seat+"Seat:"+m_seat+", pPos: " +(string)llList2String(temp,0)+", clibNum: "+(string)pClimbNum); string op = "Start,Animation|"+m_seat+"|"+llList2String(temp,0)+"|"+(string)bottom_seat+"|"+(string)top_seat+"|"+llList2String(temp,3); llOwnerSay("op: "+op); llMessageLinked(LINK_THIS,pClimbNum,op,agent); got printed result the same mess with this strange key arriving is LL broken ? [08:07] VK EF Rope 2.14 [6 seats]: op: Start,Animation|bottom|<-0.20,-0.1,0.0>|4|2|climb rope 6 hands wider [08:07] VK EF Rope 2.14 [6 seats]: str: Start,Animation|bottom|<-0.20,-0.1,0.0>|4|2|climb rope 6 hands wider [08:07] VK EF Rope 2.14 [6 seats]: Type:Start,Animation, Loc:bottom, pPos:<-0.20000, -0.10000, 0.00000>, Sit Link4, End Link:2 [08:07] VK EF Rope 2.14 [6 seats]: str: c14f48db-464c-4ccb-af11-8b58e78d6aa0|<222.48190, 31.42582, 3499.74700> [08:07] VK EF Rope 2.14 [6 seats]: Type:c14f48db-464c-4ccb-af11-8b58e78d6aa0, Loc:<222.48190, 31.42582, 3499.74700>, pPos:<0.00000, 0.00000, 0.00000>, Sit Link0, End Link:0
  7. Well I gave up with that one in main script and tried to use my working dance script converted for this I added the handing and commented out the old creating new climber01 script as it could not keep up with the timer and llSensorRepeat there is only a llSensorRepeat in main script file recording the position of avatar in near_me a maximum of ten this is the changed section : list pClimbers = ["","","","","","","","","","","","","","","","","","","",""]; integer pClimbNum; changed(integer change) { vector avPos; rotation avRot; key agent = llGetLinkKey(llGetNumberOfPrims()); if(change & CHANGED_LINK) { llOwnerSay("Got Changed:"+(string)agent); key found_me = Check_4_KeyNot_Linked(); if(found_me == NULL_KEY && agent == NULL_KEY) { i = Line_Check_4_LastKeyNot_Linked(); SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"key"],"empty"); if(_debug) llOwnerSay("Got up :"+ SEATS_data + "The line was :" +(string)i); if(llGetNumberOfPrims() == llGetObjectPrimCount(llGetKey())) llResetScript(); llOwnerSay("didnt find me"); jump exit2; } llOwnerSay("Got to find me :"+(string)agent); link = llGetNumberOfPrims(); Agent_Pos = (vector)llList2String(near_me,llListFindList(near_me,[agent])+1); if(Agent_Pos== ZERO_VECTOR && agent != NULL_KEY) { if( agent= NULL_KEY) llOwnerSay(" Please come closer to the rope. we could notfind your location at either end of the rope."); if(llGetNumberOfPrims() > llGetObjectPrimCount(llGetKey())+1) llOwnerSay("Re-setting cant find second avatar"); Reset(); llOwnerSay("Resetting:"+(string)agent); jump exit2; } llOwnerSay("Agent-pos:"+(string)Agent_Pos); if(llVecDist(Agent_Pos, (llGetPos()+Sit_Pos)) < 6.0) { m_seat="bottom"; if( llGetAgentSize(agent)!=ZERO_VECTOR) llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, Sit_Pos,PRIM_ROT_LOCAL,Sit_Rot]); //ControlCamera((vector)llList2String( llGetLinkPrimitiveParams(check_for_prim("bottom_seat#5"),[PRIM_POSITION]),0)); } else { m_seat = "top"; if( llGetAgentSize(agent)!=ZERO_VECTOR)llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, End_Pos,PRIM_ROT_LOCAL,End_Rot]); } integer j = llGetNumberOfPrims()-1; output = getFreeSeat(); if(output!=["full"]&&output!=["none"]) { llOwnerSay("Got seat from get FreeSeat"); temp = Create_random_List_from_settings(anim_default); integer link =llGetNumberOfPrims(); if(_debug) llOwnerSay("DEBUG: line 706 CHANGED"+(string)llDumpList2String(temp,"|")); if(m_seat == "bottom") { llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL,(( Sit_Pos+ (vector)llJsonGetValue(SEATS_data,["seat"+(string)i,"pos"])+<-0.0,0.0,0.0>)),PRIM_ROT_LOCAL,Sit_Rot*llEuler2Rot(DEG_TO_RAD*<0.0,0.0,270.0>)]); if(find_anyone_up_or_down( agent,"top") == NULL_KEY) { llUnSit(agent); llSay(0, "There are other forest folk comming down the rope please wait for them before climbing the rope , then please try again."); return; } } else { llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL,(( End_Pos+ (vector)llJsonGetValue(SEATS_data,["seat"+(string)i,"pos"])+<-0.0,0.0,0.0>)),PRIM_ROT_LOCAL,End_Rot*llEuler2Rot(DEG_TO_RAD*<0.0,0.0,270.0>)]); if(find_anyone_up_or_down( agent,"bottom") == NULL_KEY) { llUnSit(agent); llSay(0, "There are other forest folk comming up the rope please wait for them before descending the rope , then please try again."); return; } } // if(llGetListLength(avatar_climbers)==0) avatar_climbers=[]+agent; // else if (llListFindList(avatar_climbers,[agent])!=-1 ) avatar_climbers = avatar_climbers +agent; SEATS_data=llJsonSetValue(SEATS_data,["seat"+(string)i,"anim"],(string)llList2String(temp,3)); SEATS_data=llJsonSetValue(SEATS_data,["seat"+(string)i,"twist"],(string)llList2String(temp,1)); SEATS_data=llJsonSetValue(SEATS_data,["seat"+(string)i,"pos"],(string)llList2String(temp,0)); SEATS_data=llJsonSetValue(SEATS_data,["seat"+(string)i,"loc"],(string)m_seat); output = [(vector)llList2String(temp,0),(vector)llList2String(temp,1),llList2String(temp,3)]; integer ii=llListFindList(pClimbers,[llDetectedKey(0)]); if(ii==-1) { for(i=0;i<llGetListLength(pClimbers);i++) { if(llList2String(pClimbers,i)=="") { pClimbNum=i; pClimbers=llListReplaceList(pClimbers,["0"],i,i); i=99; } } //llSetTimerEvent(60.0); llOwnerSay("top seat"+(string)top_seat+", bottom seat "+(string)bottom_seat+"Seat:"+m_seat+", pPos: " +(string)llList2String(temp,0)+", clibNum: "+(string)pClimbNum); llMessageLinked(LINK_THIS,pClimbNum,"Start,Animation|"+m_seat+"|"+llList2String(temp,0)+"|"+(string)bottom_seat+"|"+(string)top_seat+"|"+llList2String(temp,3),agent); } // |||| Not used to clim Doll scripts insted |||| // if( llGetNumberOfPrims() > llGetObjectPrimCount( llGetKey() ) ) // llSetTimerEvent( 1.2 ); // else llSetTimerEvent(0); // llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_CONTROL_CAMERA); } This seemed ok now I am running into link messages not coming through as sent I have in climber1 link_message(integer sender, integer num, string str, key id) { llOwnerSay("str: " + str); list p = llParseString2List(str,["|"],[]); pStr = llList2String(p,0); pLoc = llList2String(p,1); pPos = (vector) llList2String(p,2); pSit_link = llList2Integer(p,3); pEnd_link =llList2Integer(p,4); pKey = id; anim=(string)llList2String(p,5); list L = llGetLinkPrimitiveParams( pSit_link,[PRIM_POS_LOCAL,PRIM_ROT_LOCAL]); pSit_Pos = llList2Vector(L,0); pSit_Rot = llList2Rot(L,1); L = llGetLinkPrimitiveParams( pEnd_link,[PRIM_POS_LOCAL,PRIM_ROT_LOCAL]); pEnd_Pos = llList2Vector(L,0); pEnd_Rot = llList2Rot(L,1); llOwnerSay("Type:"+pStr+", Loc:"+pLoc+", pPos:" +(string)pPos+", Sit Link"+ (string)pSit_link+", End Link:"+(string)pEnd_link); return; When running this it is noticeable a key comes in here and to be honest messes the whole thing up I tested as you saw what went into this link message and it is printed out at line 487: [07:39] VK EF Rope 2.14 [6 seats]: Type:Start,Animation, Loc:bottom, pPos:<-0.20000, -0.00000, 0.00000>, Sit Link4, End Link:2 Now in the Climber1 script . This prints the received string in link_message as something completely different printing out at line 72 : [07:39] VK EF Rope 2.14 [6 seats]: str: c14f48db-464c-4ccb-af11-8b58e78d6aa0|<222.48190, 31.42582, 3499.74700> [07:39] VK EF Rope 2.14 [6 seats]: Type:c14f48db-464c-4ccb-af11-8b58e78d6aa0, Loc:<222.48190, 31.42582, 3499.74700>, pPos:<0.00000, 0.00000, 0.00000>, Sit Link0, End Link:0 As you an see this is complete rubbish is scripting in LSL useless now as I seem to be finding a silly amount of problems? Where is this key coming from which should not be there in the linkedMessage text? Hugs Dx
  8. Well I moved everything in change to try and remove the extra procedure that was not functioning and will try again changed(integer change) { vector avPos; rotation avRot; key agent = llGetLinkKey(llGetNumberOfPrims()); if(change & CHANGED_LINK) { llOwnerSay("Got Changed:"+(string)agent); key found_me = Check_4_KeyNot_Linked(); if(found_me == NULL_KEY && agent == NULL_KEY) { i = Line_Check_4_LastKeyNot_Linked(); SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"key"],"empty"); if(_debug) llOwnerSay("Got up :"+ SEATS_data + "The line was :" +(string)i); if(llGetNumberOfPrims() == llGetObjectPrimCount(llGetKey())) llResetScript(); llOwnerSay("didnt find me"); jump exit2; } llOwnerSay("Got to find me :"+(string)agent); link = llGetNumberOfPrims(); Agent_Pos = (vector)llList2String(near_me,llListFindList(near_me,[agent])+1); if(Agent_Pos== ZERO_VECTOR && agent != NULL_KEY) { if( agent= NULL_KEY) llOwnerSay(" Please come closer to the rope. we could notfind your location at either end of the rope."); if(llGetNumberOfPrims()+1 > llGetObjectPrimCount(llGetKey())) llOwnerSay("Resetting cant find second avatar"); Reset(); jump exit2; } llOwnerSay("Agent-pos:"+(string)Agent_Pos); if(llVecDist(Agent_Pos, (llGetPos()+Sit_Pos)) < 6.0) { seat="bottom"; if( llGetAgentSize(agent)!=ZERO_VECTOR) llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, Sit_Pos,PRIM_ROT_LOCAL,Sit_Rot]); //ControlCamera((vector)llList2String( llGetLinkPrimitiveParams(check_for_prim("bottom_seat#5"),[PRIM_POSITION]),0)); } else { seat = "top"; if( llGetAgentSize(agent)!=ZERO_VECTOR)llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, End_Pos,PRIM_ROT_LOCAL,End_Rot]); } llOwnerSay("seats:"+(string)SEATS_data+"/nCLimbers:"+ llDumpList2String(avatar_climbers,",")); llOwnerSay("Current memory: " + (string)llGetUsedMemory()); llOwnerSay("Near Me:"+llDumpList2String(near_me,",")); integer j = llGetNumberOfPrims()-1; output = getFreeSeat(); if(output!=["full"]&&output!=["none"]) { llOwnerSay("Got seat from get FreeSeat"); i = _Get_Key_Seat(agent); temp = Create_random_List_from_settings(anim_default); integer link =llGetNumberOfPrims(); if(_debug) llOwnerSay("DEBUG: line 706 CHANGED"+(string)llDumpList2String(temp,"|")); if(seat == "bottom") { SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"loc"],"bottom"); if(find_anyone_up_or_down( agent,"top") == NULL_KEY) { llUnSit(agent); llSay(0, "There are other forest folk comming down the rope please wait for them before climbing the rope , then please try again."); return; } } else { SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"loc"],"top"); if(find_anyone_up_or_down( agent,"bottom") == NULL_KEY) { llUnSit(agent); llSay(0, "There are other forest folk comming up the rope please wait for them before descending the rope , then please try again."); return; } } if(llGetListLength(avatar_climbers)==0) avatar_climbers=[]+agent; else if (llListFindList(avatar_climbers,[agent])!=-1 ) avatar_climbers = avatar_climbers +agent; SEATS_data=llJsonSetValue(SEATS_data,["seat"+(string)i,"anim"],(string)llList2String(temp,3)); SEATS_data=llJsonSetValue(SEATS_data,["seat"+(string)i,"twist"],(string)llList2String(temp,1)); SEATS_data=llJsonSetValue(SEATS_data,["seat"+(string)i,"pos"],(string)llList2String(temp,0)); SEATS_data=llJsonSetValue(SEATS_data,["seat"+(string)i,"loc"],(string)seat); output = [(vector)llList2String(temp,0),(vector)llList2String(temp,1),llList2String(temp,3)]; if( llGetNumberOfPrims() > llGetObjectPrimCount( llGetKey() ) ) llSetTimerEvent( 1.5 ); else llSetTimerEvent(0); llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_CONTROL_CAMERA); } else {llOwnerSay("Got no seat from get FreeSeat"); llUnSit(agent);} } @exit2; }
  9. When the timer is moving the other avatar it wont do any thing else to other one I thought this was supposed to be multi processed. my timer set to 1 s set it to 3 s and llSensorRepeat set to 3
  10. Yes but the second person sits in the middle nothing is printed
  11. Yes its in my changed but it only works with one avatar going up and down any ideas why when two sit on it these llOwnerSay don't get printed out and the second just sits there ? like the script is not running The llSensorRepeat is finding the avatar firing CheckAgentPosition and placing them in near_me so how and why is it failing please with second avatar? CheckAgentPosition(key agent,vector agentpos) { integer f = llListFindList(near_me,[agent]); if(f!=-1) near_me = llListReplaceList(near_me,[agentpos],f+1,1) ; else { near_me = near_me + agent; near_me = near_me + agentpos; } //llOwnerSay("New Script:"+llDumpList2String(near_me,",")); if (llGetListLength (near_me) == 10 )near_me = llDeleteSubList(near_me, 0, 1); } Hugs D
  12. Furher more i know have a solution that works up and down and even though there is abundance of seats this doesnt fire when a second avatar sits I have put llLOwnerSay in but it doesn't seem to reach this vector avPos; rotation avRot; key agent = llGetLinkKey(llGetNumberOfPrims()); if(change & CHANGED_LINK) { key found_me = Check_4_KeyNot_Linked(); if(found_me == NULL_KEY) { i = Line_Check_4_LastKeyNot_Linked(); SEATS_data = llJsonSetValue(SEATS_data,["seat"+(string) i,"key"],"empty"); if(_debug) llOwnerSay("Got up :"+ SEATS_data + "The line was :" +(string)i); if(llGetNumberOfPrims() == llGetObjectPrimCount(llGetKey())) llResetScript(); jump exit2; } link = llGetNumberOfPrims(); Agent_Pos = (vector)llList2String(near_me,llListFindList(near_me,[agent])+1); if(Agent_Pos== ZERO_VECTOR && agent != NULL_KEY) { if( agent= NULL_KEY) llOwnerSay(" Please come closer to the rope. we could not find your location at either end of the rope."); Reset(); jump exit2; } llOwnerSay("Agent-pos:"+(string)Agent_Pos); if(llVecDist(Agent_Pos, (llGetPos()+Sit_Pos)) < 6.0) { seat="bottom"; if( llGetAgentSize(agent)!=ZERO_VECTOR) llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, Sit_Pos,PRIM_ROT_LOCAL,Sit_Rot]); //ControlCamera((vector)llList2String( llGetLinkPrimitiveParams(check_for_prim("bottom_seat#5"),[PRIM_POSITION]),0)); } else { seat = "top"; if( llGetAgentSize(agent)!=ZERO_VECTOR)llSetLinkPrimitiveParamsFast(link,[PRIM_POS_LOCAL, End_Pos,PRIM_ROT_LOCAL,End_Rot]); } llOwnerSay("seats:"+(string)SEATS_data+"/nCLimbers:"+ llDumpList2String(avatar_climbers,",")); llOwnerSay("Current memory: " + (string)llGetUsedMemory()); llOwnerSay("Near Me:"+llDumpList2String(near_me,",")); integer j = llGetNumberOfPrims()-1;
  13. Hmm ok I dumped my code and re wrote it last week with llSensor Repeat to detect present and vector location of climber. This worked and was more definitive that i scrubbed a lot of code which was trying to doing the same thing . There has been no answer in relation to why the second script at post one posts the seat even if its disabled . I have noticed some improvement in script s running performance which was always system erroring. It seems more stable with less lines of code I was at 800 and now at 511. The script memory has not changed. I expected it to go up . It must depend on other things. I have one last piece of code to change as my code is not locating new climbers when a new person sits which allows only one siter . I thought this was my climb routine but it seems the additional climbers are not being added in I am not sure why at present. I have a feeling that change is running more than twice for one climber sit and unsit.
  14. in fact to just note default { changed { llSensor("",agent,AGENT,1.5,PI); } sensor (integer numDetected) { Agent_Pos = (vector)llList2String(llGetObjectDetails( llDetectedKey(0), [OBJECT_POS] ),0); CheckAgentPosition(); } Gave very same top vector of the rope as the agent vector position as well, even though i sat on opposite end.
  15. Well if i get vector Agent_Pos = (vector)llList2String(llGetObjectDetails( agent, [OBJECT_POS] ),0); at start of changed it gives me when I click seat only the location in Agent_Pos at the furthest end of the rope at the top not where I am before I click . It seems the only way left is a llSensor to detect position prior to the click Seat which is extremally frustrating. Which we are not supposed to use as they cause lag
  16. Oh so I now disabled this script section above and ran it for you as I am trying to sort this all out as you can see when I click on rope it assigns a seat based on some not logical way you can see this here. e.g. I am at the bottom of the rope and I click the rope as it doesn't know where I clicked i.e. llDetectedTouchST( integer index ); As there is no touch on sits ,which does not seem available in LSL which is another flaw . I can only determine where it is located from the seats given location. Which nonsensible in this case is one of the seats at the top when I am at bottom Example https://i.gyazo.com/d4cd1ea2053b0dd4ed7c14fa2fda9a05.mp4 I could presumably use llSensor to detect avatar around that end and log their vector positions before a touch which seems a bit overkill and a mass memory user ?
  17. arton Rotaru Oh sighs please look up the English dictionary for the word 'disabled' . If it blocked why does it not block it, or the avatar from using it as a seat points, it clearly tries to seat the avatar not block it . Points 1 , 2, 3 still ignored not answered , do you read what I am writing or just bumble along please go play with your LSL ladder if you are not here to help. As I said above and I am again repeating myself again! For the second time at the point of writing the wiki page gives no clarity on what I asked you why would I bother to persist with this if I had this working as expected. Personally I am not receiving any financial reward for writing this . I am just giving it to friends at my own cost . I don't meant to be rude but you are adding nothing on these points I know exactly what you have said and it does not concur with my model testing . You said " I know what I am doing" is that to frustrate me further?
  18. Hmm well I changed that line to if(llAvatarOnLinkSitTarget(1)){ llSetLinkPrimitiveParamsFast(llGetNumberOfPrims(), [PRIM_POS_LOCAL, (Sit_Pos + <0.0, 0.0, 0.0>), PRIM_ROT_LOCAL, Sit_Rot]); llUnSit(llGetLinkKey(llGetNumberOfPrims())); llSay(0,"You cannot sit on rope root prim. line 553"); return; } but occasionally it still flies to mid point it should reman on bottom or al location of Sit_Pos Thanks Molly noted and changed. Thankyou {{Hugs}} 1) Well there has been no answer why the script finds the seat, which I point out did not write and clearly prints out all available seats when they are disabled. You seemed again to have missed this point and are now digressing to experiences which I don't know of anyone that uses it because its for the rich only and only comes with paid membership perhaps that's why no one currently codes with it. 2) Next the PRIM_SCRIPTED_SIT_ONLY does strange things. If used in conjunction with PRIM_SIT_TARGET in the script I gave you it reverses the use of PRIM_SCRIPTED_SIT_ONLY something you have not noticed. Hence why all mine are set to FALSE to get correct sitting link seats. How do you think this script 'which has been ignored multiple times' gets all the seats when they are clearly disabled with PRIM_SCRIPTED_SIT_ONLY If I set the later ones I want as seats in the loop it informs me there is no longer a seat available when I try to sit on one that should by your own words written multiple occasions I am to getting tied of this comment. Why would I keep repeating my results if it was not actually happening ! 3) Finally by your own admission I should not be able to sit on it at all which is not the case . Evidenced https://i.gyazo.com/23732dab7be08d2676caee4952479992.mp4 If it is truly my code on this error message trapping the seat . Why if I set it to TRUE Does it do the same thing as when it is set to FALSE as because what You have said it has disabled it with. llSetLinkPrimitiveParamsFast(1,[PRIM_SCRIPTED_SIT_ONLY,TRUE]); llSetLinkPrimitiveParamsFast(check_for_prim("Rope Tree Loop"),[ PRIM_SCRIPTED_SIT_ONLY,TRUE]); Finally then how to redirect a sit from link 1 in second life to a different seat which I choose? I have googled this and it found no answers. If I am to assume from what Fenix Eldritch said then it is been given a seat from the pool of seats. How do I determine which seat its been given as my click target is different and does not seem to give one of the seats. By this own thought I should be able to disable code above and let the sit system work which it doesn't it tries to move the rope not the avatar. then how do i also stop it getting a seat at the top when its at the bottom and vice versa. As I said I want to get it working {{Hugs}} D
  19. Fenix Eldritch Thankyou for your intervention however I have, I believe said that these two commands don't work together as one overrides the other i.e. PRIM_SIT_TARGET overrides PRIM_SCRIPTED_SIT_ONLY, but this is not the only problem. Disabling of a seat is not being registered. The program at post one clearly shows that it is still a seat and sat on when its been disabled. I have also shown the seat is not disabled in video as my avatar flies to 17.5m to sit on link 1 and generates a system message "You cannot sit on rope root prim. line 654". You also seem to be comparing apples and pears . I have 12 seats 6 up 6 down with two extra links which cant be seated . The rope is 35m long currently and its centre at 17.5 m. I am aware that my root prim is interfering with these seats When you sit on the rope, It gets a seated at its centre and corrupts the model moving other links in the LINKSET to currupt the model layout, which I have now error trapped. It also when disabled seats the avatar AS YOU SAW FROM MY VIDEO and then throws the avatar off the root link at 17.5m . Clearly this looks silly putting out a currently not a trappable system message . This script below clearly brings back the seats on the LINK_SET 1 and 3 should not be there at all as they are disabled . As shown by video and my script This can be shown here by running the following code from post 1 : list GetSitTargetLinks() { integer iLinkCount = llGetNumberOfPrims(); integer iIndex; list lRequest = []; for (iIndex = 1; iIndex <= iLinkCount ; iIndex++) { lRequest += [ PRIM_LINK_TARGET, iIndex, PRIM_SIT_TARGET ]; } list lData = llGetLinkPrimitiveParams(1, lRequest); llOwnerSay("LData:"+llDumpList2String(lData,"|")); list lSitTargetLinks = []; for (iIndex = 1; iIndex <= iLinkCount ; iIndex++) { integer bSitTarget = llList2Integer(lData, (iIndex - 1) * 3); if (bSitTarget) { lSitTargetLinks += iIndex; } } return lSitTargetLinks; } default { touch_start(integer total_number) { llOwnerSay("Hello, !"+ llDumpList2String(GetSitTargetLinks(),"|")); } } on my rope it dumps : [00:51] VK EF Rope 2.06 [6 seats]: LData:1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.090000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.010000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.090000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.010000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.00 [00:51] Rope 2.06 [6 seats]: Hello, !1|2|3|4|5|6|7|8|9|10|11|12|13|14 I repeat 1 and 3 are disabled and from my video you can see this is the case from the system response clearly shown. This is the response being run by the interpreter above ↑ My script 'state_entry' is quite clear in what I needed to get it to block a seat this version is three seats only: default { state_entry() { // You will need to add additional seat lines if you have more than 2 in num_seats, please remember to seperate // "seat2",llList2Json(JSON_OBJECT,["key","empty","pos",<0.05,0.25,0.85>,"twist",4*PI/2,"anim","empty"]) // Please remember to seperate with commas and no no comma at end. llOwnerSay("Resetting"); avatar_playing = NULL_KEY; passanger_is_playing = NULL_KEY; avatar_climbers=[]; // Add lines to seat list below SEATS_data=llList2Json(JSON_OBJECT, [ "seat0",llList2Json(JSON_OBJECT,["key","empty","pos",llList2String(anim_default_seats_data,0),"twist",llList2String(anim_default_seats_data,1),"anim",llList2String(anim_default_seats_data,2),"loc","empty","vloc","empty"]), "seat1",llList2Json(JSON_OBJECT,["key","empty","pos",llList2String(anim_default_seats_data,0),"twist",llList2String(anim_default_seats_data,1),"anim",llList2String(anim_default_seats_data,2),"loc","empty","vloc","empty"]), "seat2",llList2Json(JSON_OBJECT,["key","empty","pos",llList2String(anim_default_seats_data,0),"twist",llList2String(anim_default_seats_data,1),"anim",llList2String(anim_default_seats_data,2),"loc","empty","vloc","empty"]) ]); llSetClickAction(CLICK_ACTION_SIT); //TRUE allows sitting, FALSE blocks sitting llSetLinkPrimitiveParamsFast(1,[PRIM_SCRIPTED_SIT_ONLY,FALSE]); llSetLinkPrimitiveParamsFast(check_for_prim("Rope Tree Loop"), [ PRIM_SCRIPTED_SIT_ONLY,FALSE]); rope = 1; integer ih= 6; for(;ih--;) { new_seats = new_seats + check_for_prim("bottom_seat#"+(string)(6-ih-1)); llSetLinkPrimitiveParamsFast(_llObtainLinkFromName("bottom_seat#"+(string)(6-ih-1)),[ PRIM_SIT_TARGET, TRUE, llList2Vector(seats_pos_bottom,(6-ih-1)),ZERO_ROTATION, PRIM_SCRIPTED_SIT_ONLY,FALSE]); } ih= 6; for(;ih--;) { new_seats = new_seats + check_for_prim("top_seat#"+(string)(6-ih-1)); llSetLinkPrimitiveParamsFast(_llObtainLinkFromName("top_seat#"+(string)(6-ih-1)),[ PRIM_SIT_TARGET, TRUE, llList2Vector(seats_pos_top,(6-ih-1)),ZERO_ROTATION, PRIM_SCRIPTED_SIT_ONLY,FALSE]); } integer bottom_seat = check_for_prim("bottom_seat#5"); integer top_seat = check_for_prim("top_seat#5"); list L = llGetLinkPrimitiveParams(bottom_seat,[PRIM_POS_LOCAL,PRIM_ROT_LOCAL]); Sit_Pos = llList2Vector(L,0); Sit_Rot = llList2Rot(L,1); L = llGetLinkPrimitiveParams(top_seat,[PRIM_POS_LOCAL,PRIM_ROT_LOCAL]); End_Pos = llList2Vector(L,0); End_Rot = llList2Rot(L,1); listener_handle = llListen(-646656464447,"","",""); } I hope you can see why this is frustrating and I would like to get it working {{Hugs]}} Denise
  20. Frustrated! Evidence! and script shown open in video captured in secondlife showing refusal to sit error on chat line https://i.gyazo.com/1cb0cc5c880f9b0bce45ad6c02ba3e2d.mp4
  21. In fact if you used my script at the top post and click it it shows these are still enabled which is ridiculous. emboldened 1 and 3 disabled seat on link one does this [07:51] Rope 2.06 [6 seats]: You cannot sit on rope root prim. line 654 system prompt integer check_for_prim(string name) { integer i = llGetNumberOfPrims(); for (; i >= 0; --i) { if (llGetLinkName(i) == name) { return i; } } return -1; } llSetLinkPrimitiveParamsFast(1,[PRIM_SCRIPTED_SIT_ONLY,FALSE]); llSetLinkPrimitiveParamsFast(check_for_prim("Rope Tree Loop"),[ PRIM_SCRIPTED_SIT_ONLY,FALSE]); Results [07:47] Rope 2.06 [6 seats]: LData:1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.090000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<0.000000, 0.000000, 0.000000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, 0.000000, 0.000000, 1.000000>|1|<-0.200000, 0.000000, 0.050000>|<0.000000, [07:47] Rope 2.06 [6 seats]: Hello, !1|2|3|4|5|6|7|8|9|10|11|12|13|14 Frustrated as feels no one is reading my posts correctly and code post is disabled try use use my precise lines of code D
  22. NO in my script I tested it thoroughly twice now please try my code as it works other way round after first I presume the line is disabled if its set to TRUE in loops you cannot sit on those prims a system error occurs . On firt line if reversed to say TRUE it does allow you to it on root please check what you are doing
  23. Giggles arton this was not on Wikipedia and or has been edited out which is really unhelpful . I tested it and found: //TRUE allows sitting, FALSE blocks sitting llSetLinkPrimitiveParamsFast(1,[PRIM_SCRIPTED_SIT_ONLY,FALSE,PRIM_LINK_TARGET,check_for_prim("Rope Tree Loop"), PRIM_SCRIPTED_SIT_ONLY,FALSE]); I didn't want anyone sitting on 1 or 7 but my links as you informed me I could not have multi seat with out a seat link for each avatar which five can go up or five can come down , but not able to sit this then needs trapping to move avatar to sensible position and not make them free fall 40m. I find no error trapping in LsL . As currently avatar fall from half way when they try and sit when really the error should leave them standing and not even try to sit them! However this PRIM_SCRIPTED_SIT_ONLY only seems to work below in opposite which adds even more confusion. Is the seat placement negating effect of PRIM_SCRIPTED_SIT_ONLY? Furthermore if you set it to TRUE it seems to disallow seat when used in combination with PRIM_SIT_TARGET {{Hugs}} D:)
  24. Hi ,I have llSetLinkPrimitiveParamsFast(1,[PRIM_SCRIPTED_SIT_ONLY,FALSE,PRIM_LINK_TARGET,check_for_prim("Rope Tree Loop"), PRIM_SCRIPTED_SIT_ONLY,FALSE]); which blocks sitting on link 1 and 7 is there any way I can trap the system error please and deal with avatar more polity than throwing the avatar from half way up the rope at its centre . The error given is "You cannot sit on rope root prim. line 654". {{Hugs}} D :)
×
×
  • Create New...