Jump to content

Suche LUA HUD für Cockpit in der 3rd person


Heidenherz

Recommended Posts

Ein fertiges Script hab ich leider nicht, aber du kannst den HUD-Screen aktivieren und alles selbst draufbasteln, so wie du es haben möchtest.

 

-- im unit.start() den HUD-Screen aktivieren
system.showScreen(1)

-- im system.update() die Screen-Inhalte setzen
system.setScreen('<div style="width: 50%; height: 50%; position: absolute; left: 25%; top: 25%; background: rgba(0, 0, 0, 0.5); color: white;"><h1>Irgendein HTML-Inhalt</h1><p>Post Scriptum: Hello World!</p></div>')

 

system.update() wird bei jedem Frame ausgeführt - wenn du Dinge hast, die nicht ständig live berechnet werden müssen, kannst du dir auch ne Timerfunktion basteln, die nur alle paar Sekunden läuft und weniger Rechenlast verursacht.

 

Da bspw die Tanks bereits im default unit.start() in einem Array namens atmofueltank und spacefueltank landen, kannst du per atmofueltank[1].getItemsMass() etc den Füllstand holen - bekommst allerdings Kilos geliefert und müsstest es dann selbst in Liter umrechnen. Vorteil: Die Angabe in Kilo ist wesentlich präziser :D 

 

Beschleunigung und so kriegst du als vec3 Object via vec3(core.getWorldVelocity()). Ich vermute mal, dass es die normalerweise im HUD angezeigte Geschwindigkeit auch in irgendeiner fertigen Variable abzugreifen gibt - kenne ich aber noch nicht.

 

Der HUD-Screen wird jedenfalls auch in der 3rd Person angezeigt und braucht keinerlei Element oder so. Einfach aktivieren und HTML reinpacken :) 

Link to comment
Share on other sites

1 hour ago, vertex said:

Ein fertiges Script hab ich leider nicht, aber du kannst den HUD-Screen aktivieren und alles selbst draufbasteln, so wie du es haben möchtest.

 


-- im unit.start() den HUD-Screen aktivieren
system.showScreen(1)

-- im system.update() die Screen-Inhalte setzen
system.setScreen('<div style="width: 50%; height: 50%; position: absolute; left: 25%; top: 25%; background: rgba(0, 0, 0, 0.5); color: white;"><h1>Irgendein HTML-Inhalt</h1><p>Post Scriptum: Hello World!</p></div>')

 

system.update() wird bei jedem Frame ausgeführt - wenn du Dinge hast, die nicht ständig live berechnet werden müssen, kannst du dir auch ne Timerfunktion basteln, die nur alle paar Sekunden läuft und weniger Rechenlast verursacht.

 

Da bspw die Tanks bereits im default unit.start() in einem Array namens atmofueltank und spacefueltank landen, kannst du per atmofueltank[1].getItemsMass() etc den Füllstand holen - bekommst allerdings Kilos geliefert und müsstest es dann selbst in Liter umrechnen. Vorteil: Die Angabe in Kilo ist wesentlich präziser :D 

 

Beschleunigung und so kriegst du als vec3 Object via vec3(core.getWorldVelocity()). Ich vermute mal, dass es die normalerweise im HUD angezeigte Geschwindigkeit auch in irgendeiner fertigen Variable abzugreifen gibt - kenne ich aber noch nicht.

 

Der HUD-Screen wird jedenfalls auch in der 3rd Person angezeigt und braucht keinerlei Element oder so. Einfach aktivieren und HTML reinpacken :) 

Das zeigt mir dann jetzt ein zusätzliches HUD-Element in der first person an, die 3rd person ist aber weiterhin vollkommen blank ?

Link to comment
Share on other sites

Is ja schräg... bei mir bleibt der System-Screen auch in der 3rd Person sichtbar. Muss dann wohl am Cockpit liegen, dass das komplett alles raus nimmt - inklusive Screen :(

 

Hoffe da gibt's noch ne Lua Variable... weiss es aber leider nicht.

Link to comment
Share on other sites

  • 2 weeks later...

Einer im englischen Forum hat eine Lösung dafür gepostet und es funktioniert super:

 

Sieht dann so aus:

RyPHW4M.png

 

Jetzt muss ich nur noch herausbekommen wie ich die 2. atmo und space tanks darein bekomme ^^

 

edit: Habs geschafft \ o /

 

Y76tsZU.png

 

Wenn einer das mit 2 Tanks und ohne Radar usw. so hinzufügen will:

-- in das Cockpit bei unit start() einfach ganz oebn rein packen
unit.setTimer("Up3rd",0.08)

-- add filter bei unit und tick hinzufügen. umbennen auf Up3rd und dann das rein

databank.setStringValue("cockpit",unit.getData())
databank.setStringValue("atmofueltank",atmofueltank_1.getData())
databank.setStringValue("spacefueltank",spacefueltank_1.getData())
databank.setStringValue("atmofueltank2",atmofueltank_2.getData())
databank.setStringValue("spacefueltank2",spacefueltank_2.getData())

-- das programmingboard brauch auch ein paar änderungen

-- bei unit start kommt das rein

----cockpit main-----
cockpit= databank.getStringValue("cockpit")
panelmain = system.createWidgetPanel("3rd Person Cockpit")

widgetValuemain = system.createWidget(panelmain, "cockpit")
dataValuemain = system.createData(cockpit) 
system.addDataToWidget(dataValuemain, widgetValuemain)

----atmos widget-----
cockpitatmo= databank.getStringValue("atmofueltank")
panelatmo = system.createWidgetPanel("Nitron")

widgetValueatmo = system.createWidget(panelatmo, "fuel_container")
dataValueatmo = system.createData(cockpitatmo)
system.addDataToWidget(dataValueatmo, widgetValueatmo)

----atmos widget-----
cockpitatmo2= databank.getStringValue("atmofueltank2")

widgetValueatmo2 = system.createWidget(panelatmo, "fuel_container")
dataValueatmo2 = system.createData(cockpitatmo2)
system.addDataToWidget(dataValueatmo2, widgetValueatmo2)

----spaces widget-----
cockpitspace= databank.getStringValue("spacefueltank")
panelspace = system.createWidgetPanel("Kergon")

widgetValuespace = system.createWidget(panelspace, "fuel_container")
dataValuespace = system.createData(cockpitspace)
system.addDataToWidget(dataValuespace, widgetValuespace)

----spaces widget2-----
cockpitspace2= databank.getStringValue("spacefueltank2")


widgetValuespace2 = system.createWidget(panelspace, "fuel_container")
dataValuespace2 = system.createData(cockpitspace2)
system.addDataToWidget(dataValuespace2, widgetValuespace2)


unit.hide()
unit.setTimer("pbcp",0.08)



--- bei unit den filter tick erstellen und pbcp nennen, dann das hier da rein

cockpit= databank.getStringValue("cockpit")
system.updateData(dataValuemain, cockpit) 
cockpitatmo= databank.getStringValue("atmofueltank")
system.updateData(dataValueatmo, cockpitatmo) 
cockpitspace= databank.getStringValue("spacefueltank")
system.updateData(dataValuespace, cockpitspace) 
cockpitatmo2= databank.getStringValue("atmofueltank2")
system.updateData(dataValueatmo2, cockpitatmo2) 
cockpitspace2= databank.getStringValue("spacefueltank2")
system.updateData(dataValuespace2, cockpitspace2) 

Vorausgesetzt ihr hab den original englischen Post gelesen und euch schon eine Datenbank und ne Programmierschnittstelle besorgt, kann es damit losgehen. Vor dem einsteigen das Board anmachen, dann einsteigen. (einfach in die Voxel drücken, so dass nur nen kleines Stück rausguckt, was man dann andrücken kann. Die Datenbank kann voll versenkt werden.)

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...