Jump to content

Lua Anzeige ändern


Recommended Posts

Hallo zusammen,

 

ich habe mal eine kleine Frage bezüglich zu den Einstellungen in LUA, ich arbeite aktuell noch mit den Standartkonfigurationen für Fly mit LUA für mein kleinen Frachter, wie man auf den Bild sieht ist jedoch die Treibstoffanzeige für Nitron Treibstoff unten so das ich es nur sehen könnte wenn ich die Steuerung auf Tastatur einstelle, da ich aber Tastatur mit direkter Maussteuerung eingestellt habe kann ich nicht nach unten schauen.

 

Gibt es in LUA die Möglichkeit die Treibstoffanzeige unter der Raumschifftreibstoffanzeige zu packen?

 

Vielen Dank vorab schon mal für eure Infos.

 

LG der Nofrog

anzeige.jpg

Link to comment
Share on other sites

Zur Info: nur beim Cockpit sind die Widgets außerhalb des Sichtbereiches platziert. Die anderen Stühle haben das Problem nicht.

 

Umschauen kannst du dich, indem du die Alt-Taste gedrückt hälst.

 

Zugriff auf die Tanks per LUA müsste möglich sein. Bei dual.sh findet man den LUA Codex als HTML-Version. Im Installationsordner des Spiels auch irgendwo, weiss aber nicht, ob der aktuell taugt.

 

Ich könnte mir vorstellen, dass man Fuel Tanks als Container ansprechen kann. Kannst per F1 den Codex im Spiel öffnen und oben rechts "Container" eingeben, dann findest du die verfügbaren Methoden unter Scripting -> Element API -> Container unit.

 

getItemsMass() könnte möglicherweise den Füllstand zurückgeben - laut Codex erhält man allerdings nur kg und muss das dann anhand der Masse des Sprits (in der Beschreibung in kg/L angegeben) umrechnen.

 

Da die Tanks automatisch mit dem Cockpit verlinkt werden und die Slots mit atmofueltank_# und spacefueltank_# bezeichnet werden, müsstest du (sofern man sie als Container ansprechen kann) wie folgt darauf zugreifen können:

 

atmofueltank_1.getItemsMass()

 

Kannst den Krempel direkt auf deinem HUD ausgeben lassen. Dazu per system.showScreen(1) das HUD overlay aktivieren und mit system.setScreen(...) den Inhalt setzen.

 

Ergo:

system.showScreen(1)
system.setScreen(atmofueltank_1.getItemsMass())

Die erste Zeile kannste in unit.start() und die zweite in system.update() stopfen.

 

Habe es gerade ausprobiert. 443L Nitron Fuel im Tank gibt 1770.69kg aus. Nitron sollte 4kg/L haben - das wären dann rechnerisch 1772kg. Kommt also hin und ich vermute, die Kiloangabe ist sogar präziser :D 

 

hud.jpg.9dfca3f61f3ae437ceff24c46a037a57.jpg

Link to comment
Share on other sites

Dank dir erst mal für die ganzen Infos :)

Ich merke schon das ich mich doch weit mehr mit dem Thema lua befassen muss als zuvor angenommen, aber in Laufe der Zeit wird es sicherlich auch einige gute Videos dazu geben in Bezug auf dual universe, bisher ist da ja leider noch nicht so viel content.

 

Wie gesagt erst mal lieben Dank für deinen sehr ausführlichen Beitrag und deine Hilfe generell hier im forum. 

LG der Nofrog

Link to comment
Share on other sites

Kein Ding - freut mich wenn ich nicht nur nerve :D

 

5 hours ago, Nofrog said:

Ich merke schon das ich mich doch weit mehr mit dem Thema lua befassen muss als zuvor angenommen

LUA Scripting wirkt erst mal etwas konfus, aber für den Einstieg sind nur ein paar Grundideen wichtig: Slots, Filter und HTML.

 

Elemente und Slots

  • Elemente auf die man zugreifen will müssen mit dem Controller (Cockpit, Stuhl, Programming Board) verlinkt werden
  • bei manuellen Links werden die erstmal mit slot# durchnummeriert und können umbenannt werden
  • Zugriff auf die Elemente immer per slotname.methode()

Filter start(), stop(), inputDown(), inputUp(), update(), flush()

  • Jeder Slot kann diverse Filter bekommen, welche man am Ende der zweiten Spalte über die Buttons hinzufügen kann.
  • Die Konstruktinitialisation bzw Shutdown-Routine findet man unter unit.start() bzw unit.stop() und wird immer automatisch bei der ersten Aktivierung erstellt, oder wenn man manuell "run default autoconfigure" ausführt.
  • Alles was man bei start() und stop() rein schreibt wird beim Aktivieren/Verlassen des Controllers ausgeführt.
    Beispiel für einen verlinkten Bildschirm mit dem Slotnamen "screen":
    • screen.start() -> screen.setHTML("<h1>Good bye cruel world!</h1><p>Ready to go to space.</p>")
    • screen.stop() -> screen.setHTML("<h1>OFFLINE</h1>")
    • Kann man auch in unit.start() und unit.stop() platzieren; wird aber unübersichtlich.
  • update() wird bei jedem Frame ausgeführt. Hier können dynamische Screen-Inhalte wie bspw Fluginformationen gesetzt werden. Mit fallender Framerate sinkt auch die Ausführungsfrequenz dieser Methode.
  • flush() wird bei jedem Rechenzyklus ausgeführt. Vorsicht: Wer hier zuviel rein packt kann mit Leistungseinbrüchen belohnt werden. Wenn es nicht absolut wichtig ist nimm lieber update().

So ziemlich alle Anzeigen können per HTML und CSS formatiert werden.

  • Wer keine Ahnung von HTML hat folgt diesem Link
    https://selfhtml.org/
  • Wer keine Ahnung von CSS hat folgt diesem Link
    https://css-tricks.com/
  • Wenn etwas nicht funktioniert wie erwartet, hier findet man eine Liste des in DU unterstützten CSS Umfanges
    https://coherent-labs.com/Documentation/cpp-gameface/df/d2c/css_props.html
  • Es gibt diverse Methoden um Anzeigeninhalte zu setzen. Einige davon liefern eine Referenz auf das HTML-Element zurück, sodass man dessen Inhalt nachträglich manipulieren oder entfernen kann.
    • screen.addContent(x, y, "html")
      Fügt an der Position x% (von links) und y% (von oben) einen Inhalt ein und gibt eine ID zurück, die wir später benutzen können.
      Beispiel zum Hinzufügen einer zentrierten Box mit der ID foo und dem Text "bar":
      foo = screen.addContent(40, 40, "<div style="width: 20%; height: 20%; background: #fff; color: #000;><p>bar</p></div>")
      Anschließend können wir die Box entfernen mit:
      screen.deleteContent(foo)

 

Sieht umfangreicher aus als es eigentlich ist. Bitte gebt Bescheid falls die Beispiele oben nicht funktionieren - ich hab grad leider keinen Test-Screen zur Hand :) 

Link to comment
Share on other sites

Servus, ich bin grad dabei ein paar Videos zum Thema LUA und Dual Universe zu machen. Für Fragen / Anregungen und evtl. auch gemeinsame Entwicklung bin ich offen.

https://www.youtube.com/watch?v=_QyYHLxXgG0 

Die Scripts, die ich bisher gemacht hab, gibts hier: https://gitlab.com/Phash/dual-universe-scripts/-/tree/master/Snippets

Falls wer mitarbeiten mag, einfach anfragen - da könnte man schon viele coole Dinge machen, wenn man die Zeit findet

Link to comment
Share on other sites

1 hour ago, PhashX said:

Servus, ich bin grad dabei ein paar Videos zum Thema LUA und Dual Universe zu machen. Für Fragen / Anregungen und evtl. auch gemeinsame Entwicklung bin ich offen.

https://www.youtube.com/watch?v=_QyYHLxXgG0 

Die Scripts, die ich bisher gemacht hab, gibts hier: https://gitlab.com/Phash/dual-universe-scripts/-/tree/master/Snippets

Falls wer mitarbeiten mag, einfach anfragen - da könnte man schon viele coole Dinge machen, wenn man die Zeit findet

Du bist mein persönlicher HELD!

Tausend Dank für das Video.

 

Mach bitte weiter so, das ist absolut super!

 

BTW. Das Rechtesystem ist relativ simpel, wenn du da noch ne Frage hast, schreib mir gern einfach :).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...