top of page

Tipos de Variables

Las variables se componen de los siguientes tipos (hacer click en cada tipo para ir a su apartado):

 

 

 

INTEGER

 

Son numeros enteros de valores entre −2,147,483,648 y +2,147,483,647 (de 0x80000000 a 0x7FFFFFFF en hexadecimal).

La constante DEBUG_CHANNEL se puede usar como constante de maximo valor.

 

Ejemplos:

integer primerentero = 5512623;

integer segundoentero = ACTIVE;

integer tercerentero = 0x61EC1A;

integer cuartoentero = -160693;

 

FLOAT

 

Representa a numeros de coma flotante (forma de notación cientifica usada para representar numeros racionales extremadamente grandes  y pequeños de una manera eficiente).

Si un numero es escrito con el punto de decimal en LSL es tomado como float.

A diferencia de los integer, que solo representa a numeros enteros, float representa tanto a numeros enteros como numeros con coma en el rango de 1.401298464E-45 to 3.402823466E+38.

 

A la hora de dividir 2 valores, si ponemos los dos de tipo float, evitaremos que el resultado se redondee.

 

Ejemplos:

float min = 1.175494351E-38;

float max = 3.402823466E+38;

float sci = 2.6E-5;

float sci_a = 2.6E+3;

float sci_b = 2.6E3;

float sci_c = 26000.E-1;

float f = 2600

float E = 85.34859;

float cast = (float)"42";

float Infintity = (float)"inf";

float NotANumber = (float)"nan";

 

STRING

 

Representa a tipos de variable que son cadenas de texto.

Siempre son representados entre “ “.

 

La longitud de los string está solo limitado por la memoria de script. Si hay memoria en el script los string pueden ser tan largos como queramos. A no ser que la función donde se utiliza el string tenga una limitación de max. string permitido.

(Por ejemplo, la función llSay tiene un limite de 1024 caracteres).

 

Los string pueden ser concatenados(enlazados entre si) con el operador +.

Pero hay que tener en cuenta que la concatenación no se puede hacer mientras se declara la variable global, ya que el operador + es una instrucción ejecutable y el compilador no lo maneja. Solo se puede utilizar dentro de codigo ejecutable como dentro de una función o evento.

 

El tamaño, color….del texto no se puede cambiar. Solamente hay posibilidad de hacerlos mayusculas o minusculas.

 

Algunos ejemplos de strings con operadores:

 

(valor1+ valor2)  --> Anexa el string valor2 al string valor1 y devuelve un unico string formado por ambos.

(valor1 == valor2) --> Devuelve un 1 si los dos string son de la misma longitud y caracteres. Sino, devuelve 0.

(valor1 != valor2) --> Devuelve un 0 si los dos string son de la misma longidut y caracteres. Sino, devuelve un 1.

 

Algunos códigos interesantes para strings:

\n --> Cambia de linea

\t --> Tabula

\” --> Comillas (“)

\\ --> Barra invertida

 

KEY

 

En Second Life, todos los item  (cada objeto, avatar, terreno, grupo,etc.) está definido por un código de identificación llamado UUID (Universally Unique Identifier). Los tipos de variables key son para identificar estós UUID.

Los UUID se pueden diferenciar en 4 tipos:

  • Asset UUIDs: Animaciones, gestures, objetos, notas, scripts, sonidos, texturas.

  • Instance UUIDs: Cada vez que un objeto se rezea, es asignado por un instance UUID. Cuando el avatar que lo tiene adjunto es teleportado, el instance UUID no es cambiado. Pero si cuando se desconecta de Second Life

  • Account UUIDs: Se crean cuando un avatar o un grupo es creado y son permanentes y publicos.

  • Land UUIDs: Códigos identificativos para parcelas o regiones.

 

El tipo de variable key suele estar formado por caracteres hexadecimales separados por guiones entre si, formando un total de 36 caracteres.

 

 

Ejemplo:

key micodigo = "01234567-89ab-cdef-0123-456789abcdef";

 

 

En realidad es como un string pero especializado en codigos de identificación de Second Life.

Se puede guardar un key dentro de un string y viceversa, pero el string, si no tiene la forma del key o no es un key tendra valor nulo: 00000000-0000-0000-0000-000000000000 (FALSE)

 

 

Algunas formas de conseguir un key en Second Life, son los siguientes:

  • Que alguien te lo de

  • Conseguirlo con funciones como por ejemplo: llGetKey, llGetLinkKey, etc.

  • En el inventario, boton derecho encima del objeto y “copy asset UUID” (tiene que tener permisos).

 

VECTOR

 

Un vector es un tipo de variable compuesto por un conjunto de 3 valores de tipo float.

Los cuales, van metidos entre los signos “<” y “>”, separados de comas.

 

 

Ejemplo:

vector miposicion =<1.0, 2.0, 3.0>;

 

 

A cada elemento del vector se puede acceder adjuntando .x, .y o .z al nombre de la variable.

Esto nos da la posibilidad de operar sobre un solo eje o float del vector directamente en lugar de operar con todo el vector.

 

Ejemplo:

 

vector vec;

float x = vec.x;

float y = vec.y;

float z = vec.z;

 

 

Los vectores pueden ser usador para:

 

  • Posicion(en metros):

La posicion puede ser posicion global o posición local.

Cuando hablamos de posición global, nos referimos la posicion con respecto al sim.

Si miramos en el mapa, :

El punto inferior izquierdo sería la posición <0,0,0>

El punto inferior derecho sería la posicion <255,0,0> 

El punto superior izquierdo sería la posicion <0,255,0>

El punto superior derecho sería la posicion <255,255,0>

El centro del sim sería la posición <128,128,0>

Cuando hablamos de la posicion local, nos referimos a la posicion con respecto a otro punto de sim.

 

  • Color:

En el caso de los colores, cada valor float del vector tiene un rango entre 0 y 1.

Rojo: <1,0,0>

Verde:<0,1,0>

Azul: <0,0,1>

 

 

Los operadores con los que trabajan los vectores son:

  • Suma: +

Cuando sumamos 2 vectores sumamos miembro a miembro.

Ejemplo:

<x1,y1,z1> + <x2,y2,z2> = <x1+x2,y1+y2,z1+z2>

 

  • Resta: -

Ejemplo:

<x1,y1,z1> - <x2,y2,z2> = <x1-x2,y1-y2,z1-z2>

 

  • Multiplicacion: *

Ejemplo:

<x1,y1,z1> * <x2,y2,z2> = <x1*x2,y1*y2,z1*z2>

 

  • Producto vectorial: %

Dos vectores de distinto valor, forman un plano.

Al hacer el producto vectorial de dos vectores, lo que conseguimos es el vector perpendicular a ese plano.

 

No es lo mismo hacer a%b ó b%a.

Son de signo contrario. Los dos definen el plano Z. Uno el positivo y el otro el negativo.

Para mas informacion mirar el siguiente enlace:

 

http://es.wikipedia.org/wiki/Regla_de_la_mano_derecha

 

ROTATION

 

El tipo de variable rotation es uno de varios modos de representar la orientacion en 3D.

Puede ser visto como una pequeña torsion en el espacio tridimensional, y la orientación del objeto sería cuanto se ha torcido con respecto a los ejes que se estan usando, normalmente los ejes de la region.

Es diferente a los demas variables porque provoca una acción (la rotacion).

El variable rotation es expresado como un objeto matematico llamado quaternion.

Un quaternion es un vector pero tiene 4 componentes de tipo float:

<x,y,z,s>

 

No son angulos, son el resultado de muchas operaciones trigonometricas con los angulos.

LSL proporciona un modo sencillo de traducir de nuestros vectores en grados a rotaciones en quaternion.

Por tanto, no es necesario saber mucho de quaternions.

 

La operaciones no son conmutativas:

rotacionA * rotacionB no es lo mismo que rotacionB*rotacionA

 

Dependiendo del objeto que hemos construido, vamos a querer que la rotacion sea global. Esto quiere decir que la rotacion de les ejes dependera de la orientación del prim que contiene el script.

 

Las rotaciones locales dependen de la orientacion del prim raiz del objeto.

 

Operacion entre rotaciones:

Se usa la multiplicacion y division.

La multiplicacion provoca una rotacion positiva y la division una rotacion negativa.

 

 

Ejemplo:

R1=90º a la izquierda

R2=30º a la derecha

 

R3=R1*R2=60º

 

 

Tambien se podría hacer negativo una rotacion, haciendo negativo el componente s de la variable rotation.

 

Ejemplo:

rotation Migiro = <x,y,z,s>;

Migiro.s=-Migiro.s;

 

LIST

 

La variable de tipo list es un tipo de dato que puede contener cualquiera de los demas tipos de variables.

Se representan entre corchetes “[“ y “]” separados con comas.

Es una lista de datos ordenada.

Cada elemento del list ocupa una posicion. Se pueden leer de izquierda a derecha o de derecha a izquierda.

 

Leyendo desde la izquierda las posiciones empiezan por 0:

[0,1,2,3…]

 

Leyendo desde la derecha se empiezan por -1:

[…-4,-3,-2,-1]

 

Esto quiere decir que, en este ejemplo, la posicion -1 y la posicion 0 son la misma posicion en el list.

 

Los elementos en una lista no tiene que ser todos del mismo tipo. Puede haber de tipo integer, float, vector…en un mismo list. Sin embargo, una list no puede estar dentro de otra list.

 

Ejemplo:

List milist=[1,15.75,”mi texto”,<0,0,0>];

 

 

Anchor 2
Anchor 3
Anchor 4
Anchor 5
Anchor 6
Anchor 7
Anchor 8
bottom of page