Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Julio 26, 2008, 06:31:55
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Otros Lenguajes  |  Tema: guía lsl el lenguaje de SecondLife 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: guía lsl el lenguaje de SecondLife  (Leído 2082 veces)
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« en: Agosto 16, 2007, 05:02:53 »

He decidido hacer un tutorial muy básico de Linden Scripting Language (LSL) ya que hay muy pocos o nada en español. Y lo hago en está web y no una especializada simplemente porqué está me gusta  Wink.
Actualmente lo estoy aprendiendo así que me limitaré a traducir y simplificar. Espero que cualquier que encuentre un error, o tenga una recomendación, pregunta me lo diga así como quien esté interesado en este tutorial. Repito que soy un novato en este lenguaje pero como lo tengo que aprender creo que esto me ayudará a mi también.
Para mas información visitar
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
http://www.lslwiki.net/
que es donde yo saco la mayoría de información.
Esta guía está en fase de construcción! cada cierto tiempo la iré ampliando.
Gracias a Impalah Shenzhou por su guía en
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

Capítulo                                                             Página

0- Que es LSL? 1
1- Helloword + touch 1
2- Estados 1
3- Ir a URL 1
4- Color 1
5- Variables 1
6- Asignamientos, comparaciones , operaciones y
puertas lógicas 1
7- Rotación 1
8- Puertas 1
9- Texto sobre el prim 1
10- if/else 1
« Última modificación: Agosto 20, 2007, 05:39:25 por Arkhy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #1 en: Agosto 16, 2007, 05:27:00 »

0- Que es LSL?

Linden Scripting Language es un lenguaje similar a c y java  orientado a eventos que hace que los objetos se comporten de una forma o de otra y puedan interactuar con el avatar y con otros objetos. Está compuesto de estados, cuando termina uno empieza el siguiente, dentro de cada estado hay unos eventos y dentro de estos unas funciones. El compilador lo lleva el propio juego y es muy simple de usar.
« Última modificación: Agosto 16, 2007, 06:35:04 por Arkhy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #2 en: Agosto 16, 2007, 05:44:25 »

1- Helloword + touch

El siguiente script es el que se nos muestra cada vez que creamos uno nuevo. Para comentar un script se usa //. Lee los comentarios dentro del script para entenderlo:
Citar
//definimos el estado, siempre default es el primero

default


{
    // cuando empieze este estado....
    state_entry()
    {
    // dice hello avatar en el canal 0 (el canal 0 es el del chat...
    //... el único que un    avatar puede ver

        llSay(0, "Hello, Avatar!");
    }
    //cuando me toquen...
    touch_start(integer total_number)
    {
             llSay(0, "Touched.");
    }
}
Al empezar un estado va un -> estado {..., cuando termina se cierra}
lo mismo pasa con las funciones -> ll... { ..., y también se tiene que cerrar}
« Última modificación: Agosto 16, 2007, 09:25:34 por Arkhy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #3 en: Agosto 16, 2007, 06:04:33 »

2- Estados

Como ya se ha comentado los estados siguen un orden, y de uno pasa al otro. Son separados por {} y el primer siempre se llama default. Los otros estados se pueden llamar como tú quieras, eso si tienen que empezar con una letra (leer comentarios):
Citar
//estado 1
default
{
    touch_start(integer total_number)
    {
        llSay(0, "tocame otra vez");
        //pasar al estado 2
        state a2;
    }
}
//estado 2   
state a2
{
    touch_start(integer total_number)
    {
        llSay(0, "muy bien, otra");   
        //pasar al estado b
        state b;
    }
}
//estado 3
state b
{
    touch_start(integer total_number)
    {
        llSay(0, "si me tocas me voy al estado default");   
        //pasar al estado default
        state default;
    }
}


En este script vemos que antes de pasar a otro estado tenemos que completar el estado actual, en este caso "touch -> tocar"
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #4 en: Agosto 16, 2007, 08:26:36 »

3- Ir a URL

Con este sencillo script podemos enlazar nuestro objeto con nuestra web:
Citar

default
{
    touch_start(integer num_detected)
    {
           

            llLoadURL(llDetectedKey(0), "Google", "
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion");
    }
}


se puede usar este script, también, con diferentes estados:

Citar

default
{
    touch_start(integer total_number)
    {
        llLoadURL(llDetectedKey(0), "Terra", "
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion");
                //pasar al estado 2
        state a2;
    }
}
 
state a2
{
    touch_start(integer total_number)
    {
        llLoadURL(llDetectedKey(0), "Google", "
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion");
        //pasar al estado b
        state b;
    }
}

state b
{
    touch_start(integer total_number)
    {
        llLoadURL(llDetectedKey(0), "Yahoo", "
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion");       
        //pasar al estado default
        state default;
    }
}


En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #5 en: Agosto 16, 2007, 03:15:19 »

4- Color
Una función muy curiosa es la de cambiar el color. Para los que no lo sepan, una forma de representar el color en la informática es el RGB, ya que son los colores primarios de la luz i mediante ellos se pueden hacer todos. Se tiene de definir la intensidad de cada color con un número que va del 0 al 255, pero en secondlife es un poco diferente ya que el 0 es 0 y el 255 el 1, se trata de usar decimales para la luminicidad intermedia,
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
aquí un script para hacerlo y una tabla
.
En este sera el primer script que veremos variables, en este caso vectores. Las variables ya las veremos mas adelante con más información.

Citar

default
 
{
   
    {
        state_entry()
        //definimos el tipo de variable (en este caso vector) y el nombre de la               
        //... variable (en este caso negro)

        vector negro = < 0.0,0.0,0.0 >;
        // llSetColor usará la variable
        llSetColor( negro, ALL_SIDES);
    }   

    touch_start(integer total_number)
    {
        //definimos la nueva variable
        vector rojo = < 1.0,1.0,1.0 >;
        llSetColor( rojo, ALL_SIDES ); 
                         
       
    }
}


Intenta crear un script que cambie al menos 3 colores succesivamente sin pararse, cada vez que lo tocamos



posible solución:
Citar


default
{
    state_entry()
    {
        vector rojo = < 1.0,0.0,0.0 >;
        llSetColor( rojo, ALL_SIDES);
    }   

    touch_start(integer total_number)
    {
       
        vector verde = < 0.0,1.0,0.0 >;
        llSetColor( verde, ALL_SIDES );                     
        state aazul;
    }
}

state aazul
{
    touch_start(integer total_number)
    {
       
        vector azul = < 0.0,0.0,1.0 >;
        llSetColor( azul, ALL_SIDES);   
        state predef;   
    }   
}
state predef
{
touch_start(integer total_number)
    {       
       
        state default;   
}
}
« Última modificación: Agosto 17, 2007, 07:41:14 por Arkhy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #6 en: Agosto 17, 2007, 03:14:20 »

5- Variables
Como ya hemos visto en el ejemplo anterior las variables se usan para definir. Hay dos tipos de variables según la posición que ocupan, las locales que están dentro de un estado y las globales que están donde empieza el script.
Según lo que representan las variables pueden ser de distintos tipos:

integer - (entero) va de -2,147,483,648 a 2,147,483,647
float - (decimal) va de 1.175494351E-38 a 3.402823466E+38 (E+38 = X 1038)
string - es una cadena solo limitada por la memoria máxima del script
key - identifica cosas, como sonidos y texturas
Vector - es la que hemos visto antes y está compuesta por tres floats
rotation - compuesta por 4 flotaats, se usa para el movimiento.

Las variables tienen que empezar por una letra y es recomendable que tengan un nombre descriptivo por si algún día quieres modificar ese script.
« Última modificación: Agosto 17, 2007, 07:34:03 por Arkhy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #7 en: Agosto 17, 2007, 11:17:19 »

6- Asignamientos, comparaciones , operaciones y
puertas lógicas

lsl como los otros lenguajes tiene unos operadores que es necesario tener en cuenta:

X = Y         Y está asignado por X
X == Y       verdadero si el valor de X es igual al Y
X != Y        verdadero si X es diferente a Y
X < Y         verdadero si X es mas pequeño que Y
X > Y         verdadero si X es mas grande que Y
X <= Y       verdadero si X es mas pequeño o igual que Y
X >= Y       verdadero si X es mas grande o igual que Y
              mas
               menos
              multiplicación
/                 división
++              incremento de 1 en 1
--                descrecimiento de 1 en 1
             residuo de división
&&              and
||                or
if                 si.....   
else            si no....
while          mientras que....


estos son los mas importantes.


 
« Última modificación: Agosto 18, 2007, 05:49:04 por Arkhy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #8 en: Agosto 18, 2007, 05:07:09 »

7- Rotación
Hay muchas maneras de rotar un objeto, unas mas fáciles y otras mas difíciles. llTargetOmega es una función bastante fácil de usar.
Citar
default
{
    state_entry()
    {
       // se usan radiantes, no grados
       // las tres primeras cifras es el sentido de rotación, que se multiplican
       // por la quarta chifra (da radiantes por segundo), la última es la fuerza i no deve ser 0

       llTargetOmega(<3,0,1>,2.0,1.0);
    }

}


En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #9 en: Agosto 18, 2007, 05:10:47 »

POR FAVOR A TODOS LOS QUE OS INTERESE ESTA GUÍA NOTIFICARMELO EN ESTE FORO O POR MENSAJE PRIVADO, GRACIAS.
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #10 en: Agosto 18, 2007, 05:41:53 »

8- Puertas
Normalmente las puertas se abren de dos formas, rotando o cambiando su posición. Estos escrips están compuestos por 2 estados, cerrado y abierto.
Rotando:
Citar
// se tienen que modificar estas bariables
// para que se adapten a tu prim, recomendable usar decimales x ejemplo 0.

rotation rot0 = <0.,0.,0.,0.>;
rotation rot1 = <1.,1.,0.,0.>;
default
{
     state_entry()
       
        {           
            llSetRot( rot0 );
        }
       
     touch_start(integer total_number)
     {
            state b;
     }     
       
       

        }   
        state b
{
     state_entry()
       
        {           
            llSetRot( rot1 );}
       
     touch_start(integer total_number)
     {
            state default;
     }       
   
        } 


Cambiando la posición
Citar
// definimos las variables, los valores equivalen a X Y y Z, se pueden
// ver encima del objeto cuando se está editando
// usar decimales

vector pos0 = <149.539,84.560,22.094>;
vector pos1 = <151.0,84.560,22.094>;
default
{
     state_entry()
       
        {           
            llSetPos( pos0 );
        }
       
     touch_start(integer total_number)
     {
            state b;
     }     
       
       

        }   
        state b
{
     state_entry()
       
        {           
            llSetPos( pos1 );}
       
     touch_start(integer total_number)
     {
            state default;
     }       
   
        } 

En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #11 en: Agosto 19, 2007, 05:19:58 »

9- Texto sobre el prim

Muchas veces abreís visto un texto sobre el objeto, pues es muy fácil de hacer con llSetText:

Citar

// definimos las variables

vector color= <1.0,0.8,0.6>;
string text="TEXTO ";
 

default
{
    state_entry()
    {
        //llamamos a las variables
        //el 0.2 es el nivel de transparencia del texto, va de 0 a 1
        llSetText(text,color,0.2);
        }
    }
   
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #12 en: Agosto 20, 2007, 05:37:53 »

10- if/else


if se usa para ejecutar unas funciones en caso de que sea verdadero, else se usa si if no se ejecuta:
Citar
default
{
    touch_start(integer total_number)
    {
        llSay(0, "2+2=");
        //cambiamos el estado
        state ifelse;
    }
}

state ifelse
{
    state_entry()
    {
       // llListen se usa para escucha
       llListen(0,"",NULL_KEY, "");
    }
    // definimos el tipo de variables de escucha
    // aunque solo utilizemos message

    listen(integer channel, string name, key id, string message)
    {
        //si message (string) == 4
        if(message=="4")
        {
            llSay(0,"correcto");
           
        }
        // si if no se ejecuta
        else
        {
            llSay(0,"incorrecto");
        }
        state default;
    }
}
« Última modificación: Agosto 20, 2007, 05:50:57 por Arkhy » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Arkhy
Miembro
*****
Desconectado Desconectado

Mensajes: 32



Ver Perfil
« Respuesta #13 en: Agosto 22, 2007, 06:33:41 »

este manual sigue en:

Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
http://www.secondlifespain.com/index.php?option=com_joomlaboard&Itemid=42&func=showcat&catid=9
En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
HASECORP.ES ENTRA!!
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Otros Lenguajes  |  Tema: guía lsl el lenguaje de SecondLife « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC