時間を使う方法もいくつかある。
os.clock()を使う
簡単に実行してみる。以下はABCという文字をX-Plane内の下のほうに表示し、5秒たったら消す。

local starting_time = os.clock()
function Text_draw()
if os.clock() < starting_time + 5 then --os.clock()がstarting_timeより小さい間は以下を実行
draw_string( 100, 100, "ABC", 0, 1, 0)
end
end
do_every_draw("Text_draw()")
逆に5秒たったら表示する場合は「<」を「>」にすればいいことになる。遅延表示になる。
時間で消えるQNHバブル表示
更にQNHの設定がおかしい場合は、下の画像以外にもう一つバブルが表示されそのバブルをクリックするとQNHをちゃんと設定するようになっている。そのバブルはQNHが問題ないなら表示されない。これはクリックするまで消えない。
以下は上のQNH設定の上にバブルウインドウが表示され、これが時間(ここでは10秒)が来たら消えるという仕掛けになっている。

チョット複雑だが時間の遅延というのは結構使う可能性が高い。
DataRef("QNH_Pilot", "sim/cockpit2/gauges/actuators/barometer_setting_in_hg_pilot", "writable")
DataRef("QNH_CoPilot", "sim/cockpit2/gauges/actuators/barometer_setting_in_hg_copilot", "writable")
DataRef("QNH", "sim/weather/barometer_sealevel_inhg")
local starting_time = os.clock()
local QNH_y1
local QNH_y2
local QNH_x
local QNH_problem = false
---------------------------------------------------------------------------------------------
function Steffi_says()
local pos = 0
if math.abs(QNH-QNH_Pilot) > 0.01 then
QNH_y1 = pos
pos, QNH_x = big_bubble(20, pos, "Please check the barometer setting!", "Your altimeter is showing wrong values.", string.format("The right QNH is %2.2f in/Hg or %.1f hPa.", QNH, QNH * 33.8637526), "Or just click on this bubble and I'll fix it for you.")
QNH_y2 = pos
QNH_problem = true
else
QNH_problem = false
end
if os.clock() < starting_time + 10 then
pos = big_bubble(20, pos, "Steffi says:", "Hi!", "My name is Steffi, and I'm your virtual copilot.", "Let's enjoy our flight.")
end
end
do_every_draw("Steffi_says()")
---------------------------------------------------------------------------------------------
function Steffi_does_on_clicks()
if QNH_problem and MOUSE_X > 10 and MOUSE_X < QNH_x and MOUSE_Y > QNH_y1 and MOUSE_Y < QNH_y2 then
QNH_Pilot = QNH
QNH_CoPilot = QNH
RESUME_MOUSE_CLICK = true
end
end
do_on_mouse_click("Steffi_does_on_clicks()")
---------------------------------------------------------------------------------------------
バブルの中の英語の翻訳:
Please check the barometer setting! ””Your altimeter is showing wrong values.
The right QNH is %2.2f in/Hg or %.1f hPa. Or just click on this bubble and I’ll fix it for you.
気圧計の設定を確認してください! “”あなたの高度計は間違った値を示しています。
右側の QNH は %2.2f in/Hg または %.1f hPa です。 または、このバブルをクリックしてください。修正させていただきます。
時間が来たら消えるバブルの内容。
“Steffi says:”, “Hi!”, “My name is Steffi, and I’m your virtual copilot.”, “Let’s enjoy our flight.
「シュテフィはこう言っています。」「こんにちは!」「私の名前はシュテフィです。仮想副操縦士です。」「フライトを楽しみましょう。
os.clock()を使った点滅表示
ここではos.clock()で取得した秒数を、剰余で取得した値に変換、if分で切り替えて交互に表示させている。
どんな整数でも3でわると,剰余(%)のあまりは0,1,2のいずれかになる。意味はまったく不明なので以下のサイトで計算してくれるので参考に。
計算をやってくれるサイト:https://keisan.casio.jp/exec/system/1510710795
1÷3の余りは1、2÷3の余りは2、3÷3の余りは0、最後の0は分かりやすい。この剰余で計算して出てきた値を使用している。0、1、2を繰り返している。この剰余を使うと秒数を変換して繰り返すことができるようだ。
以下がその結果になる。1秒毎に以下の画面を繰り返す。



function Steffi_says()
local starting_time = os.clock()
local msgtime
msgtime = starting_time % 3
--秒数を増やすには%3を%6にして2秒に1回点滅させるようにすることができるかも
--上のmsgtimeを数値にして見てみる(0、1、2と3つの値が繰り返し表示される)
-- %d=整数、
local info_to_print = string.format("msgtime = %d", msgtime)
draw_string_Helvetica_18(200, 320, info_to_print)
--1秒より小さい場合、以下を表示(つまり10秒間表示)
if msgtime < 1.0 then --1より小さい「0」のときは赤文字
draw_string( 200, 350, "Please", "red" )
end
if msgtime >= 1.0 and msgtime < 2.0 then --1以上、2以下のつまり「1」のとき
draw_string(200, 350, "Please", "green" )
end
--それ以外は何も表示しない。
end
do_every_draw("Steffi_says()")
datarefのtimeを使った時間設定
テキストの点滅と移動
これはFlyWithLuaを導入する一番最初に表示される点滅のテキストがこれになる。
DataRef( “sim_time”, “sim/network/misc/network_time_sec”) これで時間を取得しているようだ。
%3とは上の取得したデータの余りの数値(剰余)を使っている。「3」という数値は3つの点滅を作成することができる。2つでいい場合は2として、下のif文を2つつくると良い。
3のまま2つのif文を作成すると2つめが長く表示されることになる。トンツーという感じ。datarefの「sim_time」をそのまま取得すると秒単位でカウントしていく。
%2で値を取得すると余りの数値が0と1の2種類の繰り返しになる。%3にすると0、1、2の3種類の繰り返しになる。
下のスクリプトはタイムを%3で演算したらどのような数値が出てくるのかをテストしている。
DataRef("sim_time", "sim/network/misc/network_time_sec")
function MyHelloWorld()
local msgtime
msgtime = sim_time % 3
---------------------------------------------------------------------------------------
if msgtime < 1.0 then --1より小さい場合
draw_string(50, 300, "Please", "red")
end
---------------------------------------------------------------------------------------
if msgtime >= 1.0 and msgtime < 2.0 then --1.0より大きいか等しい
draw_string(50, 300, "read", "green")
end
---------------------------------------------------------------------------------------
if msgtime >= 2.0 then --2.0より大きいか等しい
draw_string(50, 300, "the manual!", "blue")
end
---------------------------------------------------------------------------------------
--テキストが右に移動しながら点滅しながら色が変化する
draw_string(
--以下のテキストを画面左50の位置から高さ350の位置に表示
-- + sim_time * 30 % 400は横に位置を時間を読んでプラスして右に移動している。
50 + sim_time * 30 % 400, 350,
--50, 350, --止まって表示する場合はこれ
"If you want this message to disappear you will have to follow the bubble's instruction!",
-- math.floor(x) 小数点以下を切り捨てて整数にします
sim_time - math.floor(sim_time), --これを外すと白色で止まる
sim_time - math.floor(sim_time + 0.6) + 0.6, --色が変わる
sim_time - math.floor(sim_time + 1.2) + 1.2 --外すとエラーになる
)
---------------------------------------------------------------------------------------
end
do_every_draw('MyHelloWorld()')
下の画面で、上の長い文字が右へ移動して行き、ある程度移動したら元の位置に戻って移動を繰り返す。さの間、テキストの色も交互に赤、緑、青と点滅する

下にある短いテキストは止まったまま赤、緑、青と点滅する。

時間を測る
do_sometimes()
フライトタイム:sim/time/total_flight_time_sec
秒で計る、X-Planeを起動している間ずっとカウントアップする。
sim/time/total_running_time_sec
sim/time/zulu_time_sec
下のスクリプトは時間になったら雲の中の色を白くすることができる。
どのくらいたったらというように時間を設定するには、他の方法もある。
雲の中を白くする、止まっていた機体でやってみたので雲が白くなるのがわからない。
--used dadatef
--フライトタイムはずっと時間が増えるだけのなので、これは1回しか見ることが出来ない。
dataref("flighttime", "sim/time/total_flight_time_sec", "readonly") --フライト時間を計る
dataref("sky_woic", "sim/private/controls/skyc/white_out_in_clouds", "writable") --雲の中の色を白くする
--時間依存セット0の関数
function set_woic()
if (flighttime > 50) then --50秒以上になったら以下を実行
sky_woic = 1
end
end
do_sometimes("set_woic()")