Difference between revisions of "Programmable Block"
m (+updating itembox) |
Vox Serico (talk | contribs) m (categories) |
||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{SimpleItembox|Mod:Vanilla/CubeBlock/LargeProgrammableBlock|Size||Mass||Integrity||BuildTimeSeconds||IsAirTight||ResourceSinkGroup||PCU}} |
− | + | {{SimpleItembox|Mod:Vanilla/CubeBlock/SmallProgrammableBlock|Size||Mass||Integrity||BuildTimeSeconds||IsAirTight||ResourceSinkGroup||PCU}} | |
− | + | {{CategorizeComponents|Mod:Vanilla/CubeBlock/LargeProgrammableBlock}} | |
− | |||
− | |||
− | |||
− | | | ||
− | | | ||
− | | | ||
− | |||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | |||
− | | | ||
− | | | ||
− | | | ||
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | }} | ||
== Overview == | == Overview == | ||
Line 64: | Line 9: | ||
Programmable Block scripts run in a single update (single frame) and any that take too long to complete are aborted. This means it is impossible for a single run of the script to 'wait' on any event. If you want your script to run when something happens, you need to either find a way of getting another block to trigger it at the right time (an 'interrupt-driven' approach via eg. a sensor block), or modify your script to check for a precondition and set up a timer to run it regularly (a 'polling' approach). Depending on what your script is doing, one approach may be the preferred or even the only way to do it. | Programmable Block scripts run in a single update (single frame) and any that take too long to complete are aborted. This means it is impossible for a single run of the script to 'wait' on any event. If you want your script to run when something happens, you need to either find a way of getting another block to trigger it at the right time (an 'interrupt-driven' approach via eg. a sensor block), or modify your script to check for a precondition and set up a timer to run it regularly (a 'polling' approach). Depending on what your script is doing, one approach may be the preferred or even the only way to do it. | ||
− | *Since [[Update 01.067]] each programmable block has a maximum limit of ''' | + | *Since [[Update_01.067#Hotfix_01.067.007|Update 01.067 Hotfix 007]] each programmable block has a maximum limit of '''100,000''' characters for any in-game script. |
=== GUI Overview === | === GUI Overview === | ||
Line 154: | Line 99: | ||
== Programming == | == Programming == | ||
* [[Programming_Guide/Action_List#Programmable_block|Action List - Programmable block]] | * [[Programming_Guide/Action_List#Programmable_block|Action List - Programmable block]] | ||
+ | |||
+ | == External links == | ||
+ | * Programmable block [https://github.com/malware-dev/MDK-SE/wiki/Quick-Introduction-to-Space-Engineers-Ingame-Scripts coding guide] - Malware's coding guide | ||
== Update History == | == Update History == | ||
Line 163: | Line 111: | ||
</div> | </div> | ||
+ | [[Category:Functional Blocks]] |
Latest revision as of 22:37, 18 May 2020
Functional
Hack
534,400,000 mg
0.534 t
Functional
Hack
138,400,000 mg
0.138 t
Contents
Overview
A Programmable Block can be programmed to do different functions, like switching lights and controlling doors. It can also be used by entering the control panel in the Terminal. It has almost unlimited functionality.
Usage
Programmable Block scripts run in a single update (single frame) and any that take too long to complete are aborted. This means it is impossible for a single run of the script to 'wait' on any event. If you want your script to run when something happens, you need to either find a way of getting another block to trigger it at the right time (an 'interrupt-driven' approach via eg. a sensor block), or modify your script to check for a precondition and set up a timer to run it regularly (a 'polling' approach). Depending on what your script is doing, one approach may be the preferred or even the only way to do it.
- Since Update 01.067 Hotfix 007 each programmable block has a maximum limit of 100,000 characters for any in-game script.
GUI Overview
The programmable block terminal panel screen currently contains two buttons:
Edit – it will open the editor for editing scripts and the ability to save/load scripts from and to disk. Also, you can upload your scripts to workshop and download subscribed scripts.
Run – it will run the script that was remembered in editor. It will run the script only once. However this button is terminal action, so you can attach it to sensor, timer block, and button or add it to toolbar.
Details section – In this area the script exception will be shown (if any will occur)
Editor
Code editor contains these buttons:
|
Browse Workshop
This screen is similar to blueprint screen and contains these buttons :
|
Details (local script)
This screen will show up when you press details for local script and contains the following buttons:
|
Details (workshop script)
This screen will show up when you press details for script from workshop and it contains these buttons:
- Open in Workshop – it will open the current script workshop page.
- Close – it will close the screen
Media
Tips
Known Issues
- Foreach not working at 64- bit:
Problem - Currently using of foreach loop inside script will cause “bad program exception” at some configurations and prevent script from running. We are working of fixing this issue.
Workaround - All our interfaces used in in-game scripting are using lists as collections. Please use For loop for iteration across these lists
- Lambda functions not working
Problem:
Currently lambda functions are not supported, if you use them in script, exception will be thrown and script will not run.
Workaround -
Please use method instead of lambda function if possible.
- User defined static variables and methods not working
Problem -
Currently using user defined static members or methods will cause script to throw exception and the script will not run.
Workaround -
Please don’t define static methods or variables.
- User defined variables are not saved
Problem -
None of the user defined variables inside script are saved, therefore after loading game they are reset to their default values.
Workaround -
We added string variable called "Storage" that will be loaded and saved when the block is loaded and saved.
See Also
Programming
External links
- Programmable block coding guide - Malware's coding guide
Update History
Update 01.063 |
|