- Click "Subscribe" on the SDS-OS page: Here
- Install the program block on Your ship
- Set the control cockpit (or several), use the part in the name of the cockpit as a prefix to search for them with the script
- Put the LCD display. The standard prefix for display search is LCD (You can change it)
- Click "Edit", then "Browse Scripts", there we find SDS-OS in the list, compile the script ("Check Code" and "OK")
- If desired, from the top of the script, copy the blank, which is then inserted into the "Custom Data"
/*** You should copy the example below to Custom Data section of your programmable block ...Here is the blank, copy it !...*** End of the Custom Data section ***/
- Run the program block with the argument setup (or click "Recompile"). Each time you update Custom Data, you should enter this argument to update the script
- Edit this basic config in "Custom Data". You can use this to set all the necessary parameters:
- Customize menu and submenus
- Change the design color
- Set other settings
Note:
[Main] - required section
[Add] and [Color] - these sections may be missing partially or completely, all parameters have default values
[Main]CockpitPrefix=Cockpits - prefix that must be present in the name of all cockpits (pilot seats or remote control units), that the script will be managed fromLCDPrefix=LCDs - prefix used to search for used displays[Add]Prefix= - prefix added to the beginning of all block names when searching, which the script is looking for (there is one exception *bl*) it may be useful if the names of all blocks in the building start the same way Attention! Watch for spacesScreen=0 - number of the screen in the cockpit, which displays informationDefaultMenu=0 - sets the menu page, displayed when the script startsWASDAutoDisable=true - automatically disables WASD control when leaving the cockpit, If set to "false", the cockpit will control the script, not the ship. until you disable itSwitchThrusters=false - if set to "true" disables engine control in WASD mode, If false, the traction control (thrust override) is activated (highly recommended when flying in gravity)SwitchGyros=true - if set to "true" disables gyroscope control in WASD modeSwitchWheels=false - if set to "true" disables wheels control in WASD modeLCDAutoOff=false - turn off transparent screens in the absence of WASD controlWASDPrgOn=-1 - specify the numbers of subprogramme to be executed when WASD is switching onWASDPrgOff=-1 - specify the numbers of subprogramme to be executed when WASD is switching off[Color]BackgroundColor=0,0,0 - the background color in the format R,G,B from 0 to 255ItemBarColor=0,6,12 - background color of inactive barsMainColor=10,160,255 - main colorSelItemBarColor=10,160,255 - color of inactive barsSelItemTextColor=0,0,0 - text color on the active barOnColor=225,65,100 - color of the enable iconArrowColor=155,225,255 - the color of the scroll arrowsErrorMSGColor=225,65,100 - color of error messagesHelpColor=155,225,255 - hint color[TopMenu] - the color of suggestions is the section that sets the top menu. Items must go in order, starting from 0 The number of items is equal to the number of menus. For example the config for a 2 page menu is given0=Lights & Doors - lights and doors control page1=Thrusrs & Batt - thrusters and batt control page[0] - section of lights and doors control pointsLight 1;bl;Corner Light;onoffLight 2;bl;Corner Light 2;onoffAll Lights;gr;Lights;onoffDoor 1;door;Sliding Door;toggleDoor 2;door;Sliding Door 2;toggleAll Doors;gr-door;Doors;toggle[1] - section of thrusters and batt control pointsBrake Thrusters;thrust;all/backward;onoffAll Thrusters;thrust;all/all;onoffInv Vol;all-show;*;invShip Mass;all-show;*;mass/total/100000All Batts;all-show;*;batt
/*** Let's analyze one item ***/
Light 1 - what will be written on the screen (display text)
; - separator
bl - type of command (managing block activation)
Corner Light - block name (the script searches for the Prefix + this name)
onoff - command argument (enabling / disabling the block)
Also, you can now add the number of the subroutine that is started when it is activated to any menu item
For example, here we added
/5 at the end of the line
Light 1;bl;Corner Light;onoff/5
Now, when you switch the Corner Light, the subprogram number 5 will start immediately
All other points are configured using this example
Here are some examples of more advanced commands:
- Airlock management (a group of 2 doors, named
Airlock Doors), and opening delays of 0 and 2 seconds
My Airlock;gr-airlock;Airlock Doors;0/2
- Sets the radius of the antenna base 3000 m distance and +/- 500m a step of its change:
Antenna Radius;antenna;Antenna;3000/500
- View inventory load in a group with the name
Cargo Containers
Cargo Fill;gr-show;Cargo Containers;inv
Automated AirLocks
AirLocks with controlled by the SDS-OS script are now available.
Add doors to the group, also you can add Sensors (to identify the player), and AirVent (to pump air out of the airlock).
In the minimum configuration 2 doors are requred.
Example:
[AutoAirlocks]AutoAirlock;gr;1.5;0Group_name; gr; Time_to_AutoClose; Air_Pumping_Time
The menu items are formed as follows
The text to be displayed; a command type; block name; the command arguments
Note:
$Variable, for example, instead of $Time_1/$Time_2 you need to specify 2 parameters 5/3
Command type
Command description
The command arguments
Description of arguments
pb
Programmable block
a command passed to another program block
bl
blk
any_block
block_on_the_current_grid
on
off
onoff
turn_on
turn_off
toggle_on/off
*bl*
*blk*
search for blocks by part name
only on the current grid
on
off
onoff
turn_on
turn_off
toggle_on/off
gr
group of any blocks
on
off
onoff
turn_on
turn_off
toggle_on/off
gr-gr
alternate inclusion of 2 groups
$group1_name;$group2_name
group names
gr-airlock
gateway group (must consist of 2 doors)
$time_1/$time_2
time1/time2 (delay in seconds)
antenna
gr-antenna
antenna
group_of_antennas
$set_R/$change_R
set_the_radius/change_step
beacon
gr-beacon
beacon
group_of_beacons
$set_R/$change_R
set_the_radius/change_step
batt
gr-batt
battery
group_of_batteries
mode
auto
recharge
discharge
mode_selection
auto-mode
recharge
discharge
conn_lock
gr-conn_lock
connector
group_of_connectors
lock
unlock
toggle
lock
unlock
toggle_lock
conn_collect
gr-conn_collect
connector
group_of_connectors
on
off
toggle
collect
not_collect
toggle_collect
conn_throw
gr-conn_throw
connector
group_of_connectors
on
off
toggle
throw
not_throw
toggle_throw
door
gr-door
door
group_of_doors
open
close
toggle
open
close
toggle_open/close
grav
gr-grav
gravity_generator
group_of_gravgens
$grav/$ch_g
$grav/set/$grav
set_gravity/change_step
set_gravity/set/set_gravity
jump
gr-jump
jump_drive
group_of_jump_drives
charge
off
toggle
charge_on
charge_off
toggle_charge
jump_dist
gr-jump_dist
jump_drive
group_of_jump_drives
$set_distance
$set_distance/$change_dist
set_jump_distance
set_jump_distance/change_step
light
gr-light
light source
group_of_lights
сolor=$R,$G,$B/
radius=$Radius(m),$Intensity/
blink=$Interval,$Length
сolor=R(0-255),G(0-255),B(0-255)/
radius=Radius,Intensity/
blink=Interval(sec),Length(0-100)
(you can use one group of parameters)
lgear_auto
gr-lgear_auto
landing_gear
group_of_lgears
on
off
toggle
autolock_on
autolock_off
toggle_autolock
lgear_lock
gr-lgear_lock
landing_gear
group_of_lgears
lock
unlock
toggle
lock
unlock
toggle_lock
piston_att
gr-piston_att
piston
group_of_pistons
attach
detach
toggle
$Min_distance/$Max_distance
attach
detach
toggle_attach/detach
Minimum/Max_distance
piston_vel
gr-piston_vel
piston
group_of_pistons
$vel/$change_vel
$vel/set/$vel
reverse/$vel
reverse/set/$vel
set_velocity/change_step
set_velocity/set/set_velocity
reverse/change_step
reverse/set/set_velocity
rotor_att
gr-rotor_att
rotor
group_of_rotors
attach
detach
toggle
$Min_angle/$Max_angle
attach
detach
toggle_attach/detach
Minimun/Max_Angle
rotor_lock
gr-rotor_lock
rotor
group_of_rotors
lock
unlock
toggle
lock
unlock
toggle_lock
rotor_vel
gr-rotor_vel
rotor
group_of_rotors
$vel/$change_vel
$vel/set/$vel
reverse/$vel
reverse/set/$vel
set_velocity/change_step
set_velocity/set/set_velocity
reverse/change_step
reverse/set/set_velocity
sound
gr-sound
sound_block
group_of_sound_blocks
play stop/
$Sound/
$Loop_Time
play stop/
sound_name/
loop_time
sorter_drain
gr-sorter_drain
sorter
group_of_sorters
on
off
toggle
drain_all
not_drain_all
toggle_drain
sorter_list
gr-sorter_list
sorter
group_of_sorters
black white/
$Ore_or_Ingot
filter_mode
ore_or_ingot_name
example: white/Ore-Stone,Ingot-Gold
stockpile
gr-stockpile
gas_tank
group_of_gas_tanks
on
off
toggle
stockpile
not_stockpile
toggle_stockpile
timer
gr-timer
timer
group_of_timers
trigger
start
stop
toggle
trigger_now
start_timer
stop_timer
toggle_start/stop
timer_delay
gr-timer_delay
timer
group_of_timers
$set_time/$change_time
set_delay/change_step
turret
gr-turret
turret
group_of_turrets
shoot
tcharacters
tstations
tlargeships
tsmallships
tmeteors
tmissiles
tneutrals
shoot_now
target_characters
target_stations
target_large_ships
target_small_ships
target_meteors
target_missiles
target_neutrals
vent
gr-vent
air_vent
group_of_air_vent
press
depress
toggle
pressure o2
depressure o2
toggle pressure
write
gr-write
block_with_lcd
group_of_blocks
screen=$Num/
size=$FontSize/
color=$R,$G,$B/
background=$R,$G,$B/
text=$Text
nltext=$Text
addtext=$Text
clear
font_size
сolor=R(0-255),G(0-255),B(0-255)
background_color
the_text_to_display
text_from_a_new_line
add_text
clear_the_screen
remote
gr-remote
remote_control
group_of_remote_controls
on
off
toggle
enable_autopilot
disable_autopilot
toggle_autopilot
waypoint
gr-waypoint
remote_control
group_of_remote_controls
GPS:$Name:$X:$Y:$Z
(GPS in the standard format)
load_GPS_in_remote
show
gr-show
all-show
block
group_of_blocks
all_found
inv
gas
batt
jump
power
mass/(cargo total)/$Max_mass
grav/(art nat total)
(data display):
blocks_with_inventory
blocks_with_gas
batteries
jump_drives_charge
power_sources
mass/(cargo or all_ship)
gravity/(artifical natural or total)
thrust
all atmo hydro ion/all left right up down forward backward
(engine type/direction)
on
off
onoff
on
off
toggle_on/off
Control in WASD mode
The mode is enabled / disabled by sending commands to the program block:
wasd
wasd_on
wasd_off
wasd;$ID, where $ID - cockpit ID (see below)
Button assignment:
- W - the cursor up
- S - the cursor down
- Q - previous menu
- E - next menu
- A - decrease the parameter
- D - increase the parameter
- Space - apply
This parameter specifies whether to automatically disable WASD control when the pilot leaves the cockpit:
WASDAutoDisable
Control of the gyroscopes and the rest from the cockpit will be switched on / off depending on the configuration of the following parameters:
SwitchThrusters
SwitchGyros
SwitchWheels
Attention !
The game Space Engeneers is made so that the buttons that control the cursor in the script,
they also control the ship's thrusters / gyroscopes.
To avoid this effect the script has a simple autopilot (thrust override control) which,
when the WASD mode is turned on and there is gravity, sets the exact same thrust on all found engines as it was before.
To enable this mode, the parameter must be set:
SwitchThrusters =
false
It is recommended to set on ships flying in the field of gravity
WASD control, when playing on a server with multiple cockpits with multiple cockpits and multiple players
Unfortunately, it is impossible to implement the possibility of determining from which cockpit the command to control is given. Therefore, for the script to work correctly while managing WASD at the same time, it is necessary to:
- In the name of the cockpit, use any number from 0 to 9999 as a prefix. This number, let's call it ID, can stand anywhere in the cockpit name, at the beginning, middle or end, no matter
- The ID of each cockpit must be unique. ID numbering can be arbitrary, they can go out of order
- When setting the WASD activation argument on the cockpit, use the following command:
wasd;$ID
For example: wasd;0 or wasd;15, for 0 and 15 cockpit respectively
When using the normal command wasd, control will be activated on all cockpits of the ship if the pilot is there
Managing arguments
In addition to controlling WASD, you can also control it using arguments that can be passed to the program block:
- setup - initial initialization (you can call to apply changes from Custom Data)
- up - the cursor up
- down - the cursor down
- prev - previous menu
- next - next menu
- left - decrease the parameter
- right - increase the parameter
- enter - apply
- wasd - switch the WASD control mode
- wasd_on - enable WASD
- wasd_off - disable WASD
- run - run the command you wrote. Allows you to send commands to the script from the button panel or cockpit panel. The command is built in the same way as described in the "Commands" section, but with a slight change:
run; command type; block name; command arguments
For example, to control a airlock (a group of 2 doors with the name Airlock Doors),
from the button panel located next to it:
run;gr-airlock;Airlock Doors;2/4
- stop - force stopping all running subprogrammes
A subprogramme is an option that allows you to set several consecutive actions at once in a single click without using timers. You can also run the following series of commands from the subprogramm after an arbitrary delay. In this way, you can start a whole chain of actions with a single click.
Features of the subprogrames
- The subprogramme consists of the following sections
- Each section begins with a header enclosed in square brackets []
- The header consists of a number (section number) and a custom comment, the presence of this comment allows the script to distinguish the subroutine from the menu page
- Section numbers must start with 0 and go in ascending order
Examples of headers:
[0 Start sub-progam][1 Somthing actions]
- Each section contains a list of commands
- The command is built in the same way as described in the "Commands" section
custom comment; command type; block name; command arguments
Command features
- Within each section, all commands are run simultaneously
- To start the next section, use the command:
$Custom_comment; run; $Section_number; $Delay_in_seconds
- If the [X] section is currently running, it will not start when the same [X] section
- To force the termination of all sections, you must submit an argument to the program block:: stop
Example for a light
Interior Light and door
Sliding door:
[0 Start sub-progam]Turn on the lamp;bl;Interior Light;onRed color without blinking;light;Interior Light;color=255,0,0/blink=0,0After 3 seconds, go to section [1];run;1;3[1 next]Open the door;door;Sliding Door;openAdding flickering for the lamp;light;Interior Light;blink=0.5,50After 5 seconds, go to section [3];run;2;5[2 here we close our door]Close the door;door;Sliding Door;closeTurning off the lamp;bl;Interior Light;offRemoving the flicker;light;Interior Light;blink=0,0And if we want to loop to infinity in 3 seconds we run [0] section ;run;0;3
To start this routine from the main menu, the settings item will look like this:
Run sub-program;run;0;0
And to start [0] section from the button panel, with a delay of 5 seconds:
run;run;0;5