Skip to content

Instantly share code, notes, and snippets.

View dacap's full-sized avatar
🎨
Programming

David Capello dacap

🎨
Programming
View GitHub Profile
@dacap
dacap / Trigger Tag.lua
Created April 11, 2022 00:00
Assign a key to play a tag named "TagName"
local spr = app.activeSprite
if not spr then return end
for _,t in ipairs(spr.tags) do
if t.name == "TagName" then
local old_play_once = app.preferences.editor.play_once
local old_play_all = app.preferences.editor.play_all
app.activeFrame = t.fromFrame
app.preferences.editor.play_once = true
local spr = app.activeSprite
if not spr then return end
local r = app.range
app.transaction(
function()
local oldActiveLayer = app.activeLayer
local oldActiveFrame = app.activeFrame
local deltaFrames = 0
local spr = app.activeSprite
if not spr then return end
app.transaction(
function()
local oldActiveLayer = app.activeLayer
local oldActiveFrame = app.activeFrame
local deltaFrames = 0
for i = #spr.frames,1,-1 do
local frame = spr.frames[i]
@dacap
dacap / Jump Tag Backward.lua
Created March 30, 2022 15:10
Aseprite scripts to jump between tags keeping the relative local frame
local spr = app.activeSprite
local tag = app.activeTag
local fr = app.activeFrame
if not spr or not tag then return end
local relativeFr = fr.frameNumber - tag.fromFrame.frameNumber
local function clamp(x, min, max)
if x < min then
return min
@dacap
dacap / script_filename.lua
Created January 13, 2022 11:18
Get the current Lua script filename
function script_filename()
local source = debug.getinfo(2, "S").source
if source:sub(1, 1) == "@" then
return source:sub(2)
else
return ""
end
end
@dacap
dacap / Increment Revision And Save.lua
Created October 16, 2021 14:34
Increments the revision of the file and saves it
-- E.g. if the filename is called "spriteR1.png", it will rename it to "spriteR2.png" and save it.
local spr = app.activeSprite
if not spr then return app.alert "No active sprite" end
local pt = app.fs.filePathAndTitle(spr.filename)
local ext = app.fs.fileExtension(spr.filename)
-- New filename replacing the revision number at the end with its
-- incremented version
@dacap
dacap / Switch Refer to.lua
Created July 16, 2021 12:22
Script to switch the "Refer To" option for floodfill-like tools
local toolPref = app.preferences.tool(app.activeTool)
if toolPref.floodfill.refer_to == 1 then
toolPref.floodfill.refer_to = 0
else
toolPref.floodfill.refer_to = 1
end
@dacap
dacap / Export Tileset.lua
Created June 9, 2021 22:04
Export tileset
if TilesetMode == nil then return app.alert "Use Aseprite v1.3" end
local lay = app.activeLayer
if not lay.isTilemap then return app.alert "No active tilemap layer" end
local tileset = lay.tileset
local dlg = Dialog("Export Tileset")
dlg:file{ id="file", label="Export to File:", save=true, focus=true,
filename=app.fs.joinPath(app.fs.filePath(lay.sprite.filename),
@dacap
dacap / Merge Down with Name Of Top Layer.lua
Created May 30, 2021 23:34
Alternative Merge Down version where the resulting layer has the name of the top layer
local lay = app.activeLayer
if not lay then return app.alert "There is no active layer" end
app.transaction(
function()
local name = app.activeLayer.name
app.command.MergeDownLayer()
app.activeLayer.name = name
end)
@dacap
dacap / ase.diff
Last active June 2, 2021 14:04
Aseprite file format differences from v1.2 -> v1.3
diff --git a/docs/ase-file-specs.md b/docs/ase-file-specs.md
index 7199cab89..98d8c95f1 100644
--- a/docs/ase-file-specs.md
+++ b/docs/ase-file-specs.md
@@ -25,7 +25,10 @@ ASE files use Intel (little-endian) byte order.
* `PIXEL`: One pixel, depending on the image pixel format:
- **RGBA**: `BYTE[4]`, each pixel have 4 bytes in this order Red, Green, Blue, Alpha.
- **Grayscale**: `BYTE[2]`, each pixel have 2 bytes in the order Value, Alpha.
- - **Indexed**: `BYTE`, Each pixel uses 1 byte (the index).
+ - **Indexed**: `BYTE`, each pixel uses 1 byte (the index).