diff --git a/res/scripts/stdcmd.lua b/res/scripts/stdcmd.lua index 1933ae03..95ba2639 100644 --- a/res/scripts/stdcmd.lua +++ b/res/scripts/stdcmd.lua @@ -1,13 +1,13 @@ local SEPARATOR = "________________" -SEPARATOR = SEPARATOR..SEPARATOR..SEPARATOR +SEPARATOR = SEPARATOR .. SEPARATOR .. SEPARATOR function build_scheme(command) - local str = command.name.." " + local str = command.name .. " " for i,arg in ipairs(command.args) do if arg.optional then - str = str.."["..arg.name.."] " + str = str .. "[" .. arg.name .. "] " else - str = str.."<"..arg.name.."> " + str = str .. "<" .. arg.name .. "> " end end return str @@ -16,7 +16,7 @@ end console.add_command( "clear", "Clears the console", - function () + function() local document = Document.new("core:console") document.log.text = "" end @@ -25,8 +25,7 @@ console.add_command( console.add_command( "help name:str=''", "Show help infomation for the specified command", - function (args, kwargs) - + function(args, kwargs) local name = args[1] if #name == 0 then @@ -35,10 +34,10 @@ console.add_command( local str = "Available commands:" for i,k in ipairs(commands) do - str = str.."\n "..build_scheme(console.get_command_info(k)) + str = str .. "\n " .. build_scheme(console.get_command_info(k)) end - return str.."\nuse 'help '" + return str .. "\nuse 'help '" end @@ -49,69 +48,64 @@ console.add_command( end local where = ":" - local str = SEPARATOR.."\n"..command.description.."\n"..name.." " + local str = SEPARATOR .. "\n" .. command.description .. "\n" .. name .. " " for _, arg in ipairs(command.args) do - where = where.."\n "..arg.name.." - "..arg.type + where = where .. "\n " .. arg.name .. " - " .. arg.type if arg.optional then - str = str.."["..arg.name.."] " - where = where.." (optional)" + str = str .. "[" .. arg.name .. "] " + where = where .. " (optional)" else - str = str.."<"..arg.name.."> " + str = str .. "<" .. arg.name .. "> " end end if #command.args > 0 then - str = str.."\nwhere"..where + str = str .. "\nwhere" .. where end - return str.."\n"..SEPARATOR - + return str .. "\n" .. SEPARATOR end ) +local function FormattedTime(seconds, format ) -- from gmod + if not seconds then seconds = 0 end + + local hours = math.floor(seconds / 3600) + local minutes = math.floor((seconds / 60) % 60) + local millisecs = (seconds - math.floor(seconds)) * 100 + seconds = math.floor(seconds % 60) + + if format then + return string.format(format, minutes, seconds, millisecs) + else + return {h = hours, m = minutes, s = seconds, ms = millisecs} + end +end + console.add_command( "time.uptime", "Get time elapsed since the engine started", function() - local uptime = time.uptime() - local years = math.floor(uptime / 31536000) - local days = math.floor((uptime % 31536000) / 86400) % 365 - local hours = math.floor((uptime % 86400) / 3600) % 24 - local minutes = math.floor((uptime % 3600) / 60) % 60 - local seconds = math.floor(uptime % 60) - local formatted_uptime = "" - if years > 0 then - formatted_uptime = formatted_uptime .. years .. "y " - end - if days > 0 or years > 0 then - formatted_uptime = formatted_uptime .. days .. "d " - end - if hours > 0 or days > 0 or years > 0 then - formatted_uptime = formatted_uptime .. hours .. "h " - end - if minutes > 0 or hours > 0 or days > 0 or years > 0 then - formatted_uptime = formatted_uptime .. minutes .. "m " - end - if seconds > 0 or minutes > 0 or hours > 0 or days > 0 or years > 0 then - formatted_uptime = formatted_uptime .. seconds .. "s" - end + local t = FormattedTime(uptime) - return uptime .. " (" .. formatted_uptime .. ")" + formatted_uptime = t.h .. "h " .. t.m .. "m " .. t.s .. "s" + + return formatted_uptime .. " (" .. uptime .. "s)" end ) console.add_command( "tp entity:sel=$entity.id x:num~pos.x y:num~pos.y z:num~pos.z", "Teleport entity", - function (args, kwargs) + function(args, kwargs) local eid, x, y, z = unpack(args) local entity = entities.get(eid) - if entity ~= nil then + if entity then entity.transform:set_pos({x, y, z}) end end @@ -119,53 +113,54 @@ console.add_command( console.add_command( "echo value:str", "Print value to the console", - function (args, kwargs) + function(args, kwargs) return args[1] end ) console.add_command( "time.set value:num", "Set day time [0..1] where 0 is midnight, 0.5 is noon", - function (args, kwargs) - return world.set_day_time(args[1]) + function(args, kwargs) + world.set_day_time(args[1]) + return "Time set to " .. args[1] end ) console.add_command( "blocks.fill id:str x:num~pos.x y:num~pos.y z:num~pos.z w:int h:int d:int", "Fill specified zone with blocks", - function (args, kwargs) + function(args, kwargs) local name, x, y, z, w, h, d = unpack(args) local id = block.index(name) - for ly=0,h-1 do - for lz=0,d-1 do - for lx=0,w-1 do - block.set(x+lx, y+ly, z+lz, id) + for ly = 0, h - 1 do + for lz = 0, d - 1 do + for lx = 0, w - 1 do + block.set(x + lx, y + ly, z + lz, id) end end end - return tostring(w*h*d).." blocks set" + return tostring(w * h * d) .. " blocks set" end ) console.add_command( "player.respawn player:sel=$obj.id", "Respawn player entity", - function (args, kwargs) + function(args, kwargs) local eid = entities.spawn("base:player", {player.get_pos(args[1])}):get_uid() player.set_entity(args[1], eid) - return "spawned new player entity #"..tostring(eid) + return "spawned new player entity #" .. tostring(eid) end ) console.add_command( "entity.despawn entity:sel=$entity.selected", "Despawn entity", - function (args, kwargs) + function(args, kwargs) local eid = args[1] local entity = entities.get(eid) if entity ~= nil then entity:despawn() - return "despawned entity #"..tostring(eid) + return "despawned entity #" .. tostring(eid) end end )