2012年06月03日

NScripterで文字入力

既にtextfieldがありますが、文字の描画を自前で出来ないか試してみました。
自前といっても描画自体はdeffont.dllに任せ、文字の配置や色などをコントロールします。

edit.zip

入力可能なのは1行のテキストのみです。
変換候補一覧の表示も行っていません。

IME関連の操作を行うDLLと入力されたテキストを保持して描画を行うluaファイルで構成されています。
DLLからIME関連のメッセージをluaに渡して、lua側でそれを処理します。

最低限の機能しかなく、まともな使用に耐えうるものではありません。
luaで行っている描画処理でスプライトIDやテクスチャIDがハードコーディングされていたり

入力環境もまったく考慮していないので、日本語環境のWindowsでないと動作しないでしょう。
その日本語環境でもきちんと動作するか怪しいですが。
他にもMicrosoftのIMEでしか試していませんので、ATOKやGoogleIME(?)だとどうなるか。

本格的に色んな環境に対応させるのは大変そうなので、このまま放置の予定(´・ω・`)

というか何ヶ月ぶりの更新だろ…
posted by wintercrows at 18:07| Comment(0) | TrackBack(0) | nscripter

2010年05月21日

Win7とビデオ再生

公式のサポートBBSで報告されてたWin7だとNScripterのmovie命令で綺麗に拡大縮小されない問題について。Win7からGDI/GDI+にハードウェアアクセラレーションがなくなった(?)のが原因なのかな。

GraphEditでレンダラをいくつか試したらEnhanced Video Rendererとオーバーレイでだけ綺麗に拡大縮小された。Win7のメディアプレイヤーはこのEVRを使用しているよう。

まあ拡大縮小しなければ問題ないようなので、そうするのが一番かな。
posted by wintercrows at 20:40| Comment(0) | TrackBack(0) | nscripter

2010年05月15日

デモ

wcmpg_nslua_test.zip

wcmpg.dllでNSLuaを使ったデモを作ってみた。
といっても、公式のサンプルを改造しただけ。
レイヤーモードより負荷がかなり高いな……。
うーむ。

posted by wintercrows at 14:33| Comment(0) | TrackBack(0) | nscripter

2010年04月10日

wcmpg.dll

一通り機能を付けて公開しました。

仮想マシン上で10〜15%程度の負荷ですが、どのくらいのマシンで快適に動作するのかは謎。再生するファイルにもよるだろうけど。

[ドキュメントの補足]
setx,sety,setwidth,setheightで画面に表示する領域を指定します。setsrcx,setsrcy,setsrcwidth,setsrcheightでビデオ内から描画したい領域を指定します。これらを組み合わせてビデオの一部分を拡大して表示したりすることも出来ると思います。getvideowidth,getvideoheightの値はビデオのオリジナルサイズなので変動しません。
posted by wintercrows at 11:44| Comment(0) | TrackBack(0) | nscripter

2010年04月07日

プラグイン

mpg1b.dll

MPEG-1再生レイヤープラグイン。
とりあえず動くかどうかの確認程度でまだまともに使える状態じゃないです。単体ファイルかNSAファイルから再生可能です。NSAGetFileはns2には対応していないのかな?

DirectShowを使用しているのでMPEG-1以外も再生できるかもしれませんが、フィルタがあれば再生できるというものでもないです。例えばMPEG-2はフィルタが存在しても再生できません。
posted by wintercrows at 21:30| Comment(0) | TrackBack(0) | nscripter

2009年04月10日

プラグインのテスト

nslua用プラグインのテスト。

nslua側からプラグインを読み込んで呼び出してみた。
プラグイン自体の機能は文字列とBase64の変換だけ。

b64.zip

プラグイン側でluaのヘッダとかいるのかと思ったけど必要なかった。
それにしてもこれは楽しい!
nsswfやnptheoraもlua用に関数を用意すると、スクリプト側で利用するのもかなり楽になりそう。
posted by wintercrows at 23:00| Comment(0) | TrackBack(0) | nscripter

2009年04月09日

NScripterに大規模な更新

これは面白そうだ。
luaはさわったことないので、いろいろ試してみよう。


--

やはりVisual C++ 2008のコンパイラでは9x系で動かないのか。
2003に戻されるよう。
posted by wintercrows at 01:16| Comment(0) | TrackBack(0) | nscripter

2009年04月05日

コンパイラとスタック

これからNScripterはVisual C++ 2008でコンパイルされるよう。
基本的にVisual C++ 2008でコンパイルすると9xでは動かない(?)みたいなんだけど、大丈夫なんだろうか。
まあ9xはMicrosoftのサポートも終わってるし、OSの使用自体推奨されないか。

※関係ないけどミレニアムエディションは本当にひどかったなぁ(´ロ`;)
※ただ起動速度はめちゃくちゃ速かった。

---

最近NScripterのスクリプトばかり弄ってる。
それでNScripter関係のサイト見てたら、スクリプトでスタックを実装してた。
たしかに便利だなぁとこれを配列変数でやろうかと思ったが、
配列変数はどのくらいまで領域を確保していいのかわからない。
あまり大きな値(例えば30000)を確保するとNScripter内の他の領域を上書きしてる(?)のか挙動がおかしくなる。
ただエラーメッセージなどは出ない。
このエラーメッセージが出ないのが曲者で、例えば10000では挙動に変化は出ないけど、
見えないところで超えてる可能性があるんじゃないかと。

安全に使用できる領域はどのくらいなのか。
マニュアル読んで?0[199]が最大かと思ったけど、
そのサンプルで(2次元だけど)200は超えてるようだからやっぱり?0-199[n]?
うーん、どこか読み落としてるんだろうか。

って考えてたけど、そもそもそんなに深く潜ることもないから大丈夫か。
とりあえずdim ?0[500]くらいでやってみよう。
posted by wintercrows at 17:12| Comment(0) | TrackBack(0) | nscripter