Jump to content

[Lua] [Example] Printing max engine thrust


hdparm

Recommended Posts

image.png.d57f24eb199f48b01e38e45ddb7ac074.png

 

About

This is a short script that prints base max thrust of linked engines. It can serve as an example, and may also be used to detect which engines do not have a technician buff applied to them.

 

Set-up

  1. Place a programming board.
  2. Link up to 10 engines to the programming board.
  3. In the Lua editor (right-click, "Advanced", "Edit Lua code") create a unit start() event handler with this code:
    -- detect linked engines
    local engines = {}
    
    for key, value in pairs(unit) do
      if type(value) == "table" and type(value.export) == "table" then -- `value` is an element and `key` is the slot name
        if value.getThrust and value.getMaxThrust then -- `value` is an engine
          engines[#engines + 1] = value
        end
      end
    end
    
    -- get engine names
    local engineNames = {}
    
    for _, engine in ipairs(engines) do
      -- engine name is available in its widget data
      -- for other elements `core.getElementNameById` would have to be used instead
    
      local dataJson = engine.getData()
      local data = json.decode(dataJson)
    
      engineNames[engine] = data.name or "???"
    end
    
    -- sort engines by name
    table.sort(engines, function (engine1, engine2)
      return engineNames[engine1] < engineNames[engine2]
    end)
    
    -- print engines and their base max thrust
    system.print("Linked engines: " .. #engines)
    
    for _, engine in ipairs(engines) do
      local name = engineNames[engine]
      local maxThrustBase = engine.getMaxThrustBase()
    
      system.print(string.format("%s: %.0f N", name, maxThrustBase))
    end
    
    unit.exit()

     

  4. Click "Apply" in the Lua editor, exit build mode and activate the programming board. You should see base max thrust printed in the Lua chat tab.

     

Change log

2020-09-13. Posted the first version (tested in r0.21.5).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...