El lenguaje de programación LSL es el diseñado para utilizar dentro de Second Life.
Se trata de un lenguaje mucho más sencillo que cualquiera de los que se utilizan en ámbitos externos a Second Life y a continuación describiré la estructura básica para la gente que no ha programado nunca:
Todo en Second Life son objetos. Los prims que creamos, los avatares, hasta el sim en el que nos movemos son objetos con sus carácterísticas propias. Es algo que hay que tener en cuenta, ya que solamente programaremos scripts sobre prims, pero podemos obtener y modificar carácterísticas de los avatares y de los sims aparte de las del propio prim.
Para crear un script en Second Life, primero tenemos que crear un prim, y en la pestaña de contenidos del objeto, creamos un nuevo script.
Cuando creamos un script en Second Life, lo primero que nos aparece es lo siguiente:
default
{
state_entry()
{
llSay(0, "Hello, avatar!");
}
touch_start(integer st)
{
llSay(0, "Touched.");
}
}
Cuando creamos el script el objeto dice "Hello, avatar!" y si pulsamos sobre él dice "Touched.".
Imaginaros el script como una receta de cocina en la que se siguen pasos.
Leemos la receta linea a linea
Partir un huevo
Freirlo en una sarten con aceite hirviendo
Echarle sal
Sacarlo a un plato
Los programas tanto en LSL como en otros lenguajes de programación siguen también recetas línea a línea que escribimos nosotros.
Hay que diferenciar las 3 partes principales de este script:
En este lenguaje de programación el script entiende que comienza la receta donde nosotros escribimos '
default'. Podemos llamarlo el
estado inicial o por defecto del script. Apartir de ahi abrimos las llave '
{' , escribimos en su interior lo que queremos que suceda y finalizamos el estado con '
}'. Es muy importante acordarse de cerrar las llaves por que sino nos dará error.
Dentro del estado '
default' podemos ver que hay unos nombres de color azul, '
state_entry' y '
touch_start', se trata de los
eventos. Los eventos son trozos del código que saltan(se ejecutan) cuando sucede algo. Por ejemplo, todo lo que se encuentra dentro de las llaves '
{' y '
}' que siguen a '
state_entry' se realiza cuando se entra dentro del estado '
default'.
Podemos decir que el evento '
state_entry' es el evento de entrada al estado.
El otro evento, '
touch_start' controla el momento en el que se pulsa sobre un objeto, solamente cuando se pulsa, no cuando se mantiene pulsado ni cuando se suelta, para eso hay otros eventos.
Por último podemos diferenciar un tercer elemento dentro del script, se trata de '
llSay'. Se trata de una función predefinida del Second Life. Esta función lo que hace es decir lo que se expone dentro entre comillas dobles (
"Hello, avatar!") por un canal del chat. En este caso el número de canal es 0 y el texto se mostrará por el chat general. Pero podemos utilizar cualquier otro número entero como número de canal para decir lo que queremos, solo que no lo veremos escrito por el chat general. Tendríamos que tener otro script que escuchara por ese canal para procesar el mensaje.
Como veis tanto los eventos como las funciones tienen detrás del nombre un paréntesis y en algunos casos hay contenido en su interior.
Se trata de la
cabecera de la función, que nos dice que
tipos de datos se introducen dentro de la función o evento. En el caso de '
touch_start(integer st)' podemos ver en su interior '
integer st' nos dice que este evento recibe un número entero. ¿Para que vale ese número entero? Nos dice el número de gente que esta pulsando.
En resumen, el script comienza en el estado '
default', dentro tiene un evento programado para cuando se inicie este estado, se llama '
state_entry' que lo que hace es decir por el chat
"Hello, avatar!" utilizando la función '
llSay'. A continuación está el evento '
touch_start' que hace que cuando alguien pulse sobre el prim se diga por el chat
"Touched.".
Podríamos hacer más estados con más eventos.
Aquí pongo un ejemplo muy sencillo de como podriamos hacer un prim que cambiará a color verde al pulsarlo y de nuevo a blanco al pulsarlo otra vez. Se puede hacer de una manera sencilla utilizando estados:
default //Aqui comienza el estado inicial
{
state_entry() //Al entrar al estado...
{
llSetColor(<1,1,1>,ALL_SIDES); //...pinta de blanco todas las caras
}
touch_start(integer st) //Cuando se pulse...
{
state color; //...cambiamos al estado color
}
}
state color //Aqui comienza el estado llamado 'color'
{
state_entry() //Al entar al estado...
{
llSetColor(<0,1,0>,ALL_SIDES); //...pintar de verde todas las caras
}
touch_start(integer st) //Cuando se pulse...
{
state default; //...cambiamos al estado inicial
}
}
Todo lo que se escribe despues de '
//'
es ignorado por el script.
Espero que haya aclarado un poquito la diferencia entre estados y eventos.
Aquí teneis una lista de todos los
eventos y todas las
funciones que nos ofrece Second Life y su LSL, ambas en la página del Wiki de LSL.
Otra página que me gusta utilizar para encontrar funciones este otro
wiki por el menú más intuitivo de la columna derecha.
Bueno por hoy ya hay bastante saturación de información, otro día más.