Merge pull request #135 from tovernaar123/master

Ratio command
This commit is contained in:
Cooldude2606
2020-01-28 19:46:08 +00:00
committed by GitHub
4 changed files with 97 additions and 0 deletions

View File

@@ -13,6 +13,7 @@ return {
'modules.commands.tag',
'modules.commands.teleport',
'modules.commands.cheat-mode',
'modules.commands.ratio',
'modules.commands.interface',
'modules.commands.help',
'modules.commands.roles',

View File

@@ -210,6 +210,7 @@ local default = Roles.new_role('Guest','')
'command/list-roles',
'command/find-on-map',
'command/report',
'command/ratio',
'gui/player-list',
'gui/rocket-info',
'gui/science-info',
@@ -285,4 +286,5 @@ Roles.override_player_roles{
Tcheko={'Moderator','Member'},
WhomstThouAmMe={'Moderator','Member'},
Windbomb={'Moderator','Member'},
tovernaar123={'Member'},
}

View File

@@ -59,9 +59,18 @@ result=__1__ entites were revived and __2__ were healed to max health.
set=Your bonus has been set to __1__.
wip=This command is temporary and will be replaced at some point in the future.
[expcom-ratio]
notSelecting=Please select an entetiy with a recpie.
item-in=You need __1__ per seconds of [item=__2__].
fluid-in=You need __1__ per seconds of [fluid=__2__].
item-out=This will result in: __1__ [item=__2__] per second.
fluid-out=This will result in: __1__ [fluid=__2__] per second.
machines=And you will need __1__ machines (with the same speed as this one) for this.
[expcom-home]
no-home=You have no home set.
no-return=You can't return when home has not yet been used.
home-set=Your home point has been set to x: __1__ y: __2__
return-set=Your return point has been set to x: __1__ y: __2__
home-get=Your home point is at x: __1__ y: __2__

View File

@@ -0,0 +1,85 @@
local Commands = require 'expcore.commands'
Commands.new_command('ratio','This command will give the input and ouput ratios of the selected machine. Use the parameter for calcualting the machines needed for that amount of items per second.')
:add_param('itemsPerSecond',true,'number')
:register(function(player,itemsPerSecond,raw)
local machine = player.selected -- selected machine
if not machine then --nil check
return Commands.error{'expcom-ratio.notSelecting'}
end
if machine.type ~= "assembling-machine" and machine.type ~= "furnace" then
return Commands.error{'expcom-ratio.notSelecting'}
end
local recpie = machine.get_recipe() -- recpie
if not recpie then --nil check
return Commands.error{'expcom-ratio.notSelecting'}
end
local items = recpie.ingredients -- items in that recpie
local product = recpie.products -- output items
local amountOfMachines
local moduleInvetory = machine.get_module_inventory()--the module Invetory of the machine
local mult = Modules(moduleInvetory) --function for the productivety moduals
if itemsPerSecond then
amountOfMachines = math.ceil( AmountOfMachines(itemsPerSecond,1/recpie.energy*machine.crafting_speed*product[1].amount*mult)) -- amount of machines
end
if not amountOfMachines then
amountOfMachines = 1 --set to 1 to make it not nil
end
----------------------------items----------------------------
for i, item in ipairs(items) do
local sprite -- string to make the icon work either fluid ore item
if item.type == "item" then
sprite = 'expcom-ratio.item-in'
else
sprite = 'expcom-ratio.fluid-in'
end
local ips = item.amount/recpie.energy*machine.crafting_speed*amountOfMachines --math on the items/fluids per second
Commands.print {sprite,math.round(ips,3),item.name}-- full string
end
----------------------------products----------------------------
for i, product in ipairs(product) do
local sprite -- string to make the icon work either fluid ore item
if product.type == "item" then
sprite = 'expcom-ratio.item-out'
else
sprite = 'expcom-ratio.fluid-out'
end
local output = 1/recpie.energy*machine.crafting_speed*product.amount*mult --math on the outputs per second
Commands.print {sprite,math.round(output*amountOfMachines,3),product.name} -- full string
end
if amountOfMachines ~= 1 then
Commands.print{'expcom-ratio.machines',amountOfMachines}
end
end)
function Modules(moduleInvetory) -- returns the multeplier of the modules
local effect1 = moduleInvetory.get_item_count("productivity-module") -- type 1
local effect2 = moduleInvetory.get_item_count("productivity-module-2")-- type 2
local effect3 = moduleInvetory.get_item_count("productivity-module-3") -- type 3
local mult = effect1*4+effect2*6+effect3*10
return mult/100+1
end
function AmountOfMachines(itemsPerSecond,output)
if(itemsPerSecond) then
return itemsPerSecond/output
end
end