Editar y aplicar
La ventana tiene cuatro zonas: la barra de herramientas arriba, el editor en medio, el panel de problemas y resultados debajo y la barra de estado al pie.
La barra de herramientas
| Ver / Editar | El modo del editor — ver Ver y Editar |
| Recargar | Vuelve a pedir la sala al servidor y reescribe el documento entero |
| Aplicar / Vista previa… | Compila el texto y guarda lo que haya cambiado. Se llama Vista previa… en cuanto hay algo que comprar, recoger, mover o cambiar de altura/rotación |
| Buscar | Abre la búsqueda del editor, igual que Ctrl + F |
N cambios | Todo lo que haría Aplicar ahora mismo: wireds que se guardan, compras, recogidas, movimientos y alturas (con algún error, 0) |
+N nuevos | Cuántos bloques nuevos hay (solo aparece si hay alguno) |
↔N movidos | Cuántos wireds o furnis cambiarían de casilla (solo aparece si hay alguno) |
↕N alturas | Cuántos furnis cambiarían de altura o de rotación (solo aparece si hay alguno) |
−N quitados | Cuántos wireds o furnis se recogerían (solo aparece si hay alguno) |
N errores | Cuántos errores bloquean el Aplicar |
Las pastillas se encienden cuando su número deja de ser cero.
Ver y Editar
El editor tiene dos modos, en la propia barra. Dentro de una sala, el que elijas se mantiene aunque cierres y vuelvas a abrir la ventana; al salir de la sala, vuelve a Ver. El navegador también lo recuerda: si cierras o recargas la pestaña estando en Editar, la próxima vez empiezas en Editar.
| Modo | Qué permite |
|---|---|
| Ver (por defecto) | Solo lectura: seleccionar y copiar texto, buscar, y el hover/resaltado de #id y etiquetas contra la sala — ver El editor. No hay Aplicar ni Vista previa… |
| Editar | Todo lo de arriba, más escribir y aplicar — es el modo descrito en el resto de esta página |
Ver es el modo pensado para consultar la sala sin arriesgarte a tocar nada por accidente. Pasas a Editar con su botón cuando quieras cambiar algo.
Volver a Ver con cambios sin aplicar te pregunta primero —el mismo aviso que Recargar— porque ese cambio de modo descarta lo que hubieras escrito: confirmas y el documento vuelve a quedar en solo lectura con lo último guardado en el servidor, no con tu borrador.
Mientras carga, mientras aplica y con la vista previa abierta, Ver y Editar están apagados, igual que Recargar: cambiar de modo en ese momento podría tirar tu texto.
Este modo es independiente de si tienes o no derechos de wired en la sala: con derechos puedes elegir Ver o Editar; sin ellos, ver Solo lectura más abajo — ese es el motivo por el que el documento es de solo lectura, no una elección tuya.
Recargar
Pide el volcado y descarta lo que hubieras escrito. Si tienes cambios sin aplicar, primero te pregunta «¿Descartar los cambios sin guardar?».
Recarga tú mismo siempre que hayas tocado la sala con el ratón (colocar, recoger, mover una caja):
el documento es una foto del momento en que se pidió, y aplicar sobre una foto vieja da errores de
#id que no existe.
Hay un respiro de 2 segundos
El servidor no atiende dos volcados en menos de dos segundos: construir la ventana de cada wired de la sala no es gratis. Por eso el editor espera ese respiro entre una carga y la siguiente: si pulsas Recargar dos veces seguidas, la segunda tarda un poco más.
Si solo puedes leer los wireds de la sala (no modificarlos), hay además un cupo para la sala entera:
una lectura por segundo entre todos los que solo pueden leer. Si otro acaba de leerla, la barra de estado
dice Hay muchas lecturas de esta sala a la vez: espera unos segundos y pulsa Recargar; si ya tenías
el texto de la sala cargado, se queda como estaba hasta que vuelvas a pulsar Recargar. Quien puede
modificar los wireds no entra en ese cupo.
Recargar también está apagado mientras carga, mientras aplica y mientras se construye de verdad:
recargar a mitad tiraría el texto en el que hay que escribir los #id nuevos.
Aplicar
Es un botón en tres pasos:
- Compilar. Si hay un solo error, no se envía nada. Ni un wired. Los errores salen en el panel con su línea.
- Comparar (el diff). De todo lo que compila, solo se manda lo que sale distinto de lo que
la ventana de ese wired mandaría sin tocar nada. Reordenar campos, cambiar comentarios o escribir
un enumerado por su nombre en vez de por su número no cuentan como cambio: no se guarda. La
pastilla
N cambioscuenta estos wireds y, además, lo que se compra, se recoge, se mueve o cambia de altura. - Guardar, uno detrás de otro. Cada wired se guarda exactamente igual que si lo hicieras desde
su propia ventana, esperando la respuesta del anterior antes de mandar el siguiente. Al terminar,
el editor recarga solo y las líneas de los wireds guardados se quedan resaltadas dos segundos.
También se resaltan las líneas
furnique la tanda compró, movió o cambió de altura o de rotación.
Si además hay bloques nuevos, wireds que recoger o wireds que mover, entre el paso 2 y el 3 se cuela la vista previa con el coste, que hay que confirmar; al confirmarla, la construcción se hace pieza a pieza (con el progreso a la vista) antes de que empiece el paso 3: está contada en Crear, borrar y mover.
No es todo o nada
Si el servidor rechaza el séptimo wired, los seis anteriores ya están guardados. Se sigue con los siguientes y cada uno cuenta su resultado por separado.
Si sales de la sala o algo falla
Lo que escribes y no llega a la sala no se pierde por salir de ella ni porque falle una tanda:
- Si sales de la sala con cambios sin aplicar, el texto se queda como borrador de esa sala. La
próxima vez que abras allí la ventana, bajo la barra de herramientas sale
Tienes un borrador sin aplicar de esta salacon Recuperar y Descartar; hasta que elijas, el editor enseña la sala tal como está. - Si una tanda no se aplica entera (alguna fila ✗ o ⚠: un rechazo, un
sin respuesta, una construcción cortada, algo comprado que no se pudo colocar), la recarga del final enseña la sala como quedó y bajo la barra sale, en ámbar,Parte de tu texto no se aplicócon Recuperar lo no aplicado y Descartar. - Si la tanda llegó a crear (o pudo crear) bloques nuevos, también cuando sales de la sala con ella
en marcha o antes de su recarga final, el aviso lleva además
Ya se crearon bloques nuevos: aplicarlo tal cual los compraría otra vez: en tu texto esos bloques siguen sin#id, y quitarlos tampoco sirve (Aplicar recogería los que ya se crearon). Si recuperas ese borrador y vuelve a quedarse sin aplicar, el nuevo conserva el aviso mientras el texto tenga algún bloque o líneafurnisin#id. Aun así, antes de aplicar un texto recuperado, mira la vista previa: si enseña compras de bloques que ya están en la sala, cancélala y ponles el#idque tienen. Y si una fila dijo «comprado pero…», ese furni ya está en tu inventario: colócalo a mano en vez de volver a comprarlo. - Recuperar pone tu texto en el editor y te pasa a Editar; si el editor tiene cambios sin guardar, antes te pregunta «El editor tiene cambios sin guardar. ¿Reemplazarlos por el borrador?». Descartar tira el borrador.
- Si cierras o recargas la pestaña con texto sin aplicar en el editor, o con algún borrador guardado de cualquier sala, el navegador te pregunta antes.
Los borradores viven en la memoria de esa pestaña del navegador: si la cierras o la recargas, se pierden todos. Por eso el navegador pregunta mientras quede alguno, aunque sea de otra sala: si no lo quieres, vuelve a esa sala y pulsa Descartar. Hay uno por sala (el nuevo sustituye al anterior) y se guardan los de las 20 últimas salas. Cerrar la ventana con la X no tira nada: al volver a abrirla en la misma sala, tu texto sigue ahí.
El editor
Pon el cursor de teclado sobre un #id o una etiqueta y el furni correspondiente se ilumina en la
sala —el mismo brillo que usa el selector de furnis— mientras el cursor siga ahí; en cuanto lo
mueves a otra parte, o cierras la ventana, se apaga. Es la forma rápida de saber de qué mueble habla
una referencia sin salir del texto. Y con el cursor en la cabecera de una stack (x, y) se ilumina la pila
entera: todos los bloques y furnis con #id que hay dentro. El tooltip del ratón sobre ese mismo #id o etiqueta te dice
el classname, la casilla, la z y el #id del bloque que nombra (o nuevo (se comprará) si el bloque
aún no tiene #id).
El tooltip también explica lo que escribes: sobre familia.nombre, los campos de ese wired; sobre un
campo, su tipo con su rango (en un texto, su máximo de caracteres y de líneas, si lo tiene), su valor
por defecto y para qué sirve; sobre un valor de enumerado, el número con el que se guarda.
Autocompletado
La lista de lo que cabe donde está el cursor se abre sola mientras escribes (también justo detrás de
un ., un =, un # o la comilla de un campo de variable); con Ctrl + Espacio la pides a mano.
- Fuera de las pilas ofrece
stack; en el cuerpo de una pila,furni etiqueta "classname"y las familias; detrás defamilia., los wireds de esa familia (el que eliges se escribe como bloque entero, listo para rellenar). - Dentro de un bloque, los campos que todavía no tiene, con su tipo al lado; detrás del
=,true/false, los valores del enumerado o las variables. En un número (también en0x…o0b…) o en un texto no ofrece nada: lo escribes tú. - En un campo de variable, las variables de la sala. Si el campo pide un portador, solo salen las de ese portador y las que el editor no sabe de quién son. El portador es el fijo del wired o el de su campo de ámbito, escrito antes o después en el mismo bloque; si no lo escribes, el de fábrica. Nunca sale una inteligente cuyo furni o mascota no está en la sala (la ventana tampoco la enseña). Al lado de cada una van su id y, si se sabe, de quién es. Si el nombre no basta para llegar a esa variable, se escribe su id.
- Dentro de una lista
[ … ], las etiquetas del documento y los#idde la sala, sin los furnis temporales: desaparecen en cuanto un wired los retira.
El panel de problemas y resultados
Aparece solo cuando hay algo que decir, y se pliega pulsando su cabecera. Cada fila salta a su línea en el editor.
| Icono | Es |
|---|---|
| ⚠ | Un error: bloquea Aplicar hasta que lo arregles. En los resultados, en ámbar, es algo que se compró pero no se pudo colocar — ver Crear, borrar y mover |
+ − ↔ ↕ | Lo que hará Aplicar en la sala: comprar algo nuevo, recoger, mover de casilla o cambiar de altura o de rotación. No bloquean nada |
| ℹ | Un aviso: no bloquea nada |
| … | Un aviso pendiente: tampoco bloquea, pero solo se resuelve al aplicar (ver más abajo) |
| ✓ | El servidor guardó (o recogió) ese wired |
| ✗ | El servidor rechazó ese wired, con su motivo |
Los avisos que verás, con su icono (ninguno bloquea Aplicar):
| Icono | Aviso | Es |
|---|---|---|
+ | nuevo wired familia.nombre en (x, y) | Un bloque sin #id: se va a comprar y colocar (en una línea furni, nuevo furni "classname" en (x, y)) |
− | #N (familia.nombre) se recogerá al inventario | Un #id de la sala que ya no está en el texto (de un furni normal, entre paréntesis va su classname) |
↔ | ↔ #N (x1, y1) → (x2, y2) | Un #id bajo una stack distinta de la que trae de la sala: se va a mover ahí |
↕ | ↕ #N etiqueta z 250 → 300 | Un furni al que le cambias la z o la rot (rot 0 → 2): se va a subir, bajar o girar — ver Crear, borrar y mover |
| ℹ | el editor no conoce el wired #N (i_type 'X'): se deja sin tocar | Un wired que el editor todavía no conoce, una pieza nueva del servidor: sale como comentario y no se borra — ver Un wired que el editor no conoce |
| ℹ | el wired #N (i_type 'X') llega sin ventana (no se puede ver sin el permiso de Super Wired): se deja sin tocar | Un Dar Premio cuya configuración no puedes ver porque no tienes permiso de Super Wired: sale como comentario y no se borra, igual que un wired que el editor no conoce |
| ℹ | familia.nombre: al aplicar vuelve a guardar la foto de los furnis elegidos, tal como están ahora mismo | Cambias o creas un effect.match_to_sshot, un condition.match_snapshot, un condition.not_match_snap o un effect.place_furni: al guardarlo, el servidor vuelve a fotografiar la posición y el estado de sus furnis. Si no están en su sitio, pierdes la foto que tenía |
| ℹ | la baldosa (x, y) lleva más de cinco Variable FX: el servidor solo activa cinco por baldosa y los demás quedan inertes | Cuentan los que ya hay y los nuevos. El sexto y los siguientes se compran y se guardan, pero no hacen nada |
| ℹ | #N era temporal y ya no está en la sala: se ignora esta línea | Tu texto (un texto viejo, uno pegado de otro sitio) lleva la línea furni de un furni temporal, a veces marcada // temporal, y ese temporal ya no está. Los temporales no salen en el documento y su línea no hace nada: ni lo recoge, ni lo mueve, ni lo sube. Si el temporal sigue en la sala, la línea se ignora igual, sin aviso |
| ℹ | #N etiqueta: al moverlo a (x, y) queda en la cima de esa casilla y no se aplica z = Z; para fijarla, vuelve a escribirla después de aplicar | Mueves una línea furni a otra pila sin cambiar su z (distinta de 0) ni su rot: queda encima de lo que haya en la casilla nueva — ver Mover: cambiar la casilla |
| ℹ | stack (x, y): selector.furni_area #N cambia de casilla, pero su zona (area_x, area_y) se queda en las mismas casillas de la sala; cámbiala si quieres que lo acompañe | Mueves de casilla un selector.furni_area o un selector.users_area que ya está en la sala: su zona no se mueve con él. Sale una vez por casilla, en la línea de la pila, y nombra los que cambian de casilla |
| ℹ | la caja se compra sin nombre: no registra ninguna variable hasta que le pongas `name` | Una caja variable.* nueva sin name: al aplicar solo se compra, y su fila de resultado es la de la compra. Sin nombre todavía no es ninguna variable, ningún bloque la puede nombrar y lo demás que escribas en ella no se guarda — ver Crear |
| ℹ | la variable 'X' se recoge en esta tanda y la usan N bloques | Quitas una caja de variable que otros bloques del texto siguen usando: después de aplicar apuntarán a una variable que ya no existe. Si el mismo texto da ese nombre a otra caja (una nueva o una renombrada), no sale: esos bloques pasan a ella |
| ℹ | #N (extra.var_web_api): sus claves de la API se borran al recogerlo, sin vuelta atrás (al volver a colocarlo serán otras) | Quitas del texto el bloque de la Web API de variables. Sale además del aviso − de la recogida, y la vista previa te pide confirmarlo — ver Recoger el complemento Web API de variables |
| ℹ | familia.nombre: el servidor recorta el nombre del bot a 18 caracteres (solo un administrador puede llevar más) | El nombre del bot de effect.bot_talk o effect.bot_talk_to_avatar pasa de 18 caracteres: se guardará cortado |
| ℹ | effect.change_opacity: con all_users = true la fuente de usuarios no cuenta: el servidor guarda user_source = triggering en vez de user_source = X; escribe all_users = false si quieres que cuente | Escribes en Transparência un user_source distinto de triggering y dejas all_users en true, su valor por defecto: el cambio lo ve toda la sala y la fuente se guarda como triggering |
| ℹ | extra.var_leaderboard: la tabla sigue sin publicar: sin ningún texto el servidor la guarda, pero no sale ningún panel en la sala; para publicarla escribe title y el nombre de cada columna (column_1_label, column_2_label…) | Configuras una Tabla de Clasificación sin ningún texto (title, description, los nombres de columna…): se guarda, pero no se ve. Con el bloque vacío, { }, no sale |
| ℹ | extra.var_leaderboard: la tabla deja de estar publicada: su panel se retira de la sala; vuelve a escribir title y el nombre de cada columna (column_1_label, column_2_label…) para publicarla | Quitas todos los textos de una Tabla de Clasificación que estaba publicada: al aplicar, su panel desaparece de la sala |
| ℹ | 'user_source': 'clicked' necesita 'trigger.click_user' en la misma pila, y este texto la deja sin él: el wired se ejecutará una sola vez, con el usuario desencadenante | Un wired de la sala con user_source = clicked (o reached, que pide trigger.bot_reached_avtr) se queda sin su causante en la pila: quitas el causante, lo mueves a otra pila o mueves el propio wired. No es un error porque esa fuente ya la tenía guardada, pero al ejecutarse no hará lo que dice el texto |
Y uno con icono … en vez de ℹ, porque no se resuelve al compilar sino al aplicar:
| Aviso | Es |
|---|---|
'campo': se resolverá al crear 'a' | Ese campo referencia por nombre una variable que declara otra caja variable.* nueva de este mismo documento. Se guarda vacío hasta que esa caja se cree; en cuanto tiene su #id real, el editor lo rellena solo y guarda este bloque. Si la caja que declara 'a' no llega a crearse, este bloque no se guarda y sale no se guardó: la variable 'a' no llegó a crearse — ver Crear, borrar y mover |
'furnis': se resolverá al crear 'tile1' | Ese campo de furnis referencia por etiqueta un furni o un wired nuevo de este mismo documento. Se guarda vacío hasta que se crea; en cuanto tiene su #id real, el editor lo rellena solo y guarda este bloque. Si el bloque que declara 'tile1' no llega a crearse, este bloque no se guarda y sale no se guardó: 'tile1' no llegó a crearse — ver Furnis normales |
Los errores también se subrayan dentro del editor, en su sitio exacto.
La barra de estado
- Lín / Col: dónde está el cursor. Es lo que usas para encontrar la línea que te dice un error.
- N wireds: cuántos bloques tiene el documento tal y como está escrito ahora (no cuántos hay en la sala).
Ctrl+Espacio: completar · Ctrl+F: buscar: el recordatorio de dos atajos.Vista previa: +N −N ↔N: solo mientras la vista previa está abierta, con↕Ndetrás si hay alturas.- El modo:
Listo,Modo Ver,Cargando…,Aplicando…,Construyendo N/M…(la construcción pieza a pieza) o, en color de aviso, el motivo por el que no puedes escribir:Solo lectura (sin derechos de wired),Solo lectura (sala bloqueada por el staff),Sin permiso para leer los wireds de esta sala,La sala está en venta: no se puede leer su código,Hay muchas lecturas de esta sala a la vez: espera unos segundos y pulsa RecargaroSin respuesta del servidor— ver Solo lectura.
Atajos
| Atajo | Hace |
|---|---|
Ctrl + S | Aplicar |
Ctrl + R | Recargar |
F5 | Recargar |
Ctrl + / | Comentar / descomentar la selección |
Ctrl + Espacio | Abrir el autocompletado — ver Autocompletado |
Ctrl + F | Buscar en el documento (lo mismo que el botón Buscar) |
Escape | Cancelar la vista previa (mientras está abierta y el servidor no ha empezado) |
Tab | Indentar (dentro del editor no cambia de campo) |
Ctrl + Z / Ctrl + Y | Deshacer / rehacer |
Ctrl+S, Ctrl+R y F5 están capturados a propósito: dentro del editor no guardan la página ni
recargan el cliente.
Los bloques stack se pueden plegar desde el margen izquierdo, junto al número de línea. Ahí
mismo, lo que Aplicar va a comprar —los bloques y las líneas furni sin #id— lleva un + verde.
Solo lectura
Hay cuatro motivos por los que no vas a poder escribir:
- Sin permiso de lectura: la ventana se abre vacía y la barra de estado dice
Sin permiso para leer los wireds de esta sala. Con la sala en venta pasa lo mismo, aunque seas el dueño, y la barra diceLa sala está en venta: no se puede leer su código. No es un fallo: el servidor contesta a propósito en vez de dejar el editor cargando para siempre. - Sin derechos de wired: el documento se ve entero, pero el editor está bloqueado y Aplicar
apagado (
Solo lectura (sin derechos de wired)). Si te quitan el permiso con la ventana abierta, el editor pasa a solo lectura sin tocar tu texto y bajo la barra de herramientas saleHas perdido el permiso de modificar wireds. - Sala bloqueada por el staff: lo mismo aunque tengas derechos, con
Solo lectura (sala bloqueada por el staff). Solo el staff puede modificarla. Si la bloquean con la ventana abierta, el editor pasa a solo lectura en ese momento, sin tocar tu texto, con el mismo avisoHas perdido el permiso de modificar wireds; y si la desbloquean, vuelve a dejarte escribir sin recargar. - Modo Ver: el que hayas elegido tú, con derechos de sobra — ver Ver y Editar. Pasa a Editar con el botón de la barra.
También queda bloqueado mientras carga, mientras aplica y mientras la vista previa está abierta, para
que el texto no cambie debajo. Y si la carga no llega, la barra dice Sin respuesta del servidor y el
editor sigue bloqueado hasta que Recargar traiga la sala. Si solo puedes leer los wireds y otro
acaba de leer la sala, la barra dice
Hay muchas lecturas de esta sala a la vez: espera unos segundos y pulsa Recargar (ver
Recargar).
Los errores, uno a uno
De escritura (sintaxis)
Con un error de estos no se compila nada más: se arreglan primero, porque hasta que el texto no se lee entero no se puede decir nada sensato sobre qué wireds faltan o sobran — y menos aún comprar o recoger nada.
| Mensaje | Qué pasó |
|---|---|
Cadena sin cerrar | Falta la comilla de cierre. Un salto de línea corta la cadena |
Carácter inesperado 'X' | Un símbolo que el lenguaje no usa (acentos, ;, :, !…). Las mayúsculas se leen como identificador: valen en una etiqueta, y en cualquier otro sitio darán campo desconocido o valor de enumerado desconocido |
Se esperaba 'stack' | Fuera de una pila solo puede haber comentarios y stack |
Se esperaba '(' / ')' / la coordenada X / la coordenada Y | La cabecera de la pila mal escrita; se escribe stack (3, 1) { |
Se esperaba '{' | La llave de apertura va en la misma línea que la cabecera |
la cabecera es familia.nombre [#id] {; el classname ya no se escribe | Una cadena entre comillas detrás de familia.nombre (la sintaxis antigua). Quítala: el furni que se compra lo dice ya familia.nombre |
Se esperaba '}' | Falta una llave de cierre (muchas veces, la culpa es de una cadena sin cerrar más arriba). Un wired al que se le olvida su } de cierre cae en este mismo error: al ser de sintaxis, no se aplica nada |
Se esperaba la familia del wired / familia desconocida 'X' | Las familias son trigger, effect, condition, selector, extra, variable |
Se esperaba '.' / Se esperaba el nombre del wired | La cabecera es familia.nombre, con el punto pegado |
Se esperaba el nombre de un campo / Se esperaba '=' | Un campo es nombre = valor |
Se esperaba un valor | Después del = no hay nada que el lenguaje reconozca |
Se esperaba ']' | Falta el corchete de cierre de una lista |
Se esperaba ',' | Falta la coma de la cabecera de la pila |
Se esperaba ',' o un salto de línea entre campos | Dos campos pegados en la misma línea sin coma |
Se esperaba la etiqueta / Se esperaba el classname del furni entre comillas | Una línea furni se escribe furni etiqueta "classname": primero la etiqueta y después el classname, entre comillas — ver Furnis normales |
no se puede usar 'X' como etiqueta | Una etiqueta no puede llamarse stack, furni, true, false ni como una familia — ver Etiquetas |
en el cuerpo de un furni solo se admiten 'rot' y 'z' / 'z': se esperaba un entero / 'rot': se esperaba un entero / z va en centésimas: 250 = 2,50 | Entre las llaves de una línea furni solo caben z y rot, y los dos son enteros: la altura va en centésimas (z = 250 es 2,50) |
Del bloque
Los que empiezan por familia.nombre: revisan lo que el servidor recibiría al guardar ese bloque
entero, y solo salen si el bloque es nuevo o cambia.
| Mensaje | Qué pasó |
|---|---|
wired desconocido 'familia.nombre' | Ese nombre no existe. Búscalo en la referencia |
el wired #N no está en la sala (recarga) | El #id no es de esta sala, o el furni ya no está. Recargar |
el wired #N no es un 'familia.nombre' (su i_type es 'X') | Le cambiaste la familia o el nombre al bloque de otro furni |
el wired #N aparece dos veces | Dos bloques con el mismo #id. Copiaste y pegaste sin quitar el id |
el wired #N llega sin ventana (no se puede ver sin el permiso de Super Wired): no se puede editar desde el texto | Escribiste un bloque con el #id de un Dar Premio que, sin permiso de Super Wired, sale como comentario: no se edita por texto — ver Un wired que el editor no conoce |
familia.nombre ya no se puede crear con Wired Code | Un bloque sin #id de effect.give_reward, effect.bot_follow_avatar, condition.conditionstatepos o condition.conditionuserhasfurni: esos wireds no se compran por texto. Los que ya están en la sala se siguen leyendo y editando (Dar Premio, solo con permiso de Super Wired). Comprar su furni con una línea furni da "classname" es un wired que ya no se puede crear con Wired Code |
"classname" es un wired: escríbelo como familia.nombre / "classname" es un wired que Wired Code todavía no conoce: no se puede crear con una línea furni | Una línea furni sin #id con el classname de un wired. Si el editor lo conoce, escríbelo como bloque. Si no lo conoce (su classname empieza por wf_trg_, wf_act_, wf_cnd_, wf_slc_, wf_xtra_ o wf_var_), no se puede comprar por texto — ver Un wired que el editor no conoce |
stack (x, y): las coordenadas de una casilla van de 0 a 2147483647 | Una coordenada de la pila es negativa o pasa de 2147483647. Una casilla fuera de la sala no da este error: la rechaza la vista previa — ver Pilas |
el furni #N es "X", no "Y" | La línea furni de un furni de la sala lleva otro classname. Escribe el suyo (el primero): con #id, la línea habla de ese furni y no lo cambia por otro |
familia.nombre: lleva N datos y el servidor solo lee 100 por guardado: quita furnis de las listas | El guardado del wired pasa de 100 números (pasa, por ejemplo, con dos listas de 50 furnis): el servidor leería mal el resto del guardado |
familia.nombre: el texto ocupa N caracteres y el servidor guarda como mucho 1000 | El texto del wired pasa de 1000 caracteres: el servidor lo cortaría o, en el Conector de texto y en la tabla manual del Sistema de Subida de Nivel, no lo guardaría |
familia.nombre: el mensaje tiene N caracteres y el servidor lo corta a 400 / familia.nombre: el mensaje tiene N líneas y el servidor lo corta a 8 | Lo que dice un bot (effect.bot_talk, effect.bot_talk_to_avatar) admite como mucho 400 caracteres y 8 líneas. El message de effect.show_message da el mismo error, con : acórtalo o deja este wired como estaba detrás, cuando cambias otro campo y el bloque arrastra de la sala uno más largo |
familia.nombre: «trigger_text» está reservado para el mensaje del causante «Clave»: elige otro nombre | El identifier_name de extra.text_output_username, extra.text_output_furni_name o extra.text_output_variable no puede ser trigger_text, con ninguna combinación de mayúsculas |
familia.nombre: con mode = picked_boxes hace falta al menos una caja de variable en furnis / familia.nombre: con mode = picked_boxes todos los furnis tienen que ser cajas de variable (#N no lo son) | trigger.var_changed con mode = picked_boxes vigila las cajas de variable de su furnis: necesita al menos una, y solo cajas de variable |
familia.nombre: 'X' es una variable de usuario y 'campo' mira furni (scope = furni): escribe scope = user o elige una variable de furni | La variable es de otro portador del que mira ese campo: se guardaría, pero al ejecutarse el wired no la encontraría. El mensaje dice cómo arreglarlo, y si el wired ya venía así de la sala, que también puedes dejarlo como estaba. Ojo con condition.has_var y condition.neg_has_var: sin scope, miran furnis |
familia.nombre: la lista 'X' lleva N furnis y el tope es de M por lista: quita furnis o deja este wired como estaba | Cambiaste otro campo de un wired cuya lista ya pasaba del tope de tu sesión (la guardó alguien con Super Wired, por ejemplo). Al cambiarlo se manda entero, y el editor no deja pasar ninguna lista por encima de ese tope, aunque no la hayas tocado |
familia.nombre: nombre de variable no válido ('X'): el servidor ignoraría todo lo que cambias en esta caja; escribe name con de 1 a 40 letras sin tildes, números o _ | Cambiaste una caja de variable que no tiene un nombre válido: falta la línea name (sin ella vale vacío) o el nombre que trae de la sala no es válido |
familia.nombre: 'reference_var_target' = 3 (clicked) no vale con reference_scope = user: una condición de cofre no recibe al usuario clicado ni al alcanzado, así que no encuentra la variable de referencia y no se cumple nunca; usa 0 (triggering), 1 (selector) o 2 (signal) | En condition.chest_has_items o condition.chest_has_item_type, con amount_option = variable y reference_scope = user, escribiste reference_var_target = 3 (el usuario clicado) o, solo en condition.chest_has_item_type, reference_var_target = 4 (el alcanzado). Una condición de cofre no recibe a ninguno de los dos. Si el wired ya venía así de la sala, el mensaje añade que también puedes dejarlo como estaba |
extra.var_leaderboard: motivo | El servidor rechazaría entera la configuración de la Tabla de Clasificación, sin guardar nada. El mensaje dice la primera regla que rompe; por ejemplo, extra.var_leaderboard: sin title la tabla no se puede publicar: escribe un título de 1 a 50 caracteres o quita todos los textos para dejarla sin publicar |
Mover un bloque no es un error
Poner un #id bajo una stack (x, y) distinta de la que trae de la sala mueve el wired ahí al
aplicar — ver
Crear, borrar y mover.
De los campos
| Mensaje | Qué pasó |
|---|---|
campo desconocido 'X' en familia.nombre | Ese wired no tiene ese campo. Los suyos están en su ficha de la referencia |
'campo': se esperaba … | El valor no tiene la forma del tipo (un texto donde va un entero, etc.) |
'campo': N está fuera de rango (min..max) | El entero se sale de lo que admite ese campo. Un campo sin rango propio admite cualquier entero de 32 bits (de -2147483648 a 2147483647) |
'delay': N no es un retraso válido (0..120 pulsos de 0,5 s, o de -50 a -60000 ms en múltiplos de 50) | De 0 a 120, el retardo va en pulsos de medio segundo; en negativo, en milisegundos (el modo Preciso), de 50 en 50 hasta -60000: -75, por ejemplo, no vale |
'campo': valor de enumerado desconocido 'X' | Ese nombre no está en el enumerado del campo |
'campo': N está fuera de rango (no es ninguno de: …) | Un entero suelto que el enumerado no reconoce |
'campo': texto demasiado largo (N > M) | La cadena pasa del máximo de ese campo |
'campo': demasiadas líneas (N > M) | La cadena tiene más líneas de las que admite ese campo (el message de effect.show_message, 8) |
'campo': el furni #N no está en la sala | Referenciaste un furni que no existe aquí |
'campo': demasiados furnis (N, máximo M) | La lista pasa del tope de furnis marcados a mano: el de tu sesión (30, o 50 con Super Wired) o, en los wireds de bots que eligen furnis, el 5 de su ventana. En un bloque nuevo vale el tope más alto que anuncien los wireds de la sala, nunca menos de 30. El editor no deja pasar ninguna lista por encima de su tope: en varios wireds el servidor la recortaría en silencio — ver Límites |
'campo': fuente no disponible para este wired (familia.nombre) | Ese wired no ofrece esa fuente. Las que admite están en su ficha |
'user_source': 'clicked' necesita 'trigger.click_user' en la misma pila / 'user_source': 'reached' necesita 'trigger.bot_reached_avtr' en la misma pila | La fuente del usuario clicado o la del alcanzado solo existe con su causante en la misma pila, tal como queda al aplicar el texto. Sin él, el wired correría una sola vez, con el usuario desencadenante. Pon el causante en esa pila (puede ser nuevo) o elige otra fuente |
'campo' solo cuenta con X_option = Y | En las piezas de cofres y transacciones, el número y la variable de un campo «valor o variable» comparten sitio, y la opción decide cuál cuenta. Escribiste la mitad que no cuenta: por ejemplo, reference_variable con amount_option = literal. Cambia la opción o quita esa línea |
'campo': el texto no puede llevar tabuladores ni saltos de línea | Los textos de la Tabla de Clasificación (title, description, los nombres de columna…) son de una sola línea: sin \n, \t ni \r |
'campo': variable desconocida 'X' | No hay ninguna caja de variable con ese nombre ni con esa id |
nombre de variable no válido 'X': usa de 1 a 40 letras sin tildes, números o _ | El name de una caja de variable solo admite de 1 a 40 letras sin tildes, números o _ (ni espacios). Con otro, el servidor no guardaría nada de la caja |
'campo': nombre de variable ambiguo 'X' (ninguna es de furni): usa la id (…) | Dos variables se llaman igual y el ámbito del wired no decide entre ellas. Si la nota dice "ninguna es de furni/usuario", el problema es el ámbito: corrige scope/source o usa el selector del portador correcto. Si dice "este campo no distingue entre furni y usuario", es uno de los campos sin ámbito (wrapped_variable de variable.echo y override_min_variable, override_max_variable y audience_variable de los Variable FX) y ese nombre lo llevan varias variables, como las internas que existen para furni y para usuario (@position.x, @altitude…): escribe la id que ofrece el mensaje. Haz lo mismo si son dos cajas tuyas con el mismo nombre (mejor: renómbralas) |
Lo que no tocaste, se acepta
La validación de un campo se salta cuando su valor es idéntico al del volcado (una lista de furnis, solo si la dejas entera tal cual). Un wired guardado hace años puede traer un entero fuera de rango, un enumerado sin nombre, ids de furni que ya no están o una variable que ya no existe: el editor no te va a impedir guardar el resto de la sala por eso. Los rangos solo se comprueban en lo que cambias.
Pero un bloque que cambia se manda entero, y lo que arrastra del volcado también cuenta: una lista con más furnis que el tope de tu sesión, un mensaje de más de 400 caracteres u 8 líneas, un nombre de variable no válido o una variable de otro portador dan error aunque no los hayas escrito tú — ver Del bloque. Arréglalo o deja ese wired como estaba.
Del servidor (filas ✗ del panel)
Después de compilar, el servidor todavía puede decir que no: es el mismo validador que usa la ventana normal, y comprueba, por ejemplo, que una selección no lleve furnis temporales o los topes de las Tablas de Clasificación de la sala. Su mensaje sale tal cual en la fila ✗ de ese wired (la ventana normal lo enseña en una alerta, «Actualización fallida»), no se guarda nada de ese wired y la tanda sigue con el siguiente: un rechazo no la corta. Entre otros:
| Mensaje | Qué pasó |
|---|---|
No tienes permiso para modificar los wireds de esta sala. | Ya no puedes modificar wireds: te quitaron el permiso a mitad de la tanda |
La sala está bloqueada por el staff: solo el staff puede modificarla. | El staff bloqueó la sala a mitad de la tanda |
Este wired ya no está en la sala. | Alguien lo recogió después de que cargaras el texto |
Solo se pueden seleccionar baldosas de clic invisible. | Un trigger.click_tile con algún furni que no es una baldosa de clic invisible |
¡Solo se pueden seleccionar Nexos de Sala! | Un effect.teleport_to_room con algún furni que no es un Nexo de Sala |
Esta sala ha alcanzado el límite de variables permanentes para este tipo de variable. | Pasas una caja de variable a permanente y la sala ya tiene su tope de variables permanentes de ese tipo: la caja se queda como estaba, con su nombre de antes |
El nombre de la variable debe tener entre 1 y 40 caracteres. / El nombre de la variable solo puede contener letras, números o guiones bajos. | El nombre de una caja de variable, el de una variable.echo o el alias de una variable.reference no vale. Casi siempre lo frena antes el editor, con su propio error (ver De los campos) |
El nombre de la variable ya está en uso en esta sala, elige otro. | Otra caja de la sala ya usa ese nombre. También lo suele frenar antes el editor (ver Nombres de variable únicos por sala), salvo que alguien le dé ese nombre a otra caja mientras escribes |
Solo el dueño de esta variable Wired tiene permiso para realizar este cambio. | Cambias una variable.reference que no es tuya |
Por favor, selecciona una variable de referencia válida. | La variable.reference no apunta a una variable compartida que exista, o la variable.echo no tiene una variable de la sala que replicar |
Solo puede hacer referencia a variables creadas por ti mismo. | La variable.reference apunta a una variable de una sala que no es tuya |
Los que no vienen del validador:
| Mensaje | Qué pasó |
|---|---|
sin respuesta | Ese wired no contestó en 6 segundos. No se sabe si se guardó o no. Es raro: el servidor contesta cada guardado, también cuando lo rechaza. El único caso que lo provoca a propósito es un effect.give_reward que da specialcoins guardado por alguien con Super Wired pero sin rango de manager: el motivo solo te llega susurrado |
cancelado: el servidor no responde | Dos silencios seguidos cortan la tanda. Los que quedaban no se enviaron |
cancelado: cambio de sala | Saliste de la sala en mitad de la tanda |
kind desconocido N | Ese wired no encaja en ninguna de las seis familias de guardado (no debería pasar) |
Si alguna fila sale ✗, lo que escribiste no se pierde: ver Si sales de la sala o algo falla.
Los mensajes propios de las compras, las recogidas y los movimientos están en Crear, borrar y mover.
Sintaxis
La gramática completa del lenguaje de Wired Code: pilas, bloques, campos, tipos de valor, listas, comentarios y escapes.
Crear, borrar y mover
Escribir un bloque sin id compra y coloca el wired; quitar un bloque lo recoge al inventario; cambiarle la casilla lo mueve. Con vista previa obligatoria antes de tocar nada.