protos = {} --Experimental function, not in use right now function GetProductionWithQuality(surface) log("StartQualProd"..surface.name) local prodWithQualityParts = {} local prodstat = game.forces["player"].get_item_production_statistics(surface) for key, _ in pairs(prodstat.input_counts) do for quality,_ in pairs(prototypes.quality) do local count = prodstat.get_input_count({name=key,quality=quality}) if count > 0 then prodWithQualityParts[#prodWithQualityParts+1] = surface.name..":".. key..":".. quality..":".. count end end end log("EndQualProd"..surface.name) return table.concat(prodWithQualityParts,"\n") end function SendProductionStats() if options.enableProduction then local productionParts = {} productionParts[#productionParts+1] = "---production-stats---" for _,surface in pairs(game.surfaces) do local surfaceName = surface.name --TODO --local test = GetProductionWithQuality(surface) 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 end function SendFluidProductionStats() if options.enableFluid then 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 end function SendBuildStats() if options.enableProduction then local buildParts = {} buildParts[#buildParts+1] = "---build-stats---" for _,surface in pairs(game.surfaces) do local surfaceName = surface.name local inputStats = game.forces["player"].get_entity_build_count_statistics(surfaceName).input_counts local outputStats = game.forces["player"].get_entity_build_count_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 buildParts[#buildParts+1] = ("%s:in:%s:%d"):format(surfaceName, itemName, itemCount) end for itemName, itemCount in pairs(outputStats) do buildParts[#buildParts+1] = ("%s:out:%s:%d"):format(surfaceName, itemName, itemCount) end end helpers.send_udp(udpAddress, table.concat(buildParts, "\n"), serverIndex) end end function GetAllPrototypes() for ID, _ in pairs(prototypes.item) do for quality,_ in pairs(prototypes.quality) do protos[#protos+1] = {name=ID,quality=quality} end end end