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
--@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 = {
serverName = game.getHostname(),
map = game.getMap(),
maxPlayers = game.getMaxPlayers(),
cTime = os.date(),
sTime = os.date()
cTime = "",
sTime = "",
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
hook.add("think", "serverTimeTick", function()
local prevName = ""
local prevSTime = ""
if prevSTime != os.date() then
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
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
if CLIENT then
hook.add("think", "clientTimeTick", function()
hook.add("tick", "clientTimeTick", function()
serverMetadata.cTime = os.date()
end)
-- METASTRUCT SPECIFIC HOOK
net.receive("serverTime", function()
serverMetadata.sTime = net.readString()
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()
render.setColor(Color(255, 0, 0, 255))
render.drawText(10, 10, "Server Name: " .. serverMetadata.serverName)
render.drawText(10, 30, "Map: " .. serverMetadata.map)
render.drawText(10, 50, "Client Time: " .. serverMetadata.cTime)
render.drawText(10, 70, "Server Time: " .. serverMetadata.sTime)
end)
hook.add("ComponentUnlinked", "unlink_evt", function()
hook.remove("think", "curTimeMutator")
hook.remove("render", "metadataRenderMain")
render.drawText(10, 110, "Name\t\tOwner\t\tCPU Quota")
for i, v in ipairs(serverMetadata.runningChips) do
render.drawText(10, 130 + (i * 20), "" .. v["chip_name"] .. "\t\t" .. v["chip_owner"] .. "\t\t" .. v["chip_quota"] .. "us")
end
end)
end