miércoles, 18 de julio de 2007

Manual de LSL - 1 - Estados

Antes de nada, pedir disculpas por la demora en publicar mas artículos en este blog, la falta de tiempo está provocando que desde el comienzo descuide este espacio de desvaríos.

Sin más preámbulos.... antes de publicar mas ejemplos de scripts para SL, debería enfocar el tema de una forma mas amplia para luego ir profundizando paulatinamente, a modo de capítulos encadenados, en las diferentes funcionalidades que permite el LSL, así que sintiéndolo mucho, la segunda parte de "Rotaciones locales y posición relativa" tendrá que esperar un par de entradas.

Cada primitiva (Prim) en SL puede contener scripts, y cada script es completamente autónomo, y aunque hay métodos para comunicarse con otros scripts del mismo prim, o incluso objetos diferentes, cada uno de los script debe tener una estructura autonoma, esto es, que por si solo pueda funcionar, así que los que hayáis programado en lenguajes modulares, olvidaros de realizar un script únicamente con las funciones que utilizarán otros scripts, aquí no hay "includes", si, se pueden separar funciones, pero hay que preparar los scripts para q se comuniquen entre sí.

Un script se compone de estados, disparadores (triggers), variables y funciones. Tanto los estados como los disparadores/eventos van encerrados dentro de los símbolos de llave "{}" así como los bucles y sentencias condicionales.

Un estado contiene eventos, un estado no puede contener otros estados, así como un evento no puede contener otros eventos.



ESTADOS

TODOS los scripts deben tener un estado por defecto, los que ya hayais visto algun script, vereis q todos comienzan con la "instruccion" "default{" SL al encontrarse con un script espera un estado por defecto y comienza a ejecutarlo

Se pueden definir más estados con tan solo escribir "state NombreDelEstado{", y para cambiar de un estado a otro, pues haciendo la respectiva llamada dentro de un evento "state NombreDelEstado;"

No se pueden poner instrucciones o declaraciones de variables dentro de un estado, siempre hay que hacerlo dentro de un disparador/evento.

ejemplo de cambio de estado
default{
touch_start(integer a){
state hola;
}
}

state hola{
state_entry(){
llOwnerSay("Hola, acabo de entrar en el estado hola");
state default;
}
state_exit(){
llOwnerSay("Adios, salgo del estado hola y vuelvo al estado por defecto");
}
}