metastruct-experiments/starfallex/serverinfo.lua

91 lines
2.7 KiB
Lua
Raw Normal View History

2022-08-01 08:17:39 +00:00
--@name StarfallTop
--@author Minori
2022-07-31 05:10:35 +00:00
--@shared
local serverMetadata = {
serverName = game.getHostname(),
map = game.getMap(),
2022-08-01 08:17:39 +00:00
cTime = "",
sTime = "",
runningChips = {}
}
2022-08-01 08:17:39 +00:00
function getRunningChips()
for _, v in ipairs(find.byClass("starfall_processor")) do
if not isValid(v) then continue end
table.insert(serverMetadata.runningChips, {
["this"] = v,
["chip_name"] = #v:getChipName() ~= 0 and v:getChipName() or "<none>",
["chip_owner"] = v:getOwner():getName(),
2022-08-01 08:17:39 +00:00
["chip_quota"] = math.floor(v:getQuotaAverage() * 100000)
})
end
end
2022-07-31 05:10:35 +00:00
if SERVER then
2022-08-01 08:17:39 +00:00
local prevName = ""
local prevSTime = ""
2022-08-01 08:17:39 +00:00
hook.add("tick", "serverTimeTick", function()
if prevSTime ~= os.date() then
prevSTime = os.date()
net.start("serverTime")
net.writeString(os.date())
net.send(owner(), false)
end
2022-07-31 05:10:35 +00:00
end)
2022-08-01 08:17:39 +00:00
-- METASTRUCT SPECIFIC HOOK
hook.add("tick", "e621", function()
if prevName ~= game.getHostname() then
prevName = game.getHostname()
net.start("serverName")
net.writeString(game.getHostname())
net.send(owner(), false)
end
end)
2022-07-31 05:10:35 +00:00
end
if CLIENT then
getRunningChips()
2022-08-01 08:17:39 +00:00
hook.add("tick", "clientTimeTick", function()
2022-08-01 05:07:45 +00:00
serverMetadata.cTime = os.date()
2022-07-31 05:10:35 +00:00
end)
2022-08-01 08:17:39 +00:00
-- METASTRUCT SPECIFIC HOOK
net.receive("serverTime", function()
serverMetadata.sTime = net.readString()
end)
2022-08-01 08:17:39 +00:00
net.receive("serverName", function()
serverMetadata.serverName = net.readString()
end)
-- update the table
timer.create("update", 1, 0, function()
if serverMetadata.runningChips == {} then
-- don't forget to populate dr freeman
getRunningChips()
end
for i, v in ipairs(serverMetadata.runningChips) do
local ent = v["this"]
v.chip_quota = math.floor(ent:getQuotaAverage() * 100000)
end
end)
2022-07-31 05:10:35 +00:00
hook.add("render", "metadataRenderMain", function()
render.setColor(Color(255, 0, 0, 255))
render.drawText(10, 10, "Server Name: " .. serverMetadata.serverName)
render.drawText(10, 30, "Map: " .. serverMetadata.map)
2022-08-01 05:07:45 +00:00
render.drawText(10, 50, "Client Time: " .. serverMetadata.cTime)
render.drawText(10, 70, "Server Time: " .. serverMetadata.sTime)
render.setColor(Color(255, 255, 255 , 255))
render.drawText(10, 110, "Running Chips: ")
render.setColor(Color(82, 113, 250))
2022-08-01 08:17:39 +00:00
for i, v in ipairs(serverMetadata.runningChips) do
render.drawText(10, 130 + (i * 20), "" .. v["chip_name"] .. " by " .. v["chip_owner"] .. " (" .. v["chip_quota"] .. "us)")
2022-08-01 08:17:39 +00:00
end
2022-07-31 05:10:35 +00:00
end)
end