Snake82 0 Posted July 24, 2017 Share Posted July 24, 2017 Hallöchen, ich habe ein kleines Problem und zwar versuche ich gerade mit Fly with lua meine Knöpfe vom Joystick usw zu Programmieren. Ich habe nun folgendes geschrieben. dataref("Strobe","sim/custom/xap/extlight/strobe_sw","writable") function Strobe_button() if button(0) then set ("sim/custom/xap/extlight/strobe_sw",1) else set ("sim/custom/xap/extlight/strobe_sw",0) end end do_every_frame("Strobe_button()") Jetzt is aber das Problem wenn ich den Button drück geht das Strobe Light zwar an aber sobald den den button wieder los lasse geht es wieder aus. Heist also ich müsste die ganze zeit den button gedrückt halte wenn ich das Strobe light anhaben möchte.. Ich möchte es aber gerne so haben wenn ich den button drücke und das strobe light is aus soll es an gehen wenn ich dann wieder drauf drücke aus. Ich hoffe ihr versteht was ich meine.. Vielen dank schonmal im vorrauf für eure Hilfe Snake82 Link to comment Share on other sites More sharing options...
Thomas_99 4 Posted July 25, 2017 Share Posted July 25, 2017 Hi ! Tja, Du möchtest aus einem Joystick-Knopf per Software einen Schalter machen Geht, braucht aber ein paar Zeilen mehr Code.... Du musst Dir in einer Variable den Zustand des Strobe-Light merken und diese jedesmal ändern, wenn Du den Knopf drückst. Und dann noch etwas "entprellen", weil Du sonst eine Änderung pro Frame bekommst. D.h. Du darfst die Variable nur einmalig in dem Moment ändern, wenn Du feststellst das der Knopfzustand sich geändert hat (Knopf "nicht gedrückt" -> "gedrückt") Gruß Thomas Link to comment Share on other sites More sharing options...
Othello 549 Posted July 25, 2017 Share Posted July 25, 2017 Warum nicht Strobe_lights_toggle dem Button zuordnen? Im Flusi oben in der einblendbaren Zeile "Settings" wählen, dort Joystick und dort den Button deiner Wahl mit "Strobe lights toggle" belegen. (Flight Controls/Lights/Strobe lights toggle) Gruß Othello Edit, und wenn du das per Luascript machen willst, dann nicht bei jedem Frame, sondern nur dann, wenn du den Button drückst. Dazu kannst du in FlywithLua eine Funktion definieren, die du dann einem Button oder einer Taste zuordnen kannst. Wird der Button (die Taste) gedrückt, wird die Funktion gerufen - fertig. Beispiel für die B200 von Carenado: local s1_set = dataref_table("com/dkmp/Start1") function eng_starter_1_ON() s1_set[0] = 1 end function eng_starter_1_OFF() s1_set[0] = 0 end create_command( "GKWI/electrical/starter_1_ON", "engage starter 1", "eng_starter_1_ON()", "", "" ) create_command( "GKWI/electrical/starter_2_ON", "engage starter 2", "eng_starter_2_ON()", "", "" ) Link to comment Share on other sites More sharing options...
Snake82 0 Posted July 25, 2017 Author Share Posted July 25, 2017 Hallo, ersteinmal danke für eure Antworten. @Othello zu deiner Frage wieso ich das nicht einfach mit "strobe light toggle" mache ist ganz einfach. Es funktioniert nicht :-) Ich möchte das halt für den Jardesign A330 machen und der benutzt leider fast nur eigene Datarefs. Ich werde das mal mit deinem Beispiel versuchen wenn ich hinbekomme zu entziffern was ich da wie ersetzten muss da ich leider nicht so viel ahnung von lua habe :-) EDIT: Ich habe es jetzt soweit hinbekommen das script sieht momentan so aus. local s1_set = dataref_table("sim/custom/xap/extlight/strobe_sw") function strobe_ON() s1_set[0] = 1 end function strobe_OFF() s1_set[0] = 0 end create_command( "A330/Light/strobe_ON", "Strobe Light On","strobe_ON()","", "" ) Das Problem is das das Strobe light nun an geht aber nicht mehr aus. D.h. ich müsste nun ein zweites command erstellen und dies auf einenen zweiten button legen. Kann man das nicht irgendwie machen das ich das mit ein und denselben button an und aus bekomme ? EDIT 2: Ok habe es hinbekommen das script sieht nun so aus. local s1_set = dataref_table("sim/custom/xap/extlight/strobe_sw") function strobe_ON() if s1_set[0] == 0 then s1_set[0] = 1 else s1_set[0] = 0 end end create_command( "A330/Light/strobe_ON", "Strobe Light On","strobe_ON()","", "" ) Vielen dank nochmal an Othello MFG Snake82 Link to comment Share on other sites More sharing options...
Othello 549 Posted July 25, 2017 Share Posted July 25, 2017 Prima, sieht gut aus :-) Wenn der Fliegerhersteller kein Toggle anbietet, ist das genau die richtige Lösung. Nur der Ordnung halber, ich würde das neue Kommando "Strobe Light Toggle" nennen. Link to comment Share on other sites More sharing options...
X-Friese 34 Posted July 30, 2017 Share Posted July 30, 2017 Schaut euch bitte die create_... Funktionen in FlyWithLua an (Handbuch ab Seite 23). Das Vorhaben erfordert eine einzige Zeile Code. Nehmen wir an der Joystick Knopf hätte die interne Nummer 28 (kann man über den Button Sniffer herausfinden), dann sähe das Script so aus: create_positive_edge_flip(28, "sim/custom/xap/extlight/strobe_sw") Die create_... Funktionen erzeugen eine im Hintergrund permanent aktive Logikschaltung, als hätte man eine SPS verdrahtet. Eine positive Flanke meint in der SPS Welt dass ein Signaleingang von 0 auf 1 wechselt, du also die Taste beginnst zu drücken. Beim Loslassen wechselt der Zustand wieder von 1 auf 0, hier wäre create_negative_edge_... zu wählen. Damit programmiert man also eine Tastfunktion. Ein Flipflop wechselt einen Zustand. Im Normalfall wechselt FlyWithLua das DataRef mit dem Index 0 zwischen den Werten 0 und 1. Man könnte also ausführlicher schreiben: create_positive_edge_flip(28, "sim/custom/xap/extlight/strobe_sw", 0, 0, 1) Was man aber nicht braucht (FlyWithLua unterstützt Faulheit wenn es die Lesbarkeit erleichtert). Die von FlyWithLua implementierte SPS Simulation ist deutlich schneller und viel weniger speicherintensiv als reiner Lua Code. Das sollte man immer vorziehen, wenn es möglich ist. Die Funktionen sind aber nicht so flexibel. Willst du nur schalten bei bewölktem Himmel oder nachts bei Neumond das Strobe automatisch aktivieren, dann musst du Lua Code schreiben. Link to comment Share on other sites More sharing options...
Othello 549 Posted July 30, 2017 Share Posted July 30, 2017 Ich habe nach etwas Nachdenken meine Frage wieder gelöscht. Danke für die Info, und Danke für FlyWithLua! Link to comment Share on other sites More sharing options...
X-Friese 34 Posted July 30, 2017 Share Posted July 30, 2017 Die Antwort wäre gewesen: ja, das geht. Link to comment Share on other sites More sharing options...
Othello 549 Posted July 30, 2017 Share Posted July 30, 2017 :-) Das habe ich jetzt nicht erwartet, wie denn? Link to comment Share on other sites More sharing options...
X-Friese 34 Posted July 31, 2017 Share Posted July 31, 2017 Mit create_switch(123, "sim/data/ref/...") wird der Zustand des Button immer direkt in das DataRef geschrieben. Falls ich mich richtig an die Frage erinnere. Link to comment Share on other sites More sharing options...
Othello 549 Posted July 31, 2017 Share Posted July 31, 2017 Danke und ja, die Frage war, wie man mit create_ die Dauerfunktion realisiert. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.