Aerosoft official retail partner for Microsoft Flight Simulator !! 
Click here for more information

Jump to content

Archived

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

Jaggo

Dataref Array als Kommando

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.

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

×
×
  • Create New...