Programmaufbau

Der Grundlegende Programmaufbau hat drei Funktionen. Diese werden auch standardmäßig im Editor des Programmierbaren Blocks eingefügt, wenn er neu gebaut wurde:

// Konstruktor, wird beim Programmstart ausgeführt
public Program()
{
} 

// Mit der Funktion Save kann man Werte über die Spielsession hinweg speichern
public void Save()
{
} 

// Die Hauptfunktion, diese wird vom Programmierbaren Block ausgeführt
public void Main(string argument)
{ 
// Hier kommt der Hauptcode hin
}
Standard Skriptaufbau

Zugriffe auf Blöcke des aktuellen Grids

Um auf Blöcke innerhalb des aktuellen Grid zuzugreifen gibt es folgende Möglichkeiten:

» Zugriff per Blockname:

<BlockName> steht für den Namen den du auch im Terminal siehst.

GridTerminalSystem.GetBlockWithName("<BlockName>")

Beispiel:

IMyRemoteControl remote = GridTerminalSystem.GetBlockWithName("Fernsteuerung 1") as IMyRemoteControl;

» Zugriff auf Blockarten:

liste muss eine vorher definierte variable des Typs List<T> sein.

GridTerminalSystem.GetBlocksOfType<IMyLandingGear>(liste);

Beispiel:

// Liste für Fahrwerke
List<IMyLandingGear> alleFahrwerke = new List<IMyLandingGear>();
//Dieser Liste alle Blöcke des Typs Fahrwerk zuweisen 
GridTerminalSystem.GetBlocksOfType<IMyLandingGear>(alleFahrwerke);

» Zugriff auf Blockgruppe:

blockGruppe ist der Name der Gruppe wie Du sie im Terminal angegeben hast.

IMyBlockGroup blockGruppe = GridTerminalSystem.GetBlockGroupWithName(blockGruppe);

Beispiel:

// Name der Blockgruppe definieren
String blockGruppe = "Triebwerke";

// Leere Liste für Blöcke definieren 
List<IMyTerminalBlock> liste = new List<IMyTerminalBlock>();

// Alle Blöcke der Gruppe Triebwerke holen und der liste zuweisen
liste = GridTerminalSystem.GetBlockGroupWithName(blockGruppe) as List<IMyTerminalBlock>;

Block-Klassen, Aktionen und Eigenschaften

Eine Übersicht aller Block-Klassen sowie deren Aktionen und Eigenschaften findest Du in dem Bereich Block-Klassen, Aktionen und Eigeschaften.

Eine Aktion kannst Du bei fast alle Blöcke ausführen, dabei musst Du die Methode ApplyAction("Aktionsname") auf eine Blockinstanz anwenden.

Beispiel:

// Auf einen Timer Block namens 'Zeitschaltuhr 1' aus dem aktuellen Grid zugreifen
IMyTimerBlock timer = GridTerminalSystem.GetBlockWithName("Zeitschaltuhr 1") as IMyTimerBlock;
// Methode ApplyAction() anwenden
timer.ApplyAction("Start");

Setzen und Zurückgeben von Eigenschaftswerten

Wenn man den Wert einer Eigenschaft eines Blockes benötigt, zum Beispiel den aktuellen Zustand zu erfahren, oder ähnliches gibt es folgende Methoden:

GetValueFloat("<Eigenschaftsname>"); //Für Felder mit Zahlenwerten.

GetValueBool("<Eigenschaftsname>");  //Für Felder mit bool'schen Werten (Ja/Nein, Wahr/Falsch)

GetValueColor("<Eigenschaftsname>"); //Für Felder mit Farbwerten

Diese wird einfach auf die Blockinstanz angwendet:

Beispiel:

 

// Ein Timer Block aus dem aktuell Grid
IMyTimerBlock timer = GridTerminalSystem.GetBlockWithName("Timer 1") as IMyTimerBlock;
// Gibt aus ob der Timer countdown läuft oder nicht bool isRunning = timer.GetValueBool("IsCountingDown");

 

 

Wenn man für eine Eigenschaft einen neuen Wert setzen möchte, zum Beispiel eine Fernsteuerung als Hauptcockpit festlegen, gibt es folgende Methoden:

SetValueFloat("<Eigenschaftsname>", 1.2); //Für Felder mit Zahlenwerten.

SetValueBool("<Eigenschaftsname>", true);  //Für Felder mit bool'schen Werten (Ja/Nein, Wahr/Falsch)

SetValueColor("<Eigenschaftsname>", NeueFarbe); //Für Felder mit Farbwerten

Diese wird einfach auf die Blockinstanz angwendet:

Beispiel:

 

// Eine Fernsteuerung aus dem aktuell Grid
IMyRemoteControl remote = GridTerminalSystem.GetBlockWithName("Fernsteuerung 1") as IMyRemoteControl;
// Setzt den Haken Main Control remote.SetValueBool("MainCockpit",true);

 

Eine Liste der möglichen Aktionen findet ihr hier.


Blanko Datei für Visual Studio

© 2019 SpaceEngineering.de
Dies ist keine offizielle Seite von Keen Software House oder Steam