finish up initial implementation

This commit is contained in:
Ayane Satomi 2022-08-01 16:17:39 +08:00
parent 7eb3c23b98
commit 77384c2d62
No known key found for this signature in database
GPG key ID: 431E3C36BEBE204B
2 changed files with 67 additions and 18 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
starfallex/kiosk.lua

View file

@ -1,50 +1,98 @@
--@name Test-Serverinfo --@name StarfallTop
--@author Minori --@author Minori
--@shared --@shared
--[[
This grabs the basic server information we can print later on
This table doesn't need to be updated much so we can initialize this immediately.
]]
local serverMetadata = { local serverMetadata = {
serverName = game.getHostname(), serverName = game.getHostname(),
map = game.getMap(), map = game.getMap(),
maxPlayers = game.getMaxPlayers(), cTime = "",
cTime = os.date(), sTime = "",
sTime = os.date() runningChips = {}
} }
function getRunningChips()
for _, v in ipairs(find.byClass("starfall_processor")) do
if not isValid(v) then continue end
if v:getChipName() == "" and v:getChipAuthor() == "" then
table.insert(serverMetadata.runningChips, {
["this"] = v,
["chip_name"] = "Unknown",
["chip_owner"] = "Unknown",
["chip_quota"] = math.floor(v:getQuotaAverage() * 100000)
})
end
table.insert(serverMetadata.runningChips, {
["this"] = v,
["chip_name"] = v:getChipName(),
["chip_owner"] = v:getChipAuthor(),
["chip_quota"] = math.floor(v:getQuotaAverage() * 100000)
})
end
end
if SERVER then if SERVER then
hook.add("think", "serverTimeTick", function() local prevName = ""
local prevSTime = "" local prevSTime = ""
if prevSTime != os.date() then hook.add("tick", "serverTimeTick", function()
if prevSTime ~= os.date() then
prevSTime = os.date() prevSTime = os.date()
net.start("serverTime") net.start("serverTime")
net.writeString(os.date()) net.writeString(os.date())
net.send(owner(), false) net.send(owner(), false)
end end
end) end)
-- 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)
end end
if CLIENT then if CLIENT then
hook.add("think", "clientTimeTick", function() hook.add("tick", "clientTimeTick", function()
serverMetadata.cTime = os.date() serverMetadata.cTime = os.date()
end) end)
-- METASTRUCT SPECIFIC HOOK
net.receive("serverTime", function() net.receive("serverTime", function()
serverMetadata.sTime = net.readString() serverMetadata.sTime = net.readString()
end) end)
net.receive("serverName", function()
serverMetadata.serverName = net.readString()
end)
getRunningChips()
-- 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)
hook.add("render", "metadataRenderMain", function() hook.add("render", "metadataRenderMain", function()
render.setColor(Color(255, 0, 0, 255)) render.setColor(Color(255, 0, 0, 255))
render.drawText(10, 10, "Server Name: " .. serverMetadata.serverName) render.drawText(10, 10, "Server Name: " .. serverMetadata.serverName)
render.drawText(10, 30, "Map: " .. serverMetadata.map) render.drawText(10, 30, "Map: " .. serverMetadata.map)
render.drawText(10, 50, "Client Time: " .. serverMetadata.cTime) render.drawText(10, 50, "Client Time: " .. serverMetadata.cTime)
render.drawText(10, 70, "Server Time: " .. serverMetadata.sTime) render.drawText(10, 70, "Server Time: " .. serverMetadata.sTime)
end) render.drawText(10, 110, "Name\t\tOwner\t\tCPU Quota")
for i, v in ipairs(serverMetadata.runningChips) do
hook.add("ComponentUnlinked", "unlink_evt", function() render.drawText(10, 130 + (i * 20), "" .. v["chip_name"] .. "\t\t" .. v["chip_owner"] .. "\t\t" .. v["chip_quota"] .. "us")
hook.remove("think", "curTimeMutator") end
hook.remove("render", "metadataRenderMain")
end) end)
end end