Labels

quinta-feira, 29 de março de 2012

Scripts básicos para quem esta começando

Estarei postando alguns scripts básicos que muitas vezes auxiliam bastante em algumas situações. Detalhe os scripts propriamente dito estão pintados de vermelhos e que deverão ser levados na integra no in-world:
  • Coloque um texto em cima de um objeto.Detalhe o script que criará no second life :
// Customizing the script:
// Change the text inside of "TEXT GOES HERE" to whatever you please.
// The <1.0,1.0,1.0> is the color the text will show in Float form, 1.0,1.0,1.0
// being WHITE while, 0.0, 0.0, 0.0 is BLACK this is all in RGB (Red, Green, Blue).
// experiement with combinations to get different colors.
// The 1 at the end sets the text's transparency, 1.0 being SOLID, while 0 would be clear,
// and .5 would be half way between clear and solid.

default
{
    state_entry()
    {
        llSetText("TEXT GOES HERE", <1.0,1.0,1.0>, 1);
    }
}



  • Script que permite que ao tocar um objeto criado por você seja entregue notcard e landmark
integer owneronly = 1; // change in 1 if not owner only ; change to 0 if owner only
key owner;

default
{
    state_entry()
    {
        owner = llGetOwner();        
    }


    touch_start(integer total_number)
    {
        integer i;
        for (i=0;i<total_number;i++)
        {
           key target = llDetectedKey(i);
        
            if ( (target != owner) && (owneronly == 1) )  // person clicking isn't owner and owneronly is set;
          {
               llInstantMessage(target,"Sorry, only the owner is allowed to get my contents.");
               return;
            }
            list inventory_types = [INVENTORY_LANDMARK, INVENTORY_NOTECARD];
            integer inventory_count = llGetListLength(inventory_types);
            integer j;
            integer k;
            integer type;
            integer typecount;
            string myname = llGetScriptName();
            string objectname;


            for (j=0; j<inventory_count;j++)
            {
                type = llList2Integer(inventory_types,j); // get the next inventory type from the list
                typecount = llGetInventoryNumber(type);  // how many of that kind of inventory is in the box?
                if (typecount > 0)
                {
                    for (k=0; k<typecount;k++)
                    {
                        objectname = llGetInventoryName(type,k);
                        if (objectname != myname)  // don't give self out so the user doesn't get thousand copies.
                        {
                          //  llGiveInventory(target,objectname);
                            llGiveInventory(target,objectname);
                        }
                    }
                }            
            }
        }
    }
}
  • Produza neve no second life:
integer glow = TRUE;            // Make the particles glow
integer bounce = FALSE;          // Make particles bounce on Z plan of object
integer interpColor = TRUE;     // Go from start to end color
integer interpSize = TRUE;      // Go from start to end size
integer wind = FALSE;           // Particles effected by wind
integer followSource = FALSE;    // Particles follow the source
integer followVel = FALSE;       // Particles turn to velocity direction


// Choose a pattern from the following:
// PSYS_SRC_PATTERN_EXPLODE
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE
integer pattern = PSYS_SRC_PATTERN_EXPLODE;


// Select a target for particles to go towards
// "" for no target, "owner" will follow object owner 
//    and "self" will target this object
//    or put the key of an object for particles to go to
key target = "";


// Particle paramaters
float age = 100;                  // Life of each particle
float maxSpeed = 0.4;            // Max speed each particle is spit out at
float minSpeed = 0.4;            // Min speed each particle is spit out at
string texture;                 // Texture used for particles, default used if blank
float startAlpha = 1;           // Start alpha (transparency) value
float endAlpha = 1;           // End alpha (transparency) value
vector startColor = <1,1,1>;    // Start color of particles <R,G,B>
vector endColor = <1,1,1>;      // End color of particles <R,G,B> (if interpColor == TRUE)
vector startSize = <.1,.1,.1>;     // Start size of particles 
vector endSize = <.1,.1,.1>;       // End size of particles (if interpSize == TRUE)
vector push = <0,0,-0.03>;          // Force pushed on particles


// System paramaters
float rate = .01;            // How fast (rate) to emit particles
float radius = .1;          // Radius to emit particles for BURST pattern
integer count = 10;        // How many particles to emit per BURST 
float outerAngle = 1.54;    // Outer angle for all ANGLE patterns
float innerAngle = 1.55;    // Inner angle for all ANGLE patterns
vector omega = <0,0,10>;    // Rotation of ANGLE patterns around the source
float life = 0;             // Life in seconds for the system to make particles


// Script variables
integer flags;


updateParticles()
{
    flags = 0;
    if (target == "owner") target = llGetOwner();
    if (target == "self") target = llGetKey();
    if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
    if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
    if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
    if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
    if (wind) flags = flags | PSYS_PART_WIND_MASK;
    if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
    if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
    if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;


    llParticleSystem([  PSYS_PART_MAX_AGE,age,
                        PSYS_PART_FLAGS,flags,
                        PSYS_PART_START_COLOR, startColor,
                        PSYS_PART_END_COLOR, endColor,
                        PSYS_PART_START_SCALE,startSize,
                        PSYS_PART_END_SCALE,endSize, 
                        PSYS_SRC_PATTERN, pattern,
                        PSYS_SRC_BURST_RATE,rate,
                        PSYS_SRC_ACCEL, push,
                        PSYS_SRC_BURST_PART_COUNT,count,
                        PSYS_SRC_BURST_RADIUS,radius,
                        PSYS_SRC_BURST_SPEED_MIN,minSpeed,
                        PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
                        PSYS_SRC_TARGET_KEY,target,
                        PSYS_SRC_INNERANGLE,innerAngle, 
                        PSYS_SRC_OUTERANGLE,outerAngle,
                        PSYS_SRC_OMEGA, omega,
                        PSYS_SRC_MAX_AGE, life,
                        PSYS_SRC_TEXTURE, texture,
                        PSYS_PART_START_ALPHA, startAlpha,
                        PSYS_PART_END_ALPHA, endAlpha
                            ]);
}


default
{
    state_entry()
    {
        updateParticles();
    }
}
  • Script de "matar" prim. Coloque ele dentro de um prime que desaparecerá em cerca de 60 segundos e será excluídos da sua pasta achados e perdidos.
default
{
    state_entry()
    {
        llSay(0, "Touch me and I'll die. Try me if you dare!!");
    }


    touch_start(integer total_number)
    {
        llSay(0, "Touched.");
        llSetPrimitiveParams([PRIM_TEMP_ON_REZ, TRUE]); // if touched I die in 60-70 secs and will not leave a trace
        llSay(0, "Give me 60 seconds to die. Thank you for your patience.");
        
    }
}



Nenhum comentário:

Postar um comentário

Blogroll

About

free counters