Jump to content

LUA script für Cockpitmonitor der Geschwindigkeit anzeigt


IxionAlpha

Recommended Posts

Hi,

ich werde noch bekloppt. Ich kann mir auf meinem Monitor alles Mögliche ausgeben. Nur die relevanten Sachen nicht. Skript sieht wie folgt aus... was mache ich falsch?

 

local atmoDensity = (math.floor((unit.getAtmosphereDensity()*1000)))/1000 --export
local altitude = math.floor(core.getAltitude()) --export
local gForce = (math.floor((core.g()*1000)))/1000 --export
local shipVelocity = vec3(core.getVelocity()) --export
local shipAcceleration = vec3(core.getAcceleration()) --export
local pitch = (math.floor((gyro.getPitch()*1000)))/1000 --export
local yaw = (math.floor((gyro.getYaw()*1000)))/1000 --export
local roll = (math.floor((gyro.getRoll()*1000)))/1000 --export


html= [[
    <table style="
            margin-top = 10px;
            margin-left = auto;
            margin-right = auto;
            width: 80%;
            font-size: 3em;">
        <tr>
            <th>Atmosphere Density: </th>
            <th>Altitude</th>
            <th>g Force</th>
        </tr>
        <tr>
            <th>]] ..atmoDensity..[[</th>
            <th>]]..altitude..[[</th>
            <th>]]..gForce..[[</th>
        </tr>
    </table>
    
]]

leftScreen.setHTML(html)

html2= [[
        <table style="
            margin-top = 10px;
            margin-left = auto;
            margin-right = auto;
            width: 80%;
            font-size: 3em;">
        <tr>
            <th>Pitch: </th>
            <th>Yaw</th>
            <th>Roll</th>
        </tr>
        <tr>
            <th>]]..pitch..[[</th>
            <th>]]..yaw..[[</th>
            <th>]]..roll..[[</th>
        </tr>
        <tr>
            <th>Acceleration </th>
            <th>Velocity</th>
        </tr>
        <tr>
            <th>]]..shipAcceleration..[[</th>
            <th>]]..shipVelocity..[[</th>
        </tr>

    </table>
]]
frontScreen.setHTML(html2)

Link to comment
Share on other sites

On 10/2/2020 at 9:17 PM, IxionAlpha said:

local shipVelocity = vec3(core.getVelocity()) --export

vec3(core.getVelocity())? Hm. Kenn ich nich. Heisst zwar nix, aber probier es doch mal mit vec3(core.getWorldVelocity()) :) 

 

Mit vec3() bekommt man allerdings nen Table mit 3 Einträgen - wenn ich das versuche auf nen Screen zu packen bekomm ich nen Fehler:

"unable to concatenate a table value (local 'shipVelocity')"

 

vec3() kannste mit tostring(shipVelocity) ausgeben. Wird dann mit den 3 Achsen als "(x, y, z)" ausgegeben. x ist seitwärts, y ist vertikal und z ist vorwärts-/rückwärts. Keine Ahnung, in welcher Variable oder Methode die richtungsunabhängige, absolute Geschwindigkeit steht. Evtl in deiner getVelocity(), aber solang du da nen vec3() kriegst kannst du's nicht ohne tostring() als String ausgeben ;) 

Link to comment
Share on other sites

Ja starten ab 1 aber der 2. Wert scheit der gerade aus zu sein, vermutlich müsste man die andern beiden verrechnen aber damit hab ich mich nicht beschäftigt, wollte nur die Geschwidigkeit haben um das Fahrwerk automatisch ein (<50kmh)und aus(>50kmh) zu fahren, klapt auch, wenn sie mal nicht verbuggt sind (draussen ob wohl se drin sind xD einmal g drücken fixt das ja).

 

Code in Unit->tick(landing_gear):

local velocity = core.getVelocity()[2]*3.6
local gearExtended = Nav.control.isAnyLandingGearExtended() == 1

if gearExtended and velocity > 50 then Nav.control.retractLandingGears() end
if not gearExtended and velocity < 50 then Nav.control.extendLandingGears() end


Code in unit->start():

unit.setTimer("landing_gear",1)

 

das ist alles

 

 

PS: core.getVelocity() liefert nicht Array sondern Table zurück was ab 1 beginnt

Link to comment
Share on other sites

Ich nutz immer nen Telemeter um die Distanz zum Boden zu messen und das Fahrwerk entsprechend auszufahren :) 

 

Vermute übrigens, dass sich getWorldVelocity() auf die Weltkoordinaten bezieht, da ich nicht immer den gleichen Wert als "vorwärts" beobachte. Werd das wohl auch mal auf core.getVelocity() umstellen ;) 

Link to comment
Share on other sites

  • 4 weeks later...

Eine Funktion für die exakte Geschwindigkeit in km/h wäre:

 

velocity= function()
     local value = core.getVelocity()
     return math.sqrt(value[1] ^ 2 + value[2] ^ 2 + value[3] ^ 2)  *  3.6
end

Da die Geschwindigkeit in Vektoren ausgegeben wird muss das halt umgerechnet werden, wemm das zuviele Kommastellen sind kann das auch einfach mit math.floor() math.ceil() runden

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