function SendProductionStats() local productionParts = {} productionParts[#productionParts+1] = "---production-stats---" for _,surface in pairs(game.surfaces) do local surfaceName = surface.name local inputStats = game.forces["player"].get_item_production_statistics(surfaceName).input_counts local outputStats = game.forces["player"].get_item_production_statistics(surfaceName).output_counts if(surface.platform ~= nil) then --surface is a space platform and has a seperate name we can use surfaceName = surface.platform.name end for itemName, itemCount in pairs(inputStats) do productionParts[#productionParts+1] = ("%s:in:%s:%d"):format(surfaceName, itemName, itemCount) end for itemName, itemCount in pairs(outputStats) do productionParts[#productionParts+1] = ("%s:out:%s:%d"):format(surfaceName, itemName, itemCount) end end helpers.send_udp(udpAddress, table.concat(productionParts, "\n"), serverIndex) end function SendFluidProductionStats() local productionParts = {} productionParts[#productionParts+1] = "---fluid-production-stats---" for _,surface in pairs(game.surfaces) do local surfaceName = surface.name local inputStats = game.forces["player"].get_fluid_production_statistics(surfaceName).input_counts local outputStats = game.forces["player"].get_fluid_production_statistics(surfaceName).output_counts if(surface.platform ~= nil) then --surface is a space platform and has a seperate name we can use surfaceName = surface.platform.name end for itemName, itemCount in pairs(inputStats) do productionParts[#productionParts+1] = ("%s:in:%s:%d"):format(surfaceName, itemName, itemCount) end for itemName, itemCount in pairs(outputStats) do productionParts[#productionParts+1] = ("%s:out:%s:%d"):format(surfaceName, itemName, itemCount) end end helpers.send_udp(udpAddress, table.concat(productionParts, "\n"), serverIndex) end