Ir al contenido

Qué son las variables internas

Además de las que declaras con una caja de variable, el sistema trae 163 variables ya hechas. No hay que crearlas ni colocar nada: están ahí desde siempre, y guardan cosas que el hotel ya sabe — dónde está un furni, qué efecto lleva puesto un avatar, qué hora es, cuánta gente hay.

Se reconocen porque empiezan por un símbolo:

@ Internas Datos que tiene cualquier sala, usuario o furni
~ Inteligentes Ventanas a la mecánica de un furni —o de una mascota— concreto

La diferencia práctica es dónde existen. @position.x la tiene cualquier furni; ~clock.state solo la tienen los relojes, y ni siquiera aparece en la lista si no hay un reloj en la sala.

Esta es la parte que hay que entender antes de usarlas, porque decide con qué las compruebas.

Las que siempre están. @position.x, @user_count, @current_time… existen pase lo que pase y siempre tienen un número. Se leen con Valor de variable.

Las que se tienen o no se tienen. @effect solo la tiene quien lleva un efecto puesto; @handitem solo quien lleva algo en la mano; @room_entry.teleport_id solo quien entró por un teleport o por un Nexo de Sala. Cuando no procede, la variable no existe — no es que valga cero. Para eso está Contiene variable, y es lo que hace útil preguntar “¿lleva algún efecto?” sin importar cuál.

Las de presencia. No tienen número: la tienes o no la tienes, y eso es el dato. @is_hc, @has_rights, @is_owner, @can_sit_on… Son los booleanos del sistema. Con estas, Valor de variable no sirve de nada: se comprueban siempre con Contiene variable.

Casi todas son de solo lectura. Son la ventana por la que el wired mira el estado del hotel, no un mando para cambiarlo: de las 163 que hay, solo se puede escribir en 21 internas (@) y en 13 inteligentes (~). Se escriben con Cambiar valor de variable, y ahí está lo interesante: son acciones que no tienen efecto propio.

Escribir en una interna no es asignar un número en una tabla: es ejecutar la acción que correspondería. Subir @position.x de un furni es un Mover de una baldosa, con todo lo que eso arrastra — los complementos de movimiento de la pila se aplican igual, y las validaciones también. Si el efecto no habría podido, la escritura tampoco puede.

Estas son las veintiuna internas, y en cada página van marcadas con ✏️:

Familia Variables Hace
Sitio y postura de un furni @position.x · @position.y · @position · @occupation · @rotation · @altitude · @state · @wallitem_offset Mover, girar, subir o encender un furni
Sitio y postura de un avatar @position.x · @position.y · @position · @direction Mover o girar a un avatar
Lo que lleva puesto @handitem · @effect · @dance Dar un objeto en la mano, poner efecto o baile
Marcadores de la partida @team.score · @teams.red.score · @teams.green.score · @teams.blue.score · @teams.yellow.score Tocar el marcador de un equipo
Cómo caminan en la sala @pathfinder Elegir el calculador de rutas de los avatares

Y las trece inteligentes: las medidas de la Zona Oculta (~area_hide.root_x, ~area_hide.root_y, ~area_hide.width, ~area_hide.length), los tres colores del pintafondos (~background_color.hue, ~background_color.saturation, ~background_color.lightness), el contador de los relojes (~clock.pulse_count), el destino de un teleport o de un Nexo de Sala (~teleport.target_id), el color de un bloque recoloreable (~recolorable_furni.color.rgb) y los tres desplazamientos de un anuncio (~branding.offset_x, ~branding.offset_y, ~branding.offset_z). Están en Inteligentes.

Poder calcular el valor es lo que las hace valiosas: @effect + 1, un número aleatorio, o lo que valga otra variable. Con la acción normal tendrías que dejar un valor fijo.

Siete se pueden además dar y retirar con Dar variable y Eliminar variable: @handitem, @effect y @dance, donde retirarlas escribe su 0, y las cuatro inteligentes de presencia —~area_hide.inverted, ~area_hide.is_invisible_furni, ~area_hide.hiding_wallitems y ~walk_helper.is_multi_walk—, donde darlas enciende una opción del furni y retirarlas la apaga.

Cuatro variables guardan varios datos dentro de un solo número: una baldosa, una baldosa con su giro, o un color. En las páginas de cada lista llevan 📦.

Variable Qué lleva El número es Ejemplo
@position (de furni y de usuario) La baldosa: x e y x × 256 + y La baldosa (4, 39) es 1063
@occupation (de furni) La baldosa y el índice de giro de @rotation x × 65536 + y × 256 + giro La baldosa (4, 39) con giro 0 es 272128
~recolorable_furni.color.rgb (de un bloque recoloreable) El color rojo × 65536 + verde × 256 + azul El color 5EAAF8 —94, 170, 248— es 6204152

Cada dato ocupa 8 bits, de 0 a 255, así que en hexadecimal son dos cifras seguidas: la baldosa (4, 39) es 0x0427 y el color 5EAAF8 es 0x5EAAF8.

Para qué sirven:

  • Mover con una sola escritura. Escribir @position lleva al furni —o a la persona— a las dos coordenadas de una vez. Con @position.x y luego @position.y son dos movimientos, y el primero puede fallar si la baldosa intermedia está ocupada.
  • Copiar un sitio. Con el campo valor o variable de Cambiar valor de variable puedes tomar como valor la @position de un furni y escribirla en la de otro furni, o en la de una persona: llega a su misma baldosa —si se puede pisar— sin que conozcas sus coordenadas.
  • Sacar un dato. Sobre una copia en una variable tuya, un Desplazamiento a la derecha de 8 deja la x de una @position, y un Bitwise AND con 255 deja la y. Son dos de las operaciones de bits.

En un mensaje, una condición o un selector una empaquetada es solo el número. El desglose (x: 4, y: 39, #5EAAF8) lo dibuja el panel :wired; cómo se ve y cómo se edita ahí está en Herramientas de creador.

En los mismos sitios que las tuyas: condiciones, selectores por variable, efectos de cambiar valor, y dentro de un texto con el Marcador de posición.

Muchas traen además un conector de texto de fábrica: en vez de escribir 2, el mensaje enseña E. Lo llevan @direction, @gender, @type, @team.color, @dance, @effect, @current_time.day_of_week, @pathfinder y unas cuantas más. Son textos de fábrica —varios en inglés, como en el hotel oficial— y no se pueden cambiar. Las descripciones de las tablas de estas fichas son explicación: el texto que enseña un mensaje es el de fábrica, casi siempre en inglés (por ejemplo, @type da Normal o Temp, no «temporal»).

¿No estás seguro de qué puede hacer una variable concreta? La pestaña Variables de :wired enseña sus propiedades —si guarda valor, si se puede escribir, dar o retirar, si tiene fecha, si trae textos— para cada una, sin tener que adivinarlas.

Cuántas De quién es el dato
De usuario 36 Cada persona, bot o mascota
De furni 21 Cada mueble
Del proyectil 7 Un furni lanzado con el complemento Proyectil, mientras vuela
Globales 25 La sala, cómo caminan sus avatares y la hora
De contexto 21 La ejecución que está corriendo
Inteligentes 53 La mecánica de un furni o de una mascota concretos. Las once de planta todavía no funcionan