特別定義語 | 特別な意味がある単語およびラベル |
F命令 | 定義ブロックのみで使える命令 |
E命令 | 実行ブロックのみでのみ使える命令 |
F・E命令 | 定義ブロックでも実行ブロックでも使える命令 |
特殊文字 | 表示文章の中で命令の代わりとして使う特殊な単語 |
NAME | 名前 | 大・小英字又は'_'から始まる英数字列 |
LABEL | ラ ベル名 | '*'の後にNAMEを続けた文字列 |
NUM | 数値 | 数字 列、又は'+','-','*','/'で数値をつなげた式 |
STR | 文字列 | '"' で囲んだ文字列。原則全角 |
%VAR | 数字変数 | 数値を格納できる変数 |
$VAR | 文 字変数 | 文字列を格納できる変数 |
COLOR | 色値 | '#'と16 進数6文字で構成されるRGB値 |
EFFECT | エフェクト | effectで定義し た番号又は既定のエフェクト記述 |
{} | 列挙 | 一つ、又は複数の、既に規定された名 前 |
CONDITION | 条件式 | 比較演算子、チェック命令による真偽を返す式 |
SENTENCE | 実 行文 | 単一の命令、あるいは':'で区切られた複数の命令 |
'' | 構成文字 | 命 令を構成する文字、又は文字列 |
[] | 省略 | 省略可能な値の範囲を表す |
... | 繰 り返し | 繰り返し指定可能なことを表す |
変数番号 | 0〜4095 | 4096 だと、初期値がおかしくなる。 |
配列番号 | 0〜 | 際限なし?大量に使うとメモリ不足 の危険性大。 |
スプライト番号 | 0〜999 | 1000を指定するとエラーとなる。 |
拡 張スプライト番号 | 0〜255 | 512を指定するとエラーとなる。 |
エフェクト番号 | 2〜255 | 256 を指定するとエラーとなる。 |
ボタン番号 | 1〜 | 際限なし?あまり考慮する必要はな い。 |
チャンネル | 0〜49 | 新マニュアルに記載 |
一文字あたりの表示速度をミリ秒単位で指定します。
数
字は普通の数字でなければなりません。変数を使いたいときは、
textspeed命令を使ってください。
上のメニューから選ばれた、「低速」「普通」「高速」の文字 速度にあわせます。それが数字で何にあたるのかはdefaultspeed命令で設定できます。
文字の色を変えます。HTMLで指定するのと同じ形式です。
(つ
まり、16進数で二桁づつ6ケタで指定、ということ。
#000000が黒、#ffffffが白、#ffffaaが、白っぽい黄色になります。)
変
えたら以後変わりっぱなしなので注意してください。
文字変数$0〜$999まで1000個存在します。
0番から199番までが普通の変数で、200番か
ら999番までがグローバル変数です。
普通の変数は、ゲームを終了する、もしくはreset命令などで動作を最初に戻すと値が消えますが、グロー
バル変数は消えません。
普通の変数の値は、セーブ時にセーブファイルに記憶され、ロード時にその値が復元しますが、グローバル変数ではそうなりま
せん。
具体的には、例えば、普通の変数は好感度に、グローバル変数はクリアフラグに、といった使い方がいいでしょう。
ただし、グローバル
変数を使う場合は、命令globalonを定義ブロックで実行しておかなくてはなりません。
文字変数の初期値は""(一文字もない)です。
数字変数%0〜%999まで1000個存在します。
0番から199番までが普通の変数で、200番か
ら999番までがグローバル変数です。
普通の変数は、ゲームを終了する、もしくはreset命令などで動作を最初に戻すと値が消えますが、グロー
バル変数は消えません。
普通の変数の値は、セーブ時にセーブファイルに記憶され、ロード時にその値が復元しますが、グローバル変数ではそうなりま
せん。
具体的には、例えば、普通の変数は好感度に、グローバル変数はクリアフラグに、といった使い方がいいでしょう。
ただし、グローバル
変数を使う場合は、命令globalonを定義ブロックで実行しておかなくてはなりません。
数字変数の初期値は0です。
ルビ有りを示す
*define rubyon game *start setwindow 10,10,20,20,24,24,0,12,0,1,1,#ffffff,0,0,639,479 ルビ機能の(暫定仕様/ざんていしよう)です。@ rubyon時、(文字/もじ)は(下詰/したづめ)で表示されます。@ (縦/たて)の(字間/じかん)を、ルビが入る分とって下さい。@ 「(承/うけたまわ)」る、とか、「(論理的/ロジカル)」みたいに、文字幅をあわせようとする機能がついてます。 ルビは折り返し改行されませんのでご注意ください。\ end
*で始まる文はラベル名です。gotoなどの飛び先として使います。
ラベル名に使える単語の一文字目は
半角のアルファベットと"_"(アンダーライン)、それ以降はアルファベット"_"(アンダーライン)数字の組み合わせです。
正しい
例) *HAJIMARI
*Mike_Tom
*day01
誤った例) *始ま
り (全角文字を使っている)
*Mike&Tom (アンダーライン以外の記号を使っている)
*01day (一文字目から数字)
*asterisk
csel命令を実行すると、自動的にこのラベルにジャンプす る。このラベル後に選択肢表示の処理を実装する。
*customsel skipoff *csel_st btndef clear getcselnum %0 getcursorpos %1,%2 cselbtn 0,500,%1,%2 add %2,21 cselbtn 1,501,%1,%2 if %0>2 add %2,21:cselbtn 2,502,%1,%2 if %0>3 add %2,21:cselbtn 3,503,%1,%2 if %0>4 add %2,21:cselbtn 4,504,%1,%2 *csel_loop selectbtnwait %0 if %0=-2 systemcall lookback:goto *csel_loop if %0=-1 gosub *rclk:goto *csel_st if %0>=500 & %0<=504 saveon:sub %0,500:cselgoto %0 goto *csel_loop
:(コロン)でつなげることによって、一行にたくさんの命令 文を書くことができます。これは、if文で威力を発揮します。
btnwait %0 if %0=-1 allsphide:systemcall lookback
表示直前にgettagで取得できる情報を指定できます。
[太郎/0001.wav]「太郎の台詞」
表示文字列の中で変数に値を代入できるようになりました。
{}
で囲んで、その中で変数名,値を指定すると、その値が変数に代入されます。
ただし、エイリアスは使えません。
{変数名,値,変数名,値}
のように、複数個書くと、それらの代入操作が全て実行されます。
jumpf命令とjumpb命令で使う飛び先です。
jumpf
命令、jumpb命令と~記号の間には表示文章を置かないようにしてください。
後ろの数値または文字列を、前の数値または文字列を足します。
数値同士、文字列同士でないとエラーとな
ります。
命令の引数として計算結果が使われます。
mov ?0[0],?0[0]+1例)
mov $1,"●" mov $2,"あいうえお"+$1+"さしすせそ" ;これで、$2は"あいうえお●さしすせそ"になります。例)
mov $0,"テスト" mov $0,$0+"あいうえお" ;これで$0は"テストあいうえお"になります。
<と>で囲んだ文字列をテキストボタンに設定しま
す。
テキストボタン番号は省略可能です。
変数に変数を加えます。文字の場合は連結です。
add %0,6例)
add $5,"ああああ"
文字列を、行頭禁則文字列,行末禁則文字列の順で指定することで、
現在の禁則文字列に設定を追加しま
す。define節専用です。
一文字だけでも設定できますし、複数並べれば、
それらが全て禁則文字になります。
拡張スプライト全体の表示を一時的にマスクすることが出来ま す。allsphide allspresumeと使い方は同じです。
拡張スプライト全体の表示を一時的にマスクすることが出来ま す。allsphide allspresumeと使い方は同じです。
mspと似ているが、こちらは増分ではなく絶対指定。
amsp 2,5,2,100
拡張スプライトの移動命令です。msp2は現在値からの相対 指定、amsp2は値そのものの指定です。
amsp2 0,10,20,10,10,5
アーカイブ展開プラグインを指定します。
書式は、"アーカイブファイル名|関連付けDLL名"です。
画
像、音声はアーカイブ対応していますが、スクリプトはしていません。
レジストリを読みに行く命令と組み合わせることで、いろいろな指定が
できるようになります。
arc "arc.sar|scrunarc.dll"例)
getreg $0,"software\leaf\toheart","datadir" add $0,"\lvns3dat.pak|axlfpak.spi" arc $0
文字列を数字に変換します。C言語の同名関数と同じです。
atoi %0,"123" atoi %3,$0
商用ソフト「銀色」のために作った命令です。
この命
令を実行すると、メニューに「オートモード」がつきます。
オートモードは「次の選択肢まで進む」に似ていますが、ウェーブが
なりおわるま
で先には進まず、ウェーブがないところでも、下のautomode_time命令で
どのくらいクリックまでに待つか指定することが出来ます。
い
わゆる読み上げモードですね。
メニューからボリューム変更ダイアログが
使えるようになる。(MP3(BGM)
voice(DWAVE 0) SE(DWAVE 1〜)のボリュームを
いじれるようになりました。)
この辺の拡張機能の追加については
もうちょっとすっきりした命令を作る予定
(今有効な命令は将来的にもちゃんと使えます。)
表示文頭以外の自動のセーブポイント更新を停止します。
*define
節で
autosaveoff
とすることで、saveon/saveoff命令は無視されるようになります。
(表示文頭ではセーブ
ポイントは従来通り更新されます)。
表示文頭以外でセーブさせたい場合(たとえばクリッカブルマップなど)では、手書きでsavepoint命令
を呼び出してください。タイミングによってはデータがうまく復帰できなかったりするので、画面全体を読み込んで描画する直前をセーブポイントにするとか、
うまく工夫してください。
指定AVIファイルを画面一杯に再生します。
数字が1
のときは、クリックすれば再生を中止して、次の処理へ移ります。
0のときには、最後まで再生し終わるまで、処理をスクリプトに戻しません。
バー表示指定をします。幅と高さは、バーが最大値であったと
きの値です。
最大値に満たない場合は、割合に合わせてバーが短くなります。
バーは左詰表示です。単純に長さにあわせて指定した色で塗
りつぶすだけなので、
値が足りないときの地の色は、元絵のほうで描いてしておいてください。
なお、指定した後でprint命令などの
表示処理を実行しないと、画面に反映されません。
デフォルトではbexecはカーソルキーとスペース/リター
ンをボタン間の移動とボタンの決定に使うようになりました。
カーソルキー入力を得たい場合はbclearとbexecの間にbcursor命令を
入れてください。
どのスプライトとも重なっていないときの処理を指定する。これもexbtnやspstrに指定するのと同じ文 字列
bdef "C0" ;どれとも重なっていない場合はスプライト0番を非表示にする。
ボタン処理を実行する。引数は文字列変数と数値変数、もしくは
その両方が選べる。
bclearを実行するまで設定は残っている。
btimeを実行するまでは経過時間とタイムアウト時間の設定
も残っている。
文字列変数に戻る値:
どのスプライトでもないところが左クリックされた場合……"LCLICK"が返ります。
ス
プライトが左クリック場合……"S(スプライト番号)"が返ります。たとえばスプライト12番なら"S12"が返ります。
タイムアウトした場
合……"TIMEOUT"が返ります。
右クリックされた場合……"RCLICK"が返ります。
中クリックされた場合……"MCLICK"
が返ります。
ホイールアップ/ダウンされた場合……"WHEELUP" "WHEELDOWN"が返ります。
キーが押された場合……それ
ぞれに対応した文字列が返ります。英字は大文字で返ります。
・英字1文字、数字はそのまま返ります。
・"SPACE" スペースキー
・"RETURN" リターンキー
・"CTRL" コントロールキー
・"UP" "DOWN" "LEFT" "RIGHT"
カーソルキー上下左右
・"F1"〜"F12" ファンクションキー
・"PAGEUP" "PAGEDOWN"
ページアップ、ダウンキー
・"SHIFT" シフトキー
数値変数に戻る値:
スプライトが押されたときにそのスプライト
番号を得る。それ以外の場合は-1が返る。
どの値が入力されても戻るので、必要のない値を受け取った場合はbexecに処理を戻してルー
プすること。
bexec $0,%0
背景画像をロードします。一番上がファイルから、二つ目が単色での塗りつぶし指定、一番下が、黒、もしくは白 での塗りつぶし指定です。
bgcpyでも同じ意味になります。現在の画面を背景画面と
して取り込みます。
ofscpyもしくはofscopyとの違いは、背景画面になっているので、この上にテキストウィンドウなどを表示できること
です。
圧縮された音楽ファイルをループで演奏する。mp3loop命令と同じ意味です。
bgm "bgm01.mp3"
圧縮された音楽ファイルを一度だけ演奏する。mp3と同じ意味です。
bgm "bgm01.mid"
bgmのボリュームを変えます。bgm命令とmp3命令で有効です。
bgmvol 100
高速に画面上で画像表示をしたいとき(AIRのオープニング
のようなアニメーション処理)に使う命令です。
ボタン画像バッファを利用しますので、事前にbtndefで画像を読みこんでください。
ボタン画像から読んでくる元画像の幅が画面上の幅と違うときは、画面にあわせて画像が拡大縮小されます。
(例えば、全画面のXY半分のサイズの画
像を4つ描いたものをロードしておいて、高速に拡大しながら画面全体に表示していくと、残像効果でドットの荒さは見えず高速なアニメに見える、というテク
ニックがAIRでは使われています。)
この命令はバッファを介さず直接スクリーンに画像を書きます。よって、終わった後は画面データが不定にな
るので、下のofscpy命令を使った後、必ず別の画像をふつうのbg命令などで呼び出して、画像を確定してください。
セーブによって
も、この命令の結果としての画像がセーブされたりはしません。
よって、使われる部分は限られてきます。(デモとか、SLGでの小窓アニメなど、
間にセーブやコマンド入力が挟まれないような処理)
画像ファイルを指定された分割数に分割してBMP形式で保存します。
bmpcut "test.bmp",3,2
一番内側のループをひとつ、途中で抜け出します。
す
ぐ下のNEXT文を探し、その下へ抜けます。
二重ループを一気に外まで抜けることはできません。
一重めのループをBREAKで抜
けた後、さらに次のBREAKを書いてください。
【お勧めしない使い方】
BREAK *ラベル名
BREAK文に*ラベル
名があればそのラベルに飛びます。
ただし、ラベル指定でふたつのループを抜けても内部的には
一番内側のひとつしかループ状態を解除しませ
ん。
先述のとおり、そういう使い方はスタックを無駄遣いするのと
ソースを見難くするのでお勧めはしません。
*define game *start for %0=1 to 8 for %1=6 to 2 step -2 %0,%1 if %0=4 & %1=4 break next next click end
スプライトをボタンとして設定する。
パラメータを省略すると、マウスを重ねたときにセル1、マウスをは
ずしたときにセル0、マウスをクリックしたときにセル2(セルがみっつ以上ある場合のみ)になる。
パラメータを三つ指定できる。それぞれ
exbtnやspstrに指定するのと同じ文字列で、順に「マウスが重なっていないときの処理」「マウスが重なっているときの処理」「マウスを押したとき
の処理」になる。
文字列には""を指定できるので、何もしないときには""にすること。
bsp 1 ;スプライト1番をボタンにする bsp 2,"P3,0","P3,1","P4,1" ;スプライト2番をボタンにする。それぞれ重なっていないとき、重なったとき、押したときの処理を記述している。
ボタン処理を開始してからタイムアウトする時間を指定する。
時間の後で,1とすると、時間が経過して
いてもボイス(dwaveチャンネル0)が再生し終わるまで待つ。これはオートモード等に使う。
btime 2000 ;2秒後にタイムアウトする。 btime 1000,1 ;1秒後にタイムアウトする。1秒を過ぎてもボイスが終了していなければ待つ。
左から順に、ボタン番号,x,y,wd,ht,x3,y3で
す。
ボタンの定義命令です。ボタン番号>0です。
ゲーム画面上の(x,y)を左上として、サイズwd *
htの範囲をボタンとして指定します。
その上にマウスカーソルがのると、ボタン画像ファイルの(x3,y3)を左上の点とする画像が表示されま
す。
くわしくは、フォルダbtndemoにある説明.txtを参照下さい。
btndefの下で使ってください。
負ならば絶対値を取って、その数以上、正ならばその数以下の位置
にカーソルが来たときに、ボタン命令で-4を返します。
btndef clear btnarea -400
ボタン画像ファイルを設定します。これを使うと、以前のボタン定義はクリアされます。
くわしくは、
フォルダbtndemoにある説明.txtを参照下さい。
btndefとbtnwait系命令の間に挟んでください。
そ
のボタン命令において、ボタンの押しっぱなしを取得できるようににします。
btndown 1
次のbtnwaitもしくはbtnwait2の時間制限をミリ 秒で指定します。この命令を使った直後のボタンモードで、何も押されずに指定した時間が過ぎると、 btnwait系命令は-2を返します。
btntimeとほぼ同じだが、ボイスの発生終了まで待つ
btntime2 1000
実際にボタン処理します。数字変数に結果が戻ります。
戻り値:
0…どのボタンでもない
ところをクリックした
−1…右クリックした
その他…ボタン番号
戻り値が0以下(ボタンを押していない)ときは、すぐにも
ういちどbtnwaitを呼べば、また同じボタンモードに。
戻り値が1以上(実際にボタンを押した)ときは、押された瞬間の画像のままで、ボタン
定義は全てクリアされます。(メモリ節約のため)
くわしくは、フォルダbtndemoにある説明.txtを参照下さい。
実際にボタン処理します。数字変数に結果が戻ります。
戻り値:
0…どのボタンでもない
ところをクリックした
−1…右クリックした
その他…ボタン番号
btnwait命令と違って、ボタン定義はクリアされませ
ん。だから、ボタン画像ファイルは読まれっぱなしです。
ボタン処理が終わって、ボタンが要らなくなったら、他の処理がメモリを使えるように、
btndef ""でボタン定義をクリアして、ボタン画像を解放しておくことをお勧めします。
渡された文字列_w.bmpと渡された文字列_b.bmpから
NScripter形式の透過画像を作ります。
付属しているbw2aconv.exeと同じ動作です。
<豆知識>
コマン
ドプロンプトから
dir /b > filelist.txt
とかをやるとファイルリストが取れるので、
それと組み合わせ
て一括変換に使うといいでしょう。
bw2a "test"
白抜きと黒抜きから、NScripter形式の透過画像を作り
ます。
製作作業用の命令です。
nscripterと同じ位置にフォルダ"b"とフォルダ"w"を作り、それぞれ白抜きと黒抜きを入れてく
ださい(白抜きと黒抜きについてはbw2aの説明をご覧ください)
ファイル名は元と同じでいいのがミソです。フォトショップのアクションを使えば
作業が効率化できるでしょう。
bw2a3 "test.bmp"
cellcheckspbtnのexbtnバージョンです。引数はexbtnと同じです。
スプライト
がロードされ、かつ、セルが二つ以上あるときのみ拡張ボタンとして設定します。そうでないときは無視されます。
なお、exbtnについては「サン
プル」「メニューのカスタマイズと複合ボタン」を参照してください。新機能S(音声再生)とM(スプライト移動)が増えています。
cellcheckexbtn 1,100,"P1,1P2"
基本的にはspbtnと同じですが、セルが二つ以上ない画像の場合は無視されます。
これはCGモードの
ときに有効に使えます。
(つまり、サムネイルはセルがひとつだけにしておけば、
spbtn登録はループで一気に行える)
for %0=0 to 9 cellcheckspbtn %0,%0+1 next
out.bmpの隣にその画像ファイルを貼り付けていきます。
out.bmpが無ければ作成します。
キーの押下状態を取得します。
文字列には、英字1文字、数字、スペースなどはそのまま指定できます。
"SPACE"
でもスペースキーは取得できます。
"RETURN" "ENTER" リターンキー
"CTRL" コントロールキー
"UP"
"DOWN" "LEFT" "RIGHT" カーソルキー上下左右
"F1"〜"F12" ファンクションキー
"PAGEUP"
"PAGEDOWN" ページアップ、ダウンキー
"SHIFT" シフトキー
を指定します。
checkkey %1," "
回想文字列を取得できるかどうかを調べます。
第一引数
は結果を格納する数字変数、第二引数は何ページ前かを指定します。
1で取得可能、0で不可能です。第二引数には1以上を指定してください。
0
は現在のページなので、この関数を使わなくても処理できるはずです。
checkpage %5,1
これで、「ファイル名」のファイルがあるCDドライブを検索します。
もしCDが入っていなければ指定
した文字列のエラーポップアップを表示します。
ボタンは「再試行」と「キャンセル」です。
chkcdfile "file.dat","CDがありません"
これで、「ファイル名」のファイルがあるCDドライブを検索します。
もしCDが入っていれば1、なけ
れば0を返します。
chkcdfile_ex %0,"file.dat"
dwaveチャンネルのボリュームを変えます。
chvol 3,100
通常、クリックによってメッセージが次のクリック待ちまで瞬
時表示になりますが、この時、通常クリック待ちではなくそのページの改頁待ちまで一気に飛ぶようにします。
define節専用命令です。
強制クリック待ち機能をオンにします。これを実行すると、特定
の文字を表示したらクリック待ちするように作れます。
ただし、その直後に本来のクリック待ち文字がある場合、もしくは、強制クリック文字の前に
_(半角アンダーバー)がある場合は、強制クリック待ちはされません。
強制クリック待ち時に、単なるクリック待ちか改ページになるかは、二番目の
パラメータが決めます。(最大行−数字)よりも下で強制クリック文字を見つけたときは、改ページになります。
この機能は、作業の簡便化には役立つ
のですが、次の一行が非常に長く、数字設定よりも上の行から始まって字がはみ出すような現象を防ぐことまではできません。
その場合は、そこだけ本
来の改ページ文字を使うか、数字を変えてください。文字列は全角文字のみ許されます。
click "」。!?",2
文字列同士を比べて、等しければ0、等しくなければそれ以外を、数字変数に代入します。
右のほうが大
きい場合、負、左のほうが大きい場合、正が帰ります。
三角関数cosθを取得します。
値は1000倍されたものが返ってきます。
cos %1,60 ;%0=1000になる。
指定された名前でダミーBMPファイル(640.480)を作ります。
真っ白背景に黒字でファイル名
がでかでか書かれます。
createdummy "test.bmp"
システムカスタマイズ時の選択肢命令。*customsel を呼び出すために使う。書式はselectと一緒。
csel "選択肢1",*s1,"選択肢2",*s2,"選択肢3",*s3
選択肢のテキストでボタンを作る。文字列とスプライト番号の指定が不要。
cselbtn 0,500,%1,%2
cselで設定したラベルへ飛ぶ。
cselgoto %0
拡張スプライトを消去します。
csp2 0
csvファイルを閉じます。この命令で閉じないと開きっぱな しですので、使い終わったら閉じるようにしてください。
csvclose
(読み取りモード専用です)
csvファイルを最後まで
読み終わっていれば1、終わっていなければ0を返します。
csveof %1
csvファイルを開きます。一つ目の文字列はファイル名です。
nsaの中に格納しているファイルも読み
出すことが出来ます。
二つ目の文字列は、モード指定です。次のように指定します。
"r"……読み取りモード。通常のcsvファイルを読み
ます。
"rc"……暗号化csv読み取りモード。wcで書き込んだcsvファイルを読みます。
"w"……書き込みモード。csvファイル
に書き込みます。
"wc"……暗号化書き込みモード。csvファイルを暗号化して書き込みます。
csvopen "test.csv","r"例)
csvopen "angou.csv","wc"
(読み取りモード専用です)
csvファイルからデータを読み出します。指定した順に読み取ります。
csvread $0,$1,%0,%2
(書き込みモード専用です)
csvファイルにデータを書き込みます。指定した順に書き込みます。
csvwrite 12,"test",%1,$2
デバッグウィンドウに表示される文をdebuglog.txt
というテキストファイルに保存していくことが出来る命令です。
debuglog 1でオン、debuglog
0でオフです。define節でもstart以降でも使えます。
デフォルトのフォントを指定します。
指定しなければ、MS ゴシックが使われます。
特殊表示文字!sdまたはtextspeeddefault命
令を呼び出したときの時の文字速度の指定です。
左から順に、メニューから「低速」「普通」「高速」を選んだときの速度です。
defaultspeed 50,20,0
指定した名前のユーザ定義命令を作ります。
実際にはサブルーチンとして実装されます。
命令名
は変数と同じ法則で名づけることが出来ますが、先頭に_を使うことだけは出来ません。
defsub subname 以降のスクリプトで subname とあると、 *subname にgosubジャンプする。
NScrからWindowsのメニューバーをなくせます。
deletemenu
メモリ内に確保したスクリーンショットを削除します。
savescreenshot2
命令と組み合わせて使います。
deletescreenshot
配列変数はBASIC式です。つまり、この宣言だと、?0
は、
一次元目が0〜10の、二次元目が0〜20の添字を使えます。
例のとおり、今まで「数字」となっていたところならどこでも
配
列変数を使えます。
mov ?0[2][5],20 ;?0[2][5]に20を代入。 mov %4,?0[3][1] ;%4に?0[3][1]を代入。 ?0[2][3]=?0[2][3]@ ;値を表示例)
numalias enemyparam,10 dim ?enemyparam[10]
draw系命令で描画した画像を実画面に転送します。
こ
れがないと表示されません。
*test saveoff ;デモ処理はsaveoffしたほうが速くなります。終わったらsaveonを忘れずに mov %0,0 bg "bg.bmp",1 *lp resettimer drawclear drawbg2 320,240,100,100,%0*2 draw wait 5 ;ウェイトを多少いれないと、メッセージ処理が遅れがちになります。 gettimer %1 if %1>=50 add %0,%1/50 if %1<50 waittimer 50:inc %0 ;掛かった処理時間に比例して変数を変化させます。 goto *lp
BG画面を描画します。(x,y)で位置を指定します。
x_scale、y_scaleは、縦横の拡
大率です。単位は%です。
rotは回転の角度です。反時計回りで、単位は度です。
なお、はみ出た部分は描画されないので前の画像が残りま
す。
それではまずい場合は、事前にdrawclearなどで消しておいて下さい。
drawbg2 320,240,200,300,15
スプライトを描画します。
スプライト番号、セル番号、透過度、表示先左上x座標,表示先左上y座標を
指定します。
通常モードでのスプライトの位置、表示非表示は関係ありません。
スプライトやテキストウィンドウは、新しく書いたほうが上へ
重なります。
drawsp 2,1,128,20,40
スプライトを描画します。
スプライト番号、セル番
号、透過度、表示先中心x座標,表示先中心y座標を指定します。
通常モードでのスプライトの位置、表示非表示は関係ありません。
スプライ
トやテキストウィンドウは、新しく書いたほうが上へ重なります。
drawsp2 2,1,128,20,40,150,60,-10
drawsp系の命令で、一次変換を実現するものです。
ス
プライトを描画します。
スプライト番号、セル番号、透過度、α値、表示先中心x座標,表示先中心y座標、行列の要素左上、右上、左下、左下の順で
指定します。
行列の要素は実際の1000倍の値になります。
drawsp3 2,1,128,20,40,1500,300,800,1200
テキストウィンドウを描きます。
これより前に書いた
スプライトは下に、後に書いたスプライトは上に来ます。
drawtext
define節で使います。DirectSoundを使うこ とを宣言します。この命令を使うには、DirectX2もしくはそれ以降が必要です。 (この命令は現在のバージョンでは使う必要がなくなっています)
ボイスを入れるときに便利な命令です。
dwave 0,"wav\数字.wav"と等価です。
dv0001:「これが0001番のせりふだよー」
DirectSoundでWAVファイルを演奏します。
数字はチャンネルNOで、0から49までで
す。
違うチャンネルの音はミキシングされて同時再生されます。
なお、オートモードでの再生終了待ちはチャンネル0で行います。
再
生できるのはPCM形式だけです。
wave系命令と同時に使用することも出来るので、たとえばMP3コーデックでの
BGMをwaveloop命令で鳴らしつつ、こっちで音声再生という使い方が出来ます。
dwave 0,"test.wav"
演奏前にWAVをメモリにロードしdwaveplay dwaveplayloopで再生します
dwaveload 0,"test.wav" dwaveplay 0
dwaveと同じ書式ですが、こっちはループ再生します。
dwaveloadでメモリにロードしたWAVを一度だけ再生 します。
エフェクト番号に、効果を割り当てます。
画像表示命令
には、ここで指定したエフェクト番号を使ってください。
左から順に、エフェクト番号、効果番号、掛ける時間(単位ミリ秒)、パターン画像名です。
た
だし、効果番号によっては、後ろの二つは省略されることもあります。
エフェクト番号0番は、「表示せずに、次の画像命令でいっしょに表示
する」という意味で予約されているので、1番以降を使ってください。
なお、エフェクト番号0を使った場合は、なるべく早くほかの画像表示命令で画
像を表示してください。
デフォルト指定で、1が瞬時表示にしてあります。
<効果番号一覧表>
1 瞬時表示。時
間指定はいりません。
2 左シャッター
3 右シャッター
4 上シャッター
5 下シャッター
6 左カー
テン
7 右カーテン
8 上カーテン
9 下カーテン
10 ピクセル単位のクロスフェード
11 左からスク
ロール
12 右からスクロール
13 上からスクロール
14 下からスクロール
15 マスクパターンによるフェード。
第三パラメータに文字列でマスク画像名を指定します。
マスク画像の形式は256色でもフルカラーでもかまいません。
サン
プルで置いてあるm1.bmp,m2.bmpでためしていただければわかると
思いますが、マスク上で白いところほど遅く、黒いところほど速
く
表示されます。
マスク画像が小さいときは、壁紙のように四方に並べて640x480ドットに
敷き詰められま
す。
16 モザイクアウト。この命令のあとは、指定された画面をエフェクト番号0
でロードしたときと同じで、不定状態です。必ず、
直後にほかの命令…
たとえばprintなどを使って、画像を表示しなおしてください。
17 モザイクイン。
18 マスクパ
ターンによるクロスフェード
15番では、単に、マスクの濃度による時間差でピクセルがコピーされる
だけでしたが、こっちは、
時間差クロスフェードします。
各社ではやっている演出効果ですが、マシンへの負担が、全エフェクトで
一番大きいので、遅いマ
シンでは、少し荒くなるかもしれません。
effect 2,4,1000例)
effect 3,15,2000,"m3.bmp"
エフェクト終了後、次の命令の実行までにどれだけの間を取るか
をミリ秒単位で指定します。
エフェクトが瞬時表示(1)である場合、この設定に関係なく、瞬時に表示されます。
エフェクト中にクリックをしたらエフェクトがスキップされるか
どうかを指定します。
デフォルトでは1(スキップする)になっています。0にするとスキップしません。
effectskip 1
NScripterを英文モードにします。半角英字のみの文
章を正しく表示できるようになります。
このモードを使う時は、行頭を>にしてください。
*define english game *start >Peter Piper picked a peck of pickled peppers;@ end
最後に制御文字列が付く以外はspbtnと同じです。機能も同等。
ただし、そのボタンにカーソルが重
なったとき、ボタンを変化させるだけでなく、
制御文字列で指定されたスプライト制御を実行します。
制御文字列は次の形式で書いて
ください。
"C数字" 指定したスプライト番号を非表示にする
"P数字" 指定したスプライトを表示する
"P数字1,数字2"
数字1のスプライトのセル数字2を表示する
制御文字列では、上の三つをいくつでも連結して指定できます。
複合ボタンで
は、「どれにもカーソルが重なっていないとき」の指定が必要です。
それをexbtn_dで実現します。
ボタンは他のものと同様、
文字列スプライトでも普通の画像スプライトでもOKです。
"C10"例)
"C11P10"例)
"C11P10,2P9"
複合ボタンでどれにもカーソルが重なっていないときの指定をします。
exbtn_d "P3C4C5C6P7,0"
指定されたパラメータを渡して指定されたDLLを呼び出しま す。
exec_dll "execdll.dll/テストですよー。"
ファイルログに画像タグが記録されているか調べます。
if
文中で使います。その画像タグがゲーム中で読まれていれば真です。
タグが違えば、同じファイルでも違うものとみなされます。
ld c,":a;test.bmp",1 if fchk ":a;test.bmp" ;真 if fchk "test.bmp" ;偽
ファイルアクセスログをとることを指定します。
一度
でも読み込んだ画像タグは、すべて記憶します。
なお、タグが違えば、同じファイルでも違うものとみなされます。
この命令も
globalonも使わなければ、NScr.exeはカレントに何も書きに行きませんので、CD起動が可能になります。
テキスト表示のフォントを変えます。
一回文字をクリアしたその次の表示から適用されますので、
画
面に文字が表示されてないうちに使ったほうがいいと思います。
font "MS 明朝"
基本的にBASICと同じです。指定した変数がTOで指定し
た数を超えるまで
(STEPが負の時は、それより小さくなるまで)は、ループを繰り返します。
一回ごとにSTEPで指定した数を変数に加
えます。
STEPは省略すると1になります。
(注意)
FORループをgoto文やselect文で抜けると、内部的には
ループ中なので、
NScrのスタックを無駄に消費します。
その部分が無限ループでもない限りそのせいで落ちるということは
まずな
いですが、そういうコードはいわゆる「スパゲッティコード」
と呼ばれるもので、読みにくく、分かりにくくなっているはずです。
FOR文と
NEXT文は見やすくインデントしてソースの上でも一対一対応
させるのがお勧めです。
また、途中で安全にループを抜けたい場合は
BREAK文を使ってください。
(ループ内からgosubで飛んでループ内に戻ってくるのはOKです。
むしろループの始まりと終わり、
外と中がはっきりするのでお勧め)
for %0=1 to 10 add %1,%0 next
たとえば、右クリックなどで抜けた後、再び処理を btnwaitに戻したいとします。その場合、btnwait命令が実際には何ミリ秒を使ったのかをgetbtntimer命令は返してくれるので、その 分引いた秒数で実行すればうまくいきます。
csel選択肢の数を取得する。
getcselnum %0
btndefとbtnwait系命令の間に挟む。カーソル上 右下左で-40,-41,-42,-43が返る。
getcursor
テキストカーソル、つまりテキストウィンドウにおける文字の表 示位置を取得します。
getcursorpos %0,%1
getcursorpos命令と似ていますが、この命令は「最後に表示した文字の左上座標」を取得します。
getcursorpos2 %0,%1
btndefとbtnwait系命令の間に挟む。リターン キーを押されたときに-19が返る。
getenter
btndefとbtnwait系命令の間に挟む。 F1〜F12を押されたときに-21〜-32が返る。
getfunction
btndefとbtnwait系命令の間に入れてください。
Insert
キーをボタンモードで拾えるようになります。
-50が返ります。
getinsert
バックログ用の文字列を取得します。改行情報やルビ情報も格納されています。
第一引数に格納先文字列変
数、第二引数にcheckpageと同じく何ページ前かを指定します。
getlog $0,%5
getlogとほぼ同じ機能ですが、strspと組み合わせる場合はこちらを使ってください。
今後は
strspとgetlogをメインに作っていきます。
従来のbtnwait命令に、getmclick命令を作り ました。getfunction等と同じくbtndefとbtnwaitの間で使ってください。-70を返します。
btndefとtextbtnwaitの間で使ってください。
指定した範囲のボタンについては、上に
重なっただけでbtnloopから抜けます。
btndef clear getmouseover 0,9 textbtnwait %0
マウスカーソルの座標を指定した変数に取得します。
clickpos
と違い、クリック待ちを発生させずに座標を取得することが出来ます。
getmousepos %0,%1
btndefとbtnwait系命令の間に入れてください。
PageUp
PageDownをボタンモードで拾えるようになります。
-12,-13が返ります。
getpage
呼び出し元でラベル名を指定した場合、呼び出し先では文字列
として読み込むことが出来ます。
NScripterのどの命令でも、ラベル名の代わりに文字列を使うことが出来るというのをうまく利用してくださ
い。
たとえば、
*define
defsub usergoto
game
*label
ジャンプし
ました。\
end
*start
usergoto *label
*usergoto
getparam
$0
;ここで、$0に"*label"が入る。
goto $0
;これで、goto "*label"→goto
*labelと同じ
*define defsub sub *sub getparam $50,%50 ;$50に"文字列"、%50に12が代入される return *start sub "文字列",12例)
*define defsub kakeru_4 game *kakeru_4 getparam i%50,%51 ;i%と書くと、呼び出し元の数字変数の変数番号が取得できる。この場合「3」 mov %%50,%51*4 ;%%50と書くと、変数番号「%50」の数字変数への代入になります。つまりこの場合mul %3,4と同じ return *start kakeru_4 %3,10 ;%3は10*4=40になる例)
*define defsub renketu game *renketu getparam s%50,$51 ;文字変数の場合はs% add $%50,$51 ;$%50と書くと、変数番号「%50」の文字変数への代入になります。 return *start mov $1,"れんけつ" renketu $1,"てすと" ;$1は"れんけつてすと"となる。
レジストリを開いて、データを文字変数に取得します。
HKEY_CURRENT_USER以下のキーし
か選べません。
getreg $0,"software\leaf\toheart","datadir"
exec_dllで実行したDLLから返される値を取得しま
す。数値と文字列を一つずつ取得できます。
その他、textfieldなどの命令が戻す値を取得するためにも使用します。
savegame2で保存した文字列を取り出します。
getsavestr $1,12
スクリーンショットを取ります。メモリ内に確保するだけなので、savescreenshotでファイルに保存
する必要があります。
getscreenshot 160,120
btndefとtextbtnwaitの間で使ってくださ
い。
スキップオフを-60で、オートモードオフを-61で取得します。
btndef clear getskipoff textbtnwait %0 if %0=-60 gosub *clearskipicon
スプライトが表示状態なら1、非表示状態なら0を返す命令です。
getspmode %2,10
スプライトのサイズを取得します。
セル数を受け取る変数は省略できます。
getspsize 0,%0,%1,%2
btndefとbtnwait系命令の間に挟む。tabキー を押したときに=-20が返る。
gettab
*pretextgosubで指定したサブルーチンから、タグの内容を取得します。
splitに似て
いますが、""は必要ありません。/区切りです。
省略されたものは""もしくは0で補います。
タグそのものが省略されているときは、すべ
てが""もしくは0で補われます(ここがポイント)
例)gettag $0,$1 になってる場合、
[太郎/0001.wav]
テスト用の文章です。 ;→$0="太郎" $1="0001.wav"
省略することも出来ます。 ;→$0="" $1=""
ボ
イスや名前タグの処理に使ってください。
gettag $0,$1
getlog命令と同じ要領で、指定した数だけ前のページのタグを取得します。
バックログにタグも残
りますので、バックログのカスタマイズをするときに、名前や音声をタグで指定しておけば、それを読み出すことが出来るので便利です。
タグ
指定が無かった場合は""を返します。
ここで、gettag命令では文字列を/区切りで分離して変数に格納できましたが、gettaglog命令
ではそれが出来ません。
次のようにすれば、gettagと同じように分離出来ます。
gettaglog $0,2 split $0,"/",$1,$2
テキストボタン番号に対応した文字列を取得します。
無い場合は""が代入されます。
gettextbtnstr $0,12
ウィンドウのクライアント領域(メニューなどを除いた、画像が
描画される部分の大きさ)を取得します。デフォルトでは640と480です。
getwindowsize %0,%1
btndefとbtnwait系命令の間に入れてください。
z,x,c
キーをボタンモードで拾えるようになります。
-51,-52,-53が返ります。
getzxc
立ち絵の基準となるX座標を設定します。
この命令で指定した座標に立ち絵の真ん中を合わせることにな
ります。
おそらくデフォルトは160,320,480です。
スプライトと立ち絵の重なる時の優先順位(Zオーダー)を指定
します。
指定した番号のスプライトのすぐ上に立ち絵が表示されることになります。
デフォルトは、25です。
条件判断文です。次の形式で使います。
if
条件式 ({&&,&} 条件式) 実行文
ifは、条件が成立した場合、notifはしなかった場合、残りの文を実行し
ます。
成立しなかった場合、その行は読み飛ばされます。
&&も&も同じ意味で、条件をさらに絞り込むのに使いま
す。
条件式には数字、もしくはfchk関数が使えます。
<条件式>
数字
{>,<,=,>=,<=,==,!=,<>} 数字
もしくは、
fchk 文字列
<,>,=,>=,<=は意味がわかると思います。
==は=と同じで、「等しい」、!=は<>と
同じ意味で「等しくない」です。
fchkは、文字列で指定された画像を読み込んだことがあれば真になります。
if %0=1 quakex 2,500 ; 基本形例)
if %0=1 && %2=5 end ; 両方成立したら実行例)
if %0=2 mov %1,1:skip 2 ; :で、行をつなげられる。
改行時に指定文字数だけ右インデントします。
pretextgosubと組み合わせれば、台詞内改行
の時だけ右に何文字かずらしたいというときに使えます。
indent 2
inputstr
と同じくテキスト入力ボックスを出します。inputはデフォルト文字列を表示できます。
最後の数字は0か1かで、全角文字強制フラグです。
数字変数に数値を入力するダイアログを表示します。
文
字列には、ダイアログに表示するメッセージを入れてください。
最後の4つは省略可能で、順に、全体のウィンドウサイズX,Y、文字入力ボックスサ
イズX,Yです。
文
字変数に文字列を入力するダイアログを表示します。
文字列には、ダイアログに表示するメッセージを入れてください。
最初の数字は最大文字
数、最後の数字は0か1かで、全角文字強制フラグです。
最後の4つは省略可能で、順に、全体のウィンドウサイズX,Y、文字入力ボックスサイズ
X,Yです。
メニューを挿入します。常に先頭に挿入されます。
insertmenu "終了",END insertmenu "バージョン情報",VERSION insertmenu "次の選択肢に進む",SKIP insertmenu "オートモード",AUTO insertmenu "環境設定",SUB ;SUBはサブメニューが開くことをあらわします。 insertmenu "フォント",FONT,1 insertmenu "ウェーブ",SUB,1 insertmenu "ON",WAVEON,2 insertmenu "OFF",WAVEOFF,2 insertmenu "ボリューム",DWAVEVOLUME,2 insertmenu "テキスト",SUB,1 insertmenu "遅い",TEXTSLOW,2 insertmenu "普通",TEXTMIDDLE,2 insertmenu "速い",TEXTFAST,2 insertmenu "画面",SUB,1 insertmenu "フルスクリーン",FULL,2 insertmenu "ウィンドウ",WINDOW,2 insertmenu "CD−DA",SUB,1 insertmenu "ON",CDON,2 insertmenu "OFF",CDOFF,2 insertmenu "クリック設定",SUB,1 insertmenu "普通",CLICKDEF,2 insertmenu "ページごと",CLICKPAGE,2
数字変数の値を制限します。最大値を超えれば最大値に、最小値を超えれば最小値になります。
順に、数字
変数番号,最小値,最大値です。
intlimit 0,10,20
ボタン押下中かどうかを判定して結果を変数に格納する。
離していれば0、押していれば1が返る。
*waitloop btnwait %0 if %0=0 goto *onlclick end *onlclick isdown %1 if %1=1 puttext "0/":goto *onlclick puttext "" goto *waitloop
現在フルスクリーンかどうかを取得します。
isfull %0 if %0==0 menu_full notif %0==0 menu_window
textgosubサブルーチン時、呼び出し理由が改ページだったら1、
単なるクリック待ちだったら0
を指定した数字変数に返します。
ispage %0
現在がスキップモードなら1、オートモードなら2、通常モードなら0を返します。
数値を文字列に変換します。ただし、半角文字になります。
itoa $0,120 itoa $1,%2
itoaと同様に数値を文字列に変換しますが、この命令では全角文字列になります。表示したいときに便利です。
itoa2 $0,%4
直前の~記号まで戻ります。
次の~記号までジャンプします。ラベル名を考えるのがめんど くさいときに使ってください。しかし、当然入れ子構造には出来ないので、とび先がすぐ見えるときだけに限定して使うほうがいいです。
jumpf この文は飛ばされます。 ~ この文は表示されます。
この命令を使うと、「次の選択肢へ進む」が既読スキップにな
ります。既読データはファイルに保存されますが、スクリプトが変わると、変わった部分以降は、ずれてきます。
既読データは
「kidoku.dat」に保存されます。
左から数えて、その数字の位置にあるメニューを消してしまいます。
なお、二度目以降は、前のメニュー
がなくなった分、位置がずれることに注意してください。
0が一番左で、右へ行くたびひとつづつ増えます。
killmenu 7 killmenu 5 killmenu 4 killmenu 3 killmenu 2 killmenu 1 killmenu 0
kinsoku onで禁則処理をオンにします。kinsoku offで禁則処理をオフにします。
ラベルがあれば1、ラベルが無ければ0を返します。
labelexist %0,*message if %0==1 gosub *message
ファイルログと同じような形式で、ラベルのログを取ります。
goto gosub 等の飛び先に指定されたか、スクリプトを読んでいて通過したラベル名をすべて記憶します。
指定されたレイヤ番号に任意の文字列を送信します。
レ
イヤはこの命令を利用して様々な効果を実現できます。
BOOL Message (char *message,int
*returnint,char *returnstr);
で受け取ることができます。
fchkと同じく、if文中で使います。そのラベルを読んでい
れば真です。
NScrのラベル名には(ここ以外のどの場所でもですが)文字変数が使えますので、
lchk *test
lchk
"*test"
lchk $0
上のみっつは、どれも正しい表記です。
立ち絵をロードします。左(l)、右(r)、真ん中(c)か
ら場所を選べます。
文字列で画像ファイルを指定してください。タグが使えます。
行末に\を入れなくても表示文の改行を改ページとみなすよう
にします。
AVGなどで一行ずつしか表示しないとき改行記号を入れなくてもよくなります。
@や\、clickstrを同時に使う場合は動
作に気をつけてください。
linkcolor カーソルオフ時の色,カーソルオン時の色
テ
キストボタンの色を設定します。
デフォルトでは、黄色と水色です。
linkcolor #FFFF88,#88FF88
ロード直後に呼び出すサブルーチンを指定します。
この
サブルーチンは、セーブした状態を復元したその直後に呼ばれます。
つまり、セーブできるところならどこからでも呼ばれうるものであることに注意し
て慎重にスクリプトを組んでください。
プラグインで音楽を再生したりしている場合、その復元は手動でしなければならないので、そのためにこの命令
を用意しました。
loadgosub *loadlb
getlogで取得した文字列から、バックログ用の文字画像
をスプライトとして取得します。
いったん文字列を経由するのは、将来的に加工することを考えてのことです。
第一引数にスプライト番号、第
二引数にバックログ文字列、第三〜四引数で左上の座標、第五引数行以降は、文字色(元の文字色に関係なく単色になります)を指定します。省略する
と#FFFFFF、複数指定すると、その数だけセルのある複数セルスプライトになります
logsp 8,$0,60,90例)
logsp 8,$0,60,90例)
logsp 8,$0,60,90,#888888,#FFFF88
logspの拡張版で、文字サイズが指定出来ます。
logsp2 2,$0,150,20,17,17,0,1
回想モード用のボタンをロードします。
左から順に、上
方向選択状態、上方向非選択状態、下方向選択状態、下方向非選択状態、です。
デフォルトで
は"uoncur.bmp","uoffcur.bmp","doncur.bmp","doffcur.bmp"です。
画像の大きさがすべて同
じでないと誤動作します。
回想ボタンはアニメーションできません。
回想ボタンは、テキストウィンドウの右上下端に貼り付けられます。
位
置は変えられないので、透過をうまく使って位置調整してください。
バックログボタンがデフォルトのものではなくスプライトボタン になる。
lookbacksp 2,3
冒頭部に指定したファイルを最初に演奏し、以降は停止されるまでループ部に指定したファイルを繰り返し演奏し ます。
loopbgm "bgm_s.wav","bgm_l.wav"
左クリックもしくは右クリックを待ちます。
どちらで
返ってきたかはgetretで取得できます。
getret %0
で、0で右クリック、1で左クリックです。
lrclick
スプライトを表示します。スプライトは0から49までです。
数
字は順に左上のX,Y座標、文字列で画像ファイルを指定してください。
lspとlsphの違いは、最初のスプライトの状態です。
最後の数
字は、スプライトの透過度です。これは省略できます。
lspは表示モード、lsphは非表示モードです。
拡張スプライトのロード命令です。拡張命令は、通常のスプラ
イトと同様の移動やα値変更の他に、画像の中心を中心とした回転、拡大縮小、左右上下反転、そして加算ブレンディングが可能です。
lsp2は表示
状態、通常のブレンディング
の状態でロードします。与えるパラメータは同じです。
lsp2
拡張スプライト番号,画像ファイル名,中心X座標,中心Y座標,X拡大率,Y拡大率,回転角(,初期α値、省略すると255)
なお、拡大率にマイ
ナスの値を与えるとその方向に反転します。単位はパーセントです。回転角は反時計回りで単位は度です。
lsp2 0,":c;test.bmp",320,240,100,200,36
拡張スプライトのロード命令です。拡張命令は、通常のスプラ
イトと同様の移動やα値変更の他に、画像の中心を中心とした回転、拡大縮小、左右上下反転、そして加算ブレンディングが可能です。
lsp2add
は表示状態、加算ブレンディング
の状態でロードします。与えるパラメータは同じです。
lsp2add
拡張スプライト番号,画像ファイル名,中心X座標,中心Y座標,X拡大率,Y拡大率,回転角(,初期α値、省略すると255)
なお、拡大率にマイ
ナスの値を与えるとその方向に反転します。単位はパーセントです。回転角は反時計回りで単位は度です。
lsp2add 0,":c;test.bmp",320,240,100,200,36
拡張スプライトのロード命令です。拡張命令は、通常のスプラ
イトと同様の移動やα値変更の他に、画像の中心を中心とした回転、拡大縮小、左右上下反転、そして減算ブレンディングが可能です。
lsp2sub
は表示状態、減算ブレンディング
の状態でロードします。与えるパラメータは同じです。
lsp2sub
拡張スプライト番号,画像ファイル名,中心X座標,中心Y座標,X拡大率,Y拡大率,回転角(,初期α値、省略すると255)
なお、拡大率にマイ
ナスの値を与えるとその方向に反転します。単位はパーセントです。回転角は反時計回りで単位は度です。
lsp2sub 0,":c;test.bmp",320,240,100,200,36
スプライトを表示します。スプライトは0から49までです。
数
字は順に左上のX,Y座標、文字列で画像ファイルを指定してください。
lspとlsphの違いは、最初のスプライトの状態です。
最後の数
字は、スプライトの透過度です。これは省略できます。
lspは表示モード、lsphは非表示モードです。
拡張スプライトのロード命令です。拡張命令は、通常のスプラ
イトと同様の移動やα値変更の他に、画像の中心を中心とした回転、拡大縮小、左右上下反転、そして加算ブレンディングが可能です。
lsph2は非
表示状態、通常のブレンディング
の状態でロードします。与えるパラメータは同じです。
lsp2
拡張スプライト番号,画像ファイル名,中心X座標,中心Y座標,X拡大率,Y拡大率,回転角(,初期α値、省略すると255)
なお、拡大率にマイ
ナスの値を与えるとその方向に反転します。単位はパーセントです。回転角は反時計回りで単位は度です。
lsph2 0,":c;test.bmp",320,240,100,200,36
拡張スプライトのロード命令です。拡張命令は、通常のスプラ
イトと同様の移動やα値変更の他に、画像の中心を中心とした回転、拡大縮小、左右上下反転、そして加算ブレンディングが可能です。
lsph2add
は非表示状態、加算ブレンディング
の状態でロードします。与えるパラメータは同じです。
lsp2
拡張スプライト番号,画像ファイル名,中心X座標,中心Y座標,X拡大率,Y拡大率,回転角(,初期α値、省略すると255)
なお、拡大率にマイ
ナスの値を与えるとその方向に反転します。単位はパーセントです。回転角は反時計回りで単位は度です。
lsph2add 0,":c;test.bmp",320,240,100,200,36
拡張スプライトのロード命令です。拡張命令は、通常のスプラ
イトと同様の移動やα値変更の他に、画像の中心を中心とした回転、拡大縮小、左右上下反転、そして減算ブレンディングが可能です。
lsp2sub
は表示状態、減算ブレンディング
の状態でロードします。与えるパラメータは同じです。
lsp2sub
拡張スプライト番号,画像ファイル名,中心X座標,中心Y座標,X拡大率,Y拡大率,回転角(,初期α値、省略すると255)
なお、拡大率にマイ
ナスの値を与えるとその方向に反転します。単位はパーセントです。回転角は反時計回りで単位は度です。
lsph2sub 0,":c;test.bmp",320,240,100,200,36
NScripterのデフォルト動作のほとんどを、Lua関
数で横取りすることができます。
表示文をスプライト機能で置き換えたり、システムカスタマイズなどをLuaで行えるようになります。
指定
文字列は""で囲む必要はありません。また、大文字小文字も区別されません。
Lua側の関数名は、NSCALL_(指定文字列)となります。
Lua
関数の引数や文字列は、それぞれの機能ごとに形式が定められています。
luacall text
define節命令です。
命令名を受け取り、それをLua側のNSCOM_(命令名)という関数に結び
付けます。
この命令を実行すると、以後シナリオスクリプト(00.txt〜)でfunc命令を実行したときに、
Lua関数
NSCOM_func() が呼び出されます。
luasubで登録されるLua関数には引数も戻り値もありません。
引数や戻り値はそれぞ
れ下で説明している関数を使って利用してください。
luasub func
ボリューム変更ダイアログを表示します。
menu_dwavvol
フル画面モードにします。
isfull %0 if %0==0 menu_full notif %0==0 menu_window
ウィンドウ画面モードにします。
isfull %0 if %0==0 menu_full notif %0==0 menu_window
Rクリックでメニューが出るモードにしたときの、メニューの
色を指定します。
順に、マウスが上にいるとき、いないとき、セーブファイルがないとき、の色です。
メニュー選択肢の音、その他システム音WAVEファイルの指定
です。
順に、メニューが開くとき、メニューをキャンセルしたとき、メニュー選択肢のどれかの上に動いたとき、どれかをクリックしたとき、できない
操作をしたときの警告、「はい」を選んだとき、「いいえ」をえらんだとき、です。
なお、WAVEファイルに""を指定すると、何も鳴らさ
なくなります。
デフォルトは、すべて""です。
メニュー用のウィンドウ設定です。
メニューウィンド
ウは、必ず全画面で、明度を落とすタイプです。
左から順に、文字フォントサイズX、文字フォントサイズY、字間X、字間Y、太字フラグ(1(太
字)か0(普通))、影付けフラグ(1(つける)か0(つけない))最後のパラメータは、ウィンドウの色です。
文字列から部分文字列を取得します。
mid $0,$1,%0,%1例)
mid $0,$1,0,5
商用ソフト「銀色」のために作った命令です。
この命
令を実行すると、メニューに「オートモード」がつきます。
オートモードは「次の選択肢まで進む」に似ていますが、ウェーブが
なりおわるま
で先には進まず、ウェーブがないところでも、下のautomode_time命令で
どのくらいクリックまでに待つか指定することが出来ます。
い
わゆる読み上げモードですね。
メニューからボリューム変更ダイアログが
使えるようになる。(MP3(BGM)
voice(DWAVE 0) SE(DWAVE 1〜)のボリュームを
いじれるようになりました。)
この辺の拡張機能の追加については
もうちょっとすっきりした命令を作る予定
(今有効な命令は将来的にもちゃんと使えます。)
同ソ「莢〜背徳の迷宮〜」のために作った命令です。この命令 を実行すると、動作が莢モードになります。莢モードでは、・文字ウィンドウが消えているとき、表示状態に関わらず、 スプライト0〜9が非表示になりま す。 ・文字ウィンドウが消えているとき、以下で説明するバーや数字表示が非表示になります。 この二つは、例えば「パラメータウィンドウ」みたいのを、テキストウィンドウを消すのと同時に消したいときに使えます。
画面サイズを320×240にします。
この命令だけ
は特殊な書式で、0.txtの一番最初の行(*defineより前)のコメント行の中に書きます。
;mode320 *define
画面サイズを400×300にします。
この命令だけ
は特殊な書式で、0.txtの一番最初の行(*defineより前)のコメント行の中に書きます。
;mode400 *define
画面サイズを800×600にします。
この命令だけ
は特殊な書式で、0.txtの一番最初の行(*defineより前)のコメント行の中に書きます。
他に400,320を指定できます。
;mode800 *define
その色を基調としたモノクロ画面モードになります。
ただし、テキストウィンドウやカーソルはその影響を
受けません。
monocro offで、モノクロ状態を抜けます。
最初に指定した数字変数から順に数字を代入します。
単
純に、10つの値をテーブルに代入する作業が楽になる命令です。
mov10 %3,2,4,6,8,10,12,14,16,18,20 ;これは、 ;mov %3,2 ;mov %4.4 ;mov %5,6 ;mov %6,8 ;mov %7,10 ;mov %8.12 ;mov %9,14 ;mov %10.16 ;mov %11,18 ;mov %12,20 ;と等価です。
最初に指定した数字変数から順に数字を代入します。
単純に、3つの値をテーブルに代入する作業が楽にな
る命令です。
同様の命令に、"mov4" "mov5" "mov6" "mov7" "mov8" "mov9" "mov10"
があります。
それぞれ、4、5、6、7、8、9、10個の代入を楽にしてくれます。
mov3 %3,2,4,6 ;これは、 ;mov %3,2 ;mov %4.4 ;mov %5,6 ;と等価です。
最初に指定した数字変数から順に数字を代入します。
単
純に、4つの値をテーブルに代入する作業が楽になる命令です。
mov4 %3,2,4,6,8 ;これは、 ;mov %3,2 ;mov %4.4 ;mov %5,6 ;mov %6,8 ;と等価です。
最初に指定した数字変数から順に数字を代入します。
単
純に、5つの値をテーブルに代入する作業が楽になる命令です。
mov5 %3,2,4,6,8,10 ;これは、 ;mov %3,2 ;mov %4.4 ;mov %5,6 ;mov %6,8 ;mov %7,10 ;と等価です。
最初に指定した数字変数から順に数字を代入します。
単
純に、6つの値をテーブルに代入する作業が楽になる命令です。
mov6 %3,2,4,6,8,10,12 ;これは、 ;mov %3,2 ;mov %4.4 ;mov %5,6 ;mov %6,8 ;mov %7,10 ;mov %8.12 ;と等価です。
最初に指定した数字変数から順に数字を代入します。
単
純に、7つの値をテーブルに代入する作業が楽になる命令です。
mov7 %3,2,4,6,8,10,12,14 ;これは、 ;mov %3,2 ;mov %4.4 ;mov %5,6 ;mov %6,8 ;mov %7,10 ;mov %8.12 ;mov %9,14 ;と等価です。
最初に指定した数字変数から順に数字を代入します。
単
純に、8つの値をテーブルに代入する作業が楽になる命令です。
mov8 %3,2,4,6,8,10,12,14,16 ;これは、 ;mov %3,2 ;mov %4.4 ;mov %5,6 ;mov %6,8 ;mov %7,10 ;mov %8.12 ;mov %9,14 ;mov %10.16 ;と等価です。
最初に指定した数字変数から順に数字を代入します。
単
純に、9つの値をテーブルに代入する作業が楽になる命令です。
mov9 %3,2,4,6,8,10,12,14,16,18 ;これは、 ;mov %3,2 ;mov %4.4 ;mov %5,6 ;mov %6,8 ;mov %7,10 ;mov %8.12 ;mov %9,14 ;mov %10.16 ;mov %11,18 ;と等価です。
mpegplayに変わる次期主力となる予定のムービー再生命令です。
以下を組み合わせることが出来ま
す。
movie "ファイル名" ;単に終わるまで再生する。クリックでスキップできない。
movie
"ファイル名",pos,10,20,320,240 ;左上の座標10,20 大きさ320x240で再生
movie
"ファイル名",click ;クリックで、その場で停止して再生終了(async時無効)
movie "ファイル名",loop
;ループ再生します(asyncもしくはclickを指定しないと止める方法がないということになるので注意)
movie
"ファイル名",async
;非同期再生します。この命令は再生を始めた時点で処理をNScripterに戻し、通常通りのスクリプト動作を続けたまま、ムービーが再生されます。
ムービーは常に最前列として扱われます。字よりも上なので注意。
movie stop ;asyncで非同期再生をしているムービーを止めます
movie "test.mpg",pos,10,20,320,240,async,loop wait 30*1000 movie stop例)
movie "test.mpg",click print 10,1000
配列の行に対して一度に値を代入します。
dim ?10[4] movl ?10,0,1,2,3,4例)
dim ?20[2][3] movl ?20[0],0,1,2,3 movl ?20[1],0,2,4,6 movl ?20[2],0,3,6,9
mp3dec.dllがある場合、それを利用してMP3ファイルを演奏します。
mp3loopは、音を
ループさせます。
waveと同時に使っても大丈夫のようです。
bgmのボリュームを変えます。bgm命令とmp3命令で有効です。
mp3vol 100
ファイル名に指定したファイルをDirectShowの機能で
再生します。
クリックフラグが0だとクリックしても再生をやめませんが、
クリックフラグが1の場合は、画面クリックで再生を中止します。
こ
の命令を使うには、DirectX8.0a以上が必要です。
(古いDirectXでも使えるかもしれませんが、サポート対象にはしません)
mpegplay "test.mpeg",1
そのスプライトを移動させます。順に、X,Y,透過度に加算する値、です。
なお、tal命令
と、スプライト系命令は、すべて、画像を内部的に書きかえるだけで、画面に反映させません。(一括処理で高速化するためです。)
他の画像命令を
使ったり、文字を表示する前に、必ずprint命令で実際に表示してください。
拡張スプライトの移動命令です。msp2は現在値からの相対 指定、amsp2は値そのものの指定です。
msp2 0,10,20,-10,10,5
1と2で、ネガポジ反転します。
1と2の違いは、
monocroとの優先度です。やってみればわかると思います。
数字0でネガポジ反転をやめます。
nega命令とmonocro命令は、
それだけでは画面を変更しません。
直後にprint命令で、実際の画面変更を行ってください。
条件判断文です。次の形式で使います。
notif
条件式 ({&&,&} 条件式) 実行文
ifは、条件が成立した場合、notifはしなかった場合、残りの文を実行
します。
成立しなかった場合、その行は読み飛ばされます。
&&も&も同じ意味で、条件をさらに絞り込むのに使い
ます。
条件式には数字、もしくはfchk関数が使えます。
<条件式>
数字
{>,<,=,>=,<=,==,!=,<>} 数字
もしくは、
fchk 文字列
notif %0=1 quakex 2,500
NSAアーカイブモードにします。
同梱の
nsaarc.exeで圧縮すると作られるarc.nsa内のファイルを読みこめるようになります。DLLなどはいりません。
nsaファイルは
NScripterと同じフォルダにおいてください。
BMPにはアーカイブ化のときに圧縮がかかります。生BMPを直接渡してください。
NScripter
は、NSA内のBMPを扱うときにもっとも高いパフォーマンスを発揮します。NSA内のBMP形式では、画像ファイルなどを扱うとき、一切の中間ファイル
を作りません。
圧縮するのに時間がかかるような巨大なアーカイブは分割管理すると便利です。 arc.nsa arc1.nsa
arc2.nsa〜arc9.nsaの10個のアーカイブファイルを扱うことが出来ます。
この場合、上に書いた順番で検索していきます。
数字エイリアスを作ります。以降、数字の代わりに、そのエイリアスで指定できるようになります。
な
お、エイリアスの値に変数を代入しても、そのときの値を保持するだけで、あとで変数の値を変更したらいっしょに変わってくれるわけではありません。
エ
イリアスの名前は、C言語の変数の名前と同じ形式です。つまり、一文字目は英語もしくは_(半角アンダーバー)、二文字目以降は、数字、英語、もしくは_
です。ただし、大文字小文字は区別されません。
numalias ef_lshutter,2 ; 以後、ef_lshutterは、2に置換されます。 ; たとえば、bg "test.bmp",ef_lshutterは、bg "test.bmp",2と同じ。例)
numalias akari_love,0 ; 以後、%akari_loveは、%0と同じ意味になります。 ; たとえば、add %akari_love,10で%0に10を加算できます。
blt命令で描かれた画像をオフスクリーンバッファに転送す
る。
解説:
bltの処理を終わってから何かエフェクトをかけたいとき、この命令でオフスクリーンバッファに
今の状態をコピー
してから行います。
この命令で作られたオフスクリーンバッファは、エフェクトのときには正しく動作しますが、
セーブ・ロードでは記憶
されません。あくまでつなぎのための命令です。
blt命令にしろ、ofscpy命令にしろ、高速なデモ処理(AIRのような)をやるために
作
られた特殊な命令なので、使い方が結構難しいですが、ご了承下さい。
btndef "〜" ;アニメ用の画像を読んでおく。 bg 〜 ld c,〜 ;ここまでは普通の画面命令なので、普通に動く。 resettimer blt 〜 waittimer 100 blt 〜 waittimer 100 ;このへんで、高速な画像処理をしている。 ;blt処理をしてから普通の画像命令を使いたいときは、その前にofscpy命令を使うこと。 ofscpy bg 〜 ;あとは普通にやっていい。 bg 〜 ld c,〜
WindowsのOK/キャンセルのダイアログボックスを出して、ユーザからの入力を変数に代入する。
okcancelbox %0,"セーブします。","セーブ確認"
MIDIファイルもしくはCDを演奏します。
ファイル
名を指定すればそのMIDIファイルが、 "*数字"と指定すれば、その番号のCDトラックが演奏されます。
playは最後まで行くとまた最初か
ら再生します。
MIDIファイルもしくはCDを演奏します。
ファイル
名を指定すればそのMIDIファイルが、 "*数字"と指定すれば、その番号のCDトラックが演奏されます。
playonceは一回だけの再生で
す。
テキスト表示の直前にこのフラグで示されるサブルーチンへジャ
ンプします。
pretextgosub命令を使うと、表示文の直前に「タグ」を付けることが出来ます。
「タグ」は、「[」と「]」で囲ま
れた部分のことです。
例)
[太郎/0001.wav]テスト用の文章です。
pretextgosub *pretext_lb例)
pretextgosub *pretext_lb *pretext_lb dwavestop 0 gettag $0,$1 if $0="" indent 0:goto *next_tag mov $2,$0 add $2,"/" puttext $2 ;↑単純に名前だけputtextで表示したのでは最後に改行されてしまうので、 ;末尾に/を付けて改行を抑制している indent 3 ;台詞なのでインデント指定 *next_tag if $1="" return dwave 0,$2 ;ボイス再生 return
そのエフェクトで画面を書きなおします。
エフェクトの指定には、次の二種類の方法がありま
す。
1)一ケタで指定
0…何もしないで、メモリにだけ書きこむ
1…瞬時表示
その
他…effect命令で定義済みのエフェクトを呼び出す。
2)直接指定
effect命令に与えるパラメータと同じ物を指
定。
bg "test.jpg",0 ld c,"testman.jpg",1 cl c,3例)
bg "test.jpg",10,1000 ld l,"testman.jpg",15,2000,"mask.bmp"
数値ラベル表示設定をします。指定した位置・表示設定でその
数字が表示されます。
値は3ケタ、つまり0〜999を想定しています。
指定した後でprint命令などの表示処理を実行しないと、画面に
反映されません。
barとprnumは「莢」のために追加された命令ですが、mode_sayaがなくても使えます。
今後、もう
ちょっと融通の利く命令が別に追加される可能性があります。
その文字列を表示します。if文のあとで、ちょっとした表示をやりたいときなどは使えるかもしれません。
puttext
のときは、変数を表示する機能(特殊表示文字%と$)は使えません。
前のQUAKEX QUAKEY命令はマシンに掛ける負担が大きかったので、 昔のノートのビデオカードの一部でとても遅くなる現象があった ようなので、新しく作りまし た。遅いマシンでも問題無く動くと思います。
quake 8,1000
右クリックを監視して、右クリックされるとラベルへジャンプします。
ジャンプ後は、自動的にトラップが
解除されます。
r_trap offで、トラップを解除できます。
右クリックのみで反応する以外はtrap,lrtrapと同じです。
文字変数にファイルの内容を読み込みます。
readfile $0,"file.txt"
ゲームをリセットし、最初に戻します。
yesnobox %0,"いっそのこと、リセットしちゃいましょうか?","リセット確認" if %0==1 reset
メニューをカスタマイズすることを宣言します。以降、 insertmenuでメニューを挿入していきます。
resetmenu
サブルーチンからリターンします。
かならずgosubとペアにしてください。
return *scene2
右クリック時の呼び出し先を設定します。
進行待ちの場合にプレイヤーが右クリックを押すと、設定した
ラベルをgosubで呼び出します。
returnすると、元の進行待ちの状態に戻ります。
右クリックを押したら、メニューが開くようにします。
文
字列が、表示される選択肢で、機能は下に定義されているものから選びます。
システムメニュー機能定数
skip…「選択肢まで進む」をク
リックするのと同じです。
reset…プログラムをリセットします。
save…セーブメニューを出します。
load…ロードメ
ニューを出します。
lookback…回想モードに行きます。
windowerase…ウィンドウを消します。
rmenu "セーブ",save,"ロード",load,"回想",lookback
変数に乱数を代入します。
0〜(二番目のパラメータ−1)の数字が入ります。
rnd %5,100
ルビモードになります。文字は下詰めになります。
rubyon例)
rubyon 10,8例)
rubyon 14,12,"MS ゴシック"
その行にルビがあるときだけルビ表示モードにします(ADV形式でのclickpageとの併用を想定してま す)。
セーブデータを格納するフォルダを指定します。
savedir "savedata"
セーブファイルそれぞれに固有の文字列を保存します。
あとはsavegameと同じです。
savegame2 12,"8月5日 ヒロインAルート"
セーブファイルの名前を指定します。
左から順に、セーブメニューの一番上の文字列、ロードメニューの
一番上の文字列、そして、セーブ自体の名前です。
デフォルトでは、"<セーブ>","<ロード>","しおり"となっています。
これらは
全部全角文字で設定してください。
セーブの最大数を変更します。最大20までです。デフォルトは9。
menusetwindowで、画面
からセーブメニューがはみ出ないような設定にしないと、メニューを出した瞬間落ちるので注意してください。
セーブモードをオフにします。
セーブできなくなるわ
けではなく、ロードすると最後にセーブオンだったところまで戻されるということです。
saveonの間は、スプライトを動かしたりしただけでも
セーブデータを書きこみに行きますので、場合によってはパフォーマンスに影響が出るかもしれません。
ミリ秒単位でスプライトをいじるようなアニメ
処理をしている間はsaveoffにすると動作が速くなるでしょう。
セーブポイントを更新します。
*define節で
autosaveoff
と
することで、saveon/saveoff命令は無視されるようになります。
(表示文頭ではセーブポイントは従来通り更新されます)。
表
示文頭以外でセーブさせたい場合(たとえばクリッカブルマップなど)では、手書きでsavepoint命令を呼び出してください。タイミングによっては
データがうまく復帰できなかったりするので、画面全体を読み込んで描画する直前をセーブポイントにするとか、うまく工夫してください。
指定したファイル名でスクリーンショットを保存します。
同時に、メモリ内に確保した画像を削除しま
す。
取得したスクリーンショットを何度も使用する場合はsavescreenshot2を使ってください。
savescreenshot "thumb01.bmp"
指定したファイル名でスクリーンショットを保存します。
メモリ内に確保した画像を削除しません。
取
得したスクリーンショットを削除する場合はdeletescreenshotを使ってください。
savescreenshot "thumb01.bmp"
セーブファイルにセーブされたときの月、日、時、分を取得し
ます。
セーブファイルが存在しない場合は、月の値に0を返します。
savetime 3,%0,%1,%2,%3 if %0=0 goto *non セーブ3番は%0月%1日%2時%3分@ end *non セーブ3番は存在しない。@ end
選択肢を表示し、その選択結果に対応するラベルへジャンプし
ます。
文字列に""を入れると、その選択肢は表示されません。
(これは、selnumやselgosubでも同じです)
ただ
し、ひとつも文字列が無いとハングするので気をつけてください。
customsel時のクリック待ちをする。
selectbtnwait %0
選択肢の結果を、数字変数に代入します。一番左が0で、以降 1ずつ増えます。
クリック待ち時のカーソル画像ファイルを読み込みます。
文
字列は、順に、普通のクリック待ち、改ページクリック待ちです。
数字は、次に出る文字の左上のピクセルからX,Y方向にどれだけずらすかをX,Y
の順で指定します。
デフォルトでは、
":l/3,160,2;cursor0.bmp"(":l/3,160,2;cursor1.bmp"),0,0です。
プラグインを指定されたレイヤ番号に登録します。
以降、layermessageにてレイヤ番号に対
応したDLLにメッセージが送信できます。
テキストウィンドウを指定します。
上は、透過度落と
しタイプ(色指定で色味を変えられます)
下は、画像ファイル名を指定して、それをウィンドウにするタイプです。
最初の11個は、左から順
に、文字の左上座標X,Y,文字数横,縦,文字フォントサイズX,Y,字間X,Y,デフォルト表示スピード,太字フラグ(0普通1太字),影付きフラグ
(0普通1太字)です。
上の場合は、順にウィンドウ色味,ウィンドウ左上X,Y,右下X,Y
下の場合は、順に画像ファイル名,
ウィンドウ左上X,Y、です。
画像ファイルにはタグが使えます。
デフォルトでは、全画面の透過度落としタイプで、フォントは
26x26ピクセル、字間は0,2、左上座標が8,16で、横23文字縦16文字、太字で影付き、スピードは20で、透過の色味は、#999999です。
命
令に直すと、こうなります。
setwindow
8,16,20,23,26,26,0,2,20,1,1,#999999,0,0,639,479
setwindow 8,16,20,23,26,26,0,2,20,1,1,"bg1.bmp",0,0例)
setwindow 8,16,20,23,26,26,0,2,20,1,1,#999999,0,0,639,479
回想バッファを消さず、今表示しているウィンドウも文字も消さず、ウィンドウの見た目だけを変更する命令です。
setwindow
命令のタグ指定もしくはウィンドウCG指定の部分だけを指定することが出来ます。他は何も変えられません。
setwindow2 ":c;twindow2.bmp"例)
回想バッファをクリアしない以外はsetwindowと同 じ。
setwindow3 8,16,20,23,26,26,0,2,20,1,1,"bg1.bmp",0,0例)
setwindow3 8,16,20,23,26,26,0,2,20,1,1,#999999,0,0,639,479
ボリュームをいじれます。
sevol 100
影の位置を指定する。
shadedistance 2,3
三角関数sinθを取得します。
値は1000倍されたものが返ってきます。
sin %0,90 ;%0=1000になる。
「次の選択肢まで進む」や「オートモード」などをそこで停止 します。
skipoff
音楽圧縮プラグインを指定します。書式は、"ファイル名|関連付け拡張子"です。
soundpressplgin "nbzplgin.dll|nbz"
btn命令と同じような使い方で、こちらはスプライトをボタンに指定します。ちゃんと透過とかもします。押され ていない状態がセル0、押されている状態がセル1です。ボタンを押すと、ボタン番号が帰ってきます。
btndefとbtnwait系命令の間に挟んでください。
そ
のボタン命令において、スペースバーを左クリックと同じ動作にします。
spclclk
spfont
"フォント名",横幅,縦幅,横字間,縦字間,太字フラグ,影フラグ
文字列スプライトのフォントを設定する
spfont clear
フォ
ント設定をクリアして、setwindowを反映するモードに戻す
spfont "フォント名"
:s;という形式を使わない場合のみ、
フォント名以外の全てのパラメータを省略できます。
spfont "MS ゴシック",16,16,0,0,1,1例)
spfont clear
画像圧縮プラグインを指定します。書式は、"ファイル名|関連付け拡張子"です。
spi "jpgplgin.dll|jpg" spi "iflf2.spi|lf2"
文字列を指定記号を区切りにして切り出して、指定した変数に
値を代入します。
プラグインからの戻り値やreadfileで読んだ文字列の処理に使ってください。
mov $0,"あいうえお/かきくけこ/15/25/さしすせそ" split $0,"/",$1,$2,%0,%1,$3 $1=$1 ; あいうえお $2=$2 ; かきくけこ %0=%0 ; 15 %1=%1 ; 25 $3=$3 ; さしすせそ \
複合ボタン用の文字列でのスプライト指定を単独で実行する命
令です。
文字列 で実行できます。
ただし、cspやlspやvspと同じく後でprintが必要です。
spstr "C11P10,2P9"
指定したスプライト番号のアニメーションが終わる(最初のコマに戻るか、もしくはストップする)のを待ちます。
spwait 0
ファイル名エイリアスを作ります。以降、ファイル名の代わりに
そのエイリアスを使って指定できるよう
になります。
stralias man_a0,":a/10,20,2;man_alpha.bmp" ; 以後、このファイルを指定したいときにはman_a0というエイリアスを使えます。 ; たとえば、ld c,man_a0,1 は、ld c,":a/10,20,2;man_alpha.bmp",1 と同じ。
strsp
スプライト番号,文字列,左上X,左上Y,横文字数,縦文字数,字幅,字高さ,字間X,字間Y,ボールド指定(0or1),影指定(0or1)(,色指
定)...
複数行の文字列スプライトを指定します。禁則処理には対応していませんが、横の端までいくと自動で改行します。明示的に改行したいとき
は\を指定してください。
spfontのフォント設定が反映されます。色指定をひとつまたは複数書くことで、セルの色指定が出来ます(色指定の数
だけのセルが出来ます)
システムメニューと同じ動作をします。
select,selgosubなどで飛んだ先で使えば、タイト
ルメニューなどが出来ます。
(その際には、rmodeで本来のシステムメニューは一時的に切っておいたほうがいいでしょう)
機能には、
rmenuと同じ物が選べます。
systemcall rmenu とすると右クリックメニューと同じ効果です。
これは、例え
ばボタンモードで右クリックしたときに、右クリックメニューを 出したいな、というときに使えます。 右クリックメニューから出ると、動作はこの命令の次
の文へうつります。
(画面状態をうまく把握していないと、おかしなことになります。
この命令の直後にテキストウィンドウの内容を消して
書きなおすのが
ベストかと思われます。)
テーブルジャンプ。
変数の値が0ならひとつめ、1ならふたつめ……と、
羅列したラベルの先へと
ジャンプする。
tablegoto %0,*label0,*label1,*label2,*label3
その位置の立ち絵の透過度をその数に変えます。
三角関数tanθを取得します。
値は1000倍されたものが返ってきます。
tan %2,45 ;%2=1000になる。
縦書きモードにする。詳細はサンプルで。
tateyoko 1
改ページ待ちの場合テキストを消去する。
texec
texec命令とほぼ同じだが、その場で文字を消さない。次
の行を表示するときにクリアする。
(これは、選択肢時にテキストを消したくないときなどにつかいます)
texec2
デフォルトでは、テキストボタンはbtnwait時に自動的
に登録されます。
btndefとbtnwait系命令の間にtextbtnoffをはさむと、テキストボタンが一時的にオフになります。
例
えば、テキストボタン処理の中から別のボタン処理を呼ぶときに、テキストボタンをオフにするためにこの命令を使ってください。
btndef clear textbtnoff textbtnwait %0
テキストボタン番号を省略したときの先頭の値を指定します。
デ
フォルトは1です。
textbtnstart 3
customwait時のクリック待ちをする。
textbtnwait %0
文字の色を変えます。
HTMLで指定するのと同じ形式です。
(つまり、16進数で二桁づつ6ケタで指定、ということ。
#000000が黒、#ffffffが
白、#ffffaaが、白っぽい黄色になります。)
変えたら以後変わりっぱなしなので注意してください。
*define english game *start textcolor #0000ff >blue font@ end
ウィンドウ上にテキスト入力ウィンドウを開き、入力を待ちま
す(ダイアログではありません)。
ここで、指定する文字列変数にあらかじめ入っていた内容がデフォルトの文字列になります。
入力ウィンド
ウ外を左クリック、もしくはリターンキー、エスケープキー、TABキーを押した時に、関数から戻ってきます。
TABキーを押した場合は、
getretでその旨判別できます。
この命令の後、
getret %0
として、%0に0が返ってくればTAB以外、1が返ってく
ればTABで命令を抜けたということを示します。
textfield $0,100,50,320,70,10,20,1
システムカスタマイズ時通常文章のクリック待ちで飛んでくるラ ベル。ここでシステムボタンなどを実装し、ユーザの入力を処理する。
textgosub *text_lb
テクストウィンドウは表示したままで、文字だけを消します。
バッ
クログを作るときに有意義です。
texthide
テキスト表示速度をデフォルトにする。
表示文ではな
いので、文字ウィンドウが出ていないときは表示されないままで実行できる。
textspeeddefault
btndefとbtnwait系命令の間に挟んでください。
そ
のボタン命令において、ボタン画像の透過部分をボタンとして無効にします。
transbtn
左クリックを監視して、左クリックされるとラベルへジャンプします。
ジャンプ後は、自動的にトラップが
解除されます。
trap offで、トラップを解除できます。
(define節のみ)ボタン命令でescボタンとspcボ
タンを使う設定にします。
escボタンは-10、spcボタンは-11を返します。
useescspc
(define節のみ)ボタン命令でホイールを使う設定にし
ます。
ホイールは-2(上)と-3(下)を返します。
この場合、btntimeの時間切れは-5を返すようになります。
usewheel
ボイスを入れるときに便利な命令です。
wave "wav\数字.wav"と等価です。
v0001:「これが0001番のせりふだよー」
スクリプトの一行目で、
;value500
グローバル変数が500番からになります
(数
字は0〜4000の間で任意の数字です)
もし800x600モードと併用される場合は、
;mode800,value500
とし
てください。
;value500
ボイスのボリュームをいじれます。
voicevol 100
拡張スプライトの表示/非表示を切り替える命令です。vspと 使い方は同じです。
vsp2 0,0
内部タイマが数字と等しくなるか超えるまで待ちます。
この命令が、NScripterで一番正確な
ウェイトを測る手段です。
画像エフェクトなどの時間設定は、それほど正確ではありません。
テキストウィンドウを、立ち絵と同じ位置に挿入します。
指定したスプライトがテキストウィンドウと一緒についたり消えたりするようになる
windowchip 2
テキストウィンドウが出る/消えるときのエフェクトを指定します。
パラメータは、エフェクト番号指定が
ない以外は、effectと同じです。
windoweffect 10,1000
外部実行ファイルを実行します。WinExec
APIを使います。
フルスクリーン時にはSW_MAXIMIZE、通常スクリーン時にはSW_SHOWNORMALを指定します。
数字に
0以外を指定すると、そのプログラムと同期動作します。
NScripterのウィンドウにWM_USER+10が送られてくれば実行再開、
WM_USER+20が送られてくればプログラムを終了します。
数字に0を指定すると、起動するだけでプログラムは先へ進みます。
Dolls
Antiqueのデモプログラムとの連携に使った命令です。
Windowsのはい/いいえのダイアログボックスを出して、ユーザからの入力を変数に代入する。
yesnobox %0,"ロードしますか?","ロード確認"
全角の墨付き括弧【】をタグ指定として定義します。
*define pretextgosub *pretextproc zenkakko game *start 【名前/音声】「せりふ」 click end *pretextproc gettag $0,$1 mesbox $0,$1 ; 題名が"音声"、本文が"名前"のダイアログを表示 return