Jump to content

Dataref Array als Kommando


Jaggo

Recommended Posts

Moin Moin

Ich lese mich gerade in Lua ein und wollte etwas ausprobieren, weiß aber nicht ob es überhaupt geht.

Ich würde gern über ein Script folgende Dataref...

Sim/cockpit2/switches/Instrument_brightness_ratio=[6/16]

Die Dataref Array bewegt sich zwischen 0.0 und 1.0. Ich würde sie gerne in 0.1 Schritten verstellen.

...als Kommando in X-Plane verfügbar machen (Auswahl im normalen key commands), damit ich es denn mappen kann.

Wie stelle ich das am besten an? Für Tipps bin ich sehr dankbar.

Link to comment
Share on other sites

Schau dir mal das Script "alt_set_1000.lua" an:

https://github.com/X-Friese/FlyWithLua/blob/master/FlyWithLua/Scripts%20(disabled)/alt_set_1000.lua

Da ist ein ähnliches Problem für den Autopiloten gelöst worden. Deine Lösung sähe so aus:

dataref("InstBrt6", "sim/cockpit2/switches/instrument_brightness_ratio", "writable", 6)

-- create a command to increase the brightness by 0.1
create_command("FlyWithLua/instruments/increase_brightness",
"Increase the brightness by 0.1",
[[InstBrt6 = InstBrt6 + 0.1
if InstBrt6 > 1.0 then InstBrt6 = 1.0 end]],
               "",
               "")

-- create a command to decrease the brightness by 0.1
create_command("FlyWithLua/instruments/decrease_brightness",
"Decrease the brightness by 0.1",
[[InstBrt6 = InstBrt6 - 0.1
if InstBrt6 < 0.0 then InstBrt6 = 0.0 end]],
               "",
               "")

Die dataref() Funktion braucht als zusätzliches Argument den Index bei einem Array. Als Alternative kann man auch dataref_table() verwenden, dann würde man es mit Index im Script ansprechen, z. B. als:

InstBrt = dataref_table("sim/cockpit2/switches/instrument_brightness_ratio")

-- create a command to increase the brightness by 0.1
create_command("FlyWithLua/instruments/increase_brightness",
"Increase the brightness by 0.1",
[[InstBrt[6] = InstBrt[6] + 0.1
if InstBrt[6] > 1.0 then InstBrt[6] = 1.0 end]],
               "",
               "")

-- create a command to decrease the brightness by 0.1
create_command("FlyWithLua/instruments/decrease_brightness",
"Decrease the brightness by 0.1",
[[InstBrt[6] = InstBrt[6] - 0.1
if InstBrt[6] < 0.0 then InstBrt[6] = 0.0 end]],
               "",
               "")

Zu beachten ist, dass man nun einen Zweizeiler benötigt, da man ja den Wertebereich 0.0..1.0 nicht verlassen darf/sollte. Mehrere Zeilen in einen String geht am einfachsten mit der [[ ]] Einklammerung.

http://lua-users.org/wiki/StringsTutorial

DataRef Tabellen werden im Handbuch erst ab Seite 73 in Kapitel 11 erklärt. Es ist die fortschrittlichste Zugriffsweise auf DataRefs, insbesondere auf Arrays.

Link to comment
Share on other sites

Hey Carsten. Eigentlich wollte ich nur eine kurze Antwort zur Machbarkeit und vielleicht einen dezenten Hinweise im Handbuch, aber hier wird gleich ein fertiger Code geliefert. Wahnsinn!

Danke... Damit komme ich auf jeden Fall weiter.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy & Terms of Use