Space Engineers

Space Engineers

185 ratings
Fancy Status Displays Guide
By Coffee and 1 collaborators
How to use the Fancy Status Displays script by Coffee for Space Engineers
12
   
Award
Favorite
Favorited
Unfavorite
Initial Setup
  • Place down a programmable block.
  • Load the script by selecting the block in the terminal gui and click "Edit", "Browse Scripts".
  • The Fancy Status Displays script should be in the list if you subscribed to it.
  • Select it, click "Copy to editor" than hit "OK".
Usage
Generally the script allows you to display information about your grid blocks on any screen.
You do so by writing what you want to display into the custom data of the block that either is a screen itself, or holds the screen (cockpit, flightseat, programmable block, control station).
Keywords / how to display things
First thing to write down into the custom data of the screen or block with screens would be:

ShowStats
This key word tells the script to act on the screens of this block. Do a linebreak after it.
Anything above this keyword will be ignored and can be used for other purposes.

Next, if it is a block with multiple screens, you would have to write down the screen that shall be used to display the information. Do a linebreak after it. You can skip this if this block has only a single screen.

Panel 0
Shows you something at the first screen.

Panel 1
Shows you something at the second screen and so on - you get the point.

Into the next line, you can start the list what should be displayed on this screen.

You can use the full name of a block group:

(a partial name of a group will not recognized)
MyGroup
Displays all blocks contained in a group called "MyGroup".

Or you can use a part of the block name.
(the script searches for all blocks which contain the given string:)
Battery
Displays all blocks containing "Battery" (e.g.: Battery 1, Battery 2, Miner Battery)

The script will first try to find a block group with a matching name in all connected grids.
If that can't find any matches, it will try to find blocks with the string as part of the block name.
(Also in all connected grids.)
Refining the selection process
You can refine which blocks are to be displayed by using several modifier keywords.
These keywords must be separated from the Block/Group name(s) by ether a comma ',' or a colon ':' Upper / lower case of the keyword is ignored.
Battery ,nosubgrids Battery :NoSubGrids
(both work equally)

Examples
Given are six batteries. The first, second and fifth battery are combined into a group also named 'Battery'. The 2nd and 4th are located on a different grid than the programmable block.


Standard search.
Battery
Since the script looks first for the a group with the name 'Battery',
only the status of the 1st, 2nd and 5th will be displayed.
(The other batteries are not part of the group 'Battery')

Battery 2
Only the the status of the 3rd and 4th battery will be displayed.

Battery 3
Only the the status of the 5th and 6th battery will be displayed.
('Battery 3' is a part of 'Battery 32')


Verbatim search
"Battery 3"
Only blocks with an exact name match will be shown.
In this case only the 5th battery.

"Battery"
Only blocks with an exact name match will be shown.
In this case only the 1st and 2nd battery.


No subgrid search
Battery,nosubgrids
Only the blocks on the same grid as the as the programmable block will be displayed
Since the group "Battery" will be found first, only the 1st and 5th battery will be displayed.
(The 2nd battery, while in the group "Battery", is on a different grid and will be ignored.)


Skip groups
Battery,noGroups
Skipping the search for groups.
Since all batteries have "Battery" as part of the name all of them will be displayed


Modifier combinations
All these modifiers can be combined

"Battery",noGroups
Groups are ignored
Only blocks an exact name match are displayed.
So only 1st and 2nd battery will be displayed.

"Battery",noGroups nosubgrids
Groups are ignored.
Blocks on other grids are ignored.
Only blocks an exact name match are displayed.
So only the 1st battery is matching all three criteria and will be displayed.
Keyword extensions
You can also change the way the information is displayed by modifier keywords.
Like the search modifiers they must be separated from the Block/Group name(s) by ether a comma ',' or a colon ':' Upper / lower case will be also ignored.

First there are four different ways to display the information.
Keyword
Function
Custom Data Example
Default view. Shows a line of icons representing a single block individually.
Depending on how many blocks have to be displayed, the icons can take up several lines.
ShowStats
Panel 0
Battery
WideBar
Shows a single wide bar as a summary, instead of each block individually.
ShowStats
Panel 0
Battery,WideBar
SmallBar
Shows a single small bar as a summary, instead of each block individually.
ShowStats
Panel 0
Battery,SmallBar
noIcons
Displays the information only as a single textline without icons.
ShowStats
Panel 0
Battery,noIcons
(The 'noIcons', 'WideBar' and 'SmallBar' extensions are mutually exclusive)



Also, you can change the way the Textline (Headline) is displayed.
Headline modificators:
Keyword
Function
Custom Data Example
noscrolling
Doesn't scroll the headline, even if it is too long to fit in.
ShowStats
Panel 0
Battery,NoScrolling
noheadline
Displays group/block without the headline.
ShowStats
Panel 0
Battery,NoHeadline
noNames
Cuts blocktype names and group names out of the headline
ShowStats
Panel 0
Battery,NoNames
left
Alignes the headline left
ShowStats
Panel 0
Battery,left
center
Centers the headline
ShowStats
Panel 0
Battery,center
right
Alignes the headline right
ShowStats
Panel 0
Battery,right
(These can be combined with 'noIcons', 'WideBar','SmallBar' and each other)



Some types of blocks offer an optional data source.
Batteries, reactors, hydrogen engines, refineries and assemblers have those option.

optional modificator:
Block type
normal data displayed
Blockname
optional data displayed
Blockname,optinal
Battery
Charge state of the battery
Power input and output
Reactor
Fill rate of the fuel inventory
Relative power output (% power load)
Hydrogen Engine
Fill rate of the fuel inventory
Relative power output (% power load)
Refinery
Fill rate of the input inventory
Fill rate of the output inventory
Assembler
Fill rate of the input inventory
and number of items in the production queue
Fill rate of the output inventory
and completion rate of the current item in queue
The 'make it pretty' stuff
There are several options to spruce up the display.
The following keywords can be combined with other, are not case sensitive and must be separated from the Block/Group name(s) by ether a comma ',' or a colon ':'

Limiting the default view to a single line
Keyword
Function
Custom Data Example
noLineBreak
Each group of icons will only occupy one line, independent of their number.
Icons that don't fit in won't be shown. (But still be counted)
ShowStats
Panel 0
Battery,nolinebreak
...#
For each # behind the block name, one icon will be shown. If there are more # than blocks with that name, a placeholder will be shown.
(Only existing blocks will be counted)
ShowStats
Panel 0
Battery####





Additional text:
You can add a custom text in front of the headline by using the 'Text:' keyword. Note the colon!
Everything between the colon and the end of line will be used as text.
Keyword
Function
Custom Data Example
Text:
Write custom text in front of the headline.
ShowStats
Panel 0
Battery,Text:CustomText
noheadline Text:
Combine with noheadline
to replace headline with your text.
ShowStats
Panel 0
Battery,noheadline Text:CustomText
Text:
Use without block group / block name
to display custom text only.
ShowStats
Panel 0
,Text:CustomText
Caution!!! The 'Text:' keyword must be the very last in line, because everything after the colon will be shown as text.



Free positioning:
You can freely position the icons, bars and text with the 'Position(x,y) keyword.
The X/Y coordinates have to be separated with a comma and enclosed in round brackets.
Keyword
Function
Custom Data Example
Position(x,y)
Choose draw position yourself.
ShowStats
Panel 0
Battery,Position(80,100)
(The next item in the display list will be located on the left screen border again.)


Spacing between icons:
You can leave a gap between icons or bars that you have chained together with the '+' sign
Keyword
Function
Custom Data Example
Gap x
Make a gap of length x and chain objects (groups/blocks) together in one line.
ShowStats
Panel 0
Gap 20 + Battery + Gap 20 + Solar


Insertion of graphics:
You can insert monospace graphics created for example with Whips image-converter: https://github.com/Whiplash141/Whips-Image-Converter
Keyword
Function
Custom Data Example
gfxStart(x,y,fontsize)
[graphic]
gfxEnd
Inserts a monospace picture at the given position. Fontsize is optional and will be 0.1 when not provided.
ShowStats
Panel 0
:gfxStart(10,10,0.2)

gfxEnd
Global Override Options
You can overide individual LCD/Cockpit screen settings by using a special keyword line starting with 'FSD options:' in the Custom Data field of the Programmable block itself.
All keywords for this override options must be in a single line and this line must be located above an optional 'ShowStats' line or else the used keywords affect only the LCD panels of the Programmable block.

Avaible overide option keywords
Only 'FSD options:' is case sensitive. All other keywords for the overide options are not case sensitive.
Keyword
Function
Custom Data Example
NoLineBreak
setting the nolinebreak option on all controlled LCD screens
(the icons in the default display mode will only occupy one line)
FSD options:nolinebreak
NoHeadline
setting the noheadline option on all controlled LCD screens
(Displays group/block/bars without the textline)
FSD options:noheadline
NoScrolling
setting the noscrolling option on all controlled LCD screens
(the textline will not scroll if it is too long)
FSD options:noscrolling
NoNames
setting the nonames option on all controlled LCD screens
(Cuts blocktype names and group names out of the textline)
FSD options:nonames
Right
setting the right alignment option on all controlled LCD screens
(all text will be right aligned)
FSD options:right
Center
setting the center alignment option on all controlled LCD screens
(all text will be centered)
FSD options:center
Optional
setting the nosubgrids option on all controlled LCD screens
(will show the optional data, where avaible)
FSD options:optional
NoSubgridLCDs
FSD will only manage LCD screens on the same grid as the
programmable block running FSD
FSD options:nosubgridLCDs
NoSubgrids
setting the nosubgrids option on all controlled LCD screens
(only blocks on the same grid as the programmable block
running FSD will be shown)
FSD options:nosubgrids
NoGroups
setting the nogroups option on all controlled LCD screens
(skipping the search for matching group names)
FSD options:nogroups
Verbatim
narrows down the block search only to exact name matches
FSD options:verbatim

Options can be combined like in this example:
FSD options:optional noheadline nolinebreak no groups nosubgrids nosubgridLCDs verbatim

When using FSD options: the following keywords in the ShowStats section will act as toggle switches (a.k.a. inverting the setting again):
  • optional
  • noheadline
  • noname
  • nolinebreak
  • noscrolling
  • nosubgrids
  • nogroups

Example:
ShowStats Drill Grinder Welder, noheadline
FSD options:
FSD options:noheadline
Summary / Examples
Block with multiple screens
So let's say you have a cockpit, and you want to display information about your batteries wich all contain the string "Battery" on the second screen, you would have to type the following into the custom data of the cockpit:
ShowStats Panel 1 Battery
Next you want to see the chargestate of all your Jumpdrives wich are all in a group called "MyJumpdrivesGroup", and you want to see it as a single wide bar on the first screen. On the same screen you want to further see the Hydrogen Engine H2 level whereat the Engine is called "Hydrogen Engine".
Panel 0 MyJumpdrivesGroup,WideBar Hydrogen Engine
And on the third screen you want to see how much uranium your Reactor with the name "Reactor 1" has left:
Panel 2 Reactor 1,optional
In summary the custom data of the cockpit would then look like this:
ShowStats Panel 1 Battery Panel 0 MyJumpdrivesGroup,WideBar Hydrogen Engine Panel 2 Reactor 1,optional
Normal (single) screen:
Same as above, you just do not need to type wich panel, so the custom data would look like this:
ShowStats Battery MyJumpdrivesGroup,WideBar Hydrogen Engine,optional WideBar

Advanced Example
For this example make a random group called "Mixed Group", place at least 1 reactor, 1 solar panel, 1 wind turbine and 1 battery. Then place down a widescreen and paste the following to it's custom data:
ShowStats noscrolling,Text:Let's do an example: Mixed Group,position(50,50) solar+gap 80+Reactor,optional solar,WideBar noheadline Text:Energy from above or below? Turbine,widebar gap 20 + Solar,SmallBar battery,SmallBar gap 20 + Reactor,SmallBar

Shields
Two shield mods are supported at the moment:
Defense Shields
https://steamcommunity.com/sharedfiles/filedetails/?id=1365616918
Energy Shields
https://steamcommunity.com/sharedfiles/filedetails/?id=484504816

Example for a single screen (Defense Shields mod with a shield controller named "[A] Shield Controller")
ShowStats [A] Shield Controller
Example for a single screen (Energy Shields mod with a shield generator named "Large Shield Generator")
ShowStats Large Shield Generator
Script configuration
In the config-section of the script, you can change some settings. Open the programmable block via "Edit" so you can see the config and the code of the script.

The tags
Tags should only be changed if
  • There is a conflict with another script
  • You don't like the name and want to use other keywords

If you for example want to change the lcdtag from ShowStats to DisplayStatus, the line must be modified like this:
string lcdtag = "DisplayStatus";

Script updates - how fast the script runs
If you want to save performance, you could change this line:
int scriptUpdatesPerMinute = 60;
to
int scriptUpdatesPerMinute = 30;

So the script will only update your screens every 2 seconds. Higher values than 60 will not make the script run faster for performance reasons.

The fancy colors
You can change every color listed here. I've provided you with a list of colors you can use above the config-section.

If you want to change the headline from white to orange, make the line look like this:
Color headlineColor = Color.Orange;

You could also use RGB-values:
Color headlineColor = new Color(255, 255, 255);
Arguments
The programmable block can be executed with arguments in different ways:
  • Open the terminal gui, select the programmable block, paste the argument into the textbox and hit "Run".
  • Select a button panel, sensor, timer etc. in the gui, click "Setup actions", drag & drop the programmable block into the toolbar and type in the argument.
This shuts down the programmable block and switches all screens black:
shutdown
Turns the programmable block and all screens back on:
powerup
Bind the programmable block with this argument to a sensor that detects the player to hopefully counter multiplayer issues:
refresh
75 Comments
BooseOG Sep 25, 2024 @ 5:00am 
Does anyone have a link to premade screen settings? Would buy you a beer or beverage of your choosing!
MrR0ket0 Feb 8, 2024 @ 8:13am 
em iam missing something or isnt it possible to display total runtime left on batteries/reactor ? cant find a list with all available commands :(
Efie Sep 26, 2023 @ 2:55am 
Ok. So I have FSD Prog Block on both of my grids. The base and my mining ship. Everything working fine, but when I dock my ship to the base via connector, the prog block on the base is not handling any LCD panels. The LCD on my base froze and not updating. But when I undock my ship, the FSD on the base works normally.
Nugut Aug 18, 2023 @ 1:10pm 
Is there a way to make the graphics bigger i want one screen 1x1 LCD full of one graphic
PhobosXL Dec 3, 2021 @ 10:50pm 
Can i change the font size of custom text? i use "noscrolling,center,fontsize:10,Text:Oxygen Tank Level" but it doesn't work
Kilovus Loxic Aug 22, 2021 @ 9:31am 
Is there a way to scale things? I can't seem to find out how.
G-18 Jun 1, 2021 @ 2:54pm 
im here for the sole purpose of getting this to 69 comments
Xinax Apr 4, 2021 @ 6:33am 
I have the problem, that I use one battery mod https://steamcommunity.com/sharedfiles/filedetails/?id=1677937818 and it is not registered as battery, it is recognised as reactor. Is it possible to force the display to show the energy data, because that is the same as a normal battery?
Gurglamesh Dec 25, 2020 @ 9:06pm 
Is there a way to have the LCD display if a sorter has "Drain all" ON or OFF? Or are there other scripts for this? That display the current status of a block?
akitoscorpio Dec 9, 2020 @ 11:10am 
I just wanted to drop in and say how awesome this script is, I like that it's pretty easy for people not great with scripting to use and I was able to get it working easily