All addons run in one shared sandbox: a global you set in one addon is readable in every other addon, functions can be called across mods, and hook events fired by one mod reach listeners in another. Four things are per-addon: data (your private storage folder), MOD_NAME (your folder name), MOD_VERSION and MOD_SOURCE.
-- addons/hello/lua/autorun/hello.lua
log("hello loaded as " .. MOD_NAME)
-- A free-form HUD element, always on screen (mode = "pinned")
overlay.add("hello.clock", {
mode = "pinned",
paint = function(d)
d:rect(d:w() - 150, 16, 130, 34, 0, 0, 0, 150)
d:text(d:w() - 138, 24, os.date("%H:%M:%S"), 20, 255, 255, 255)
end,
})
-- A button in the overlay menu (Shift+Tab)
overlay.add("hello.hi", {
mode = "menu",
button = { label = "Say hi", onClick = function() log("hi!") end },
})