ralhue 4 Posted September 8, 2015 Share Posted September 8, 2015 Hallo Carsten,toll was so alles mit LUA geht. Angeregt durch Deine Anleitung "Zwei Achsen steuern gemeinsam das Seitenruder (unpassende Hardware nutzen)" kommt mir die Idee die Cowl Flaps mit einer Saitek-Achse zu steuern.Ist es möglich z. B. bei der Cessna Centurion 210 genau diese Funktion auf eine Achse zu legen obwohl es in X-Plane lediglich die zwei Tastenfunktionen "Move Cowl Flaps to close a bit" und "Move Cowl Flaps to open a bit" gibt? Wenn das realisierbar wäre, könnte man das dann auch für Vergaservorwärmung oder Primer etc. nutzen.LG RalfUups, sehe gerade für Vergaservorwärmung gibt es ja die Möglichkeit der Achsenzuweisung. Link to comment Share on other sites More sharing options...
X-Friese 34 Posted September 8, 2015 Share Posted September 8, 2015 Die Cowl Flaps kann man mit einem Script automatisch öffnen oder schließen. Das macht schon seit Jahren das Script "automatic_cowl_flaps.lua" aus den Beispielen von FlyWithLua.https://github.com/X-Friese/FlyWithLua/blob/master/FlyWithLua/Scripts (disabled)/automatic_cowl_flaps.luaWie man dem Script entnehmen kann stammt es noch aus der "alten Zeit" vor der Einführung der magischen Tabellen. Heute sähe es so aus:xp_ENGN_oil_temp = dataref_table("sim/flightmodel/engine/ENGN_oil_temp") xp_ENGN_cowl = dataref_table("sim/flightmodel/engine/ENGN_cowl") function automatic_cowl_flaps() -- check and set the first engine if xp_ENGN_oil_temp[0] < 0.35 then xp_ENGN_cowl[0] = 0 elseif xp_ENGN_oil_temp[0] >= 0.35 and xp_ENGN_oil_temp[0] < 0.65 then xp_ENGN_cowl[0] = ENGN_oil_temp[0] * 3.3333333 - 1.1166666 else xp_ENGN_cowl[0] = 1 end -- check and set the second engine if xp_ENGN_oil_temp[1] < 0.35 then xp_ENGN_cowl[1] = 0 elseif xp_ENGN_oil_temp[1] >= 0.35 and xp_ENGN_oil_temp[1] < 0.65 then xp_ENGN_cowl[1] = ENGN_oil_temp[1] * 3.3333333 - 1.1166666 else xp_ENGN_cowl[1] = 1 end end do_often("automatic_cowl_flaps()")Man muss hier nur daran denken, dass sim/flightmodel/engine/ENGN_oil_temp einen Wert von 0.0 bis 1.0 besitzt, in der offiziellen Tabelle mit "ratio" bezeichnet. In Celsius bekommt man den Wert als sim/flightmodel/engine/ENGN_oil_temp_c.Wird dem Motor warm, dann öffnen sich die Klappen, sinkt die Öltemperatur auf unter 35% ihres Wertebereichs bleiben die Klappen geschlossen. Realistischer ist sicher die Kopplung ein einen Hebel an der Hardware. Das ginge dann noch einfacher.local xp_JOY_axis = dataref_table("sim/joystick/joystick_axis_values") local xp_ENGN_cowl = dataref_table("sim/flightmodel/engine/ENGN_cowl") local COWL_AXIS = 12 function axis_driven_cowl_flaps() -- set both cowl flaps with one axis xp_ENGN_cowl[0] = xp_JOY_axis[COWL_AXIS] xp_ENGN_cowl[1] = xp_JOY_axis[COWL_AXIS] end do_every_frame("axis_driven_cowl_flaps()")Mit der Variable COWL_AXIS definiert man die Axennummer, die man mit dem DataRefEditor ermittelt. Link to comment Share on other sites More sharing options...
ralhue 4 Posted September 9, 2015 Author Share Posted September 9, 2015 Hallo Carsten,danke - hat prima geklappt. Mit dem DataRefEditor kann ich jetzt schön beobachten, wie sich der Wert vonsim/flightmodel/engine/ENGN_cowländert. Leider wird dieser dataref nicht von simcoders benutzt und das ganze ist damit nutzlos (vom Lernerfolg mal abgesehen). Auch ein umschreiben des script auf:local xp_JOY_axis = dataref_table("sim/joystick/joystick_axis_values") local xp_ENGN_cowl = dataref_table("simcoders/rep/engine/cowl/handle_ratio_") local COWL_AXIS = 70 function axis_driven_cowl_flaps() -- set both cowl flaps with one axis xp_ENGN_cowl[0] = xp_JOY_axis[COWL_AXIS] xp_ENGN_cowl[1] = xp_JOY_axis[COWL_AXIS] end do_every_frame("axis_driven_cowl_flaps()")bringt lediglich ein abkac.... der LUA engine mit sich. Habe jetzt mal Claudio von simcoders angeschrieben - eigentlich ist der sehr nett und hilfsbereit. Mal schauen.Wie kann man eigentlich einen nicht default dataref im Editor beobachten?LG Ralf Link to comment Share on other sites More sharing options...
ralhue 4 Posted September 9, 2015 Author Share Posted September 9, 2015 Also - ich bin ein bisschen weiter. Wenn ich im skript stattlocal xp_ENGN_cowl = dataref_table("sim/flightmodel/engine/ENGN_cowl")local xp_ENGN_cowl = dataref_table("sim/cockpit2/engine/actuators/cowl_flap_ratio")nehme, kann ich im DRE bei beiden refs simultan die Werteänderung von 0 - 1 sehen. Die Cowlflaps zeigen im Flug auch die gewünschte Wirkung. Einziger Schönheitsfehler - im Cockpit bewegt sich der Hebel nicht.Was auch merkwürdig ist, der Drehenkoder, dem ich in einer Richtung "Move Cowl Flaps to close a bit" und in die andere "Move Cowl Flaps to open a bit" zugewiesen habe (dabei bewegt sich der Hebel im Cockpit auch) funktioniert nicht mehr sobald das luaskript aktiv ist.Die von mir zwischenzeitlich getestete Variable"simcoders/rep/engine/cowl/handle_ratio_" scheint es nicht zu geben. Denn wenn die in einem Skript auftaucht stoppt die LUA-Engine.LG Ralf Link to comment Share on other sites More sharing options...
X-Friese 34 Posted September 9, 2015 Share Posted September 9, 2015 Wie kann man eigentlich einen nicht default dataref im Editor beobachten? Hallo Ralf,schau dir mal den letzten Absatz hier an:http://wiki.x-plane.com/DataRefEditorWenn ein Plugin seine Custom DataRefs nicht an den DRE veröffentlicht, dann bleibt nur der Weg dies von Hand in die Datei DataRefs.txt einzutragen.Leider macht so gut wie kein Plugin davon Gebrauch mit dem DRE zu kommunizieren. Link to comment Share on other sites More sharing options...
ralhue 4 Posted September 10, 2015 Author Share Posted September 10, 2015 Hallo Carsten,jetzt passt alles. Claudio von simcoders.com hat sich gemeldet, und mir den passenden Namen des datarefs mitgeteilt. Er lautet nicht"simcoders/rep/engine/cowl/handle_ratio_" wie es in der XPDRFS.lua unter "Custom Avionics\DRFS" stehtsondern"simcoders/rep/engine/cowl/handle_ratio_0" (warum und wieso ist mir auch nicht klar)Ich mußte dann noch ein bischen am Script basteln aber jetzt funktioniert es incl. Anzeige des Hebels im Cockpit.local xp_JOY_axis = dataref_table("sim/joystick/joystick_axis_values")local xp_ENGN_cowl = dataref_table("simcoders/rep/engine/cowl/handle_ratio_0")local COWL_AXIS = 70function axis_driven_cowl_flaps() xp_ENGN_cowl[0] = xp_JOY_axis[COWL_AXIS] enddo_every_frame("axis_driven_cowl_flaps()")Ein weiterer Weg die Custom Datarefs anzuzeigen ist ja Dein Skript "display clist.lua". Das finde ich recht praktisch. Claudio habe ich gebeten in Zukunft doch bitte die DataRefs im DRE zu veröffentlichen.Mal kucken wie es mit dem nächsten REP läuft ;-)Vielen Dank für die tolle UnterstützungLG Ralf Link to comment Share on other sites More sharing options...
X-Friese 34 Posted September 10, 2015 Share Posted September 10, 2015 Hallo Ralf,du kannst auch die Eingabezeile von FlyWithLua verwenden und damit sogar Variablen beobachten. Die dürfen dann allerdings nicht als lokal definiert worden sein, denn dann kann die Eingabezeile die Variable nicht sehen.Die aktuellen Werte werden als Bubble dargestellt.Carsten Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.