"Total raw" calculation
Moderator: ickputzdirwech
"Total raw" calculation
The raw resources calculation is inconsistent between buildings. I think it should always show the base resources (iron ore, copper ore, coal, oil, water, wood, alien artifact) wherever it is viewed.
Chemical Plant:
Note that the heavy oil icon is used instead of oil. Assembler 2: Assembler 1:
Chemical Plant:
Note that the heavy oil icon is used instead of oil. Assembler 2: Assembler 1:
Last edited by DaveMcW on Sat Jun 28, 2014 8:41 pm, edited 1 time in total.
Re: [0.9.8] "Total raw" calculation
This is not a bug. This is an intended behavior. It always shows the "lowest recipes" in the tree that this machine can craft. So the assembling machine doesn't know how to craft the battery, therefore the battery is "raw" resource for the assembling machine.
I am moving this to ideas & suggestions. If this is annoying to many people we can think about changing this. Though there are some tricky subtle technical issues with this![Smile :)](./images/smilies/icon_e_smile.gif)
I am moving this to ideas & suggestions. If this is annoying to many people we can think about changing this. Though there are some tricky subtle technical issues with this
![Smile :)](./images/smilies/icon_e_smile.gif)
Re: [0.9.8] "Total raw" calculation
I think we need both info: the gross and the net calculations (in German and many other languages "brutto" and "netto"). I suggest a tab with the current as default.
http://en.wikipedia.org/wiki/Gross_(economics)
http://en.wikipedia.org/wiki/Net_%28economics%29
http://en.wikipedia.org/wiki/Netto
http://en.wikipedia.org/wiki/Gross_(economics)
http://en.wikipedia.org/wiki/Net_%28economics%29
http://en.wikipedia.org/wiki/Netto
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Re: [0.9.8] "Total raw" calculation
The current is almost useless. Maybe it is nice to see for manual crafting. But when I pick a recipe in an assembler I can only use the main ingredients. I don't care where the ingredients are made, it is just as easy to build another assembler or chemical plant.
I can see how there would be a problem picking between multiple recipes. There are 3 gas recipes (basic-oil-processing, advanced-oil-processing, light-oil-cracking). And an infinite loop with crude oil barrels. So you would need a variable to identify which should or should not be used.
I would say use basic-oil-processing for all 3 refinery products. It will give you the maximum crude oil needed, and players can decide whether to use advanced oil processing to reduce that number. Just like they can use productivity modules to reduce all numbers.
I can see how there would be a problem picking between multiple recipes. There are 3 gas recipes (basic-oil-processing, advanced-oil-processing, light-oil-cracking). And an infinite loop with crude oil barrels. So you would need a variable to identify which should or should not be used.
I would say use basic-oil-processing for all 3 refinery products. It will give you the maximum crude oil needed, and players can decide whether to use advanced oil processing to reduce that number. Just like they can use productivity modules to reduce all numbers.
Re: [0.9.8] "Total raw" calculation
I like those very praxis-orientated stuff. ![Smile :)](./images/smilies/icon_e_smile.gif)
![Smile :)](./images/smilies/icon_e_smile.gif)
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Re: [0.9.8] "Total raw" calculation
DaveMcW - I believe your crude oil numbers are a bit high. I also think that crude becomes problematic because you have two ways to produce it. For instance, if I need 2 units of lubrication for an electric engine unit, that can be considered 2 units of crude under basic refinery (10 crude in and 3 heavy, 3 light and 4 petro out) or 1.8 units of crude under advanced refinery (10 units of crude produce 11 items of Heavy, Light and Petro - 1, 4.5, 5.5).
I discovered the discrepancy because I can't find the published formula for the Electric Engine Unit. I'm getting 2 Lub, 1 engine unit and 2 ckts?
I discovered the discrepancy because I can't find the published formula for the Electric Engine Unit. I'm getting 2 Lub, 1 engine unit and 2 ckts?
Re: [0.9.8] "Total raw" calculation
I think you're right. It's better to assume all refinery products are equally valuable, instead of only looking at a single product. If people use cracking the crude oil costs might be off by 20%, but that's closer than being off by 200% like I was.
I played around with the script some more, and managed to eliminate the hidden_from_recipe_tree variable. It now avoids infinite loops on its own, and picks the cheapest recipe. This should allow it to handle any new recipe with no effort on the part of the modder.
In practical terms, this means:
empty-crude-oil-barrel: ignored because of infinite loop
heavy-oil-cracking: ignored because basic-oil-processing is cheaper
light-oil-cracking: ignored because basic-oil-processing is cheaper
advanced-oil-processing: ignored because (10 crude)/10 is cheaper than (10 crude + 5 water)/11
You could argue that 1 oil is more valuable than 5 water, but we would need a custom database entry to teach the game that.
I played around with the script some more, and managed to eliminate the hidden_from_recipe_tree variable. It now avoids infinite loops on its own, and picks the cheapest recipe. This should allow it to handle any new recipe with no effort on the part of the modder.
In practical terms, this means:
empty-crude-oil-barrel: ignored because of infinite loop
heavy-oil-cracking: ignored because basic-oil-processing is cheaper
light-oil-cracking: ignored because basic-oil-processing is cheaper
advanced-oil-processing: ignored because (10 crude)/10 is cheaper than (10 crude + 5 water)/11
You could argue that 1 oil is more valuable than 5 water, but we would need a custom database entry to teach the game that.
Lua Script
Output
Re: "Total raw" calculation
Brilliant script, thank you!
works ingame too, and i added a "time" entry in the return table, which should be 100% correct
call it by rawingredients(recipe)
when you call it on "nuclear fuel reprocessing" it returns the entry ERROR_INFINITE_LOOP = "used-up-uranium-fuel-cell", otherwise it works like a charm
Edit: NEW VERSION!
- Now calculates the time based on the most energy-efficient crafting machine
- Also provides information about the energy required
- Breaks down liquids into crude oil
- Takes into account probabilities of products (doesn't work well with covarex enrichment process - so 1 fuel cell will cost 200 uranium ore)
works ingame too, and i added a "time" entry in the return table, which should be 100% correct
call it by rawingredients(recipe)
when you call it on "nuclear fuel reprocessing" it returns the entry ERROR_INFINITE_LOOP = "used-up-uranium-fuel-cell", otherwise it works like a charm
Code: Select all
local exclude = {
["used-up-uranium-fuel-cell"] = true,
}
function rawingredients(recipe)
ret = getRawIngredients(recipe,exclude)
ret.time = (ret.time or 0)+recipe.energy
return ret
end
function getIngredients(recipe)
local ingredients = {}
for i,ingredient in pairs(recipe.ingredients) do
if (ingredient.name and ingredient.amount) then
ingredients[ingredient.name] = ingredient.amount
elseif (ingredient[1] and ingredient[2]) then
ingredients[ingredient[1]] = ingredient[2]
end
end
return ingredients
end
function getProducts(recipe)
local products = {}
if (recipe.products) then
for i,product in pairs(recipe.products) do
if (product.name and product.amount) then
products[product.name] = product.amount
end
end
elseif (recipe.products) then
local amount = 1
if (recipe.result_count) then
amount = recipe.result_count
end
products[recipe.products] = amount
end
return products
end
function getRecipes(item)
local recipes = {}
for i,recipe in pairs(game.recipe_prototypes) do
local products = getProducts(recipe)
for product,amount in pairs(products) do
if (product == item) then
table.insert(recipes, recipe)
end
end
end
return recipes
end
function getRawIngredients(recipe,excluded)
local raw_ingredients = {
["time"] = 0,}
for name,amount in pairs(getIngredients(recipe)) do
-- Do not use an item as its own ingredient
if (excluded[name]) then
return {ERROR_INFINITE_LOOP = name}
end
local excluded_ingredients = {[name] = true}
for k,v in pairs(excluded) do
excluded_ingredients[k] = true
end
-- Recursively find the sub-ingredients for each ingredient
-- There might be more than one recipe to choose from
local subrecipes = {}
local loop_error = nil
for i,subrecipe in pairs(getRecipes(name)) do
local subingredients = getRawIngredients(subrecipe, excluded_ingredients)
if (subingredients.ERROR_INFINITE_LOOP) then
loop_error = subingredients.ERROR_INFINITE_LOOP
else
local value = 0
for subproduct,subamount in pairs(getProducts(subrecipe)) do
value = value + subamount
end
local divisor = 0
for subingredient,subamount in pairs(subingredients) do
divisor = divisor + subamount
end
if (divisor == 0) then divisor = 1 end
table.insert(subrecipes, {recipe = subrecipe, ingredients = subingredients, value = value / divisor})
end
end
if (#subrecipes == 0) then
if (loop_error and loop_error ~= name) then
-- This branch of the recipe tree is invalid
return {ERROR_INFINITE_LOOP = loop_error}
else
-- This is a raw resource
if (raw_ingredients[name]) then
raw_ingredients[name] = raw_ingredients[name] + amount
else
raw_ingredients[name] = amount
end
end
else
-- Pick the cheapest recipe
local best_recipe = nil
local best_value = 0
for i,subrecipe in pairs(subrecipes) do
if (best_value < subrecipe.value) then
best_value = subrecipe.value
best_recipe = subrecipe
end
end
local multiple = 0
for subname,subamount in pairs(getProducts(best_recipe.recipe)) do
multiple = multiple + subamount
end
for subname,subamount in pairs(best_recipe.ingredients) do
if (raw_ingredients[subname]) then
raw_ingredients[subname] = raw_ingredients[subname] + amount * subamount / multiple
else
raw_ingredients[subname] = amount * subamount / multiple
end
end
raw_ingredients["time"] = raw_ingredients["time"] + (best_recipe.recipe.energy or 1)*amount/multiple
end
end
return raw_ingredients
end
- Now calculates the time based on the most energy-efficient crafting machine
- Also provides information about the energy required
- Breaks down liquids into crude oil
- Takes into account probabilities of products (doesn't work well with covarex enrichment process - so 1 fuel cell will cost 200 uranium ore)
Code: Select all
exclude = {
["used-up-uranium-fuel-cell"] = true,
}
function rawingredients(recipe) -- call this function
if not global.best_machine then
global.best_machine = {}
for name, proto in pairs(game.entity_prototypes) do
if proto.crafting_categories and proto.name ~= "player" and proto.name ~= "escape-pod-assembler" and proto.energy_usage and proto.energy_usage > 0 then
for cat, _ in pairs(proto.crafting_categories) do
if not global.best_machine[cat] then
global.best_machine[cat]={speed = proto.crafting_speed or 1, energy = (proto.energy_usage or 1), name = name}
elseif (proto.crafting_speed or 1)/(proto.energy_usage or 1) > global.best_machine[cat].speed / global.best_machine[cat].energy then
global.best_machine[cat]={speed = proto.crafting_speed or 1, energy = (proto.energy_usage or 1), name = name}
end
end
end
end
end
ret = getRawIngredients(recipe,exclude)
ret.time = (ret.time or 0)+(recipe.energy or 1)/global.best_machine[recipe.category].speed
--ret.time = (ret.time or 0)+(recipe.energy or 1)
ret.energy = (ret.energy or 0)+(recipe.energy or 1)/global.best_machine[recipe.category].speed*global.best_machine[recipe.category].energy
return ret
end
function getIngredients(recipe)
local ingredients = {}
for i,ingredient in pairs(recipe.ingredients) do
if (ingredient.name and ingredient.amount) then
ingredients[ingredient.name] = ingredient.amount
elseif (ingredient[1] and ingredient[2]) then
ingredients[ingredient[1]] = ingredient[2]
end
end
return ingredients
end
function getProducts(recipe)
local products = {}
if (recipe.products) then
for i,product in pairs(recipe.products) do
if (product.name and product.amount) then
products[product.name] = product.amount
elseif product.amount_min and product.amount_max then
products[product.name] = (product.amount_min+product.amount_max)/2 * (product.probability or 1)
end
end
end
return products
end
function getRecipes(item)
local recipes = {}
for i,recipe in pairs(game.recipe_prototypes) do
if i ~="coal-liquefaction" and not (string.sub(item,-7) ~= "-barrel" and string.sub(i,-7) == "-barrel" and (string.sub(i,1,5) == "fill-" or string.sub(i,1,6) == "empty-")) then
local products = getProducts(recipe)
for product,amount in pairs(products) do
if (product == item) then
table.insert(recipes, recipe)
end
end
end
end
return recipes
end
function getRawIngredients(recipe,excluded)
local raw_ingredients = {
["time"] = 0,
["energy"] = 0}
for name,amount in pairs(getIngredients(recipe)) do
-- Do not use an item as its own ingredient
if (excluded[name]) then
return {ERROR_INFINITE_LOOP = name}
end
local excluded_ingredients = {[name] = true}
for k,v in pairs(excluded) do
excluded_ingredients[k] = true
end
-- Recursively find the sub-ingredients for each ingredient
-- There might be more than one recipe to choose from
local subrecipes = {}
local loop_error = nil
for i,subrecipe in pairs(getRecipes(name)) do
local subingredients = getRawIngredients(subrecipe, excluded_ingredients)
if (subingredients.ERROR_INFINITE_LOOP) then
loop_error = subingredients.ERROR_INFINITE_LOOP
else
local value = 0
for subproduct,subamount in pairs(getProducts(subrecipe)) do
value = value + subamount
end
local divisor = 0
for subingredient,subamount in pairs(subingredients) do
if subingredient ~= "intermediates" then
divisor = divisor + subamount
end
end
if (divisor == 0) then divisor = 1 end
table.insert(subrecipes, {recipe = subrecipe, ingredients = subingredients, value = value / divisor})
end
end
if (#subrecipes == 0) then
if (loop_error and loop_error ~= name) then
-- This branch of the recipe tree is invalid
return {ERROR_INFINITE_LOOP = loop_error}
else
-- This is a raw resource
if (raw_ingredients[name]) then
raw_ingredients[name] = raw_ingredients[name] + amount
else
raw_ingredients[name] = amount
end
end
else
-- Pick the cheapest recipe
local best_recipe = nil
local best_value = 0
for i,subrecipe in pairs(subrecipes) do
if (best_value < subrecipe.value) then
best_value = subrecipe.value
best_recipe = subrecipe
end
end
local multiple = 0
for subname,subamount in pairs(getProducts(best_recipe.recipe)) do
multiple = multiple + subamount
end
if not raw_ingredients["intermediates"] then raw_ingredients["intermediates"] = {} end
for subname,subamount in pairs(best_recipe.ingredients) do
if subname == "intermediates" then
for a, b in pairs(subamount) do
raw_ingredients["intermediates"][a] = (raw_ingredients["intermediates"][a] or 0)+b*amount/multiple
end
elseif (raw_ingredients[subname]) then
raw_ingredients[subname] = raw_ingredients[subname] + amount * subamount / multiple
else
raw_ingredients[subname] = amount * subamount / multiple
end
end
for a, b in pairs(getProducts(best_recipe.recipe)) do
raw_ingredients["intermediates"][a] = (raw_ingredients["intermediates"][a] or 0)+b*amount/multiple
end
raw_ingredients["time"] = raw_ingredients["time"] + (best_recipe.recipe.energy or 1)/global.best_machine[best_recipe.recipe.category].speed*amount/multiple
--raw_ingredients["time"] = raw_ingredients["time"] + (best_recipe.recipe.energy or 1)*amount/multiple
raw_ingredients["energy"] = raw_ingredients["energy"] + (best_recipe.recipe.energy or 1)/global.best_machine[best_recipe.recipe.category].speed*global.best_machine[best_recipe.recipe.category].energy*amount/multiple
end
end
return raw_ingredients
end
mods.factorio.com/user/ownlyme
My requests: uiAbove||Grenade arc||Blueprint allies||Creeps forget command/ don't get removed||Player Modifiers||textbox::selection||Better Heat IF||Singleplayer RCON||tank bug w/ min_range >= projectile_creation_distance
My requests: uiAbove||Grenade arc||Blueprint allies||Creeps forget command/ don't get removed||Player Modifiers||textbox::selection||Better Heat IF||Singleplayer RCON||tank bug w/ min_range >= projectile_creation_distance
Re: "Total raw" calculation
ownlyme wrote: ↑Mon Apr 15, 2019 4:41 pmBrilliant script, thank you!
works ingame too, and i added a "time" entry in the return table, which should be 100% correct
call it by rawingredients(recipe)
when you call it on "nuclear fuel reprocessing" it returns the entry ERROR_INFINITE_LOOP = "used-up-uranium-fuel-cell", otherwise it works like a charm
Edit: NEW VERSION!Code: Select all
local exclude = { ["used-up-uranium-fuel-cell"] = true, } function rawingredients(recipe) ret = getRawIngredients(recipe,exclude) ret.time = (ret.time or 0)+recipe.energy return ret end function getIngredients(recipe) local ingredients = {} for i,ingredient in pairs(recipe.ingredients) do if (ingredient.name and ingredient.amount) then ingredients[ingredient.name] = ingredient.amount elseif (ingredient[1] and ingredient[2]) then ingredients[ingredient[1]] = ingredient[2] end end return ingredients end function getProducts(recipe) local products = {} if (recipe.products) then for i,product in pairs(recipe.products) do if (product.name and product.amount) then products[product.name] = product.amount end end elseif (recipe.products) then local amount = 1 if (recipe.result_count) then amount = recipe.result_count end products[recipe.products] = amount end return products end function getRecipes(item) local recipes = {} for i,recipe in pairs(game.recipe_prototypes) do local products = getProducts(recipe) for product,amount in pairs(products) do if (product == item) then table.insert(recipes, recipe) end end end return recipes end function getRawIngredients(recipe,excluded) local raw_ingredients = { ["time"] = 0,} for name,amount in pairs(getIngredients(recipe)) do -- Do not use an item as its own ingredient if (excluded[name]) then return {ERROR_INFINITE_LOOP = name} end local excluded_ingredients = {[name] = true} for k,v in pairs(excluded) do excluded_ingredients[k] = true end -- Recursively find the sub-ingredients for each ingredient -- There might be more than one recipe to choose from local subrecipes = {} local loop_error = nil for i,subrecipe in pairs(getRecipes(name)) do local subingredients = getRawIngredients(subrecipe, excluded_ingredients) if (subingredients.ERROR_INFINITE_LOOP) then loop_error = subingredients.ERROR_INFINITE_LOOP else local value = 0 for subproduct,subamount in pairs(getProducts(subrecipe)) do value = value + subamount end local divisor = 0 for subingredient,subamount in pairs(subingredients) do divisor = divisor + subamount end if (divisor == 0) then divisor = 1 end table.insert(subrecipes, {recipe = subrecipe, ingredients = subingredients, value = value / divisor}) end end if (#subrecipes == 0) then if (loop_error and loop_error ~= name) then -- This branch of the recipe tree is invalid return {ERROR_INFINITE_LOOP = loop_error} else -- This is a raw resource if (raw_ingredients[name]) then raw_ingredients[name] = raw_ingredients[name] + amount else raw_ingredients[name] = amount end end else -- Pick the cheapest recipe local best_recipe = nil local best_value = 0 for i,subrecipe in pairs(subrecipes) do if (best_value < subrecipe.value) then best_value = subrecipe.value best_recipe = subrecipe end end local multiple = 0 for subname,subamount in pairs(getProducts(best_recipe.recipe)) do multiple = multiple + subamount end for subname,subamount in pairs(best_recipe.ingredients) do if (raw_ingredients[subname]) then raw_ingredients[subname] = raw_ingredients[subname] + amount * subamount / multiple else raw_ingredients[subname] = amount * subamount / multiple end end raw_ingredients["time"] = raw_ingredients["time"] + (best_recipe.recipe.energy or 1)*amount/multiple end end return raw_ingredients end
- Now calculates the time based on the most energy-efficient crafting machine
- Also provides information about the energy required
- Breaks down liquids into crude oil
- Takes into account probabilities of products (doesn't work well with covarex enrichment process - so 1 fuel cell will cost 200 uranium ore)Code: Select all
exclude = { ["used-up-uranium-fuel-cell"] = true, } function rawingredients(recipe) -- call this function if not global.best_machine then global.best_machine = {} for name, proto in pairs(game.entity_prototypes) do if proto.crafting_categories and proto.name ~= "player" and proto.name ~= "escape-pod-assembler" and proto.energy_usage and proto.energy_usage > 0 then for cat, _ in pairs(proto.crafting_categories) do if not global.best_machine[cat] then global.best_machine[cat]={speed = proto.crafting_speed or 1, energy = (proto.energy_usage or 1), name = name} elseif (proto.crafting_speed or 1)/(proto.energy_usage or 1) > global.best_machine[cat].speed / global.best_machine[cat].energy then global.best_machine[cat]={speed = proto.crafting_speed or 1, energy = (proto.energy_usage or 1), name = name} end end end end end ret = getRawIngredients(recipe,exclude) ret.time = (ret.time or 0)+(recipe.energy or 1)/global.best_machine[recipe.category].speed --ret.time = (ret.time or 0)+(recipe.energy or 1) ret.energy = (ret.energy or 0)+(recipe.energy or 1)/global.best_machine[recipe.category].speed*global.best_machine[recipe.category].energy return ret end function getIngredients(recipe) local ingredients = {} for i,ingredient in pairs(recipe.ingredients) do if (ingredient.name and ingredient.amount) then ingredients[ingredient.name] = ingredient.amount elseif (ingredient[1] and ingredient[2]) then ingredients[ingredient[1]] = ingredient[2] end end return ingredients end function getProducts(recipe) local products = {} if (recipe.products) then for i,product in pairs(recipe.products) do if (product.name and product.amount) then products[product.name] = product.amount elseif product.amount_min and product.amount_max then products[product.name] = (product.amount_min+product.amount_max)/2 * (product.probability or 1) end end end return products end function getRecipes(item) local recipes = {} for i,recipe in pairs(game.recipe_prototypes) do if i ~="coal-liquefaction" and not (string.sub(item,-7) ~= "-barrel" and string.sub(i,-7) == "-barrel" and (string.sub(i,1,5) == "fill-" or string.sub(i,1,6) == "empty-")) then local products = getProducts(recipe) for product,amount in pairs(products) do if (product == item) then table.insert(recipes, recipe) end end end end return recipes end function getRawIngredients(recipe,excluded) local raw_ingredients = { ["time"] = 0, ["energy"] = 0} for name,amount in pairs(getIngredients(recipe)) do -- Do not use an item as its own ingredient if (excluded[name]) then return {ERROR_INFINITE_LOOP = name} end local excluded_ingredients = {[name] = true} for k,v in pairs(excluded) do excluded_ingredients[k] = true end -- Recursively find the sub-ingredients for each ingredient -- There might be more than one recipe to choose from local subrecipes = {} local loop_error = nil for i,subrecipe in pairs(getRecipes(name)) do local subingredients = getRawIngredients(subrecipe, excluded_ingredients) if (subingredients.ERROR_INFINITE_LOOP) then loop_error = subingredients.ERROR_INFINITE_LOOP else local value = 0 for subproduct,subamount in pairs(getProducts(subrecipe)) do value = value + subamount end local divisor = 0 for subingredient,subamount in pairs(subingredients) do if subingredient ~= "intermediates" then divisor = divisor + subamount end end if (divisor == 0) then divisor = 1 end table.insert(subrecipes, {recipe = subrecipe, ingredients = subingredients, value = value / divisor}) end end if (#subrecipes == 0) then if (loop_error and loop_error ~= name) then -- This branch of the recipe tree is invalid return {ERROR_INFINITE_LOOP = loop_error} else -- This is a raw resource if (raw_ingredients[name]) then raw_ingredients[name] = raw_ingredients[name] + amount else raw_ingredients[name] = amount end end else -- Pick the cheapest recipe local best_recipe = nil local best_value = 0 for i,subrecipe in pairs(subrecipes) do if (best_value < subrecipe.value) then best_value = subrecipe.value best_recipe = subrecipe end end local multiple = 0 for subname,subamount in pairs(getProducts(best_recipe.recipe)) do multiple = multiple + subamount end if not raw_ingredients["intermediates"] then raw_ingredients["intermediates"] = {} end for subname,subamount in pairs(best_recipe.ingredients) do if subname == "intermediates" then for a, b in pairs(subamount) do raw_ingredients["intermediates"][a] = (raw_ingredients["intermediates"][a] or 0)+b*amount/multiple end elseif (raw_ingredients[subname]) then raw_ingredients[subname] = raw_ingredients[subname] + amount * subamount / multiple else raw_ingredients[subname] = amount * subamount / multiple end end for a, b in pairs(getProducts(best_recipe.recipe)) do raw_ingredients["intermediates"][a] = (raw_ingredients["intermediates"][a] or 0)+b*amount/multiple end raw_ingredients["time"] = raw_ingredients["time"] + (best_recipe.recipe.energy or 1)/global.best_machine[best_recipe.recipe.category].speed*amount/multiple --raw_ingredients["time"] = raw_ingredients["time"] + (best_recipe.recipe.energy or 1)*amount/multiple raw_ingredients["energy"] = raw_ingredients["energy"] + (best_recipe.recipe.energy or 1)/global.best_machine[best_recipe.recipe.category].speed*global.best_machine[best_recipe.recipe.category].energy*amount/multiple end end return raw_ingredients end
Hey!
Can you give me hint how to run this script in v0.17? And how to extract the raw data? Thank you :)
Re: "Total raw" calculation
I think you can use this:
https://mods.factorio.com/mod/MaxRateCalculator
It says it has 0.17 support..
https://mods.factorio.com/mod/MaxRateCalculator
It says it has 0.17 support..
Cool suggestion: Eatable MOUSE-pointers.
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Have you used the Advanced Search today?
Need help, question? FAQ - Wiki - Forum help
I still like small signatures...
Re: "Total raw" calculation
Yep, but that is not the information I was looking for. I basically need the output of that LUA script from 0.17, to do some data mining. So I was looking for a way the script would work for me. But so far Someone's LUA-Console mod didn't help in running the script, as I do not have the experience needed for it. That is why I'm asking about it here ![Smile :)](./images/smilies/icon_e_smile.gif)
[EDIT]
Now I guess I'm looking for the same things but in 0.18 ^_^
![Smile :)](./images/smilies/icon_e_smile.gif)
[EDIT]
Now I guess I'm looking for the same things but in 0.18 ^_^