NScripter2のサンプルが来てる!
 途中経過 - 高橋直樹の仕事と日常の日記にNScripter2のサンプルが来てます。
 うん、これをいじるのはかなり楽しそうだ!
 最近は吉里吉里にかかりっきりだったけど、久しぶりにNScripter方面もいじってみよう。まずはnscr2com.luaとnscr2.luaの解読だ。
[PR]
# by lyricist_m | 2009-12-30 02:52 | NScripter2
NScripterハンズオンなるものがあるらしい
 senzogawaさんがNScripterハンズオンなるものを開催するそうで。詳細はNScripterハンズオン:senzogawaのNな日々NScripterハンズオン : ATNDから。
 正直、何が何でも参加したいくらい興味はあるのだが、北海道はさすがに無理だ。列島縦断するほどの蓄えはない。
 なので、せめてここで宣伝するくらいはしようと思った。レポとか上がると嬉しいなぁ。
[PR]
# by lyricist_m | 2009-12-23 16:59 | NScripter
ウィンドウを常に手前に表示する
 ウィンドウを常に手前に表示したい(非アクティブになっても最前面に表示し続けたい)場合は、SystemクラスのstayOnTopプロパティをtrueにすればよい。
 Windowクラスにも同パロパティは存在するが、そちらは「吉里吉里が制御する複数のウィンドウの中で一番手前に表示する」という意味のようで、trueにしても他のアプリケーションがアクティブになった場合はそちらが手前に来てしまうので注意。
 ちなみにリファレンスにはSystem.stayOnTopについての記述がない。吉里吉里同梱のリファレンスとオフィシャルサイトで読めるリファレンスでは微妙に違う部分があったりもするし(版が違う?)、他にも何か抜けているものがあってもおかしくないかもしれない。暇があればソースをじっくり読んでみようと思う。
[PR]
# by lyricist_m | 2009-11-05 02:55 | 吉里吉里/TJS2
保存と復帰
 自分で作ったテーブル周りのサンプルを使ってて、バグに気がつきました。テーブルにboolean型の値が格納されている場合にエラーが出ることと、格納されてる値の型情報が失われていることです。前者はすぐに対応できるんですよ。テーブルを文字列化する際にちゃんとtostring()してやればいいだけなので。問題は後者です。たとえばboolean型が複数個格納されているテーブルをCSVで保存し、復帰させたあと、復帰前のテーブルと復帰後のテーブルで値を逐一比較した場合、全部不一致になってしまうわけです。true == "true"はtrueになりませんからね。なので、何とかして型情報を正しく保存する必要があります。
 ひとつ思いついたのは、保存する時に格納する値の前にカッコで型情報を記述し、復帰させる時にstring.gmatch()で型情報を取り出す方法。たとえば{1,"2",true}というテーブルがあれば、それぞれを"(number)1","(string)2","(boolean)true"と変換するのです。これならいけそうですね。

 あと、自作サンプルではテーブル内にテーブルが含まれている場合もエラーが出ます。これも何とかしたいですね。
[PR]
# by lyricist_m | 2009-07-23 18:39 | NSLua
アニメーション応用
 アニメーションコールバック(NSCALL_animation)を使用したサンプル(アニメーション応用)をDelusionist's Utopiaにアップしました。

 このスクリプトの特徴は、テーブルを使用することによって、一度の割り込みで複数の処理ができる点です。だいたいの流れは、まずテーブルに関数を登録し、割り込み時にテーブルを巡回して関数を呼び出し、処理を止める場合はテーブルから関数を削除する、という形になります。関数は呼び出される際にNSTiimerで取得した現在時間を渡されるので、それに応じた処理を行なうことにより、コールバックのインターバルに左右されない処理が可能です。逆に言えば、関数を記述する際はインターバルに左右されないように気をつける必要があります。できればインターバルを自動で調整(処理に時間がかかる場合は長めに、早く終わる場合は短めに)してくれるようにしたかったのですが、ちょっと微妙だったので今回は省きました。いい具合にスクリプトを組めたら更新しようと思います。
 で、コールバックで呼び出す関数のサンプルを3つ用意しました。時計を表示するclock命令と00からカウントアップしていくタイマーを表示するtimer命令、そしてマウスカーソルを徐々に移動させるmovemousecursor2命令の3つです。もっと数を増やしたかったのですが、時間に関する処理で思いついたのがこれくらいだったので……。まあ、複雑なことはしていないし、自分にしてはコメントをつけた方なので、そこそこ解りやすいかと思います。



 今回のスクリプトを組んでいて「複数のスプライトの移動を管理できる機構が欲しいなぁ」と思いました。吉里吉里のDefaultMover.tjsあたりを参考にして、書いてみようと思います。目標としては、あらかじめ読み込んでおいたスプライトの番号と移動方法、処理にかける時間なんかをLuaに渡すことで動かしてくれるような感じにしようかと。移動方法はせっかくスプライン補間があるから、それも使ってみたいですね。
[PR]
# by lyricist_m | 2009-07-22 21:57 | NSLua