mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 19:45:22 +09:00
126 lines
4.3 KiB
Lua
126 lines
4.3 KiB
Lua
--[[
|
|
Explosive Gaming
|
|
|
|
This file can be used with permission but this and the credit below must remain in the file.
|
|
Contact a member of management on our discord to seek permission to use our code.
|
|
Any changes that you may make to the code are yours but that does not make the script yours.
|
|
Discord: https://discord.gg/r6dC2uK
|
|
]]
|
|
--Please Only Edit Below This Line-----------------------------------------------------------
|
|
|
|
-- @module ExpLib
|
|
-- @usage require('/ExpLib')
|
|
|
|
local ExpLib = {}
|
|
--- Loads a table into the global lua table
|
|
-- @usage a = {k1='foo',k2='bar'}
|
|
-- _load_to_G(a)
|
|
-- @tparam table tbl table to add to the global lua table
|
|
function ExpLib._unpack_to_G(tbl)
|
|
if not type(tbl) == 'table' or game then return end
|
|
for name,value in pairs(tbl) do
|
|
if not _G[name] then _G[name] = value end
|
|
end
|
|
end
|
|
|
|
--- Returns a bolean based on the type of v matching the test type
|
|
-- @usage a = 'foo'
|
|
-- is_type(a,'string') -- return true
|
|
-- @param v the value to be tested
|
|
-- @tparam[opt=nil] string test_type the type to test for if nil then it tests for nil
|
|
-- @treturn bolean is v a matching type
|
|
function ExpLib.is_type(v,test_type)
|
|
return test_type and v and type(v) == test_type or not test_type and not v or false
|
|
end
|
|
|
|
--- Returns a value to the player or if no player then log the return
|
|
-- @usage a = 'to return'
|
|
-- player_return(a)
|
|
-- @param rtn the value to return
|
|
-- @param player the player to print to
|
|
function ExpLib.player_return(rtn,colour,player)
|
|
local colour = colour or defines.color.white
|
|
local player = player or game.player
|
|
if player then
|
|
local player = Game.get_player(player)
|
|
if not player then return end
|
|
player.play_sound{path='utility/scenario_message'}
|
|
if is_type(rtn,'table') then
|
|
-- test if its a localised string
|
|
if is_type(rtn.__self,'userdata') then player.print('Cant Display Userdata',colour)
|
|
elseif is_type(rtn[1],'string') and string.find(rtn[1],'.+[.].+') and not string.find(rtn[1],'%s') then pcall(player.print,rtn,colour)
|
|
else player.print(table.to_string(rtn),colour)
|
|
end
|
|
elseif is_type(rtn,'function') then player.print('Cant Display Functions',colour)
|
|
else player.print(tostring(rtn),colour)
|
|
end
|
|
else
|
|
local _return = 'Invalid'
|
|
if is_type(rtn,'table') then _return = table.to_string(rtn)
|
|
elseif is_type(rtn,'function') then _return = 'Cant Display Functions'
|
|
elseif is_type(rtn,'userdata') then _return = 'Cant Display Userdata'
|
|
else _return = tostring(rtn)
|
|
end log(_return) rcon.print(_return)
|
|
end
|
|
end
|
|
|
|
--- Convert ticks to hours
|
|
-- @usage a = 216001
|
|
-- tick_to_hour(a) -- return 1
|
|
-- @tparam number tick to convert to hours
|
|
-- @treturn number the number of whole hours from this tick
|
|
function ExpLib.tick_to_hour(tick)
|
|
if not is_type(tick,'number') then return 0 end
|
|
return math.floor(tick/(216000*game.speed))
|
|
end
|
|
|
|
--- Convert ticks to minutes
|
|
-- @usage a = 3601
|
|
-- tick_to_hour(a) -- return 1
|
|
-- @tparam number tick to convert to minutes
|
|
-- @treturn number the number of whole minutes from this tick
|
|
function ExpLib.tick_to_min (tick)
|
|
if not is_type(tick,'number') then return 0 end
|
|
return math.floor(tick/(3600*game.speed))
|
|
end
|
|
|
|
--- Returns a tick in a displayable format
|
|
-- @usage a = 3600
|
|
-- tick_to_display_format(a) -- return '1.00 M'
|
|
-- @usage a = 234000
|
|
-- tick_to_display_format(a) -- return '1 H 5 M'
|
|
-- @tparam number tick to convert
|
|
-- @treturn string the formated string
|
|
function ExpLib.tick_to_display_format(tick)
|
|
if not is_type(tick,'number') then return '0H 0M' end
|
|
if tick_to_min(tick) < 10 then
|
|
return string.format('%.2f M',tick/(3600*game.speed))
|
|
else
|
|
return string.format('%d H %d M',
|
|
tick_to_hour(tick),
|
|
tick_to_min(tick)-60*tick_to_hour(tick)
|
|
)
|
|
end
|
|
end
|
|
|
|
function ExpLib.Gui_tree(root)
|
|
local tree = {}
|
|
for _,child in pairs(root.children) do
|
|
if #child.children > 0 then
|
|
if child.name then
|
|
tree[child.name] = ExpLib.Gui_tree(child)
|
|
else
|
|
table.insert(tree,ExpLib.Gui_tree(child))
|
|
end
|
|
else
|
|
if child.name then
|
|
tree[child.name] = child.type
|
|
else
|
|
table.insert(tree,child.type)
|
|
end
|
|
end
|
|
end
|
|
return tree
|
|
end
|
|
|
|
return ExpLib |