User:Kisamin Resident
<lsl> string g_sConfigCardName; integer g_iConfigCardLine;
string g_sTypingAnimationSpecification = "Typing";
float g_fChangeAnimsTime = 30.;
list g_lStanding; list g_lWalking; list g_lSitting; list g_lSittingOnGround; list g_lCrouching; list g_lCrouchWalking; list g_lLanding; list g_lStandingUp; list g_lFalling; list g_lFlyingDown; list g_lFlyingUp; list g_lFlying; list g_lHovering; list g_lJumping; list g_lPreJumping; list g_lRunning; list g_lTurningRight; list g_lTurningLeft; list g_lFloating; list g_lSwimmingForward; list g_lSwimmingUp; list g_lSwimmingDown; list g_lTyping;
dump (string in_sLabel, list in_lAnims) {
llSay (0, in_sLabel); if (in_lAnims == []) llSay (0, "<Empty>"); else llSay (0, llDumpList2String (in_lAnims, "--"));
}
integer index (list in_lList) {
integer i = llGetListLength (in_lList); if (i == 0) return -1; return (integer)llFrand (i);
}
selectAnims() {
integer i; i = index(g_lStanding);
if (i == -1) llResetAnimationOverride ("Standing"); else llSetAnimationOverride( "Standing", llList2String (g_lStanding, i)); i = index(g_lWalking); if (i == -1) llResetAnimationOverride ("Walking"); else llSetAnimationOverride( "Walking", llList2String (g_lWalking, i));
i = index(g_lSitting); if (i == -1) llResetAnimationOverride ("Sitting"); else llSetAnimationOverride( "Sitting", llList2String (g_lSitting, i));
i = index(g_lSittingOnGround); if (i == -1) llResetAnimationOverride ("Sitting on Ground"); else llSetAnimationOverride( "Sitting on Ground", llList2String (g_lSittingOnGround, i));
i = index(g_lCrouching); if (i == -1) llResetAnimationOverride ("Crouching"); else llSetAnimationOverride( "Crouching", llList2String (g_lCrouching, i));
i = index(g_lCrouchWalking); if (i == -1) llResetAnimationOverride ("CrouchWalking"); else llSetAnimationOverride( "Crouch Walking", llList2String (g_lCrouchWalking, i));
i = index(g_lLanding); if (i == -1) llResetAnimationOverride ("Landing"); else llSetAnimationOverride( "Landing", llList2String (g_lLanding, i));
i = index(g_lStandingUp); if (i == -1) llResetAnimationOverride ("Standing Up"); else llSetAnimationOverride( "Standing Up", llList2String (g_lStandingUp, i));
i = index(g_lFalling); if (i == -1) llResetAnimationOverride ("Falling Down"); else llSetAnimationOverride( "Falling Down", llList2String (g_lFalling, i));
i = index(g_lFlyingDown); if (i == -1) llResetAnimationOverride ("Hovering Down"); else llSetAnimationOverride( "Hovering Down", llList2String (g_lFlyingDown, i));
i = index(g_lFlyingUp); if (i == -1) llResetAnimationOverride ("Hovering Up"); else llSetAnimationOverride( "Hovering Up", llList2String (g_lFlyingUp, i));
i = index(g_lFlying); if (i == -1) llResetAnimationOverride ("Flying"); else llSetAnimationOverride( "Flying", llList2String (g_lFlying, i));
i = index(g_lHovering); if (i == -1) llResetAnimationOverride ("Hovering"); else llSetAnimationOverride( "Hovering", llList2String (g_lHovering, i));
i = index(g_lJumping); if (i == -1) llResetAnimationOverride ("Jumping"); else llSetAnimationOverride( "Jumping", llList2String (g_lJumping, i));
i = index(g_lPreJumping); if (i == -1) llResetAnimationOverride ("PreJumping"); else llSetAnimationOverride( "PreJumping", llList2String (g_lPreJumping, i));
i = index(g_lRunning); if (i == -1) llResetAnimationOverride ("Running"); else llSetAnimationOverride( "Running", llList2String (g_lRunning, i));
i = index(g_lTurningRight); if (i == -1) llResetAnimationOverride ("Turning Right"); else llSetAnimationOverride( "Turning Right", llList2String (g_lTurningRight, i));
i = index(g_lTurningLeft); if (i == -1) llResetAnimationOverride ("Turning Left"); else llSetAnimationOverride( "Turning Left", llList2String (g_lTurningLeft, i));
/* THe following aren't currently used. i = index(g_lFloating); if (i == -1) llResetAnimationOverride ("Standing"); else llSetAnimationOverride( "Standing", llList2String (g_lStanding, i);
i = index(g_lSwimmingForward); if (i == -1) llResetAnimationOverride ("Standing"); else llSetAnimationOverride( "Standing", llList2String (g_lStanding, i);
i = index(g_lSwimmingUp); if (i == -1) llResetAnimationOverride ("Standing"); else llSetAnimationOverride( "Standing", llList2String (g_lStanding, i);
i = index(g_lSwimmingDown); if (i == -1) llResetAnimationOverride ("Standing"); else llSetAnimationOverride( "Standing", llList2String (g_lStanding, i);
i = index(g_lTyping); if (i == -1) llResetAnimationOverride ("Typing"); else llSetAnimationOverride( "Typing", llList2String (g_lTyping, i));
- /
}
default {
state_entry() { integer i; if (llGetInventoryType (".Default") == INVENTORY_NOTECARD) g_sConfigCardName = ".Default"; else { list l_lNames; for (i=0; i<llGetInventoryNumber (INVENTORY_NOTECARD); i++) { string l_sName = llGetInventoryName (INVENTORY_NOTECARD, i); if (llGetSubString (l_sName, 0, 0) == ".") l_lNames += l_sName; } if (llGetListLength (l_lNames) > 1) { llDialog (llGetOwner(), "Pick animation set.", l_lNames, 1); llListen (1, "", llGetOwner(), ""); return; } else g_sConfigCardName = llList2String (l_lNames, 0); } if (llGetInventoryType (g_sConfigCardName) != INVENTORY_NOTECARD) { llOwnerSay ("Configuration notecard " + g_sConfigCardName + " is not present."); return; } llOwnerSay ("Reading configuration card " + g_sConfigCardName); g_iConfigCardLine = 0; llGetNotecardLine (g_sConfigCardName, g_iConfigCardLine); llRequestPermissions (llGetOwner(), PERMISSION_OVERRIDE_ANIMATIONS); } run_time_permissions (integer in_iPermissions) { if (!(in_iPermissions & PERMISSION_OVERRIDE_ANIMATIONS)) { llOwnerSay ("Please allow me to override your animations in order to operate."); llRequestPermissions (llGetOwner(), PERMISSION_OVERRIDE_ANIMATIONS); } } dataserver (key in_kReadRequest, string in_sData) { if (in_sData == EOF) state run; list l_lParts = llParseString2List (in_sData, ["#"], []); in_sData = llStringTrim (llList2String (l_lParts, 0), STRING_TRIM); l_lParts = llParseString2List (in_sData, ["[", "]"], []); string l_sSection = llToUpper (llStringTrim (llList2String (l_lParts, 0), STRING_TRIM)); if (l_sSection == "STANDING") g_lStanding += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "WALKING") g_lWalking += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "SITTING") g_lSitting += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "SITTING ON GROUND") g_lSittingOnGround += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "CROUCHING") g_lCrouching += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "CROUCH WALKING") g_lCrouchWalking += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "LANDING") g_lLanding += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "STANDING UP") g_lStandingUp += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "FALLING") g_lFalling += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "FLYING DOWN") g_lFlyingDown += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "FLYING UP") g_lFlyingUp += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "FLYING") g_lFlying += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "HOVERING") g_lHovering += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "JUMPING") g_lJumping += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "PRE JUMPING") g_lPreJumping += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "RUNNING") g_lRunning += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "TURNING RIGHT") g_lTurningRight += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "TURNING LEFT") g_lTurningLeft += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "FLOATING") g_lFloating += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "SWIMMING FORWARD") g_lSwimmingForward += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "SWIMMING UP") g_lSwimmingUp += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "SWIMMING DOWN") g_lSwimmingDown += llParseString2List (llList2String (l_lParts, 1), ["|"], []); else if (l_sSection == "TYPING") g_lTyping += llParseString2List (llList2String (l_lParts, 1), ["|"], []);
llSetText ((string)g_iConfigCardLine, <1., 1., 1.>, 1.); llGetNotecardLine (g_sConfigCardName, ++g_iConfigCardLine); }
touch_start(integer total_number) { llSay(0, "Touched."); } state_exit() { llSetText ("", <0., 0., 0.>, 0.); } attach (key in_kID) { llResetScript (); } changed (integer in_iChange) { if (in_iChange & (CHANGED_INVENTORY | CHANGED_OWNER)) llResetScript (); }
}
state run {
state_entry () { llSetColor (<0., 1., 0.>, ALL_SIDES); llSetTimerEvent (g_fChangeAnimsTime); selectAnims(); } timer () { selectAnims(); } touch_start (integer in_iNumTouchers) { if (llGetColor (0) == <0., 1., 0.>) { // Turn it off llResetAnimationOverride ("ALL"); llSetColor (<1., 0., 0.>, ALL_SIDES); llSetTimerEvent (0.); } else { llSetColor (<0., 1., 0.>, ALL_SIDES); llSetTimerEvent (g_fChangeAnimsTime); selectAnims(); } } changed (integer in_iChange) { if (in_iChange & (CHANGED_INVENTORY | CHANGED_OWNER)) llResetScript (); } attach (key in_kWearer) { llRequestPermissions (in_kWearer, PERMISSION_OVERRIDE_ANIMATIONS); } run_time_permissions (integer in_iPerms) { if (!(in_iPerms & PERMISSION_OVERRIDE_ANIMATIONS)) { llOwnerSay ("I must have the permissions in order to operate."); llRequestPermissions (llGetOwner(), PERMISSION_OVERRIDE_ANIMATIONS); } }
} </lsl>