2022-08-01 08:17:39 +00:00
|
|
|
--@name StarfallTop
|
2022-07-28 17:28:11 +00:00
|
|
|
--@author Minori
|
2022-07-31 05:10:35 +00:00
|
|
|
--@shared
|
2022-07-28 17:28:11 +00:00
|
|
|
local serverMetadata = {
|
|
|
|
serverName = game.getHostname(),
|
|
|
|
map = game.getMap(),
|
2022-08-01 08:17:39 +00:00
|
|
|
cTime = "",
|
|
|
|
sTime = "",
|
|
|
|
runningChips = {}
|
2022-07-28 17:28:11 +00:00
|
|
|
}
|
|
|
|
|
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
|
|
|
|
|
2022-08-01 10:58:56 +00:00
|
|
|
--exclude self
|
|
|
|
if v == chip() then continue end
|
|
|
|
|
2022-08-01 08:17:39 +00:00
|
|
|
table.insert(serverMetadata.runningChips, {
|
|
|
|
["this"] = v,
|
2022-08-01 08:51:00 +00:00
|
|
|
["chip_name"] = #v:getChipName() ~= 0 and v:getChipName() or "<none>",
|
2022-08-01 10:58:56 +00:00
|
|
|
["chip_owner"] = v:getOwner():getName() or "<none>",
|
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 05:53:32 +00:00
|
|
|
|
2022-08-01 08:17:39 +00:00
|
|
|
hook.add("tick", "serverTimeTick", function()
|
|
|
|
if prevSTime ~= os.date() then
|
2022-08-01 05:53:32 +00:00
|
|
|
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
|
2022-08-01 08:51:00 +00:00
|
|
|
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
|
2022-08-01 05:53:32 +00:00
|
|
|
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()
|
|
|
|
for i, v in ipairs(serverMetadata.runningChips) do
|
|
|
|
local ent = v["this"]
|
|
|
|
v.chip_quota = math.floor(ent:getQuotaAverage() * 100000)
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
|
2022-08-01 10:58:56 +00:00
|
|
|
-- update the running chip entries when necessary
|
|
|
|
timer.create("update_data", 30, 0, function()
|
|
|
|
getRunningChips()
|
|
|
|
end)
|
|
|
|
|
2022-07-31 05:10:35 +00:00
|
|
|
hook.add("render", "metadataRenderMain", function()
|
2022-08-01 10:58:56 +00:00
|
|
|
render.setColor(Color(255, 34, 34))
|
2022-07-31 05:10:35 +00:00
|
|
|
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)
|
2022-08-01 08:51:00 +00:00
|
|
|
render.setColor(Color(255, 255, 255 , 255))
|
|
|
|
render.drawText(10, 110, "Running Chips: ")
|
|
|
|
|
|
|
|
render.setColor(Color(82, 113, 250))
|
2022-08-01 10:58:56 +00:00
|
|
|
if serverMetadata.runningChips == {} then
|
|
|
|
render.drawText(10, 130, "No Chips Running!")
|
|
|
|
end
|
|
|
|
|
2022-08-01 08:17:39 +00:00
|
|
|
for i, v in ipairs(serverMetadata.runningChips) do
|
2022-08-01 08:51:00 +00:00
|
|
|
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
|