//Roz's llSetLinkPrimitiveParams Texture Info Sender. //Set up to work with Texture Info HUD and Receiver //FIXED: Deleted comma in overflow string 4-15-19 //WARNING: YOU MUST HAVE FULL PERMISSIONS ON TEXTURES //AND THE OBJECTS YOU'RE TEXTURING FOR THIS TO WORK. //PRIM_TEXTURE DOES NOT RETURN A UUID FOR OBJECTS THAT //ARE NOT FULL PERM. //Change textures on multilinked objects and get the //llSetLinkPrimitiveParamsFast and llSetPrimitiveParams //PRIM_TEXTURE and PRIM_COLOR information back in local //chat to cut and paste into texture change scripts. //Texture your model the way you want it, pop in the //script, and get the LSL settings for recreating your //texture information in a script friendly format. //THIS IS THE CREATOR'S SCRIPT, DON'T PUT THIS SCRIPT //IN AN ACTUAL PRODUCT TO BE SOLD. Rez a copy of the //clothing item you will use to test your textures on. //Put this script in the test version to record your //texture and color edits. The information you see in //chat will be what you want to paste into your customer //script. //Change the object description in your test model to //what you want your texture preset to be called. Using //user-defined functions to store texture information //avoids the hassle with notecard and dataserver events. integer primFaces; integer primz; integer primLoop; integer faceLoop; integer facez; integer spamzy; primLink() { primz = llGetObjectPrimCount(llGetKey()); list textureInfo; list colorInfo; string infochat; string colorchat; string overflow; string fName = llGetObjectDesc( ); integer colorCheck; integer textureOverflow; integer multiPrim = FALSE; integer OFi; //overflow index if (primz > 1) multiPrim = TRUE; //llSay (0, fName + "( ) {"); for (primLoop=multiPrim; primLoop<=(primz * multiPrim); primLoop++) //Gets information for every link { primFaces = llGetLinkNumberOfSides(primLoop); if (primFaces > 6) textureOverflow = TRUE; else textureOverflow = FALSE; colorchat = overflow = infochat = "llSetLinkPrimitiveParamsFast (" + (string)primLoop + ", ["; if (!multiPrim) colorchat = overflow = infochat = "llSetPrimitiveParams(["; colorchat = "llSetLinkPrimitiveParamsFast (" + (string)primLoop + ", ["; colorCheck = FALSE; for (faceLoop=0; faceLoop 0) { colorchat = colorchat + ", "; infochat = infochat + ", ";//Adds commas except at the end } infochat = infochat + "PRIM_TEXTURE, " + (string)faceLoop + ", " + llList2CSV(textureInfo); colorchat = colorchat + "PRIM_COLOR, " + (string)faceLoop + ", " + llList2CSV(colorInfo); if (llList2Vector(colorInfo,0) != <1.00,1.00,1.00>) colorCheck=TRUE; } if (textureOverflow) //Split the information in chat { //Don't let chat character limits render the code //useless, it should still be able to be cut and //pasted into a script with as little editing as //possible. OFi = llSubStringIndex(infochat, ", PRIM_TEXTURE, 4"); overflow = overflow + llGetSubString(infochat, OFi + 2, -1); infochat = llDeleteSubString(infochat, OFi, -1); } infochat = infochat + "] );"; colorchat = colorchat + "] );"; //The next part sends the information into local chat //from your editing copy to be used in a script for //to put into your finished product. //if you need an extra set of eyes.... llSay(0, infochat); //llSay instead of llOwnerSay, should you need an extra set of eyes. if (textureOverflow) llSay(0, overflow + "] );"); if (colorCheck) llSay(0, colorchat); //or, if you don't need help... //llOwnerSay(infochat); //if (textureOverflow) llOwnerSay(0, overflow + "] );"); //if (colorCheck) llOwnerSay(0, colorchat); } //llSay(0, "} //End "+ fName); } default { state_entry() { primLink(); } changed(integer change) { //If multiple changes to link order are made, there's no //need to continuously spam the owner with updates. if (spamzy == FALSE) { if (change & (CHANGED_COLOR|CHANGED_TEXTURE)) { llOwnerSay ("Touch me, once you're finished editing, to update the object's texture information."); //llSay (0, "Touch me, once you're finished editing, to update the object's texture information."); spamzy = TRUE; } } } touch_start(integer total_number) { //Let's update the information for all links llResetScript(); } }