Jump to content

kari1sl

Resident
  • Posts

    43
  • Joined

  • Last visited

Everything posted by kari1sl

  1. Thanks for the suggestion, Medhu, but rigging the shoes to mAnkle produced the similar twisted and distorted feet. I think the ability of the armature to apply automatic weights disappears outside a certain distance; the “envelope”. I messed around with expanding the envelop and applying envelop weights but only got confused. (Easy for me to get confused... I'm new to mesh.) I made some progress making the mToe or mFoot bones longer but my feet are wide as well as long. I extruded extra toes, to fan across the y axis, but got hung up naming/assigning, and merging them. I gave up and I found this “work around”. Starting with “clownfeet.blend” I used vertex groups to chopped off my long toes (! - gee that sounds awful. no wonder some people are afraid of clowns) along with a smalll amount (a few triangles proximal) of the foot tip on both, then exported it as static mesh (“toes.dae” unrigged), imported it into (opensim) world, unlinked it and reassembled them into a pair of left and right toes (objects “ToesL” and “ToesR”) of 11 prims each (5 toes,, 5 nails and the base of the toes which is prim#1). I returned to blender and, starting with new clown shoes (“clownfeet.blend”) used vertex groups to create “Toeless.dae” - which is the feet without toes but includes the foot tip, which it shares with “toes.dae”. Rigged “Toeless.dae” to my standard avatar (normal mToe and mFeet) using automatic weights and exported (using the Opensim presets for “Rigged mesh”). I imported the rigged mesh into world, attached it to the default position (Left Hand) on my avatar (wearing a mask to hide the default feet/skin and on a pose stand) and they popped into place were they belong. Then I attached “ToesL” to my avatar's Left Foot and “ToesR”to my avatar's Right Foot. A few minutes of positioning and “ToesL” lined up with its rigged partner on the left. Copied the position of “ToesL” to “ToesR”, reversed the Y-axis sign and .. I've got clown feet! I hopped off the pose stand and was happy to see the toes keeping up seamlessly with the rigged mesh. Two challenges remain. I want to find an animation to flex the ankle to see if the whole thing moves naturally. I'm guessing it should work. So far I've used only simple textures across the seam, but I'm going to test my patience and push my luck to get shoes covered in stars and dots to span the foot-to-toes seam. Regardless, I'm walking on clown feet!!! Kari1sl
  2. I'm making rigged mesh clown feet - long and wide (x and y) but when I rig it to a standard armature, it imports with the toes truncated and distorted. I should mention that only the toes (mToe) are big. The actual foot (mFoot) is normal. I've made mToe longer, and that helps a little, but it doesn't seem to get me there. Am I going about this wrong? Suggestions? Where might I learn how to do this? Thanks, Kari1SL
  3. You were right. My avatar is fine. The pose stand was the problem. Thanks
  4. the subject line says it. I've got big (clown) feet and I've rigged it just right (ankle join hardly shows) when standing on a pose box but as soon as I stand off it, the feet shift forward 1 or more centimeters but pop right bck in place when I get back on the stand. WHY?
  5. I am making a pair of rigged feet but the nails go missing when I attach the feet or foot. All looks fine in Blender (V2.71). I attach it to my avatar skeleton (using avatar.blend or Skeleton.Female.blend – it doesn't matter) using “Set to Parent with automatic Weights”. And export it as a dae with presets; Selection only : 'it's tidy but I've also exported it all - it doesn't matter, Include children : I've used nails nested into each foot (5prims in 1) or all as independent (6 prims) – it doesn't matter. Armature Option Export for Opensim (for testing). I import using FireStorm or Cool Viewer – it doesn't matter. Leaving the LoD at “High” (7072 triangles and 3950 vertices) Set the Physics LoD “Lowest”, Analyze (Results : Triangles N/A, Vertices 395, Hulls 74) For Upload Options I leave the scale alone (1=1 Dimesions 0.186 X0.065X0.170) and, of course “Include skin weight” It pops into my Inventory. I attach it to the default position (left hand) or a foot – it doesn't matter – some of the prims (nails) are not visible! I can't edit the attached, but I can see that it has the right number of prims and, using “Edit Linked” I can step through each prim and see that it is there (Object size & position looks right) . Checking textures, I see none are transparent (just to be sure, Ctk&Alt&T doesn't reveal them either). When I rez the mesh on the ground, I can see all the prims and can change their color. Then when attached, the visible nails retain the color but the hidden nails remains hidden. To fill these “nail gaps” I've put two or three identical prims in the same position - I've loaded up the toes three-fold (15 nails per foot) but still the nails are hidden! And, I've placed copies of the nails that work into the position(s) of the hidden prims – either in Blender before export or rezzed in the ground after import. But, when attached, these “proven prims” are hidden. It's as if the position (not the prim) was “toxic”. I've run out of ideas. Any suggestions? BTW - I'm new to Blender. Thanks
  6. Thanks, Uriah - you found the problem! It had nothing to do with my original problem. With that now out of the way, I used Madelaine 's suggestion and it worked! Thanks to both of you
  7. Thanks, Madelaine . Your suggestion makes sensse but didn't work. The new (second) box did not come up. I then tried it on Opensim and, again, the box did not appear but Opensim poped up this error (below) which I do not understand. Any thoughts Thanks System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> OpenSim.Region.ScriptEngine.Shared.ScriptException: LSL Runtime Error: First parameter to llDialog needs to be a key Server stack trace: at OpenSim.Region.ScriptEngine.Shared.Api.LSL_Api.LSLError(String msg) in C:\cygwin\home\caseyj\ljc\opensim-0.7.6.1-source\OpenSim\Region\ScriptEngine\Shared\Api\Implementation\LSL_Api.cs:line 11233 at OpenSim.Region.ScriptEngine.Shared.Api.LSL_Api.llDialog(String avatar, String message, list buttons, Int32 chat_channel) in C:\cygwin\home\caseyj\ljc\opensim-0.7.6.1-source\OpenSim\Region\ScriptEngine\Shared\Api\Implementation\LSL_Api.cs:line 6787 at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Obje
  8. Hi. I'm using an HUD to pop up a llDialog box to alter properties of each prim in an object attached to my avatar - and it works. I can make the prims do what I want. But the dialog box disappears when a choice is made so I have to relaunch (touch) the HUD to complete the changes. touch_start(integer total_number) { llListenControl(listenHandle, TRUE); llDialog(llDetectedKey(0), "Pick the parameters", MENU_1, listenChannel); // present dialog on click } listen(integer listenChannel, string name, key id, string message) I'd like the box to stay up until I hit “Ignore” (but still chat to the attachment with each button touched.) But I can't. Is there a way for the dialog box to stay open? Or a way to relaunch the same box when any button is pushed? thanks
  9. A simple short-term data storage? Hi - I think a list (maybe strided) might be a good way to go - but any advice/alternative considered. The user, through a chatted llParseString2List, enters 4 to 6 values, all floats, and my script uses them (to position the camera). If she likes the outcome, s/he adds a couple more values (that turn, pan, etc. the camera). Short-term, I need a way to save both set of floats (just in the same session). Are lists a good way to do this? (llListReplaceList or fncReplaceElement)? Thanks.
  10. A simple short-term data storage? Hi - I think a list (maybe strided) might be a good way to go - but any advice/alternative considered. The user, through a chatted llParseString2List, enters 4 to 6 values, all floats, and my script uses them (to position the camera). If she likes the outcome, s/he adds a couple more values (that turn, pan, etc. the camera). Short-term, I need a way to save both set of floats (just in the same session). Are lists a good way to do this? (llListReplaceList or fncReplaceElement)? Thanks.
  11. I'd like to be able to line up a “target”, say the avatar's face, and then activate (through chat) a camera motion, but my camera won't move until/unless I click on the avatar (which causes the camera to shift, so the target is lost). Here is my function SpiralOut(vector MyPos) { llOwnerSay("SpiralOut"); llSay(0, "My Position is " + (string)MyPos); llClearCameraParams(); vector here = MyPos; float i= 0; gdistance = gmin; while(i < grevs*TWO_PI) { {vector xyz = <(gdistance)*llCos(i),(gdistance)*llSin(i), 0.9>; //Change the z to the height vector there = (MyPos + xyz); llSetCameraParams([CAMERA_ACTIVE, 1, CAMERA_FOCUS, here, CAMERA_POSITION, there, CAMERA_POSITION_LOCKED, TRUE]); }i = i+ginc; gdistance=gdistance+ginc/2; } } And here's what happens (chatting some steps, copied below)... I lined up where I want to start [02:50 PM] k 1: aligned target [02:50 PM] k 1: and clicked HUD for permission [02:50 PM] Quick Cam Chat : Quick Cam Chat has PERMISSION_CONTROL_CAMERA perms for f0624028-b8cd-4297-9b00-d302e0717b78 [02:50 PM] Quick Cam Chat : take_camera_control OK, so I have permission and ready but just to be sure it is working, I chat “nothing” (“/6 “). My Listen starts with the GetPos and chats it in reply [02:51 PM] Quick Cam Chat : <224.828186,118.835915,21.118135> OK, it listens and gets the position, so I now chat a message that will run it (“/6 SpiralOut”) [02:51 PM] Quick Cam Chat : SpiralOut My camera does not move but, as you see above, my script started to run and, as you see below, it has the vector and passed it to the function [02:51 PM] Quick Cam Chat : My Position is <224.828186,118.835915,21.118135> My camera will only move if I touch the avatar (before the loop is done) picking up the spiral at some point along its increments. Any thoughts? Thanks
  12. I'd like to be able to line up a “target”, say the avatar's face, and then activate (through chat) a camera motion, but my camera won't move until/unless I click on the avatar (which causes the camera to shift, so the target is lost). Here is my function SpiralOut(vector MyPos) { llOwnerSay("SpiralOut"); llSay(0, "My Position is " + (string)MyPos); llClearCameraParams(); vector here = MyPos; float i= 0; gdistance = gmin; while(i < grevs*TWO_PI) { {vector xyz = <(gdistance)*llCos(i),(gdistance)*llSin(i), 0.9>; //Change the z to the height vector there = (MyPos + xyz); llSetCameraParams([CAMERA_ACTIVE, 1, CAMERA_FOCUS, here, CAMERA_POSITION, there, CAMERA_POSITION_LOCKED, TRUE]); }i = i+ginc; gdistance=gdistance+ginc/2; } } And here's what happens (chatting some steps, copied below)... I lined up where I want to start [02:50 PM] k 1: aligned target [02:50 PM] k 1: and clicked HUD for permission [02:50 PM] Quick Cam Chat : Quick Cam Chat has PERMISSION_CONTROL_CAMERA perms for f0624028-b8cd-4297-9b00-d302e0717b78 [02:50 PM] Quick Cam Chat : take_camera_control OK, so I have permission and ready but just to be sure it is working, I chat “nothing” (“/6 “). My Listen starts with the GetPos and chats it in reply [02:51 PM] Quick Cam Chat : <224.828186,118.835915,21.118135> OK, it listens and gets the position, so I now chat a message that will run it (“/6 SpiralOut”) [02:51 PM] Quick Cam Chat : SpiralOut My camera does not move but, as you see above, my script started to run and, as you see below, it has the vector and passed it to the function [02:51 PM] Quick Cam Chat : My Position is <224.828186,118.835915,21.118135> My camera will only move if I touch the avatar (before the loop is done) picking up the spiral at some point along its increments. Any thoughts? Thanks
  13. Thanks, Azwaldo, for the suggestion but it doesn't help. The problem is close to the face - the best part for camera work. I'm thinking that my geometry is wrong. Type into public chat the command "c" followed by RADIUS, then camera HEIGHT and camera FOCUS (otherwise they will be zero) with respect to the avatar's center (standing). You have to touch the avatar to get it going. (Don't know why) I've worked through a series of 1 meter orbits - first pointing to the avatar's center (third value is zero). Starting at ground, c 1 - 1 0, is good the waist at c 1 0 0 is also good another meter up at c 1 1 0 things look OK, but of course the focus is on the belly (at 0, the center), so naturally I want to look squarely in the face at ~1 meter above center. Try c 1 1 1. It's way over head, a couple meters. So, I decide to try 1 0 1 and thise wobbles around.Not along the avatar's Z-axis at all. Strange integer Pchannel(string salt){ string setint = (string)((integer)("0x"+llGetSubString((string)llGetOwner(),-8,-1)) * llStringLength(salt) * llCeil(llLog(llStringLength(salt)))); return (integer)llGetSubString(setint, 0, 7);}//KAMERA v10//removed max, min, high, low and simplifiedinteger on = FALSE;integer Handle;integer trap = 0;integer CHANNEL; // dialog channelfloat inc = 0.01 ;//increments from zerofloat revs = 2.0; //revolutionsfloat distance = 0; //declarefloat height =0; //declarefloat delta = 0;//declare float DELTA = 0;//declare float deltabit = 0;//declare float DIS = 0;//declare take_camera_control(key agent){ llOwnerSay("take_camera_control"); // say function name for debugging llOwnerSay( (string)agent); llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA); llSetCameraParams([CAMERA_ACTIVE, 1]); // 1 is active, 0 is inactive on = TRUE;}release_camera_control(key agent){ llOwnerSay("release_camera_control"); // say function name for debugging llSetCameraParams([CAMERA_ACTIVE, 0]); // 1 is active, 0 is inactive llReleaseCamera(agent); on = FALSE;}setup_listen(){llListenRemove(1);CHANNEL =0;integer x = llListen(CHANNEL, "", "", ""); // listen for dialog answers} default{state_entry(){setup_listen();llSetTimerEvent(2);} run_time_permissions(integer perm){ integer perm = llGetPermissions(); if (perm & PERMISSION_TRACK_CAMERA) { llOwnerSay(llGetScriptName() + " has PERMISSION_TRACK_CAMERA perms for "+(string)llGetPermissionsKey()); }if (perm & PERMISSION_CONTROL_CAMERA){ llOwnerSay(llGetScriptName() + " has PERMISSION_CONTROL_CAMERA perms for "+(string)llGetPermissionsKey()); }if (perm == 0){ llOwnerSay(llGetScriptName() + " has NO perms for "+(string)llGetPermissionsKey()); }}listen(integer channel, string name, key id, string message){list input = llParseString2List(message, [" "], []);string action = llList2String(input, 0); float dis = llList2Float(input, 1);float zthere= llList2Float(input, 2);float zhere= llList2Float(input, 3);float zthere2= llList2Float(input, 4);if (action == "off"){ llListenControl(Handle, FALSE); llSetScriptState(llGetScriptName(),FALSE); } else if (action == "help"){llSay(0, "Type into public chat the command \n (\"CIRCLE\" or \"circle\" or \"c\") or (\"HELIXUP\" or \"helixup\" or \"hup\") or (\"HELIXDOWN\" or \"helixdown\" or \"hdown\") \n followed by RADIUS, \n then camera HEIGHT and \n camera FOCUS \n otherwise they will be zero. ");llSay(0, "CIRCLE: try these values (face = \"c 1 1.3 1\", ass&crotch = \"c -0.7 0 0\") ");} else if (action == "reset"){ llSay (0, "Resetting script."); llResetScript();}else if (action == "CIRCLE" || action == "circle" || action == "c") //plus dis, zthere &zhere{llOwnerSay("Circle");llClearCameraParams();vector here = llGetPos() + <0.0, 0.0, zhere >;vector there = llGetPos() + <0.0, 0.0, zthere >;float i; for (i = 0; i < revs*TWO_PI; i+=inc){vector xyz = <dis*llCos(i),dis* llSin(i), 0.0>;vector there =here + xyz+ <0.0, 0.0, zthere >;llSetCameraParams([CAMERA_ACTIVE, 1, CAMERA_FOCUS, here, CAMERA_POSITION, there, CAMERA_POSITION_LOCKED, TRUE]);}llSleep(0.002);}}changed(integer change){if (change & CHANGED_LINK){key agent = llAvatarOnSitTarget();if (agent){setup_listen();llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA);}}} attach(key agent){if (agent != NULL_KEY){setup_listen();llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA);}} timer(){if (trap == 1){//center();} }}
  14. Thanks, Qie Niangao, for taking the time to read my poorly formatted script and, not only suggesting a fix but simplifying it ... and explain where I've gone wrong. Clearly, I need to understand the basic structure of LSL before I try another "transplant" (from individual touch buttons to an all encompassing chat). It's now working and I understand why! And also, thanks to "outtaspace". If I had followed the indentation editor, I may have noticed the "event inside event error". I'm learning a lot.
  15. Hi Folks. I built a HUD that is growing crowded and unmanageable with a button for each animation sequence, so I have been trying to transplant it to a chatable method but placing the timer() seems to give a Syntax Error everwhere I've tried. Below is the CHAT code... //CHATFACE FOR 2 v8 list ah =["express_open_mouth", "express_toothsmile", "express_open_mouth", "express_open_mouth", "express_open_mouth", "express_toothsmile", "express_open_mouth", "express_surprise_emote", "express_open_mouth"]; list oh =["express_kiss", "express_open_mouth", "express_kiss", "express_open_mouth", "express_kiss", "express_open_mouth", "express_kiss", "express_open_mouth", "express_kiss"]; integer Handle; integer gCount;integer gON; list anilist; default { on_rez(integer start_param) { llResetScript(); } state_entry() //timer()//ERROR : Syntax error { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); } // timer()//ERROR : Syntax error run_time_permissions(integer perm) //timer()//ERROR : Syntax error { if(PERMISSION_TRIGGER_ANIMATION & perm) { llOwnerSay(llGetScriptName() + " has PERMISSION_TRIGGER_ANIMATION perms for "+(string)llGetPermissionsKey());llSetTimerEvent(2); } //timer()//ERROR : Syntax error if (perm == 0) // timer()//ERROR : Syntax error { llOwnerSay(llGetScriptName() + " has NO perms for "+ (string)llGetPermissionsKey()); } llListen( 0, "", llGetOwner(), "" ); } // timer()//ERROR : Syntax error listen(integer channel, string name, key id, string message) //timer()//ERROR : Syntax error { llSay(0, message);list input = llParseString2List(message, [" "], []);string gate = llList2String(input, 0); string action = llList2String(input, 1);llSay(0, (string)gate); if (gate == "off") { llListenControl(Handle, FALSE); } else if (gate == "express"|| gate == "xpress" || gate == "x") { list input = llParseString2List(message, [" "], []); action = llList2String(input, 1); llSay(0, (string)action); if (action == "ah") { anilist = llList2List(ah,0,55); } else if (action == "oh") { anilist = llList2List(oh,0,55); } else { llSay (0, "Not a recognized face command. Give permission (again) and try again using one of these ..."); llResetScript(); } //timer()//ERROR : Syntax error { integer length = llGetListLength(anilist); llSay(0,(string)action + " is " + (string)length + " units long and its sequence is " + (string)anilist); { gON = !gON;gCount = 0; llStartAnimation(llList2String(anilist, 0)); llSetTimerEvent(0.1* gON); } { gON = TRUE; gCount = 0; llSetTimerEvent(2.0); } timer()//ERROR : This is the "right place but SYNTAX ERRORS! { integer i = ++gCount; { llStopAnimation(llList2String(anilist, i-1)); } if (i < length) { llSay(0, (string)i + (string)llList2String(anilist, i)); // say the ani # & name llStartAnimation(llList2String(anilist, i+1)); } } } } else { llSay (0, "Not a face command. Give permission (again) and chat an \"x\", or \"xpress\" ot \"express\" to start, and then the command"); llResetScript(); //timer()//ERROR : Syntax error } } } 1) tweaked from a touch command to listening, 2) adapted to chose from a library of lists instead of using the single list in its sole button 3) with extra "llSays" added to help me to understand what is going on. 4) I have double lined (//) commented each place I have tried and failed to position the timer() and the position that (I think) most corresponds to the position in the button (where is works) is left withouot "//" in from and with "timer()//ERROR : This is the "right place but SYNTAX ERRORS!!" ... and in the process, really messed up the indentation system (soory). BTW - without the timer, the i++ loop doesn't loop! I can post the "touch buttom" (that works) if folks think it might be useful. Thanks,,,
  16. Wow, these notecards look to be a useful resources but it will take me a while to learn these new commands, etc. But I will learn them, eventually. Meanhwile, I've been working on my script in my old fashion (no notecard) way and almost have it working but can't "transplant" the "timer()". I'll post a new thread about that tonight.
  17. Thanks, folks, but I'm still stuck. Qie Niangao I have a dozen lists, with lengths, each list is a different sequence of animations. (I have a working demo of each individual list that runs through a HUD - with a dozen buttons - but I want to change it to "chat controlled" because the HUD is getting big.) I want to use the parsed word in the middle of the chat, assigned the name "action", to chose which one of those dozen lists to run. The first thing I need to do is find out the number of items in the list (length) so I can sequence through them using something like this... { integer i = ++gCount; if (i) llStopAnimation(llList2String(action,i-1)); if (i < length) llStartAnimation(llList2String(action, i)); } but I can't even get started because I can't find "length" ... and I'm guessing I'm not finding my list at all. I don't know if I've answered your question. I'm new to this. I've never tried to access a list by chat. (Currently each list is in a seperate button/script on an ugly HUD.) How do I use the float ("action") that I chat ("first", "second", etc), to get the list (named "first", "second", etc)? Ela Talaj Substituting "llStringLength" gives me the lenght of the input string not the list of the same name "first" gives "5" (the number of letters in "first") not 8 (the lenght of the list) "second" gives "6" not 12
  18. I'm a novice and have discovered lists!But I can't seem to get the different list commands to find the lists. I have a bunch of lists at the start of my script (above "default") with either different numbers of items in each), and I'm trying to call each, via chat, into action ... but I don't know how. Here's a stripped-down version with only two lists and the script. Ultimately, this should launch a animation with each word in the list but I haven't gotten to that (fun) part, so am using “llSay” to try to figure what's gone wrong. The chat and permission work fine but when I try to use the list – llGetListLength, llList2String, or llList2List or llListReplaceList, etc - I end up either calling the NAME of the list or getting errors about "function call mismatches type or number of arguments”. Help, please. list first = ["antimony", "arsenic", "aluminum", "selenium", "hydrogen", "oxygen", "nitrogen", "rhenium"]; list second = ["nickel", "neodymium", "neptunium", "germanium", "iron", "americium", "ruthenium", "uranium", "Europium", "zirconium", "lutetium", "vanadium"]; default { on_rez(integer start_param) { llResetScript(); } state_entry() { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); } run_time_permissions(integer perm) { if(PERMISSION_TRIGGER_ANIMATION & perm) { llOwnerSay(llGetScriptName() + " has PERMISSION_TRIGGER_ANIMATION perms for "+(string)llGetPermissionsKey()); llSetTimerEvent(2); //Cause the timer event to be triggered a maximum of once every 2 seconds. } if (perm == 0) { llOwnerSay(llGetScriptName() + " has NO perms for "+ (string)llGetPermissionsKey()); } llListen( 0, "", llGetOwner(), "" ); } listen(integer channel, string name, key id, string message) { list input = llParseString2List(message, [" "], []); //the input is three variables, separated by spaces("song first 3") llSay(0, (string)input); //checks to see if its heard me by repeating what I said. It does. It works. The next three “llSay”s prove the Parsing workes. It does. string gate = llList2String(input, 0) ; // “gate” assures that only a message starting with the “magic word” will initiate the animations. string action = llList2String(input, 1); // “action” is the name of the list that contains the name of the animations. From this, also, my problem starts. string level = llList2String(input, 2); // “level” is an integer will control the “action” (maybe – still in the planning stage: llSay(0, (string)gate); // works = repeats the magic word llSay(0, (string)action);// works = says the name of the list;first” or “second” llSay(0, (string)level); // works = repeats the integer if (gate == "off") // when told "off".. { llSay (0, "bye."); llResetScript(); } //OK, but trouble then starts (next) else if (llList2String(input, 0) == "song") //assures chat starts with {integer length = llGetListLength(action); // Error : Function call mismatches type or number of arguments } } }
  19. Can anyone point me to a (modifyable) script that will let me chat to my poseball instead of using a menu? I have lots of poses and the menus are getting unmanageable. I'd like to write a script that listens for each pose name, finds the coordinates in a notecard and launches the pose in that position. But, I don't know where to start. An example would help. Thanks, 25 Jan 2012 Thanks for the suggestions. I agree I need to get permission and listen. Not a problem. But I don't want to simply launch the animation. I'd like the string heard to (somehow) read the notecard(s) and launch animation in the perscribed orientation - as if using a menu for poses. I just don't know how to that. It might not even be possible! Do you know of anything like that?
  20. Lately, when I change the pose, my avitar it flies off after a few poses - far far away. I tried to adjust the pose but it comes up in huge regional numbers, the the relative cooridnates <164.018,15.784,67.365> <0.1,-2.0,-90.0> instead of <0.018,-0.216,0.365> <0.1,-2.0,-90.0>, so, of course, when it reads that number it fly 164 meters x-way, 16 meters y-way and 67 meters z-way from the pose ball. Why is it doing this? How can I fix it. BTW - the coordinates changes are really simple - just switching around the four compass points. <0.018,-0.216,0.525> <-2.9,-2.0,-90.0> <-0.022,0.230,0.525> <2.9,2.0,90.0> <-0.348,-0.032,0.525> <-2.0,2.9,-180.0> <0.444,0.024,0.525> <2.0,-2.9,0.0> Any advice?
  21. Hi. I'm stuck. My script works when z=0 (waist or body level) but i can't control the height. I'd like to circle at face level - FaceCircle - but my code makes the camera follow a tilted orbit - as if the center isn't centred. Any suggestion why it doesn't work up the z-axis? Or how to fix it? Thanks integer CHANNEL; // dialog channel list MENU_MAIN = ["Me", "Waist", "WaistCircle", "BodyCircle", "FaceCircle", "More...", "Cam ON", "Cam OFF"]; // the main menu list MENU_2 = ["More...", "...Back"]; // menu 2 integer on = FALSE; integer trap = 0; take_camera_control(key agent) { llOwnerSay("take_camera_control"); // say function name for debugging llOwnerSay( (string)agent); llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA); llSetCameraParams([CAMERA_ACTIVE, 1]); // 1 is active, 0 is inactive on = TRUE; } release_camera_control(key agent) { llOwnerSay("release_camera_control"); // say function name for debugging llSetCameraParams([CAMERA_ACTIVE, 0]); // 1 is active, 0 is inactive llReleaseCamera(agent); on = FALSE; } me000() { llOwnerSay("ME_0,0,0"); // say function name for debugging llClearCameraParams(); // reset camera to default vector here = llGetPos(); llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_BEHINDNESS_ANGLE, 0.0, // (0 to 180) degrees CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds CAMERA_DISTANCE, 0.0, // ( 0.5 to 10) meters CAMERA_FOCUS, here, // region relative position CAMERA_FOCUS_LAG, 0.0 , // (0 to 3) seconds CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_PITCH, 0.0, // (-45 to 80) degrees CAMERA_POSITION, here + <0,0,0>, //REGION RELATIVE POSITION CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_FOCUS_OFFSET, ZERO_VECTOR // <X0,X0,X0> to <10,10,10> meters ]); llSleep(0.002); } me010() { llOwnerSay("Waist"); // say function name for debugging llClearCameraParams(); // reset camera to default vector here = llGetPos(); llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_BEHINDNESS_ANGLE, 0.0, // (0 to 180) degrees CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds CAMERA_DISTANCE, 0.0, // ( 0.5 to 10) meters CAMERA_FOCUS, here, // region relative position CAMERA_FOCUS_LAG, 0.0 , // (0 to 3) seconds CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_PITCH, 0.0, // (-45 to 80) degrees CAMERA_POSITION, here + <0,1,0>, //REGION RELATIVE POSITION CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_FOCUS_OFFSET, ZERO_VECTOR // <X0,X0,X0> to <10,10,10> meters ]); llSleep(0.002); } WaistCircle() { llOwnerSay("WaistCircle"); // say function name for debugging llClearCameraParams(); // reset camera to default float i; for (i = 0; i < TWO_PI; i+=0.01) { vector xyz = 1.0*< llCos(i), llSin(i), 0>; vector here = llGetPos(); vector there = llGetPos() + xyz; llSetCameraParams([ CAMERA_ACTIVE, 1, CAMERA_BEHINDNESS_ANGLE, 180.0, // (0 to 180) degrees CAMERA_FOCUS, here, CAMERA_POSITION, there, CAMERA_POSITION_LAG, 3.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE ]); } llSleep(0.002); } BodyCircle() { llOwnerSay("BodyCircle"); // say function name for debugging llClearCameraParams(); // reset camera to default float i; for (i = 0; i < TWO_PI; i+=0.01) { vector xyz = 3*< llCos(i), llSin(i), 0>; vector here = llGetPos(); vector there = llGetPos() + xyz; llSetCameraParams([ CAMERA_ACTIVE, 1, CAMERA_BEHINDNESS_ANGLE, 180.0, // (0 to 180) degrees CAMERA_FOCUS, here, CAMERA_POSITION, there, CAMERA_POSITION_LAG, 3.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE ]); } llSleep(0.002); } FaceCircle() { llOwnerSay("FaceCircle"); // say function name for debugging llClearCameraParams(); // reset camera to default float i; for (i = 0; i < TWO_PI; i+=0.01) { vector xyz = < llCos(i), llSin(i), 0>;//orbit equation vector here = llGetPos() + <0,0,1>;//stare at top of head (+1) vector there =llGetPos() + xyz + <0,0,1>;//as camera follows this orbit llSetCameraParams([ CAMERA_ACTIVE, 1, CAMERA_BEHINDNESS_ANGLE, 180.0, // (0 to 180) degrees CAMERA_FOCUS, here, CAMERA_POSITION, there , //REGION RELATIVE POSITION CAMERA_POSITION_LAG, 3.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE ]); } llSleep(0.002); } setup_listen() { llListenRemove(1); CHANNEL = llRound(llFrand(1) * 100000); integer x = llListen(CHANNEL, "", "", ""); // listen for dialog answers } default { state_entry() { setup_listen(); llSetTimerEvent(2); } touch_start(integer total_number) { integer perm = llGetPermissions(); if (perm & PERMISSION_DEBIT) { llOwnerSay(llGetScriptName() + " has PERMISSION_DEBIT perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_TAKE_CONTROLS) { llOwnerSay(llGetScriptName() + " has PERMISSION_TAKE_CONTROLS perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_TRIGGER_ANIMATION) { llOwnerSay(llGetScriptName() + " has PERMISSION_TRIGGER_ANIMATION perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_ATTACH) { llOwnerSay(llGetScriptName() + " has PERMISSION_ATTACH perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_CHANGE_LINKS) { llOwnerSay(llGetScriptName() + " has PERMISSION_CHANGE_LINKS perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_TRACK_CAMERA) { llOwnerSay(llGetScriptName() + " has PERMISSION_TRACK_CAMERA perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_CONTROL_CAMERA) { llOwnerSay(llGetScriptName() + " has PERMISSION_CONTROL_CAMERA perms for "+(string)llGetPermissionsKey()); } if (perm == 0) { llOwnerSay(llGetScriptName() + " has NO perms for "+(string)llGetPermissionsKey()); } llDialog(llDetectedKey(0), "What do you want to do?", MENU_MAIN, CHANNEL); // present dialog on click } listen(integer channel, string name, key id, string message) { if (llListFindList(MENU_MAIN + MENU_2, [message]) != -1) // verify dialog choice // if (llListFindList(MENU_MAIN, [message]) != X) // verify dialog choice { // llOwnerSay(name + " picked the option '" + message + "'."); // output the answer if (message == "More...") llDialog(id, "Pick an option!", MENU_2, CHANNEL); // present submenu on request else if (message == "...Back") llDialog(id, "What do you want to do?", MENU_MAIN, CHANNEL); // present main menu on request to go back else if (message == "Cam ON") { take_camera_control(id); } else if (message == "Cam OFF") { release_camera_control(id); } else if (message == "Me") { me000(); } else if (message == "Waist") { me010(); } else if (message == "WaistCircle") { WaistCircle(); } else if (message == "BodyCircle") { BodyCircle(); } else if (message == "FaceCircle") { FaceCircle(); } else if (message == "Trap Toggle") { trap = !trap; if (trap == 1) { llOwnerSay("trap is on"); } else { llOwnerSay("trap is off"); } } } else llOwnerSay(name + " picked invalid option '" + llToLower(message) + "'."); // not a valid dialog choice } run_time_permissions(integer perm) { if ((perm & PERMISSION_CONTROL_CAMERA) == PERMISSION_CONTROL_CAMERA) { llSetCameraParams([CAMERA_ACTIVE, 1]); // 1 is active, 0 is inactive llOwnerSay("Camera permissions have been taken"); } } changed(integer change) { if (change & CHANGED_LINK) { key agent = llAvatarOnSitTarget(); if (agent) { setup_listen(); llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA); } } } attach(key agent) { if (agent != NULL_KEY) { setup_listen(); llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA); } } timer() { if (trap == 1) { me000(); } } }
  22. I'm trying to get the camera to circle my avatar but, clearly I've got vector trouble. I've tried float x = llCos(radians); float y = llSin(radians); vector here = llGetPos(); vector xyz = here + <x, y, 0>; circle1_cam() { llOwnerSay("Circle1"); // say function name for debugging llClearCameraParams(); // reset camera to defaul float radians; float x =1; float y =0; for(radians = 0.0; radians < 60; radians+=1) { vector here = llGetPos(); vector xyz = here + <x, y, 0>; llOwnerSay("it moves to" + (string)xyz); llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_BEHINDNESS_ANGLE,00.0, // (0 to 180) degrees CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds CAMERA_DISTANCE, 1, // ( 0.5 to 10) meters CAMERA_FOCUS, here, // region relative position CAMERA_FOCUS_LAG, 0.1, // (0 to 3) seconds CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_PITCH, 0.0, // (-45 to 80) degrees CAMERA_POSITION, xyz, // region relative position CAMERA_POSITION_LAG, 0.1, // (0 to 3) seconds CAMERA_POSITION_LOCKED, FALSE, // (TRUE or FALSE) CAMERA_POSITION_THRESHOLD, 1.0, // (0 to 4) meters CAMERA_FOCUS_OFFSET, <0.0, 0.0, 0.0> // <-10,-10,-10> to <10,10,10> meters ]); // get x/y position of circumference float x = llCos(radians); float y = llSin(radians); llOwnerSay("It's at" + (string)here); llOwnerSay("but when I add" + (string)<x, y, 0>); } } which I now think is wrong after reading http://lslwiki.net/lslwiki/wakka.php?wakka=vector but vector there = llGetPos(); there.x += llCos(i); there.y += llSin(i); doesn't work either. circle1_cam() { llOwnerSay("Circle1"); // say function name for debugging llClearCameraParams(); // reset camera to defaul float i; for(i = 0.0; i< 6; i+=1) { vector xyz = < llCos(i), llSin(i), 0.0>; vector here = llGetPos(); vector there = llGetPos(); there.x += llCos(i); there.y += llSin(i); llOwnerSay("when I add" + (string) xyz); llOwnerSay("camera moves to" + (string)there); llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_BEHINDNESS_ANGLE,00.0, // (0 to 180) degrees CAMERA_BEHINDNESS_LAG, 180.0, // (0 to 3) seconds CAMERA_DISTANCE, 1, // ( 0.5 to 10) meters CAMERA_FOCUS,here, // region relative position CAMERA_FOCUS_LAG, 0.1, // (0 to 3) seconds CAMERA_FOCUS_LOCKED, FALSE, // (TRUE or FALSE) CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_PITCH, 0.0, // (-45 to 80) degrees CAMERA_POSITION, there, //REVOLVE!! CAMERA_POSITION_LAG, 0.1, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_POSITION_THRESHOLD, 1.0, // (0 to 4) meters CAMERA_FOCUS_OFFSET, <0.0, 0.0, 0.0> // <-10,-10,-10> to <10,10,10> meters ]); llOwnerSay("So, now it's at" + (string)there); } } Please, how do I get these coordinates to add up?! Thanks, _______FOLLOW UP _________15Jan_____________ Thanks MartinRJ, (Rolig - I'll post in LSL Scripting forum next time. Just thought I'd continue the thread here.) Your I picked apart your example and got mine working - thanks to your posting. But, as you see, I'm keen on sin and cos, so I hope you aren't offended. :-) But now I'm stuck. I'd like to circle at face level but my code - FaceCircle() - integer CHANNEL; // dialog channel list MENU_MAIN = ["Me", "Waist", "WaistCircle", "BodyCircle", "FaceCircle", "More...", "Cam ON", "Cam OFF"]; // the main menu list MENU_2 = ["More...", "...Back"]; // menu 2 integer on = FALSE; integer trap = 0; take_camera_control(key agent) { llOwnerSay("take_camera_control"); // say function name for debugging llOwnerSay( (string)agent); llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA); llSetCameraParams([CAMERA_ACTIVE, 1]); // 1 is active, 0 is inactive on = TRUE; } release_camera_control(key agent) { llOwnerSay("release_camera_control"); // say function name for debugging llSetCameraParams([CAMERA_ACTIVE, 0]); // 1 is active, 0 is inactive llReleaseCamera(agent); on = FALSE; } me000() { llOwnerSay("ME_0,0,0"); // say function name for debugging llClearCameraParams(); // reset camera to default vector here = llGetPos(); llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_BEHINDNESS_ANGLE, 0.0, // (0 to 180) degrees CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds CAMERA_DISTANCE, 0.0, // ( 0.5 to 10) meters CAMERA_FOCUS, here, // region relative position CAMERA_FOCUS_LAG, 0.0 , // (0 to 3) seconds CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_PITCH, 0.0, // (-45 to 80) degrees CAMERA_POSITION, here + <0,0,0>, //REGION RELATIVE POSITION CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_FOCUS_OFFSET, ZERO_VECTOR // <X0,X0,X0> to <10,10,10> meters ]); llSleep(0.002); } me010() { llOwnerSay("Waist"); // say function name for debugging llClearCameraParams(); // reset camera to default vector here = llGetPos(); llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_BEHINDNESS_ANGLE, 0.0, // (0 to 180) degrees CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds CAMERA_DISTANCE, 0.0, // ( 0.5 to 10) meters CAMERA_FOCUS, here, // region relative position CAMERA_FOCUS_LAG, 0.0 , // (0 to 3) seconds CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_PITCH, 0.0, // (-45 to 80) degrees CAMERA_POSITION, here + <0,1,0>, //REGION RELATIVE POSITION CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_FOCUS_OFFSET, ZERO_VECTOR // <X0,X0,X0> to <10,10,10> meters ]); llSleep(0.002); } WaistCircle() { llOwnerSay("WaistCircle"); // say function name for debugging llClearCameraParams(); // reset camera to default float i; for (i = 0; i < TWO_PI; i+=0.01) { vector xyz = 1.0*< llCos(i), llSin(i), 0>; vector here = llGetPos(); vector there = llGetPos() + xyz; llSetCameraParams([ CAMERA_ACTIVE, 1, CAMERA_BEHINDNESS_ANGLE, 180.0, // (0 to 180) degrees CAMERA_FOCUS, here, CAMERA_POSITION, there, CAMERA_POSITION_LAG, 3.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE ]); } llSleep(0.002); } BodyCircle() { llOwnerSay("BodyCircle"); // say function name for debugging llClearCameraParams(); // reset camera to default float i; for (i = 0; i < TWO_PI; i+=0.01) { vector xyz = 3*< llCos(i), llSin(i), 0>; vector here = llGetPos(); vector there = llGetPos() + xyz; llSetCameraParams([ CAMERA_ACTIVE, 1, CAMERA_BEHINDNESS_ANGLE, 180.0, // (0 to 180) degrees CAMERA_FOCUS, here, CAMERA_POSITION, there, CAMERA_POSITION_LAG, 3.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE ]); } llSleep(0.002); } FaceCircle() { llOwnerSay("FaceCircle"); // say function name for debugging llClearCameraParams(); // reset camera to default float i; for (i = 0; i < TWO_PI; i+=0.01) { vector xyz = < llCos(i), llSin(i), 0>;//orbit equation vector here = llGetPos() + <0,0,1>;//stare at top of head (+1) vector there =llGetPos() + xyz + <0,0,1>;//as camera follows this orbit llSetCameraParams([ CAMERA_ACTIVE, 1, CAMERA_BEHINDNESS_ANGLE, 180.0, // (0 to 180) degrees CAMERA_FOCUS, here, CAMERA_POSITION, there , //REGION RELATIVE POSITION CAMERA_POSITION_LAG, 3.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, TRUE ]); } llSleep(0.002); } setup_listen() { llListenRemove(1); CHANNEL = llRound(llFrand(1) * 100000); integer x = llListen(CHANNEL, "", "", ""); // listen for dialog answers } default { state_entry() { setup_listen(); llSetTimerEvent(2); } touch_start(integer total_number) { integer perm = llGetPermissions(); if (perm & PERMISSION_DEBIT) { llOwnerSay(llGetScriptName() + " has PERMISSION_DEBIT perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_TAKE_CONTROLS) { llOwnerSay(llGetScriptName() + " has PERMISSION_TAKE_CONTROLS perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_TRIGGER_ANIMATION) { llOwnerSay(llGetScriptName() + " has PERMISSION_TRIGGER_ANIMATION perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_ATTACH) { llOwnerSay(llGetScriptName() + " has PERMISSION_ATTACH perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_CHANGE_LINKS) { llOwnerSay(llGetScriptName() + " has PERMISSION_CHANGE_LINKS perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_TRACK_CAMERA) { llOwnerSay(llGetScriptName() + " has PERMISSION_TRACK_CAMERA perms for "+(string)llGetPermissionsKey()); } if (perm & PERMISSION_CONTROL_CAMERA) { llOwnerSay(llGetScriptName() + " has PERMISSION_CONTROL_CAMERA perms for "+(string)llGetPermissionsKey()); } if (perm == 0) { llOwnerSay(llGetScriptName() + " has NO perms for "+(string)llGetPermissionsKey()); } llDialog(llDetectedKey(0), "What do you want to do?", MENU_MAIN, CHANNEL); // present dialog on click } listen(integer channel, string name, key id, string message) { if (llListFindList(MENU_MAIN + MENU_2, [message]) != -1) // verify dialog choice // if (llListFindList(MENU_MAIN, [message]) != X) // verify dialog choice { // llOwnerSay(name + " picked the option '" + message + "'."); // output the answer if (message == "More...") llDialog(id, "Pick an option!", MENU_2, CHANNEL); // present submenu on request else if (message == "...Back") llDialog(id, "What do you want to do?", MENU_MAIN, CHANNEL); // present main menu on request to go back else if (message == "Cam ON") { take_camera_control(id); } else if (message == "Cam OFF") { release_camera_control(id); } else if (message == "Me") { me000(); } else if (message == "Waist") { me010(); } else if (message == "WaistCircle") { WaistCircle(); } else if (message == "BodyCircle") { BodyCircle(); } else if (message == "FaceCircle") { FaceCircle(); } else if (message == "Trap Toggle") { trap = !trap; if (trap == 1) { llOwnerSay("trap is on"); } else { llOwnerSay("trap is off"); } } } else llOwnerSay(name + " picked invalid option '" + llToLower(message) + "'."); // not a valid dialog choice } run_time_permissions(integer perm) { if ((perm & PERMISSION_CONTROL_CAMERA) == PERMISSION_CONTROL_CAMERA) { llSetCameraParams([CAMERA_ACTIVE, 1]); // 1 is active, 0 is inactive llOwnerSay("Camera permissions have been taken"); } } changed(integer change) { if (change & CHANGED_LINK) { key agent = llAvatarOnSitTarget(); if (agent) { setup_listen(); llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA); } } } attach(key agent) { if (agent != NULL_KEY) { setup_listen(); llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA); } } timer() { if (trap == 1) { me000(); } } } makes the cameraa follow a tilted orbit - as if the center isn't centred. Any suggestion why it doesn't work up the z-axis? Or how to fix it? Thanks
  23. how do I remove the blue "i" (info) dot that appears on mousing over? Second Life 3.4.1 (266581) Nov 5 2012 12:17:12 (Second Life Release) ---------- Thanks, Valerie - "showHoverTips" now "false" and no longer annoying me.
  24. Chat to run multiple animation scripts on multiple avatars - can't switch between loopss (glitch #2) Thanks (again), Rolig, I incorporated youur suggestions - and it worked! I like Innnula's suggustion about attaching but want to get past my main goal/problem below .. I have several loops of facial expressions (that make interesting expressions by overlapping them) anf now I'm hoping to put them all into this chat script ... I can't figure out a "trick" to switch between them - and that later I can use to switch among severa loops. Any ideas? // /11 oohh or /11 aahh but WILL NOT SWITCHinteger gCount; integer gCount1;list face = ["-", "aahh", "oohh"];list gaahh =["express_tongue_out","kiss","express_tongue_out","express_surprise_emote","express_tongue_out","express_surprise_emote","express_tongue_out","express_open_mouth","express_tongue_out"];list goohh =["express_kiss","express_open_mouth","express_kiss","express_open_mouth","express_kiss","express_open_mouth","express_kiss","express_open_mouth","express_kiss"];default{touch_start(integer startup){if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION){}elsellRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION);}run_time_permissions(integer perm){if(perm&PERMISSION_TRIGGER_ANIMATION) llListen(11, "", "", "" );}listen(integer channel, string name, key id, string message){ if (message == "-"){llListen(11, "","", "");}else if (message == "aahh"){{gCount = 0; llStartAnimation(llList2String(gaahh, 0));llStartAnimation(llList2String(gaahh, 1));}integer i = 0; while(i < 10){{llStopAnimation(llList2String(gaahh,i-1));}{llStartAnimation(llList2String(gaahh,i+1));} {llStartAnimation(llList2String(gaahh, i+2));} {i = ++gCount%8;}{llStopAnimation(llList2String(gaahh,i+1));} {llStopAnimation(llList2String(gaahh, i+2));}{llSay( 0, (string)gCount);}}}else if (message == "oohh"){{gCount = 0; llStartAnimation(llList2String(goohh, 0));llStartAnimation(llList2String(goohh, 1));}integer i = 0; while(i < 10){{llStopAnimation(llList2String(goohh,i-1));}{llStartAnimation(llList2String(goohh,i+1));} {llStartAnimation(llList2String(goohh, i+2));} {i = ++gCount%8;}{llStopAnimation(llList2String(goohh,i+1));} {llStopAnimation(llList2String(goohh, i+2));}{llSay( 0, "oohh" + (string)gCount);}}}}}
  25. Thanks, Rolig, for telling me about the LSL Scripting Forum. I think I've sorted my Permissions problem (thanks for the advice) but can't get past (17,0): Error ; Syntax error to find out. That's the line "startListen(){" (although I understand that the real error might be from a different line0 Normally I can find the error but, I can't find this one - hoping fresh eyes might. Thanks //kiss when chat "/11 kiss" default { on_rez(integer startParam){llStartAnimation("express_wink_emote");} touch_start(integer startup) {if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) {startListen();} else {llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION);} } run_time_permissions(integer perm) { if(perm) {startListen();} else {llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION);} } startListen(){ llListen(11, "","", ""); } listen(integer channel, string name, key id, string message) { if (message == "kiss") {llStartAnimation("express_kiss");} }
×
×
  • Create New...