Copy the code below and save it.
Make sure you have "*NetLoadModule timer-1.0" in your theme.
hello_litestep.lua
--[[ load this file with
*LuaFile "path/to/file/hello_litestep.lua"
you need to have load the timer module too:
*NetLoadModule timer-1.0
then call "!hello" a few times ;-) (with lsxcommand, xlabel onclick events, etc. )
]]--
require "lsmodule" -- load the module
function bang_hello()
-- our object ... it doesnt matter that the label does not exists, it doesn't even have a name we know!
local hellolabel = lsmodule.xlabel[lsmodule.getname()]
-- but it has to look somehow:
hellolabel.paintingmode = ".singlecolor"
hellolabel.colors = "#ff3322" -- i hope its not ugly
hellolabel.fontheight = 22
hellolabel.alwaysontop = true
hellolabel.starthidden = "True" --so it doesnt show immidiatly after we created it
hellolabel.text = '"Hello world of Litestep!"' -- setting evars with spaces takes extra quotes!
hellolabel.width = 400
hellolabel.height = 80
-- lets have it do stuff ... like ... count up when clicked!
local x = 0
local count = function( y ) -- a short lua function that counts how often it was called
x=x+1
if x==1 then lslua.message_box("Hello, nice to meet you!")
elseif x > y then lslua.message_box("Give up already!!") -- functions give up too
else lslua.message_box(("You can stop calling me now, you did that %i times already!"):format(x)) end
end
-- a callback is a litestep string that will run lua code! In this case it will run "count( 5 )" every time
hellolabel.OnLeftClick = lsmodule.callback( count, 5)
-- the label is set up, lets create it
hellolabel:create() -- now it exists, but still hidden ( starthidden )
-- position it
local xmouse, ymouse = lslua.mouse() --get the current mouse pos
hellolabel:move( xmouse-(hellolabel.width/2), ymouse-(hellolabel.height/2) ) -- center it under the mouse
hellolabel:show() -- show it
-- lets play a bit with timers, too
local timer
local ttl = 15
-- calls a function every 1s
timer = lsmodule.every("1s", function()
ttl = ttl-1
hellolabel:settext(('Hello world of Litestep!
This label will autodestruct in %i secounds!'):format(ttl))
end
)
-- a 15 sec timer that will destroy the label and stop the update timer
lsmodule.after( "15s", function() timer:stop() hellolabel:destroy() end):start() -- start it first
timer:start() -- start the update timer
end