Jump to content

Metalspeed Applewhyte

Resident
  • Content Count

    118
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Metalspeed Applewhyte

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. That the thing i want to make the animation to my airplane gear so when typing gear it goes up like GEAR UP and when i type the gear again he next time it goes down GEAR DOWN.
  2. Thanks!! but do you know how to make that work on listen also making that work by if i say start so it starts and play the animation and then stop so if the animation is move the prim to the left when say start it moves to the left and stop there:D
  3. Hi i want some help, when i install the linked prim animator and want to use it is not working Here is the download link for the scripts http://code.google.com/p/falados-secondlife/downloads/detail?name=LPAL.zip&can=2&q= http://code.google.com/p/falados-secondlife/wiki/LPALInstructions i has add lpa editor, lpa player, lpa wizard,Example replay script, and all the lpa frame capture scripts in the root. And lpa frame controller att the child prim. and i has setup it /55 lpa_wizard when its cleare i click on it i get the menu dialog but i get this menu and when i type /55 lpa_lost i get the same. i cant get the capture menu . please if you can help me.
  4. So that works for you? and if that work wich grid do you use. for im just getting error on using that for agni
  5. no im tryed to use this script at the normal grid agni but i get those error if you can help me with any fix?
  6. Hi i has get this script from the wiki its a open prim animatior script. But i need help to make this animation i made work when my pet changes position around and when it stop changes position it stop the animation and make the leg reset so it be like it was before. The script Is touch_start. If Anyone can help me out with this thing**Only uploaded images may be used in postings**://secondlife.i.lithium.com/i/smilies/16x16_smiley-very-happy.gif" border="0" alt=":smileyvery-happy:" title="Smiley Very Happy" /> // Open Prim Animator - by Todd Borst // This is provided AS IS without support. Please don't bug me demanding // help or custom work for this free script. // Summary: This is a simple prim animation script. Just add this script // to your object and a dialog will automatically pop up for you to use. // Features: // -Single script "Prim Puppeteer" like animation tool // -Playback controllable through external scripts // -Animation is scalable and resizeable // -On-touch trigger built-in // -Completely free and open sourced // License: // You are welcome to use this anyway you like, even bring to other grids // outside of Second Life. If you try to sell what I'm giving away for // free, you will be cursed with unimaginably bad juju. integer COMMAND_CHANNEL = 32; integer primCount = 0; integer commandListenerHandle = -1; list posList = []; list rotList = []; list scaleList = []; integer currentSnapshot = 0; integer recordedSnapshots = 0; vector rootScale = ZERO_VECTOR; vector scaleChange = <1,1,1>; // For tracking memory usage. The amount of snapshots you can record is based // on the number of prims and available memory. Less prims = more snapshots integer maxMemory = 0; integer freeMemory = 0; integer playAnimationStyle = 0; // The values for playAnimationStyle means // 0 = no animation playing // 1 = play animation once // 2 = play animation looping // This function is used to display a recorded snapshot showSnapshot(integer snapNumber) { if(snapNumber > 0 && snapNumber <= recordedSnapshots ) { integer i = 0; vector pos; rotation rot; vector scale; vector rootPos = llGetPos(); // Might want to move llGetRot() into the loop for fast rotating objects. // Rotation during the animation playback may cause errors. rotation rootRot = llGetRot(); //2 is the first linked prim number. for( i = 2; i <= primCount; i++) { pos = llList2Vector(posList,((snapNumber-1)*(primCount-1))+(i-2)); rot = llList2Rot(rotList,((snapNumber-1)*(primCount-1))+(i-2)); scale = llList2Vector(scaleList,((snapNumber-1)*(primCount-1))+(i-2)); //Adjust for scale changes if( rootScale.x != 1.0 || rootScale.y != 1.0 || rootScale.z != 1.0 ) { pos.x *= scaleChange.x; pos.y *= scaleChange.y; pos.z *= scaleChange.z; scale.x *= scaleChange.x; scale.y *= scaleChange.y; scale.z *= scaleChange.z; } llSetLinkPrimitiveParamsFast( i, [ PRIM_POSITION, pos, PRIM_ROTATION, rot/rootRot, PRIM_SIZE, scale ] ); } } } // This function is used to start a sequential animation playback. // If the delay speed is set too low, the script might not be able to keep up. playAnimation(float delay, integer loop) { if(delay < 0.1) delay = 1.0; if( loop == FALSE) playAnimationStyle = 1; else playAnimationStyle = 2; if (recordedSnapshots >= 1) llSetTimerEvent(delay); } // This shows the edit menu showMenuDialog() { string temp = (string)((float)freeMemory/(float)maxMemory * 100.0); string menuText = "Available Memory: " + (string)freeMemory + " (" + llGetSubString(temp, 0, 4) +"%)" + "\nCurrent Snapshot: " + (string)currentSnapshot +"\tSnapshots Recorded: " + (string)recordedSnapshots + "\n\n[ Record ] - Record a snapshot of prim positions\n[ Play ] - Play back all the recorded snapshots\n[ Publish ] - Finish the recording process\n[ Show Next ] - Show the next snapshot\n[ Show Prev ] - Show the previous snapshot"; llDialog(llGetOwner(), menuText, ["Record","Play","Publish","Show Prev","Show Next"], COMMAND_CHANNEL); } default { state_entry() { maxMemory = llGetFreeMemory(); freeMemory = llGetFreeMemory(); primCount = llGetNumberOfPrims(); commandListenerHandle = llListen(COMMAND_CHANNEL,"", llGetOwner(), ""); showMenuDialog(); //setting initial root scale. this allows the animation to scale if the root size is changed afterwards. rootScale = llGetScale(); } //Feel free to remove this on-touch trigger if you are using your own script to control playback touch_start(integer num_detected) { //only activate after publish. if (commandListenerHandle == -1) { //if animation not playing start it, else stop it. if( playAnimationStyle == 0) playAnimation(1.0,TRUE); else { playAnimationStyle = 0; llSetTimerEvent(0); } } } changed(integer change) { //this is needed to detect scale changes and record the differences in order to adjust the animation accordingly. if (change & CHANGED_SCALE) { if (rootScale != ZERO_VECTOR) { vector newScale = llGetScale(); //since change_scale is triggered even with linked prim changes, //this is to filter out non-root changes. if( ( newScale.x / rootScale.x) != scaleChange.x || ( newScale.y / rootScale.y) != scaleChange.y || ( newScale.z / rootScale.z) != scaleChange.z ) { scaleChange.x = newScale.x / rootScale.x; scaleChange.y = newScale.y / rootScale.y; scaleChange.z = newScale.z / rootScale.z; } } } // if new prims are added or removed from this object then the script resets // because the animations are now broken. else if (change & CHANGED_LINK) { if( primCount != llGetNumberOfPrims() ) { llOwnerSay("Link change detected, reseting script."); llResetScript(); } } } //The message link function is to allow other scripts to control the snapshot playback //This command will display snapshot #2: // llMessageLinked(LINK_ROOT, 2, "XDshow", NULL_KEY); llSleep(1.0); // //This command will play through all the recorded snapshots in ascending order. The number "1.0" is the delay speed and can be changed. // llMessageLinked(LINK_ROOT, 0, "XDplay", "1.0"); // //This command will loop through all the recorded snapshots in ascending order. The number "1.0" is the delay speed and can be changed. // llMessageLinked(LINK_ROOT, 0, "XDplayLoop", "1.0"); // //To stop any playing animation use // llMessageLinked(LINK_ROOT, 0, "XDstop", NULL_KEY); link_message(integer sender_num, integer num, string str, key id) { if ("XDshow" == str && num >= 1 && num <= recordedSnapshots) showSnapshot(num); else if ("XDplay" == str) { currentSnapshot = 1; float delay = (float)((string)id); playAnimation(delay,FALSE); } else if ("XDplayLoop" == str) { float delay = (float)((string)id); playAnimation(delay,TRUE); } else if ("XDstop" == str) { playAnimationStyle = 0; llSetTimerEvent(0); } } //This event handler takes care of all the editing commands. //Available commands are: record, play, publish, show next, show prev, show # listen(integer channel, string name, key id, string message) { list parsedMessage = llParseString2List(message, [" "], []); string firstWord = llToLower(llList2String(parsedMessage,0)); string secondWord = llToLower(llList2String(parsedMessage,1)); //display a snapshot if("show" == firstWord && recordedSnapshots > 0) { //stop any currently playing animation. llSetTimerEvent(0); if(secondWord == "next") { currentSnapshot++; if(currentSnapshot > recordedSnapshots) currentSnapshot = 1; showSnapshot(currentSnapshot); } else if(secondWord == "prev") { currentSnapshot--; if(currentSnapshot < 1) currentSnapshot = recordedSnapshots; showSnapshot(currentSnapshot); } else { // when the conversion fails, snapshotNumber = 0 currentSnapshot = (integer)secondWord; if(currentSnapshot > 0 && currentSnapshot <= recordedSnapshots ) { showSnapshot(currentSnapshot); llOwnerSay("Showing snapshot: "+(string)currentSnapshot); } else { llOwnerSay("Invalid snapshot number given: " + (string) currentSnapshot + "\nA valid snapshot number is between 1 and " + (string) recordedSnapshots); currentSnapshot = 1; } } } //record a snapshot else if(firstWord == "record") { integer i = 0; //2 is the first linked prim number. vector rootPos = llGetPos(); for( i = 2; i <= primCount; i++) { vector pos = llList2Vector(llGetLinkPrimitiveParams(i, [PRIM_POSITION]),0); //need to convert into local position pos.x -= rootPos.x; pos.z -= rootPos.z; pos.y -= rootPos.y; pos = pos / llGetRot(); posList += pos; rotation rot = llList2Rot(llGetLinkPrimitiveParams(i, [PRIM_ROTATION]),0); //Converting into local rot rot = rot / llGetRot(); rotList += rot; scaleList += llList2Vector(llGetLinkPrimitiveParams(i, [PRIM_SIZE]),0); } recordedSnapshots++; llOwnerSay("Total number of snapshots recorded: " + (string)recordedSnapshots); freeMemory = llGetFreeMemory(); } //play the animation from beginning to end once without looping. else if (firstWord == "play") { float delay = (float)secondWord; currentSnapshot = 1; //play the animation once without loop playAnimation(delay, FALSE); } //publish disables the recording features and enables the on-touch trigger else if("publish" == firstWord) { //stop any currently playing animation. llSetTimerEvent(0); playAnimationStyle = 0; currentSnapshot = 1; //remove listeners to disable recording llListenRemove(commandListenerHandle); commandListenerHandle = -1; //indicating that it's been published llOwnerSay("Recording disabled. Publish complete.\nClick me to toggle animation on/off."); } //if not published, show menu if(commandListenerHandle != -1) showMenuDialog(); } //Timer event is used to handle the animation playback. timer() { showSnapshot(currentSnapshot); //if not at the end of the animation, increment the counter if(currentSnapshot < recordedSnapshots) currentSnapshot++; else { // if animation is looping, set the counter back to 1 if( playAnimationStyle == 2) currentSnapshot = 1; // if animation isn't looping, stop the animation else { llSetTimerEvent(0); //if not published, show dialog menu if(commandListenerHandle != -1) showMenuDialog(); } } } }
  7. // This script is licensed under the Creative Commons Attribution-Share Alike 3.0 License // at http://creativecommons.org/licenses/by-sa/3.0/ unless the further rights are // in license information included in the script by the original author, // in which case the authors license must be followed. // Please leave any authors credits intact in any script you use or publish. //////////////////////////////////////////////////////////////////// // // author Ferd Frederix // Prim position root script // Put this script in the root prim. Put the child script in all prims you wish to move. // touch the script to start recording // Reset - wipe out all recording. // Name - name a new recording // Pause - insert a 1 second pause // PlayBack - play back the current animation // Record - store a new set of child prim positions // Notecard - print coords to chat for saving in a notecard // string NOTECARD = "Movement"; // the notecard for this script, you can add more than 1 script and notecard, just change this line to matchinteger playchannel = 1; // the playback channel, this is the channel you use in LinkMessagesinteger debug = FALSE; // if set to TRUE, debug info appears// notecard readingstring priorname; // the prior animation name so we can spot differences as we read them ininteger iIndexLines; // lines in a cardinteger inotecardIndex = 0; // notecard counter;integer move = 0; // N movements rea from the notecardkey kNoteCardLines; // the key of the notecardkey kGetIndexLines; // the key of the current line//communicationsinteger dialogchannel ; // dialog boxesinteger nPrims; // total number of primsinteger PrimsCounter = 0; // how many have checked ininteger timercounter = 0; // how many seconds have gone byinteger wantname; // flag indicating we are waiting for a name to be chatted// the list of coordslist masterlist; // master list of all positionslist llastPrimList; // storage of the last prim position we learnedstring curranimation; // what we are playinginteger STRIDE = 5; // size of the master listinteger lastSTRIDE = 4; // size of the last prim listinteger listener; // temp listener when we are waiting for them to give us a namevector InitSize; // the initial size when the prims were recordedlist LoadedAnims; // animations read from the notecard added to the Menu display// in case of hand editing, we wupe out extra stuff at endstring Getline(list Input, integer line){ return llStringTrim(llList2String(Input, line),STRING_TRIM);}Record(){ if (llStringLength(curranimation) > 0) { integer foundmovement = 0; // will be set if any child moved integer PrimCounter ; // skip past the root prim for (PrimCounter =2; PrimCounter <= nPrims; PrimCounter++ ) { list my_list = llGetLinkPrimitiveParams(PrimCounter,[PRIM_POSITION,PRIM_ROTATION, PRIM_SIZE ]); // position is always in region coordinates, even if the prim is a child or the root prim of an attachment. // rot is always the global rotation, even if the prim is a child or the root prim of an attachment. // get current prim pos, rot and size vector vrealPrimPos = llList2Vector (my_list,0) - llGetPos(); // position subtract Global Pos vrealPrimPos /= llGetRot(); rotation rrealPrimRot = llList2Rot (my_list,1) / llGetRot(); // rotation subtract Global Rot vector vrealPrimSize = llList2Vector (my_list,2); // size // compare it to the last one we had, stride of list is a 4, and it is already sorted integer iindex = (PrimCounter - 2) * lastSTRIDE; // zeroth position is PrimCounter - start, or 2 // get the last thing we remembered about this prim float fprimNum = llList2Integer (llastPrimList, iindex); // must be 0,1,2, in order vector vlastPrimPos = llList2Vector (llastPrimList, iindex+1); rotation rlastPrimRot = llList2Rot (llastPrimList, iindex+2); vector vlastPrimSize = llList2Vector (llastPrimList, iindex+3); // if anything changed on this prim, we must record it. if (vlastPrimPos != vrealPrimPos || rlastPrimRot != rrealPrimRot || vlastPrimSize!= vrealPrimSize ) { foundmovement++; // show owner any changes they mnade if (debug) { llOwnerSay("prim:" + (string) PrimCounter); if (vlastPrimPos != vrealPrimPos) llOwnerSay("pos delta :" + (string) (vrealPrimPos - vlastPrimPos)); if (rlastPrimRot != rrealPrimRot) llOwnerSay("rot delta:" + (string) (llRot2Euler (rrealPrimRot - rlastPrimRot) * RAD_TO_DEG)); if (vlastPrimSize != vrealPrimSize) llOwnerSay("size delta:" + (string) (vrealPrimSize - vlastPrimSize)); } //Save them in the master list of all animations masterlist += curranimation; masterlist += PrimCounter; masterlist += vrealPrimPos; masterlist += rrealPrimRot; masterlist += vrealPrimSize; // save them in the last movement list integer saved = FALSE; integer i; integer imax = llGetListLength(llastPrimList); // save the changes in the last prim list so we can keep our lists smaller for ( i=0; i < imax; i += lastSTRIDE ) { if (llList2Float(llastPrimList,i) == PrimCounter) { llastPrimList = llListReplaceList(llastPrimList,[vrealPrimPos],i+1,i+1); llastPrimList = llListReplaceList(llastPrimList,[rrealPrimRot],i+2,i+2); llastPrimList = llListReplaceList(llastPrimList,[vrealPrimSize],i+3,i+3); if (debug) llOwnerSay("In history at position " + (string) (i/lastSTRIDE)); saved++; } } // never moved before? add it then if (! saved) { if (debug) llOwnerSay("Someone added a new prim and then clicked Record"); llastPrimList += PrimCounter; llastPrimList += vrealPrimPos; llastPrimList += rrealPrimRot; llastPrimList += vrealPrimSize; } } // if } // for if (debug) llOwnerSay("history:" + llDumpList2String(llastPrimList,":")); if (!foundmovement) llOwnerSay("You must move at least one child prim."); } else { llOwnerSay("You must name your animation."); llOwnerSay("Type the new animation name on channel /" + (string) dialogchannel); wantname++; }}// on reset, record the base position in history so we can see changesClear(){ LoadedAnims = []; // wipe out Menu masterlist = []; // wipe all recordings llastPrimList = []; // wipe last animations integer PrimCounter ; // skip 1, which is the root prim integer counter = 0; // save all the current settings in memory for (PrimCounter=2; PrimCounter <= nPrims; PrimCounter++ ) { list my_list = llGetLinkPrimitiveParams(PrimCounter,[PRIM_POSITION,PRIM_ROTATION, PRIM_SIZE ]); // save the local pos and rot, since llGetLinkPrimitiveParams returns global pos and rot vector primpos = llList2Vector (my_list,0) - llGetPos(); rotation primrot = llList2Rot (my_list,1) / llGetRot(); vector primsize = llList2Vector (my_list,2) ; llastPrimList += PrimCounter; llastPrimList += primpos; llastPrimList += primrot; llastPrimList += primsize; counter++; } if(debug) llOwnerSay("Saved " + (string) counter + " prims initial position in history");}DumpBack (){ integer i; integer imax = llGetListLength(masterlist); integer howmany = imax / STRIDE ; llOwnerSay((string) howmany + " movements recorded - copy these and paste them into the notecard"); integer flag = 0; for (i = 0; i < imax; i+= STRIDE) { if ( i == 0 ) llOwnerSay( "|start|" + (string) llGetScale()); string saniName = llList2String(masterlist,i); curranimation = saniName; float fprimNum = llList2Integer(masterlist, i+1); integer iprimNum = (integer) fprimNum; vector vprimPos = llList2Vector(masterlist, i+2); rotation rprimRot = llList2Rot(masterlist, i+3) ; vector vprimSize = llList2Vector(masterlist, i+4); llOwnerSay("|"+ saniName + "|" + (string) iprimNum + "|" + (string) vprimPos + "|" + (string) rprimRot + "|" + (string) vprimSize ); flag++; } if (! flag) llOwnerSay("No recording was made, nothing to play back." );}rotation calcChildRot(rotation rdeltaRot){ if (llGetAttached()) return rdeltaRot/llGetLocalRot(); else return rdeltaRot/llGetRootRotation();}PlayBack (string name){ integer i; integer imax = llGetListLength(masterlist); integer linknum = 0; for (i = 0; i < imax; i+= STRIDE) { string saniName = llList2String(masterlist,i); if (saniName == name) { float fprimNum = llList2Float(masterlist,i+1); vector vPos = llList2Vector(masterlist,i+2); rotation rRot = llList2Rot(masterlist,i+3) ; vector vprimSize = llList2Vector(masterlist,i+4) ; vector scale = llGetScale(); float delta = scale.x / InitSize.x ; // see if the root prim has grown or shrunk as a percentage vPos *= delta; // add any difference in size to it positions there vprimSize *= delta; // grow the child prim, too // support negative prim numbers as a delay if (fprimNum < 0) { if (debug) llOwnerSay("Sleeping " + (string) (fprimNum * -1)); llSleep((float) fprimNum * -1); } else { if (fprimNum > 1 ) { // set the local pos and locat rot to the prims orientation and position rRot = calcChildRot(rRot); list actions = [PRIM_POSITION,vPos,PRIM_ROTATION,rRot,PRIM_SIZE,vprimSize]; if (debug) llOwnerSay("Moving prim :" + (string) fprimNum + ":" + llDumpList2String(actions,":")); llSetLinkPrimitiveParamsFast((integer) fprimNum,actions); } } } }}MakeMenu(){ list amenu = ["Reset","Record","Help","Name","Notecard","Pause"] + LoadedAnims; llListenRemove(listener); listener = llListen(dialogchannel,"","",""); llDialog(llGetOwner(), "Pick a command",amenu,dialogchannel);}default{ state_entry() { InitSize = llGetScale(); // save the size when we recorded the prims nPrims = llGetNumberOfPrims(); // how many we are recording if (debug) llOwnerSay(" Total Prims = " + (string) nPrims); Clear(); string notecardname = llGetInventoryName(INVENTORY_NOTECARD,0); if (llStringLength(notecardname) > 0) { kNoteCardLines = llGetNumberOfNotecardLines(NOTECARD); kGetIndexLines = llGetNotecardLine(NOTECARD,0); } else { llOwnerSay("If you add a notecard, you can save your animations permanently in a notecard named " + NOTECARD); } dialogchannel = (integer) (llFrand(100) +600); } // read notecard on bootup dataserver(key queryid, string data) { if (queryid == kNoteCardLines) { iIndexLines = (integer) data; } if (queryid == kGetIndexLines) { if (data != EOF) { queryid = llGetNotecardLine(NOTECARD, inotecardIndex); list lLine = (llParseString2List(data, ["|"], [])); string junk = llList2String(lLine,0); string aniname = llList2String(lLine,1); string aNum = (string) Getline(lLine,2); // check for the prim size,and save it, the fiorst line will look like this: // [18:06] prim position 1.2: |start|<1.02306, 1.02306, 1.02306> if (inotecardIndex == 0 && aniname == "start") { InitSize = (vector) aNum; } else if (inotecardIndex == 0 && aniname != "start") { llOwnerSay("The notecard " + NOTECARD + " is incorrect, it must begin with 'start|<x,y,z>' with the size of the original prim"); } else { float Num = (float) aNum; vector vPos = (vector) Getline(lLine,3); // global for calcChild() rotation rRot = (rotation) Getline(lLine,4); // global for calcChild() vector Size = (vector) Getline(lLine,5); vector scale = llGetScale(); float delta = scale.x / InitSize.x ; // see if the root prim has grown or shrunk as a percentage if (aniname != priorname) { llOwnerSay("Loading animation " + aniname); priorname = aniname; LoadedAnims += aniname; } if(Num != 1) // skip root prim { masterlist += [aniname]; masterlist += [Num]; masterlist += [vPos]; masterlist += [rRot]; masterlist += [size]; if (Num > 1) // not the pauses { rRot = calcChildRot(rRot); vPos *= delta; // add any difference in size to it positions there Size *= delta; // grow the child prim, too llSetLinkPrimitiveParamsFast((integer) Num,[PRIM_POSITION,vPos,PRIM_ROTATION,rRot,PRIM_SIZE,Size]); move++; } } } inotecardIndex++; integer InitPerCent = (integer) llRound(( (inotecardIndex+1) / (float) iIndexLines) * 100); llSetText("Initialising... \n" + (string) InitPerCent + "%" , <1,1,1>, 1.0); if (InitPerCent >= 100) llSetText("" , <1,1,1>, 1.0); kGetIndexLines = llGetNotecardLine(NOTECARD,inotecardIndex); } else { llOwnerSay("initialized with " + (string) move + " movements"); llSetText("" , <1,1,1>, 1.0); } } } touch_start(integer total_number) { if (llDetectedKey(0) == llGetOwner()) { MakeMenu(); } // add any control code here // example: // llMessageLinked(LINK_SET,playchannel,"All",""); // will play Animation named "All" } listen( integer channel, string name, key id, string message ) { if (channel == dialogchannel) { if (message == "Reset") { Clear(); if (debug) llOwnerSay("Reset = " + llDumpList2String(llastPrimList,":")); MakeMenu(); } else if (message =="Pause") { masterlist += curranimation; masterlist += -1; masterlist += <0,0,0>; // pos masterlist += <0,0,0,1>;// rot masterlist += <0,0,0>; // size MakeMenu(); } else if (message == "Record") { Record(); MakeMenu(); } else if (message == "Name") { llOwnerSay("Type the current animation name on channel /" + (string) dialogchannel); wantname++; MakeMenu(); } else if (message =="Menu") { MakeMenu(); } else if (message == "Notecard") { DumpBack(); MakeMenu(); } else if (message == "Help") { llLoadURL(llGetOwner(),"View online help", "http://secondlife.mitsi.com/secondlife/Posts/Prim-Animator"); } else if (wantname) { curranimation = message; LoadedAnims += message; MakeMenu(); llOwnerSay("Recording is ready for animation '" + curranimation + "'"); llOwnerSay("Position all child prims, then select the Menu item 'Record', and repeat as necessary. When finished, click 'PlayBack' to play back the animation, or click the animation name. Click 'Name' to start a new animation sequence"); wantname = 0; PrimsCounter = 0; timercounter = 0; llSetTimerEvent(1.0); } else { if (llListFindList(LoadedAnims,[message]) != -1) { PlayBack(message); MakeMenu(); } } } } link_message(integer sender_num, integer num, string message, key id) { if (num == playchannel) { if (debug) llOwnerSay("playback animation " + message); PlayBack(message); } }}// Look for updates at : http://www.free-lsl-scripts.com/freescripts.plx?ID=1519// __END__
  8. Identification llGetLinkPrimitiveParams is not in the current context Super_Prim_Animator_using_one_script_1655 [1]. LINE:86 llGetLinkPrimitiveParams name is not in the current context Super_Prim_Animator_using_one_script_1655 [1]. LINE :187 llSetLinkPrimitiveParamsFast name is not in the current context Super_Prim_Animator_using_one_script_1655 [1]. LINE:284 llSetLinkPrimitiveParamsFast name is not in the current context Super_Prim_Animator_using_one_script_1655 [1]. LINE:391
  9. Need help with this script i get errors if anyone can fix it please:D I cant paste the code at this forum but the script is here The First One
  10. Ok i know that i need to create a animation for my pet but wich script will make this animation work when it moves around and changes position
  11. hi i has builded a pet and want to make it moves around when i say something and when it moves the leg swing like if a dog/cat walking
  12. I Has searched for something like that modify and copy but i has not find anything
  13. Does anyone have a example of what i want in marketplace that is free
  14. So i have to make a animation that the my dog i builded will do ok but wich script will i use ?
×
×
  • Create New...