Space Engineers

Space Engineers

View Stats:
StrichcodeDE Nov 13, 2018 @ 5:02am
Motoren per Knopf auf ein bestimmten Grad bewegen.
Gibts eine Möglichkeit per Knopfdruck die Anweisung zu geben das sich der Motor auf 90 Grad dreht, bei einem weiteren Knopfdruck 180 Grad usw. und wenn möglich ohne Script. Dachte man kann das irgendwie mit der customs data festlegen aber gab damit bisher wenig erfolg gehabt.
< >
Showing 1-7 of 7 comments
Flashblaster Nov 13, 2018 @ 9:35am 
kenn da ne möglichkeit mithilfe der timeblocks.

...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.
Last edited by Flashblaster; Nov 13, 2018 @ 1:18pm
StrichcodeDE Nov 14, 2018 @ 1:05am 
Hallo Flashbaster, erstmal vielen Dank für dein Feedback, ich hatte damit er gerechnet das niemand was dazu schreibt. Ich bin jetzt mal nach deine Anleitung gegangen und in der Tat, es geht in die richtige Richtung.
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 :)
CaptainCamembert Nov 14, 2018 @ 4:50am 
Warum möchtest du kein Skript benutzen? Hab auch letztens angefangen mit skripten und obwohl die Einstiegshürde zugegebenermaßen sehr hoch ist, sobald man die mal hat is es mega einfach so simple sachen zu realisieren.

Hab innerhalb von 2 Tagen angefangen und nen Folge-Autopilot für Fahrzeuge gemacht. Da wirst du auch einen Rotor zum drehen bekommen 😊
StrichcodeDE Nov 14, 2018 @ 7:45am 
Von "möchten" ist garnicht die Rede, ich verbringe die meiste Spielzeit auf einen bereitgestellten Community Server, die sich aber sehr schwer tun Scripte oder Mods zu installieren, aber dennoch möchte ich dort gerne meine Schiffe und Stationen idee mit dieser Funktion auszustatten. Wenn es mein eigener spielstand wäre, bin ich garnicht abgeneigt mit scripte zu arbeiten. Insofern es sowas gibt. Gerne würde ich mir meiner eigene Scripte schreiben was so ein Thema mit Sicherheit viel einfacher und genau entwickeln lasst aber die suche nach deutschen Tutorials die sich mit C# in Verbindung mit Space Engineers beschäftigen, da sucht man leider vergebens und erschwerend kommt noch dazu das meine Englisch Kenntnisse gleich bei Null sind. Wenn du Quellen kennst die ich übersehen haben könnte, gern her damit.
CaptainCamembert Nov 14, 2018 @ 11:20am 
Skripe muss man ja auch garnicht "installieren". Wenn die in dem Server erlaubt sind, dann reicht es doch einen Programmable Block herzunehmen und einfach loszulegen.

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);
}
StrichcodeDE Nov 14, 2018 @ 1:42pm 
WoW - das ist mal Input. Vielen Dank! :steamhappy:
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.




Flashblaster Nov 14, 2018 @ 3:35pm 
ohne eigene tags für evtl. die eine oder andere verbesserung, wird man auch nicht drum herum kommen. Das mit den Delays in deinem beschrieben Thread oben, lässt sich auch nicht ganz ohne ein gutes Script beheben. Die Idee mit Rotor in Vanilla so drehen zu lassen ohne mods oder so ist eigentlich nicht schlecht. Allerdings richtig...die Zeitblöcke verzögern alles jedesmal ein wenig und somit wird das besonders im millisekundenbereich schwierig. Bei Drehung ab 45^ bis <180° fällt das gar nicht weiter auf, da man den Motor langsam drehen lassen kann und bei grösseren Gradzahlen der Motor mithilfe des Bremsmoment eher zum stehen kommt, als bei so kleineren 3-4° Drehungen. Rotor hierbei auch zu rucklig anfährt und wieder sofort stehen 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
Last edited by Flashblaster; Nov 14, 2018 @ 3:38pm
< >
Showing 1-7 of 7 comments
Per page: 1530 50

Date Posted: Nov 13, 2018 @ 5:02am
Posts: 7