カテゴリ:NScripter( 117 )
btndefと組み合わせて使う命令
btnarea
btndown
getcursor
getenter
getfuntion
getinsert
getmouseover
getpage
getskipoff
gettab
getzxc
spclclk
textbtnoff
transbtn
useescspc
usewheel

 以上、NScripter API Reference (Unofficially) さんから抜粋させていただきました。いつもお世話になってます。
 getmouseover命令、初めて知りました。これを使ったら面白いことができそうです。
[PR]
by lyricist_m | 2008-08-19 10:54 | NScripter
表示形式のバグ
 メニューバーの表示形式から「一ページごと」を選択した場合に発生するバグ。

・改行を無視する/(スラッシュ)が無効になる

 他にもあったはずなんだけど、何だったかな。
 思い出したら、或いはまた見つけたら追加します。
[PR]
by lyricist_m | 2008-08-19 09:27 | NScripter
transbtnサンプル
 transbtnサンプルをアップしました。Delusionist's Utopiaから落とせます。

 transbtnでググってもあまりヒットしなかったもので、「これを知らないなんて勿体無い!」と思い作成。
 transbtnを使うことでクリッカブルマップ的なことが可能です。
 夏コミで出したアイマスゲーでは、transbtnを使うことでタッチイベントを実装しました。今回はやりませんでしたが、クリックだけでなくドラッグにも対応しています。そっちのサンプルスクリプトもそのうち出しましょうかね。


 謝辞を書くのをうっかり忘れてました。
 今回のサンプルスクリプトでは、nscrplg様の「nscrpng.spi」と背景素材店様の背景素材を使用させていただきました。
 ありがとうございました。
[PR]
by lyricist_m | 2008-08-18 20:15 | NScripter
getlogとgetlogtextの違い
 サポートBBSでgetlogについての質問があったので、自分も気になって調べてみた。特に改行について。検証は最初のver2.82で行いました。

1.getlogで取得したテキストについて
 getlogで取得したテキストにはルビ情報、改行情報が含まれます。改行はLF(0x0A)で表されます。

2.getlogtextで取得したテキストについて
 getlogtextで取得したテキストにはルビ情報のみが含まれます。改行情報は含まれていません。データ的にはgettextでテキストを取得した場合と変わりません。

3.strspと改行
 getlogで取得したテキストをstrspに渡すと、ちゃんと改行した状態で表示されます。LFと¥を織り交ぜてもエラーは出ませんでした。

4.自作バッファ
 自分でログのバッファを作る場合には、textgosubに飛ぶごとにテキスト+改行情報をバッファに溜めて、改ページ待ちならバッファを一つ進める、とかそんな感じになると思います。


 getlogについて調べていて、初めてgetlogtextの存在を知ったんですが……用途が思いつきません。どうするんだろ、これ。
[PR]
by lyricist_m | 2008-08-17 16:31 | NScripter
循環バッファ
 循環バッファのサンプルをアップしました。Delusionist's Utopiaから落とせます。
 サンプル内で、循環バッファと以前アップした回想サンプルとを組み合わせてます。あくまでテストなのでNScripter本来の回想機能に頼っているところがありますが、頑張れば独自の回想機能を作れるはず。

 次はリンクリストを上げたいと思います。
[PR]
by lyricist_m | 2008-07-20 11:48 | NScripter
循環バッファとリンクリスト
 NScripterで循環バッファを実装してみました。大体テストは終わったので、実際の使用例をつけてから公開しますね。
 あと単方向リンクリストも実装中で、これはわりかし楽に終わりそうです。NScripterの変数が独特であるからこそ、できるようなものですが。
[PR]
by lyricist_m | 2008-07-18 15:19 | NScripter
特殊文字とstralias
 straliasの使い道 - 永字八法でご指摘、いただきました。
 straliasの存在をすっかり忘れていました! straliasを使うならファイル名をつける段階で工夫しといた方が楽よね、と気付いたので。
 実際に使用するときはstraliasで定数扱いしといた方がよさげですね。

readfile $0,"special_characters.txt"
mid $1,$0,0,2
stralias STR_CRLF,$1
mid $1,$0,2,1
stralias STR_QUOTE,$1


 こんなのを定義節に入れとくとよいと思います。special_characters.txtの中身は、改行の次にダブルクォーテーションが入ってると思ってください。
 自分はstraliasを使わないので、「straliasは文字定数にしか使わないよ!」って人はこういう使い方もありなのではないでしょうか。
[PR]
by lyricist_m | 2008-07-17 20:03 | NScripter
btndownとwindowerase
 マウスジェスチャーでsystemcall windoweraseをできるようにしようとしたところ、どうも上手くいかない。systemcall lookbackも同様。
 どうやらbtndownで押しっぱなしを取得しているせいで、「ウィンドウを消去する→マウスジェスチャー時のクリック検知→ウィンドウ復帰」という流れになってしまっているらしい。
 windoweraseの前にbtndown 0を挟んでみたりwaitを挟んでみたりしたが、効果なし。うーん、これはシステム的に無理か。

 以下、検証スクリプト。/は半角円マークに脳内変換してください。
*define
textgosub *textlb
game

*textlb
btndef clear
btndown 1
*textlb_btnwait
textbtnwait %0

if %0 == 0 systemcall windowerase
if %0 == -1 goto *textlb_end
goto *textlb_btnwait

*textlb_end
texec
saveon
return

*start

for %0 = 0 to 0 step 0
テスト\
next

[PR]
by lyricist_m | 2008-07-14 15:20 | NScripter
allsphideとallspresumeについて
 今まで使ったことの無かったallsphideとallspresumeを、試しに使ってみた。

*define
game

*start
lsp 0,":s#FFFFFFあいうえお",0,0
lsp 1,":s#FFFFFFかきくけこ",0,50
lsph 2,":s#FFFFFFさしすせそ",0,100
vsp 1,0
print 1
click

allsphide
print 1
click
allspresume
print 1
click
end


 上記スクリプトを実行してみればわかるが、つまりallsphide=現在のスプライトの状態に関わらず全スプライトを非表示にする命令、allspresume=全スプライトの状態を元に戻す命令、という解釈でいいようだ。
 おそらく内部的には1つのフラグが用意してあり、そのフラグが立っていればスプライトの描画処理をスキップする、ということになっているのだろう。allsphideでフラグを立て、allspresumeでフラグを戻すというわけだ。
 ちなみに拡張スプライト(allsp2hideとallsp2resume)でも同様に動作する。
[PR]
by lyricist_m | 2008-07-14 13:41 | NScripter
マウスジェスチャーサンプルをアップ
 マウスジェスチャーのサンプルをアップしました。右にある個人サイトへのリンクから飛んでください。
 ブログでやってたのと違い、クリック待ちの状態からマウスジェスチャーに移行できるようになっています。
 できればもうちょい凝りたかったんですが(ジェスチャーに対応するアクションの動的な変更とか)、余裕が無いのでとりあえずアップ。そのうち機能拡張します。気が向いたら。
[PR]
by lyricist_m | 2008-07-10 21:57 | NScripter