Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
...die kann man ja quasi dann als knopf in einem terminal auslösen lassen.
2 Timerblocks und da die Motor einbringen. 1. Timerblock: Motor AN / Motor Umkehr und 2. Timerblock: Motor Stopp/Aus nach ungeföhr 5 sek und 45° Schleife mit Startzeit.
..dann baust quasi das gleiche modell für die umgekehrte richtung nochmal mithilfe 2 timerblocks. Kannst quasi nicht direkt die Gradzahl bestimmen...aber drückst einmal auf den knopf und der Motor dreht sich dann für 5 Sek in die gewünschte richtung...5 sek für 45° als beispiel...Motor sich je nach gewicht langsamer oder schneller dreht....muss man nur die Startzeit des 2. Timerblock erhöhen/kleiner stellen, um den Motor mithilfe des 2. Timer aus zu machen (fix)
Achso..fast übersehen. Du brauchst für beide Sequenzen noch einen 3. Zeitschaltblock.
Während die ersten beide Motor AN / Umkehr machen..muss der 3. Zeitblock nur die kombi Motor an und Zeitblock 2 in der Sequenz haben. So hast du diesen block zum in eine Richtung weiterdrehen lassen und den anderen 1. Zeitblock mit Umkehr um den wieder in die andere Richtung laufen zu lassen. Der zweite schaltet dann nur Motor aus.
Denk mal, so ist es dann auch möglich mit nur insg. 3 Zeitblöcke den Motor schrittweise zu drehen. 1. Block mit Umkehr. 2. Block zum abschalten und der 3. Schaltet nur an und löst wieder den 2. Block aus nach vlt 5 Sek mit 45°.
So vlt auch praktischer als das erste Beispiel mit 4 Blöcke...dann lieber insg. nur 3.
In den guten zwei Stunden habe ich es einmal geschafft dass der Motor nach einem Klick ca. 90° dreht. Sobald eine zweite Runde ansteht, drifte die Grad Zahl ab. Das Zusammenspiel des Time Block und der Motorgeschwindigkeit scheint nicht ganz einfach zu sein, mittlerweile bewege ich mich nicht mehr in Sekundenbereich sondern im Bereich von Millisekunden und da hab ich so manchmal das Gefühlt das Keen darin nicht sauber gearbeitet hat. Denn nach dem ich den Motor zurückgesetzt habe, war das Erfolgserlebnis nicht mehr da!
Mit Folgender Konfiguration hatte ich eine Runde mit ca. 90° erreicht, danach wich es wieder 2° - 3° ab:
Motor:
- Block umschaltenL: AUS
- Drehmoment: 33.6 MNm
- Bremsmoment: 33.6 MNm
- Geschwindigkeit: 2.483 (2.483 = manuelle Eingabe nötig STRG + Click)
- Unteres Limit: Unbegrenzt
- Obergrenze: Unbegrenzt
Zeitschaltuhr 1:
- Blackumschaltung: EIN
- * Verzögerung: 00:00:01
- Erstellte Befehle
1. Motor - Blockumschaltung: AN
2. Zeitschaltuhr 2: Starten
Zeitschaltuhr 2:
- Blockumschaltung: EIN
- Verzögerung: 00:00:06.985 (6.985 = manuelle Eingabe nötig STRG + Click)
- Erstellte Befehle
1. Motor - Blockumschaltung: AUS
Schaltkonsole
- Knopf 1: Zeitschaltuhr 1: Jetzt auslösen oder Starten*
Da hätte Keen echt mal eine Motorfunktion mehr einbauen können in dem man die Grad Zahl festlegen kann. Wenn noch jemand Optimieren dazu hat, immer her damit. Ich werde mal weiter Experimentieren :)
Hab innerhalb von 2 Tagen angefangen und nen Folge-Autopilot für Fahrzeuge gemacht. Da wirst du auch einen Rotor zum drehen bekommen 😊
Was C++ angeht wirds natürlich schwer, wenn du absolut keine Kenntnisse hast, aber da würde ich an deiner Stelle keine "Space Engineers" Turorials ansehen, sondern generell C++ Tutorials.
Was du dann noch brauchst, sind die Klassen und Funktionen innerhalb vom Spiel. Hierzu hab ich das hier genommen:
- http://dco.pe/vsb/
Das is ein Space Engineers Visual Script Builder. ULTRA praktisch, du kannst da mit nem guten Interface Logik erstellen und dir den entsprechenden Code generieren lassen. So lernst du zum Beispiel total schnell, wie du an einen bestimmten Block über seinen Namen rankommst, oder dessen eigenschaften steuerst, Bzw. generell die Syntax von C++.. Also MEGA gutes Tool zum starten. Einfach paar leichte sachen generieren lassen und im Spiel bisschen dran rumspielen und sehen was so geht.
- https://bloc97.github.io/SpaceEngineersModAPIDocs/html/772c45e8-de4f-90e3-93a9-02f1bbdc4866.htm
Das hier is eine Liste vieler Interfaces bzw Klassen, dies in Space engineers gibt, an die du im Programmable Block rankommst. zum Beispiel wäre dein Rotor ein "IMyMotorStator", kannst du aber auch wie gesagt über den Skript Builder herausfinden. Der hat einen Eintrag "UpperLimit" im Bereich "Properties". Da kämest du zum beispiel ganz einfach mit folgendem zu Rande:
"IMyRotorStator motor = (IMyRotorStator) GridTerminalSystem.GetBlockWithName("Rotor1");
rotor.UpperLimit = oberes_limit;"
- https://fresc81.github.io/SpaceEngineers/annotated.html
Als letztes noch die Dokumentation über ALLE Klassen im Spiel... hier sind nicht alle vom Programmable Block "erlaubt", und es werden auch oft nicht alle eigenschaften jeder Klasse angezeigt, aber trotzdem sehr sehr hilfreich.
Es is eigentlich total einfach und es lohnt sich auch auf jeden Fall, wenn man da bisschen was zaubern kann.. Und Pro Tip: Verbinde immer ein LCD Panel in deinem Skript, wo du dir bestimmte Variablen ausgeben kannst, um zu debuggen. Hier is ein Beispielskript, das ich mal zum Spaß gemacht hab, um mir das Inventar von einem assembler anzeigen zu lassen:
public void Main(string argument, UpdateType updateSource)
{
IMyTextPanel panel = (IMyTextPanel) GridTerminalSystem.GetBlockWithName("LCD");
IMyAssembler assembler = (IMyAssembler) GridTerminalSystem.GetBlockWithName("Assembler");
IMyInventory inventar = (IMyInventory) assembler.GetInventory(1);
List<IMyInventoryItem> itemliste = inventar.GetItems();
string str = "";
foreach(IMyInventoryItem item in itemliste){
str += item.Content.SubtypeId +": ";
str += item.Amount;
str +="\n";
}
panel.WritePublicText(str);
}
Ich kann mir den Spaß gut vorstellen, was man alles mit der Skript Programmierung in SE anstellen kann. Ich habe mir die Links auf die Favoriten gelegt, werde mir das mal am Wochenende genau anschauen. Aber ich gehe davon aus, dass ich als ein Quereinsteiger ein paar Wochenenden mehr brauch um was Funktionierendes zu zaubern.
Und solange der Com. Server den Programmierblock nicht freigibt muss ich mich mit der ersten Idee anfreunden oder den Bau verwerfen. Wobei das zweit fast ehr zutrifft wenn man mit Millisekunden arbeiten muss.
Um die Zeitverzögerungen der Zeitblöcke noch genauer arbeiten zu lassen, kann man im Workshop auch nach Scripte für genauere Zeiteinstellungen gucken und herunterladen. Bessere Frames erzielen beim Anfahren oder auch Anzeigen lassen von Dinge auf den LCD´s die ebenso etwas stuttern, wenn man ein, zwei oder mehr Zeitblöcke in Reihe für etwas einsetzt. Script lässt Zeitblöcke schneller Reagieren...und sowas wäre allerdings auch alleine schnell geschrieben, wenn man sich mit befehlszeilen und tags auch auskennt. Eigentlich nicht so schwer :D