Private
Public Access
1
0

Add autotrain metrics settings and implement depot train counting

Updated locale
Added Options for autotrain metric
This commit is contained in:
Jan Grießhaber
2026-01-03 20:52:50 +01:00
parent 7dc542e448
commit 9b608fc412
6 changed files with 90 additions and 19 deletions

View File

@@ -13,6 +13,8 @@ sendIndex = 0
serverIndex = 0
scannedGrids = false
scannedLabs = false
autotrainGroupName = ""
autotrainDepotName = ""
options = {
enableMod = false,
@@ -60,6 +62,8 @@ script.on_init(function ()
options.enableResearch = settings.global["factorio-metrics-exporter-export_research_stats"].value
options.enableRobots = settings.global["factorio-metrics-exporter-export_logistic_stats"].value
options.enableTrains = settings.global["factorio-metrics-exporter-export_train_stats"].value
autotrainGroupName = settings.global["factorio-metrics-exporter-autotrain_group_name"].value
autotrainDepotName = settings.global["factorio-metrics-exporter-autotrain_depot_name"].value
end)
@@ -79,6 +83,8 @@ script.on_load(function ()
options.enableResearch = settings.global["factorio-metrics-exporter-export_research_stats"].value
options.enableRobots = settings.global["factorio-metrics-exporter-export_logistic_stats"].value
options.enableTrains = settings.global["factorio-metrics-exporter-export_train_stats"].value
autotrainGroupName = settings.global["factorio-metrics-exporter-autotrain_group_name"].value
autotrainDepotName = settings.global["factorio-metrics-exporter-autotrain_depot_name"].value
end)
script.on_configuration_changed(function()
@@ -149,6 +155,12 @@ script.on_event(defines.events.on_runtime_mod_setting_changed, function(event)
if event.setting == "factorio-metrics-exporter-export_train_stats" then
options.enableTrains = settings.global["factorio-metrics-exporter-export_train_stats"].value
end
if event.setting == "factorio-metrics-exporter-autotrain_depot_name" then
autotrainDepotName = settings.global["factorio-metrics-exporter-autotrain_depot_name"].value
end
if event.setting == "factorio-metrics-exporter-autotrain_group_name" then
autotrainGroupName = settings.global["factorio-metrics-exporter-autotrain_group_name"].value
end
end)

View File

@@ -1,6 +1,6 @@
{
"name": "factorio-metrics-exporter",
"version": "0.1.22",
"version": "0.2.0",
"title": "Prometheus Metrics Exporter",
"author": "Jan Grießhaber",
"contact": "jan@griesshaber.systems",

View File

@@ -1,6 +1,33 @@
[mod-setting-name]
factorio-metrics-exporter-export_production_stats = Enable ProductionD
factorio-metrics-exporter-export_logistic_stats=Enable LogisticsD
factorio-metrics-exporter-export_pollution_stats=Enable PollutionD
factorio-metrics-exporter-enable=Mod aktivieren
factorio-metrics-exporter-tick-interval=Tick-Intervall
factorio-metrics-exporter-udp-address=UDP-Port
factorio-metrics-exporter-export_production_stats=Produktion aktivieren
factorio-metrics-exporter-export_fluid_stats=Flüssigkeiten aktivieren
factorio-metrics-exporter-export_logistic_stats=Logistik aktivieren
factorio-metrics-exporter-export_pollution_stats=Verschmutzung aktivieren
factorio-metrics-exporter-export_kill_stats=Kills aktivieren
factorio-metrics-exporter-export_research_stats=Forschung aktivieren
factorio-metrics-exporter-export_power_stats=Energie aktivieren
factorio-metrics-exporter-export_player_stats=Spieler aktivieren
factorio-metrics-exporter-export_train_stats=Züge aktivieren
factorio-metrics-exporter-enable_denkmalschutz=Denkmalschutz aktivieren
factorio-metrics-exporter-autotrain_group_name=AutoTrain-Metrik Gruppenname
factorio-metrics-exporter-autotrain_depot_name=AutoTrain-Metrik Depotname
[mod-setting-description]
factorio-metrics-exporter-export_production_stats = Enables sending of the production statistics per surface. Not very expensive
factorio-metrics-exporter-export_production_stats=Aktiviert das Senden der Produktionsstatistiken pro Oberfläche. Nicht sehr rechenintensiv.
factorio-metrics-exporter-enable=Aktiviert das Senden der UDP-Pakete.
factorio-metrics-exporter-tick-interval=Legt das Tick-Intervall fest, in dem Metriken gesammelt werden.
factorio-metrics-exporter-udp-address=Wähle einen UDP-Port, an den die Daten gesendet werden. Factorio muss mit --enable-lua-udp <Sendeport> gestartet werden. Es ist wichtig, einen anderen Port als den Zielport zu verwenden.
factorio-metrics-exporter-export_fluid_stats=Aktiviert das Senden von Flüssigkeits-Produktionsstatistiken. Nicht sehr rechenintensiv.
factorio-metrics-exporter-export_logistic_stats=Aktiviert das Senden von Logistiknetz-Statistiken. Moderat rechenintensiv.
factorio-metrics-exporter-export_pollution_stats=Aktiviert das Senden von verschmutzungsbezogenen Statistiken. Nicht sehr rechenintensiv.
factorio-metrics-exporter-export_kill_stats=Aktiviert das Senden von Kill-Statistiken. Nicht sehr rechenintensiv.
factorio-metrics-exporter-export_research_stats=Aktiviert das Senden von Forschungsstatistiken. Moderat rechenintensiv.
factorio-metrics-exporter-export_power_stats=Aktiviert Energie-Statistiken. Skaliert linear mit der Anzahl der Stromnetze.
factorio-metrics-exporter-export_player_stats=Aktiviert das Senden von Spielerstatistiken.
factorio-metrics-exporter-export_train_stats=Aktiviert das Senden von Zug-Statistiken. Geringer Aufwand, außer es sind sehr viele Züge im Einsatz.
factorio-metrics-exporter-enable_denkmalschutz=Aktiviert die Spaß-Option „Denkmalschutz“. Im Mehrspielermodus wird der Spieler gebannt, der das Starter-Raumschiff-Objekt abbaut.
factorio-metrics-exporter-autotrain_group_name=Legt den Namen der Zuggruppe fest, die für die AutoTrain-Metrik verwendet werden soll.
factorio-metrics-exporter-autotrain_depot_name=Legt den Namen des Depots fest, das für die AutoTrain-Metrik verwendet werden soll.

View File

@@ -11,6 +11,9 @@ factorio-metrics-exporter-export_research_stats=Enable Research
factorio-metrics-exporter-export_power_stats=Enable Power
factorio-metrics-exporter-export_player_stats=Enable Player
factorio-metrics-exporter-export_train_stats=Enable Train
factorio-metrics-exporter-enable_denkmalschutz=Enable Denkmalschutz
factorio-metrics-exporter-autotrain_group_name=AutoTrain metrics group name
factorio-metrics-exporter-autotrain_depot_name=AutoTrain metrics depot name
[mod-setting-description]
factorio-metrics-exporter-export_production_stats=Enables sending of the production statistics per surface. Not very expensive
factorio-metrics-exporter-enable=Enable sending of the UDP packets
@@ -21,6 +24,9 @@ factorio-metrics-exporter-export_logistic_stats=Enables sending of logistic netw
factorio-metrics-exporter-export_pollution_stats=Enable sending of Pollution related statistics. Not very expensive
factorio-metrics-exporter-export_kill_stats=Enable sending of kill statistics. Not very expensive
factorio-metrics-exporter-export_research_stats=Enable sending of research statistics. Moderatly expensive
factorio-metrics-exporter-export_power_stats=Enable Power. Not yet implemented!
factorio-metrics-exporter-export_power_stats=Enable Power. Scales linearly with power grid count
factorio-metrics-exporter-export_player_stats=Enable sending of player statistics
factorio-metrics-exporter-export_train_stats=Enable sending of train statistics. Not yet implemented!
factorio-metrics-exporter-export_train_stats=Enable sending of train statistics. Inexpensive unless very many trains are in use
factorio-metrics-exporter-enable_denkmalschutz=Enable the fun option of Denkmalschutz. In multiplayer, the player who deconstructs the starter spaceship entity will get banned
factorio-metrics-exporter-autotrain_group_name=Set the name of the traingroup you want to use for the autotrain metric
factorio-metrics-exporter-autotrain_depot_name=Set the name of the depot you want to use for the autotrain metric

View File

@@ -91,6 +91,19 @@ data:extend({
setting_type = "runtime-global",
default_value = false,
order = "z"
},
{
type = "string-setting",
name = "factorio-metrics-exporter-autotrain_group_name",
setting_type = "runtime-global",
default_value = "AutoTrain",
order = "za"
},
{
type = "string-setting",
name = "factorio-metrics-exporter-autotrain_depot_name",
setting_type = "runtime-global",
default_value = "[virtual-signal=signal-pink][item=locomotive]",
order = "zb"
}
})

View File

@@ -16,6 +16,18 @@ function GetTrainName(train)
return ""
end
function GetTrainsInDepot()
local trainsInDepot = 0
for trainsID, train in pairs(storage.trains) do
if train.state == defines.train_state.wait_station
and train.station and train.station.backer_name == autotrainDepotName then
trainsInDepot = trainsInDepot + 1
end
end
local trainsInGroup = #game.train_manager.get_trains({group=autotrainGroupName})
return ("---autotrain-stats---\n%d:%d"):format(trainsInDepot,trainsInGroup)
end
function GetTrainPlayerKills()
local trainKills = {}
trainKills[#trainKills+1] = "---train-player-kills---"
@@ -48,18 +60,18 @@ function GetTrainStates()
if train.state == defines.train_state.wait_station
or train.state == defines.train_state.destination_full
or train.state == defines.train_state.no_schedule
then trainsWaiting = trainsWaiting + 1 end
then trainsWaiting = trainsWaiting + 1
if train.state == defines.train_state.on_the_path
elseif train.state == defines.train_state.on_the_path
or train.state == defines.train_state.arrive_signal
or train.state == defines.train_state.wait_signal
then trainsDriving = trainsDriving + 1 end
then trainsDriving = trainsDriving + 1
if train.state == defines.train_state.manual_control
elseif train.state == defines.train_state.manual_control
or train.state == defines.train_state.manual_control_stop
then trainsManual = trainsManual + 1 end
then trainsManual = trainsManual + 1
if train.state == defines.train_state.no_path
elseif train.state == defines.train_state.no_path
then trainsProblems = trainsProblems + 1 end
end
return ("---trains-states---\n%d:%d:%d:%d"):format(trainsDriving,trainsManual,trainsProblems,trainsWaiting)
@@ -180,6 +192,7 @@ function SendTrainStats()
returnParts[#returnParts+1] = GetTrainTotalKills()
returnParts[#returnParts+1] = GetTrainStates()
returnParts[#returnParts+1] = GetTrainStatistics()
returnParts[#returnParts+1] = GetTrainsInDepot()
helpers.send_udp(udpAddress,table.concat(returnParts,"\n"),serverIndex)
end
end