Inicio arrow Scripting arrow Scripts II
Scripts II PDF Imprimir E-Mail
Escrito por Atlante Guerrero   
jueves, 13 de diciembre de 2007
Índice del Artículo
Scripts II
Página 2
Página 3
Página 4
Página 5
Página 6
Página 7
Página 8
Página 9

LSL EVENTOS

 

LSL es un lenguaje manejado por eventos (events). Literalmente, los scripts se dividen en bloques de código que se activan cuando ocurre un determinado evento. En los scripts se pueden codificar manejadores de eventos ( event-handlers) como por ejemplo: moving_end o touch_start.

Si en un script se codifica un event-handler, y un evento de este tipo ocurre, el simulador añadirá este evento a la cola de eventos del script. Los event-handlers del script serán entonces ejecutados en el orden en que han sido encolados ,en una cola tipo FIFO ( First In First Out). Según Cory Linden, la cola de eventos de un script puede almacenar hasta un máximo de 64 eventos. En caso de que la cola se llene, los nuevos eventos serán ignorados sin dar ningún mensaje de aviso.

LSL no permite múltiples subprocesos.

Los eventos se ejecutan de uno en uno.

Los eventos no pueden interrumpirse entre sí.

Simplemente son almacenados en una cola FIFO y ejecutados en orden.

No hay manera de interactuar en la cola de eventos directamente.

Cada vez que ocurre un cambio de estado, la cola de eventos se borra completamente . En cada estado se pueden codificar uno o varios event-handlers.

 

 

Téngase en cuenta que hay fallos en LSL (bugs).

Por ejemplo, cuando un event-handler es llamado a ejecución, todos los argumentos del event-handler se pasan por valor ( no por variable), y son almacenados en la pila ( stack) del script . Si un script tiene insuficiente memoria para guardar todos los argumentos, el script dará un error en ejecución del tipo : "pila / montón de colisión" sin dar mas información.

A diferencia de las funciones (functions) , los scripters o usuarios no podemos crear nuestros propios event-handler. Si se desea comprobar si un evento ha ocurrido o no, y no está contemplado dentro de la lista de event-handlers creada por Linden Labs , tendrá que hacerse mediante el evento timer ().

También la función llMinEventDelay puede ser de cierta utilidad en la coordinación de eventos.

La lista de los event-handlers definidos para LSL por Linden Labs:

(Se recomienda visitar http:/www.secondlife.com para obtener la lista actualizada ya que esto puede cambiar con los cambios de versiones)

 

Event-handler

Activado por el evento

at_rot_target

Cuando el target de tipo rotational es alcanzado tras la ejecución de la función llRotTarget

at_target

Cuando el target set es alcanzado tras la ejecución de llTarget

attach

Cuando un objecto es attached or dettached a un agente o avatar

changed

Cuando cambian ciertos aspectos de un objeto (inventory, color, shape, scale, texture, link, ownership)

collision

durante la colisión de dos tareas

collision_end

Cuando dos tareas dejan de colisionar entre si

collision_start

Cuando dos tareas comienzan a colisionar entre si

control

Cuando uno de los controles tomados por la funcion llTakeControls es presionado/sostenido/ liberado

dataserver

Cuando una tarea reciben datos asincronos

email

Cuando una tarea recibe un email

http_response

Cuando una tarea recibe respuesta a la peticion hecha mediante llHTTPRequest

land_collision

mientras una tarea colisiona con tierra

land_collision_end

Cuando una tarea deja de colisionar con tierra.

land_collision_start

Cuando una tarea comienza a colisionar con tierra

link_message

Cuando una tarea recibe un mensaje enviado mediante llMessageLinked

listen

Cuando una tarea esta a la escucha en un rango de chat determinado por el criterio indicado en llListen

money

Cuando una tarea recibe dinero

moving_end

Cuando una tarea deja de moverse / existe en un sim

moving_start

Cuando una tarea comienza a moverse/ entra a un sim

no_sensor

Cuando la llamada a las funciones llSensor / llSensorRepeat da como resultado nulo.

not_at_rot_target

Cuando un objetivo de tipo rotacional en la ejecución llRotTarget no ha sido alcanzado todavía.

not_at_target

Cuando un destino en la ejecución de la funcion llTarget no ha sido alcanzado todavía

object_rez

Cuando una tarea crea ( rezzea ) otra tarea mediante la función llRezObject

on_rez

Cuando una tarea es creada ( rezzed) (desde el inventario o desde otra tarea)

remote_data

cualquier comunicacion del tipo XML-RPC

run_time_permissions

Cuando un agente concede permisos run-time a una tarea que fue requerido mediante la funcion llRequestPermissions

sensor

resultado de las funciones llSensor o llSensorRepeat

state_entry

en cualquier transicion en el estado y en el arranque (startup)

state_exit

en cualquier transicion de salida del estado

timer

en los intervalos determinados por la función llSetTimerEvent

touch

Cuando el agente hace click en la tarea

touch_start

Cuando un agente comienza a hacer click en una tarea

touch_end

Cuando un agente deja de hacer click en la tarea

 

- ¿Qué es una tarea ?

- en LSL una tarea es un avatar/agente o un objeto. Ambos pueden chocar con un objeto, aunque sólo los objetos pueden contener scripts. Se puede definir una "tarea" en el sentido de "el objeto que contiene la secuencia de comandos".

- ¿Qué es un agente ?

- Un agente es un cliente dentro de la presencia de un sim. Todos los usuarios conectarse a un sim como agente. Un agente no es un avatar, a pesar de que está representado en el cliente por uno. Un agente puede ser un objeto creador / propietario y / o un miembro del grupo. Un agente "ve" el mundo a través de una cámara y tiene un avatar. Un avatar es una representación visual de un agente dentro de Second Life;

 

 

 

 


Modificado el ( lunes, 17 de diciembre de 2007 )
 
RocketTheme Joomla Templates