Tu primer script

Escribe un script corto en Lua que dibuja un sol, ejecútalo, deshazlo y guárdalo.

Los scripts son pequeños programas en Lua que dibujan y editan tu sprite por ti: todo lo que puedes hacer con las herramientas, un script lo puede hacer con código. Aquí vas a escribir uno que dibuja un sol en una capa nueva. Lleva unos cinco minutos, y no necesitas haber programado antes.

Crear un script

Abre un sprite (uno nuevo de 32×32 sirve) y elige Scripts > Nuevo script.... Ponle al script el nombre "Sun" y pulsa Crear.

Se abre el panel Scripts con unas líneas de comentario (líneas que empiezan con --, que Lua ignora). Tiene un editor de código, una barra de herramientas arriba y un área de salida abajo. En la disposición predeterminada se acopla a la derecha del lienzo, así que puedes ver ambos a la vez (puedes moverlo como cualquier panel: consulta El espacio de trabajo).

El panel Scripts mostrando el código del script Sun, con los botones Ejecutar, Guardar borrador y Publicar arriba y la línea que imprimió en el área de salida debajoEl panel Scripts mostrando el código del script Sun, con los botones Ejecutar, Guardar borrador y Publicar arriba y la línea que imprimió en el área de salida debajo
El panel Scripts con el script del sol, después de ejecutarlo

Escríbelo

Reemplaza los comentarios con esto:

-- Draws a sun on a new layer.
local layer = app.addLayer("Sun")
local frame = app.getActiveFrameId()
local w, h = app.getCanvasWidth(), app.getCanvasHeight()
local cx, cy = w // 2, h // 2
local r = math.min(w, h) // 4

-- the rays: eight short lines around the middle
for i = 0, 7 do
  local a = i * math.pi / 4
  app.drawLine(layer, frame,
    cx + math.floor(math.cos(a) * (r + 2) + 0.5), cy + math.floor(math.sin(a) * (r + 2) + 0.5),
    cx + math.floor(math.cos(a) * (r + 5) + 0.5), cy + math.floor(math.sin(a) * (r + 5) + 0.5),
    { color = "#f4a52e" })
end

-- the disc
app.drawEllipse(layer, frame, cx - r, cy - r, cx + r, cy + r, { color = "#ffd34e", fill = "filled" })
print("Drew a sun " .. (r * 2 + 1) .. " pixels across.")

Qué hace:

  • app.addLayer añade una capa llamada "Sun" y devuelve su id; app.getActiveFrameId devuelve el fotograma en el que estás. Todos los comandos de dibujo reciben una capa y un fotograma, igual que una herramienta pinta en la capa activa en el fotograma actual.
  • app.getCanvasWidth y app.getCanvasHeight leen el tamaño del sprite, así que el sol cabe en cualquier lienzo. Las coordenadas son píxeles, con (0, 0) en la esquina superior izquierda.
  • app.drawLine y app.drawEllipse funcionan exactamente como las herramientas Línea y Elipse. Todo lo que no pases (aquí, el pincel) sale de los ajustes de la herramienta actual.
  • print escribe una línea en el área de salida.

Mientras escribes, el editor sugiere funciones de app.; señala una para leer qué hace.

Ejecútalo

Pulsa Ejecutar (el botón de reproducir) en la barra de herramientas del panel. El área de salida dice "Drew a sun 17 pixels across.", y la línea de tiempo tiene una capa nueva, "Sun", con el sol en el lienzo junto al panel.

Si algo falla, el área de salida muestra el error y se resalta la línea donde ocurrió. Corrígelo y vuelve a ejecutar.

Deshazlo

Todo lo que cambia una ejecución es un solo paso de deshacer: pulsa Ctrl+Z y la capa y el sol desaparecen juntos. Cambia un color o el + 5 que define la longitud de los rayos, y ejecútalo de nuevo.

Guárdalo

Pulsa Guardar borrador (el botón del disquete). El script se guarda en este navegador, igual que tus sprites, y un * después de su nombre en el panel indica cambios sin guardar. Para abrirlo de nuevo más tarde, elige Scripts > Abrir mi script...; los últimos cinco scripts que abriste también aparecen justo debajo en el menú Scripts.

Publicar comparte un script en la biblioteca de scripts; necesita una cuenta con Sync (consulta la guía de scripting).

Siguientes pasos