Private
Public Access
1
0
Files
lua-prometheus-exporter/game-stats.lua

83 lines
3.0 KiB
Lua

---Sends all mod infos for the current game, should only be called on the first load of the map since mods don't change during runtime
function GetMods()
local mods = script.active_mods
local modstring = "---mod-info---\n"
for k,v in pairs(mods) do
modstring = modstring .. ("%s:%s\n"):format(k,v)
end
helpers.send_udp(udpAddress, modstring,serverIndex)
end
function GetPlayerKills()
local killParts = {}
killParts[#killParts+1] = "---player-kills---\n"
for killerIndex, victims in pairs(storage.playerKillCount) do
for victimIndex, kills in pairs(victims) do
local killerName = game.players[killerIndex].name
local victimName = game.players[victimIndex].name
killParts[#killParts+1] = ("%s:%s:%s:%s:%d"):format(killerName,killerIndex,victimName,victimIndex,kills)
end
end
return table.concat(killParts,"\n")
end
function GetPlayerEntityStats()
local entityParts = {}
entityParts[#entityParts+1] = "---player-build-stats---"
for playerIndex, items in pairs(storage.constructedEntites) do
local playerName = game.players[playerIndex].name
for itemName, itemCount in pairs(items) do
entityParts[#entityParts+1] = ("%s:%s:constructed:%s:%s"):format(playerIndex,playerName,itemName,itemCount)
end
end
for playerIndex, items in pairs(storage.deconstructedEntities) do
local playerName = game.players[playerIndex].name
for itemName, itemCount in pairs(items) do
entityParts[#entityParts+1] = ("%s:%s:deconstructed:%s:%s"):format(playerIndex,playerName,itemName,itemCount)
end
end
return table.concat(entityParts,"\n")
end
function GetMapSeed()
return("---map-seed---\n%d"):format(game.surfaces["nauvis"].map_gen_settings.seed)
end
function GetRocketsLaunched()
return("---rocket-launches---\n%d"):format(game.forces["player"].rockets_launched)
end
---Concats all player online times into a single string
---Takes all players that ever visited the server into account
---@return string
function GetPlayerTime()
local timeParts = {}
timeParts[#timeParts+1] = "---player-times---\n"
for _,player in pairs(game.players) do
timeParts[#timeParts+1] = ("%s:%d:%d"):format(player.name, player.index, player.online_time)
end
return table.concat(timeParts, "\n")
end
---comment
---@return string
function GetPlayerDeaths()
local deathParts = {}
deathParts[#deathParts+1] = "---player-deaths---\n"
for _,player in pairs(game.players) do
deathParts[#deathParts+1] = ("%s:%d:%d"):format(player.name, player.index, storage.playerDeathCount[player.index]or 0)
end
return table.concat(deathParts, "\n")
end
function GetPlayerDeathCauses()
local deathParts = {}
deathParts[#deathParts+1] = "---player-death-cause---\n"
for playerIndex,deathCauses in pairs(storage.playerDeathCause) do
for causeName, causeCount in pairs(deathCauses) do
deathParts[#deathParts+1] = ("%s:%d:%s:%d"):format(game.players[playerIndex].name,playerIndex,causeName,causeCount)
end
end
return table.concat(deathParts,"\n")
end