bexec命令は、マウスに関しては「ボタンが離された瞬間」に処理が返ってくるのですが、キーボードに関しては「キーが押された瞬間」に処理が返ってきます。この点が旧ボタン命令と異なるので、単に命令を置き換えるだけでは誤動作する場合が多々あります。なので、旧ボタン命令と同じ感覚で使えるように、bexec命令を用いた自作命令bexec2を作成し、「キーが離された瞬間」に処理が返ってくるようにしてみました。以下、スクリプト。
*bexec2 getparam s%0 bexec $%0 ;if $%0 == "CTRL" return mov $1,$%0 len %1,$1 if 1 < %1 && %1 < 5 && "S" < $1 && $1 < "T" mov $1,"LCLICK" if $1 != "LCLICK" jumpf checkkey %1,"SPACE":if %1 == 1 mov $1,"SPACE":jumpf checkkey %1,"RETURN":if %1 == 1 mov $1,"RETURN":jumpf ~ checkkey %1,$1 if %1 == 0 return wait 10 jumpb return bexec2命令はbexec命令と同様、押されたボタンを文字列として返します。スプライトボタンの場合はS+スプライト番号という形式ですね。この命令を使えば、キーダウン時ではなくキーアップ時に処理が返ってきます。また、bcursor命令を指定していない場合でもスペースキーとリターンキーが正常に動作するように、bexec命令でLCLICKが返ってきたらcheckkey命令で実際に押されたキーは何なのかを判別しています。あと、bexec命令の下のコメントアウトを外すと、コントロールキーの場合のみキーダウン時に返ってくるようになるので、クリック待ち時のコントロールスキップも可能になります。 話変わって。 現在、bexec命令を用いたシステムカスタマイズ用サンプルスクリプトを作成中です。一応、nsluaサンプルスクリプト内のシステムカスタマイズサンプルでbexecが使われているのですが、Luaが使われているので、単純にbexec命令の使い方を知りたい人は手が出しづらいんじゃないかと思いまして。「俺はLuaなんて使わないぞ!」なんて方もいるでしょうからね。 とりあえずクリック待ちの部分はできたので、あとはちょこちょこ調整してから公開しようと思います。右クリックメニューとかセーブロード画面などその他諸々は、公開してから追加していく形で。
by lyricist_m
| 2009-07-07 18:31
| NScripter
|
web拍手を送る
個人サイト
検索
カテゴリ
以前の記事
最新のトラックバック
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧
リンク
サークル関係
NightShifts k'のBlog NScripter関係 ■ Takahashi's Web ■ Binary Heaven NScripter Scripting Factory NScripter-Tips nscrplg NS栗 Withoutlimit 永字八法 貴史たま+MEのHP 君影草工房 ※以下、更新停止中 nscr SGP -Sphere Game Production 花鳥風月 牛小屋 |
ファン申請 |
||