Age Detect (by click)

Expired

// Get Days Old
// Original b yTravis Lambert -- 10-19-2005 (504 days old) :)  
// Re-Written by Hank Ramos Aug/8/2006
// Some functions by Christopher Omega 10/21/05
 
//Global Variables
list lNames;
 
//User Functions
integer min(integer a, integer b)
{
 if (a > b)
 return b;
 return a;
}
 
integer isLeapYear(integer year)
{
 return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}
 
integer daysInMonth(integer month, integer year)
{
 if (month <9) {
 if (month != 2) {
 // Before September, odd numbered months
 // are 31 days long.
 if (month % 2 != 0) {
 return 31;
 } else {
 return 30;
 }
 } else {
 // February is the odd man out.
 if (isLeapYear(year)) {
 return 29;
 } else {
 return 28;
 }
 }
 } else {
 // After August, odd numbered months
 // are 30 days long.
 if (month % 2 != 0) {
 return 30;
 } else {
 return 31;
 }
 }
}
 
float timestampDiff(string t1, string t2)
{
 if (t1 == t2)
 return 0;
 
 float diff = 0;
 integer year1 = (integer) llGetSubString(t1, 0, 3);
 integer year2 = (integer) llGetSubString(t2, 0, 3);
 integer i;
 if (year1 != year2) {
 integer minYear = min(year1, year2);
 integer maxYear = year1;
 if (minYear == year1)
 maxYear = year2;
 float secsBetween;
 secsBetween += 31536000 * (maxYear - minYear);
 for (i = minYear; i < maxYear; ++i) {
 if (isLeapYear(i))
 secsBetween += 86400; // Add extra day.
 }
 if (year2 == maxYear)
 secsBetween *= -1;
 diff += secsBetween;
 }
 
 integer month1 = (integer) llGetSubString(t1, 5, 6);
 integer month2 = (integer) llGetSubString(t2, 5, 6);
 if (month1 != month2) {
 integer month1Secs;
 for (i = 1; i < month1; ++i) {
 // 1 day = 24 hrs * 60 mins * 60 secs
 month1Secs += daysInMonth(i, year1);
 }
 month1Secs *= 86400; // Convert days into secs.
 integer month2Secs;
 for (i = 1; i < month2; ++i) {
 month2Secs += daysInMonth(i, year2);
 }
 month2Secs *= 86400;
 diff += month1Secs - month2Secs;
 }
 // Whew! Now everything past this point should be clear cut
 // conversion directly into seconds.
 integer days1 = (integer) llGetSubString(t1, 8, 9);
 integer days2 = (integer) llGetSubString(t2, 8, 9);
 diff += (days1 - days2) * 86400;
 integer hours1 = (integer) llGetSubString(t1, 11, 12);
 integer hours2 = (integer) llGetSubString(t2, 11, 12);
 diff += (hours1 - hours2) * 3600; //1 hr = 60 mins * 60 secs.
 integer minutes1 = (integer) llGetSubString(t1, 14, 15);
 integer minutes2 = (integer) llGetSubString(t2, 14, 15);
 diff += (minutes1 - minutes2) * 60;
 float secs1 = (float) llGetSubString(t1, 17, -2); // Skip last char.
 float secs2 = (float) llGetSubString(t2, 17, -2);
 diff += secs1 - secs2;
 return diff;
}
 
default
{
 state_entry()
 {
 llSetText(llGetObjectName(), <1,1,1>, 1);
 }
 
 touch_start(integer num_detected)
 {
 integer x;
 
 //Loop through all the clicks
 for (x = 0; x 

 

Detect Typing

Expired

//Detect Typing Example
//by Hank Ramos
//Shows how to detect whether or not the owner of the script is currently typing.
//Useful for "keyboard" attachments and other things.
 
default
{
    state_entry()
    {
        llSetTimerEvent(1);
    }
 
    timer()
    {
        if (llGetAgentInfo(llGetOwner()) & AGENT_TYPING)
        {
            llOwnerSay("You are typing...");
        }
    }
}

 

Ear Control

Expired

integer l1;
integer x;
integer earflick;
integer earsdown;
vector rot;
default
{
    on_rez(integer start_param)
    {
        if(l1!=0)
            llListenRemove(l1);
        l1=llListen(1,"",llGetOwner(),"");
        if(earflick==TRUE)
        {
            llSetTimerEvent(2+llFrand(8));
        }
        else
        {
            llSetTimerEvent(0);
        }
    }
 
    state_entry()
    {
        if(l1!=0)
            llListenRemove(l1);
        l1=llListen(1,"",llGetOwner(),"");
    }
 
    listen(integer channel, string name, key id, string msg)
    {
        msg=llToLower(msg);
        if(msg=="ears up"||msg=="earsup")
        {
            llSetLocalRot(<-0.29028, 0.00000, 0.00000, 0.95694>);
            earsdown=FALSE;
        }
        else if(msg=="ears down"||msg=="earsdown")
        {
            llSetLocalRot(<-0.65903, 0.25628, 0.70694, 0.01542>);
            earsdown=TRUE;
        }
        else if(msg=="earflick on"||msg=="eartwitch on")
        {
            earflick=TRUE;
            llSetTimerEvent(2+llFrand(8));
        }
        else if(msg=="earflick off"||msg=="eartwitch off")
        {
            earflick=FALSE;
            llSetTimerEvent(0);
        }
    }
 
    timer()
    {
        if(earsdown==FALSE)
        {
            for(x=0; x <4; x++)
            {
                rot=llRot2Euler(llGetLocalRot());
                rot.z=rot.z + 0.1;
                rot.x=rot.x - 0.05;
                llSetLocalRot(llEuler2Rot(rot));
                llSleep(0.01);
            }
            for(x=0; x < 4; x++)
            {
                rot=llRot2Euler(llGetLocalRot());
                rot.z=rot.z - 0.1;
                rot.x=rot.x + 0.05;
                llSetLocalRot(llEuler2Rot(rot));
                llSleep(0.01);
            }
        }
        llSetTimerEvent(2+llFrand(8));
    }
}

 

Eye Blink (with texture)

Expired

// This blink script uses a single texture with the frames set up as follows within the image.
//
//   +-----+-----+
//   |  1  |  2  |
//   +-----+-----+
//   |  3  |  4  |
//   +-----+-----+
// 2048 x 2028 image
 
// The minimum time between blinks
float minBlinkTime = 0.5; // in seconds
 
// The Maximum time between blinks
float maxBlinkTime = 12.0; // in seconds
 
// The animation frame speed
float animationSpeed = 15; // in fps
 
// number of frames in the animation
integer numberFrames = 4;
 
// temporary variable
float waitTime;
 
// Returns a reandom number between min and max
float randBetween(float min, float max)
{
    return llFrand(max - min) + min;
}
 
default
{
    // Main part of the program
    state_entry()
    {
        // Sets the size and position of the default frame
        llOffsetTexture(0.25,0.25,ALL_SIDES);
        llScaleTexture(0.5,0.5,ALL_SIDES);
        // Intialize time even
        llSetTimerEvent(randBetween(minBlinkTime,maxBlinkTime));
        waitTime = (numberFrames * 2) / animationSpeed;
    }
 
    // Timer event
    timer()
    {
        // Temporarily turn off the timer event
        llSetTimerEvent(0.0);
        // Animate the eyes onces.
        llSetTextureAnim(ANIM_ON|PING_PONG,ALL_SIDES,2,2,1,4,animationSpeed);
        // Wait for the eyes to finish animating
        llSleep(waitTime);
        // Turn off animation
        llSetTextureAnim(FALSE,ALL_SIDES,2,2,1,4,animationSpeed);
        // Reset Timer for next event
        llSetTimerEvent(randBetween(minBlinkTime,maxBlinkTime));
    }
}