// The Kittie's Lair Lena Perky/Lena Lush body is a nice
// editable mesh body. I use this body for my growing army
// of NPCs, and most of their wardrobes contain only a non-
// scripted copy of the body's skin layer (without tattoo,
// underwear or clothing layers) The skin layer for the
// more recent Lenas consist of 4 meshes and a total of 32
// faces that can be hidden or visible
// The long list of 32 body parts are a method of creating
// and sending out body masks that work with various out-
// fits. The way I create the masks is to keep a copy of
// the Lena skin layer rezzed, and then it's as simple as
// clicking the body parts I want hidden and plugging TRUE
// or FALSE into values for each part in a new script. (For
// example, a pair of high waisted jeans may require all
// faces between "belly" to "upperfoot" be set to FALSE).
// The rezzed body acts like a HUD, and it communicates with
// the skin layer I'm wearing so I can see how it works with
// an outfit. It also tells me what to mask in a new script.
// When I finish, I send the new script to each NPC and that
// script dropped into an unscripted skin layer. The script
// automatically hides the faces and does one more thing...
// The modesty function determines if the NPC is on her own
// group land, or may have accidentally logged in or tele-
// ported somewhere unexpected. While the NPC is making an
// effort to teleport, the script uses color to "clothe" the
// Lena skin layer until the NPC can move to a new parcel.
integer listenHandle;
integer chan_no = 22992288;
integer LATEX = FALSE;
integer CATSUIT = FALSE;
integer wrist = TRUE;
integer forearm = TRUE;
integer elbow = TRUE;
integer shoulder = TRUE;
integer neck = TRUE;
integer collar = TRUE;
integer breastbone = TRUE;
integer upperback = TRUE;
integer chest = TRUE;
integer nipple = TRUE;
integer breasts = TRUE;
integer sternum = TRUE;
integer back = TRUE;
integer lowerribs = TRUE;
integer abdomen = TRUE;
integer navel = TRUE;
integer belly = TRUE;
integer pubis = TRUE;
integer cstring = TRUE;
integer midbutt = TRUE;
integer cheekythigh = TRUE;
integer upperthigh = TRUE;
integer midthigh = TRUE;
integer lowerthigh = TRUE;
integer aboveknee = TRUE;
integer knee = TRUE;
integer uppercalf = TRUE;
integer midcalf = TRUE;
integer lowercalf = TRUE;
integer upperankle = TRUE;
integer ankle = TRUE;
integer upperfoot = TRUE;
integer blankvalue;
vector UNCOVER = <1.00,1.00,1.00>;
vector COVERED = <0.05,0.05,0.05>;
integer modesty(string region)
{
if (region == "For You" || region == "Marwood" || region == "Icefyre" || region == "Lexilan" || region == "Yongma" || region == "Applewood" || region == "Gianno")
{
llSetLinkPrimitiveParamsFast(4, [
PRIM_COLOR, 0, UNCOVER, upperback,PRIM_BUMP_SHINY, 0, FALSE, FALSE,
PRIM_COLOR, 1, UNCOVER, breastbone,PRIM_BUMP_SHINY, 1, FALSE, FALSE,
PRIM_COLOR, 2, UNCOVER, collar, PRIM_BUMP_SHINY, 2, FALSE, FALSE,
PRIM_COLOR, 3, UNCOVER, neck,PRIM_BUMP_SHINY, 3, FALSE, FALSE,
PRIM_COLOR, 4, UNCOVER, shoulder, PRIM_BUMP_SHINY, 4, FALSE, FALSE,
PRIM_COLOR, 5, UNCOVER, elbow, PRIM_BUMP_SHINY, 5, FALSE, FALSE,
PRIM_COLOR, 6, UNCOVER, forearm, PRIM_BUMP_SHINY, 6, FALSE, FALSE,
PRIM_COLOR, 7, UNCOVER, wrist, PRIM_BUMP_SHINY, 7, FALSE, FALSE,
PRIM_LINK_TARGET, 3,
PRIM_COLOR, 7, UNCOVER, chest, PRIM_BUMP_SHINY, 7, FALSE, FALSE,
PRIM_COLOR, 6, UNCOVER, breasts, PRIM_BUMP_SHINY, 6, FALSE, FALSE,
PRIM_COLOR, 5, UNCOVER, nipple, PRIM_BUMP_SHINY, 5, FALSE, FALSE,
PRIM_COLOR, 4, UNCOVER, back, PRIM_BUMP_SHINY, 4, FALSE, FALSE,
PRIM_COLOR, 3, UNCOVER, sternum, PRIM_BUMP_SHINY, 3, FALSE, FALSE,
PRIM_COLOR, 2, UNCOVER, lowerribs, PRIM_BUMP_SHINY, 2, FALSE, FALSE,
PRIM_COLOR, 1, UNCOVER, abdomen, PRIM_BUMP_SHINY, 1, FALSE, FALSE,
PRIM_COLOR, 0, UNCOVER, navel, PRIM_BUMP_SHINY, 0, FALSE, FALSE,
PRIM_LINK_TARGET, 2,
PRIM_COLOR, 7, UNCOVER, belly, PRIM_BUMP_SHINY, 7, FALSE, FALSE,
PRIM_COLOR, 6, UNCOVER, pubis, PRIM_BUMP_SHINY, 6, FALSE, FALSE,
PRIM_COLOR, 5, UNCOVER, cstring, PRIM_BUMP_SHINY, 5, FALSE, FALSE,
PRIM_COLOR, 4, UNCOVER, midbutt, PRIM_BUMP_SHINY, 4, FALSE, FALSE,
PRIM_COLOR, 3, UNCOVER, cheekythigh, PRIM_BUMP_SHINY, 3, FALSE, FALSE,
PRIM_COLOR, 2, UNCOVER, upperthigh, PRIM_BUMP_SHINY, 2, FALSE, FALSE,
PRIM_COLOR, 1, UNCOVER, midthigh, PRIM_BUMP_SHINY, 1, FALSE, FALSE,
PRIM_COLOR, 0, UNCOVER, lowerthigh, PRIM_BUMP_SHINY, 0, FALSE, FALSE,
PRIM_LINK_TARGET, 1,
PRIM_COLOR, 7, UNCOVER, aboveknee, PRIM_BUMP_SHINY, 7, FALSE, FALSE,
PRIM_COLOR, 6, UNCOVER, knee, PRIM_BUMP_SHINY, 6, FALSE, FALSE,
PRIM_COLOR, 5, UNCOVER, uppercalf, PRIM_BUMP_SHINY, 5, FALSE, FALSE,
PRIM_COLOR, 4, UNCOVER, midcalf, PRIM_BUMP_SHINY, 4, FALSE, FALSE,
PRIM_COLOR, 3, UNCOVER, lowercalf, PRIM_BUMP_SHINY, 3, FALSE, FALSE,
PRIM_COLOR, 2, UNCOVER, upperankle, PRIM_BUMP_SHINY, 2, FALSE, FALSE,
PRIM_COLOR, 1, UNCOVER, ankle, PRIM_BUMP_SHINY, 1, FALSE, FALSE,
PRIM_COLOR, 0, UNCOVER, upperfoot, PRIM_BUMP_SHINY, 0, FALSE, FALSE]);
}
else if (CATSUIT)
{
llSetLinkPrimitiveParamsFast(LINK_SET,[PRIM_COLOR, ALL_SIDES, COVERED, TRUE ,PRIM_BUMP_SHINY, ALL_SIDES, LATEX, FALSE]);
llSetLinkPrimitiveParamsFast(4, [PRIM_COLOR, 7, UNCOVER, wrist, PRIM_BUMP_SHINY, 7, FALSE, FALSE, PRIM_COLOR, 3, UNCOVER, neck,PRIM_BUMP_SHINY, 3, FALSE, FALSE]);
}
else
{
llSetLinkPrimitiveParamsFast(4, [
PRIM_COLOR, 0, COVERED, upperback,PRIM_BUMP_SHINY, 0, LATEX, FALSE,
PRIM_COLOR, 1, COVERED, breastbone,PRIM_BUMP_SHINY, 1, LATEX, FALSE,
PRIM_COLOR, 2, COVERED, collar, PRIM_BUMP_SHINY, 2, LATEX, FALSE,
PRIM_COLOR, 3, UNCOVER, neck,PRIM_BUMP_SHINY, 3, FALSE, FALSE,
PRIM_COLOR, 4, UNCOVER, shoulder, PRIM_BUMP_SHINY, 4, FALSE, FALSE,
PRIM_COLOR, 5, UNCOVER, elbow, PRIM_BUMP_SHINY, 5, FALSE, FALSE,
PRIM_COLOR, 6, UNCOVER, forearm, PRIM_BUMP_SHINY, 6, FALSE, FALSE,
PRIM_COLOR, 7, UNCOVER, wrist, PRIM_BUMP_SHINY, 7, FALSE, FALSE,
PRIM_LINK_TARGET, 3,
PRIM_COLOR, 7, COVERED, chest, PRIM_BUMP_SHINY, 7, LATEX, FALSE,
PRIM_COLOR, 6, COVERED, breasts, PRIM_BUMP_SHINY, 6, LATEX, FALSE,
PRIM_COLOR, 5, COVERED, nipple, PRIM_BUMP_SHINY, 5, LATEX, FALSE,
PRIM_COLOR, 4, COVERED, back, PRIM_BUMP_SHINY, 4, LATEX, FALSE,
PRIM_COLOR, 3, COVERED, sternum, PRIM_BUMP_SHINY, 3, LATEX, FALSE,
PRIM_COLOR, 2, COVERED, lowerribs, PRIM_BUMP_SHINY, 2, LATEX, FALSE,
PRIM_COLOR, 1, COVERED, abdomen, PRIM_BUMP_SHINY, 1, LATEX, FALSE,
PRIM_COLOR, 0, COVERED, navel, PRIM_BUMP_SHINY, 0, LATEX, FALSE,
PRIM_LINK_TARGET, 2,
PRIM_COLOR, 7, COVERED, belly, PRIM_BUMP_SHINY, 7, LATEX, FALSE,
PRIM_COLOR, 6, COVERED, pubis, PRIM_BUMP_SHINY, 6, LATEX, FALSE,
PRIM_COLOR, 5, COVERED, cstring, PRIM_BUMP_SHINY, 5, LATEX, FALSE,
PRIM_COLOR, 4, UNCOVER, midbutt, PRIM_BUMP_SHINY, 4, FALSE, FALSE,
PRIM_COLOR, 3, UNCOVER, cheekythigh, PRIM_BUMP_SHINY, 3, FALSE, FALSE,
PRIM_COLOR, 2, UNCOVER, upperthigh, PRIM_BUMP_SHINY, 2, FALSE, FALSE,
PRIM_COLOR, 1, UNCOVER, midthigh, PRIM_BUMP_SHINY, 1, FALSE, FALSE,
PRIM_COLOR, 0, UNCOVER, lowerthigh, PRIM_BUMP_SHINY, 0, FALSE, FALSE,
PRIM_LINK_TARGET, 1,
PRIM_COLOR, 7, UNCOVER, aboveknee, PRIM_BUMP_SHINY, 7, FALSE, FALSE,
PRIM_COLOR, 6, UNCOVER, knee, PRIM_BUMP_SHINY, 6, FALSE, FALSE,
PRIM_COLOR, 5, UNCOVER, uppercalf, PRIM_BUMP_SHINY, 5, FALSE, FALSE,
PRIM_COLOR, 4, UNCOVER, midcalf, PRIM_BUMP_SHINY, 4, FALSE, FALSE,
PRIM_COLOR, 3, UNCOVER, lowercalf, PRIM_BUMP_SHINY, 3, FALSE, FALSE,
PRIM_COLOR, 2, UNCOVER, upperankle, PRIM_BUMP_SHINY, 2, FALSE, FALSE,
PRIM_COLOR, 1, UNCOVER, ankle, PRIM_BUMP_SHINY, 1, FALSE, FALSE,
PRIM_COLOR, 0, UNCOVER, upperfoot, PRIM_BUMP_SHINY, 0, FALSE, FALSE]);
}
return TRUE;
}
integer changealphas(string controller)
{
wrist = forearm = elbow = shoulder = neck = collar = breastbone = upperback = TRUE;
chest = nipple = breasts = sternum = back = lowerribs = abdomen = navel = TRUE;
belly = pubis = cstring = midbutt = cheekythigh = upperthigh = midthigh = lowerthigh = TRUE;
aboveknee = knee = uppercalf = midcalf = lowercalf = upperankle = ankle = upperfoot = TRUE;
if (llGetSubString(controller, 0, 0) == "0") wrist = FALSE;
if (llGetSubString(controller, 1, 1) == "0") forearm = FALSE;
if (llGetSubString(controller, 2, 2) == "0") elbow = FALSE;
if (llGetSubString(controller, 3, 3) == "0") shoulder = FALSE;
if (llGetSubString(controller, 4, 4) == "0") neck = FALSE;
if (llGetSubString(controller, 5, 5) == "0") collar = FALSE;
if (llGetSubString(controller, 6, 6) == "0") breastbone = FALSE;
if (llGetSubString(controller, 7, 7) == "0") upperback = FALSE;
if (llGetSubString(controller, 8, 8) == "0") chest = FALSE;
if (llGetSubString(controller, 9, 9) == "0") nipple = FALSE;
if (llGetSubString(controller, 10, 10) == "0") breasts = FALSE;
if (llGetSubString(controller, 11, 11) == "0") sternum = FALSE;
if (llGetSubString(controller, 12, 12) == "0") back = FALSE;
if (llGetSubString(controller, 13, 13) == "0") lowerribs = FALSE;
if (llGetSubString(controller, 14, 14) == "0") abdomen = FALSE;
if (llGetSubString(controller, 15, 15) == "0") navel = FALSE;
if (llGetSubString(controller, 16, 16) == "0") belly = FALSE;
if (llGetSubString(controller, 17, 17) == "0") pubis = FALSE;
if (llGetSubString(controller, 18, 18) == "0") cstring = FALSE;
if (llGetSubString(controller, 19, 19) == "0") midbutt = FALSE;
if (llGetSubString(controller, 20, 20) == "0") cheekythigh = FALSE;
if (llGetSubString(controller, 21, 21) == "0") upperthigh = FALSE;
if (llGetSubString(controller, 22, 22) == "0") midthigh = FALSE;
if (llGetSubString(controller, 23, 23) == "0") lowerthigh = FALSE;
if (llGetSubString(controller, 24, 24) == "0") aboveknee = FALSE;
if (llGetSubString(controller, 25, 25) == "0") knee = FALSE;
if (llGetSubString(controller, 26, 26) == "0") uppercalf = FALSE;
if (llGetSubString(controller, 27, 27) == "0") midcalf = FALSE;
if (llGetSubString(controller, 28, 28) == "0") lowercalf = FALSE;
if (llGetSubString(controller, 29, 29) == "0") upperankle = FALSE;
if (llGetSubString(controller, 30, 30) == "0") ankle = FALSE;
if (llGetSubString(controller, 31, 31) == "0") upperfoot = FALSE;
return TRUE;
}
string manualclick (integer prim_no, integer face_no)
{
string alphavalues;
if (prim_no == 4)
{
if (face_no == 0) upperback = !upperback;
else if (face_no == 1) breastbone = !breastbone;
else if(face_no == 2) collar = !collar;
else if(face_no == 3) neck = !neck;
else if(face_no == 4) shoulder = !shoulder;
else if(face_no == 5) elbow = !elbow;
else if(face_no == 6) forearm = !forearm;
else if(face_no == 7) wrist = !wrist;
}
else if (prim_no == 3)
{
if (face_no == 7) chest = !chest;
else if(face_no == 6) breasts = !breasts;
else if(face_no == 5) nipple = !nipple;
else if(face_no == 4) back = !back;
else if(face_no == 3) sternum = !sternum;
else if(face_no == 2) lowerribs = !lowerribs;
else if(face_no == 1) abdomen = !abdomen;
else if(face_no == 0) navel = !navel;
}
else if (prim_no == 2)
{
if (face_no == 7) belly = !belly;
else if(face_no == 6) pubis = !pubis;
else if(face_no == 5) cstring = !cstring;
else if(face_no == 4) midbutt = !midbutt;
else if(face_no == 3) cheekythigh = !cheekythigh;
else if(face_no == 2) upperthigh = !upperthigh;
else if(face_no == 1) midthigh = !midthigh;
else if(face_no == 0) lowerthigh = !lowerthigh;
}
else if (prim_no == 1)
{
if (face_no == 7) aboveknee = !aboveknee;
else if(face_no == 6) knee = !knee;
else if(face_no == 5) uppercalf = !uppercalf;
else if(face_no == 4) midcalf = !midcalf;
else if(face_no == 3) lowercalf = !lowercalf;
else if(face_no == 2) upperankle = !upperankle;
else if(face_no == 1) ankle = !ankle;
else if(face_no == 0) upperfoot = !upperfoot;
}
alphavalues = (string)wrist + (string)forearm + (string)elbow + (string)shoulder + (string)neck + (string)collar + (string)breastbone + (string)upperback + (string)chest + (string)nipple + (string)breasts + (string)sternum + (string)back + (string)lowerribs + (string)abdomen + (string)navel + (string)belly + (string)pubis + (string)cstring + (string)midbutt + (string)cheekythigh + (string)upperthigh + (string)midthigh + (string)lowerthigh + (string)aboveknee + (string)knee + (string)uppercalf + (string)midcalf + (string)lowercalf + (string)upperankle + (string)ankle + (string)upperfoot;
return alphavalues;
}
default
{
state_entry()
{
listenHandle = llListen(chan_no, "", "", "");
blankvalue = modesty(llGetRegionName());
}
changed(integer change)
{
if (change & CHANGED_REGION) blankvalue = modesty(llGetRegionName());
}
on_rez(integer start_param)
{
blankvalue = modesty(llGetRegionName());
}
listen(integer channel, string name, key id, string message)
{
message = llStringTrim(message, STRING_TRIM);
if (llGetSubString(message, 0, 0) == "0" || llGetSubString(message, 0, 0) == "1")
{
blankvalue = changealphas(message);
blankvalue = modesty(llGetRegionName());
}
else llSay (0,"Not valid");
}
touch_end(integer num_detected)
{
llSay(chan_no, manualclick(llDetectedLinkNumber(0),llDetectedTouchFace(0)));
blankvalue = modesty(llGetRegionName());
}
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎