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>