logo
ホーム •  フォーラム •  日本語wikiトップ •  アカウント情報 •  サイト内検索 •  新規登録
 ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
 メインメニュー
 米国サイト
 オンライン状況
40 人のユーザが現在オンラインです。 (4 人のユーザが フォーラム を参照しています。)

登録ユーザ: 1
ゲスト: 39

olurag もっと...

Re: Nasalを知ろう、使おう!

このトピックの投稿一覧へ

なし Re: Nasalを知ろう、使おう!

msg# 1.11
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015-11-16 2:06 | 最終変更
inomaty  長老   投稿数: 164
こんばんは

現在進入灯の真ん中で滑走路進入方向に向けて光点が次々移動する連鎖式閃光灯(Sequenced Flashing Lights(SFL))をLOWI インスブルック空港カスタムシーナリーを参考に作っていますが、nasalをxmlに組み込んで数字が0,1,2・・・27,28,0,1,2・・・と無限ループするカウンタープログラムを作りその数字を元に何番目のライトを点灯ということをやっています。

ほとんどそのままLOWIのSFLの記述を持ってきて光点が流れていく動作は作れたのですが、仙台空港を10km(5nm)超離れてから戻ってくるといった飛行をするとバグが発生してしまいます(具体的には0,1,2・・・となるところを2重3重に読み込んで0,13,1,14,2,15,・・・となってしまう)。

元プログラムだと誤った表記になっていたload/unloadをこちらのWikiページを参考に修正して何とか50kmちょっと(28nmあたり)まで離れて戻ってくればプログラムを一旦停止して再度読み込みでバグが発生しないように出来たのですが、現状下手すると一旦アプローチしてゴーアラウンドしてから再度アプローチするとSFLが荒ぶる可能性があります。

listenerを使えば何とかなりそうという書き込みは発見したのですが、リンク先のページが結構長い英語文章で難航し、私自身プログラムなんてCを齧った程度でもあり、Tatさんによるマニュアルを見ても読み取るプロパティがどこの値を取れば良いのか分からずという有様です。

うまい解決方法が見つかれば他のことにも応用できそう(例えば東京スカイツリーの夜間照明で展望台部分を光がぐるぐる回るものとか)なので、よろしければプログラミング詳しい方とかも含めてご教授お願いします。現状一番うまく行っているnasalコードは最後に載せますが、分かりづらいので一連のSFLシステム(3Dモデル(未完成)、ライトイフェクト、プログラミング本体と付随するxmlファイル等)をまとめたファイルをこちらhttp://1drv.ms/1PJ07di
に上げておきます。解凍したModelsファイルをTerrainとかObjectsのあるScenery用のフォルダに保存し、Objects\e140n30\e140n38\5251083.stgをテキストエディタで開き最後に

OBJECT_SHARED Models/Airport/RJSS/RJSS_app_light_poles_rwy27_set.xml 140.9339 38.14152 10 97.45

と記述すれば仙台空港RWY27の本来進入灯のある位置から少し南に進入灯が設置され、(仙台空港から24km(13nm)以内にいるときには)ターミナル画面に仙台空港からの距離やらカウンターの数字やらがうるさいように表示されるはずです。

↓nasalコード(xmlファイル用にnasalヘッダがあります)
<nasal>
	<load>
	loaded = 1;
		
		print("setting FLASH COUNTER");
		var loop_id = 0;
		var flash_count = 0;
		
		var info = airportinfo("RJSS");
		var RJSS_pos = geo.Coord.new();
			RJSS_pos.set_latlon( info.lat, info.lon, info.elevation);
		var aircraft_pos = geo.aircraft_position();
		var RJSS_distance =RJSS_pos.direct_distance_to(aircraft_pos);


		
			var loop1 = func(id) {
				id == loop_id or return;
				
				
				#aircraft_pos = geo.aircraft_position();
				#RJSS_distance =RJSS_pos.direct_distance_to(aircraft_pos);
				var flash_num = (flash_count += 1);
				print ("flash_num  ", flash_num);
				
				setprop("/scenery/RJSS/RJSS_r27_app_flash/light-number", flash_num);
				
				if (flash_num == 28){
					flash_count = 0;
					#print("resetting FLASH COUNTER");
				};
				aircraft_pos = geo.aircraft_position();
				RJSS_distance =RJSS_pos.direct_distance_to(aircraft_pos);
				print(RJSS_distance);
				settimer(func { loop1(id) }, 1);
			
			}
			
			
				loop1(loop_id += 1);

				print("Check point3");

	</load>
	
	<unload>
		loaded = 0;
		print("Bye, bye!");
		loop_id += 1
		
	</unload>
	
</nasal>
投票数:1 平均点:10.00

投稿ツリー

  条件検索へ


 検索

高度な検索
 新しい登録ユーザ
olurag 2022-9-30
hanshin 2022-9-30
hanjeiy 2022-9-30
bFurgAf 2022-9-30
ylimofup 2022-9-30
usaromy 2022-9-29
Mathew23 2022-9-29
ekedamyqa 2022-9-29
tramchuyen 2022-9-29
meboma9453 2022-9-29
 最近の画像(画像付)
自作11機目 F/A-18... (2022-5-27)
自作11機目 F/A-18...
飛んでみる八尾空港 (2022-4-10)
飛んでみる八尾空港
作ってみる八尾空港 (2022-4-2)
作ってみる八尾空港
F117 nighthawk (2021-5-19)
F117 nighthawk
HiTouchさん宛の画像... (2020-11-8)
HiTouchさん宛の画像...
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Theme designed by OCEAN-NET