トップページ > .CELXスクリプトガイド > .CELXスクリプト小技集

.CELXスクリプト小技集


色々と試してみてうまく行った物を乗せています。実際の動作は保証しません。
例は随時追加されます。

日本語の使用


表示されるメッセージなどに日本語が使用できます。
使用方法:
まずこちらを参考にして日本語フォントを使用できる様にしてください。
日本語を使ってメッセージを書きます。
例:
celestia:flash("日本語でメッセージを表示できます。")
枠線内の内容を拡張子を.celxにして保存してください。
保存形式はUTF-8にしてください。でないとうまく表示されません。
なお、UTF-8形式で保存すると改行として"\n"が使えなくなってしまうようです。
メッセージ中で改行するには次の様にしてください:
celestia:flash([[
日本語で
メッセージを
表示できます。]]
)
※ 日本語に限らず、フォントを用意すれば他の多くの非ASCIIな言語がこの方法で使えます。
-- 意味「ロシア語でメッセージを表示できます。」
celestia:flash("Вы можете написать сообщение на русском языке.")

関数の使用


Lua標準の機能として関数が使用できます。
.CELスクリプトとの大きな違いの一つです。
例:
-- 火星に移動します。火星との距離が10万km以下の場合は金星に移動します。
function mars()
	mars = celestia:find("Sol/Mars")
	pos = obs:getposition()
	marspos = mars:getposition()
	if marspos:distanceto(pos) < 100000 + math:radius() then
		obj = celestia:find("Sol/Venus")
	else
		obj = mars
	end
	return(obj) -- .返り値(objectオブジェクト)
end
obs = celestia:getobserver()
obs:goto(mars(), 5) -- mars()の呼び出し

.CELスクリプトの使用


.CELXスクリプト内で.CELスクリプトを使用する事ができます。
例:
-- celscriptオブジェクトを生成します。
-- 引数に.CELスクリプトを記述します。[[ ... ]]が使えます。
-- 緑字は.CELスクリプトです。以下の様に記述する事により.celファイルからそのままコピー&ペーストできます。
celscript = celestia:createcelscript( [[
	{
		preloadtex { object "Sol/Earth" }
		preloadtex { object "Sol/Earth/Moon" }
		
		select {object "Sol"}
		goto   {time 3.0 distance 30}
		wait   {duration 3.0}

		select {object "Sol/Earth"}
		follow {}
		goto   {time 3.0  distance 6.0}
		wait   {duration 2.0}
  
		set { name "MinOrbitSize" value 80 }

		print  {text "Welcome to Celestia!"  row -3  column 1  duration 3}
		wait   {duration 3.0}
	}
]] ) 
-- .CELスクリプトを実行している間(celscript:tick()がtrueの間)は以降のコマンドの実行を待つ
while celscript:tick() do 
	wait(0) 
end 

トップページ > .CELXスクリプトガイド > .CELXスクリプト小技集