仕様一覧 / グローバル変数 / スプライト / ボタン待ち(旧ボタンのbtnwait) / ボタン待ち(新ボタンのbexec) / 状態取得 / systemcallで呼べる命令一覧 / スプライトアニメのループ形式 / ボタン定義用のlsp一覧 /
2013/02/13時点の最新版はver2.96です。
(win7 64bit環境での検証) | |
---|---|
スプライト |
0〜999まで(計1000枚)使用可能。 |
数値変数 |
%0〜%4095まで(計4096個)使用可能 %0〜%4095まで(計4096個)使用可能 デフォルトで同上。00.txtの1行目で指定することで可変。 |
代入限度:32bit整数。2147483647〜-2147483648の範囲(±約21億) |
|
文字列変数 |
$0〜$4095まで(計4096個)使用可能 $0〜$4095まで(計4096個)使用可能 デフォルトで同上。00.txtの1行目で指定することで可変。 |
代入限度:(半角で2040文字、全角で1020文字まで使用可能) 代入限度:(半角で8183文字、全角で4091文字まで使用可能) 代入限度:(半角で8183文字、全角で4091文字まで使用可能) |
|
配列変数 |
?x〜?x+4095までの4096個を使用可能。添え字は20次元まで。ただし環境依存する。 |
配列に文字列は代入できない。(文字列変数で代用。SGPさんに素晴らしい記事有り) 補講でも配列に関して記述。NScripterの配列は永字八法さんのdimの考察に詳しい。 |
|
(ver2.93以降)Luaのテーブルを利用すると妙な制限もなく高機能な配列が使用可能。 | |
ラベルの上限数 |
10000個まで使用可能。(※ただし*define *start の2つを含む) 10000個まで使用可能。(※ただし*define *start の2つを含む) デフォルトで同上。00.txtの1行目で指定することで可変。 |
gosubで潜れる深さ |
1000回まで可能。 |
ボタン定義の上限数 |
旧ボタン(spbtn)511個まで、新ボタン(bsp)256個まで可能。 |
エフェクト定義数 |
2番〜255番までの計254個登録可能。(※0,1は効果固定) |
画面領域 |
デフォ(0,0)-(639,479)。;mode800時には(0,0)-(799,599)。 デフォルトで同上。00.txtの1行目で指定することで可変。 |
対応OS (※必要ランタイム |
Win98以降の各OS(※DirectX8.0a以降必須 WinXP以降の各OS(※DirectX9(November 2008)以降必須 |
(※ こちらに検証スクリプトを置いておきます。WinXP当時のver2.82検証結果もそちらに記載しておきます。
デフォルトで利用可能なファイル拡張子 | |
---|---|
画像 | BMP,JPG,PNG |
(2013/2/13 追記:PNGのみの利用を推奨 | |
※PNGは公式同梱プラグイン利用のこと ※立ち絵もスプライトも透過PNGを利用可能。未だ誤解されているようなので一応 ※GIFは利用できません。アニメーションさせたい場合はlspでタグ指定すれば可能 |
|
音声 | WAV,OGG,MP3,MID,WMA |
(2013/2/13 追記:OGGのみの利用を推奨 | |
※OGGは公式同梱プラグイン利用のこと ※nsogg2.dll利用時はwavとogg以外bgm命令でリピート再生せず ※mp3ファイルは大概の環境バグの原因なので極力控えるべき |
|
動画 | AVI,MPEG,WMV |
(2013/2/13 追記:MPEG-1形式の動画を推奨 | |
※Windows Media Playerに投げる ※マシンにコーデックが有ることが前提なので有名規格で圧縮かけるべき ※その他、有志の方が制作されたプラグインにてOgg Theora・swfファイルも可能 |
globalon; (*define節に要記述)カレントか指定フォルダにsavファイル作成
上の記述でグローバル変数(※ゲームを終了しても保持される変数)が利用できます。
デフォルトでは 数値変数%200〜%4095、文字列変数$200〜$4095 がグローバル変数となります。
globalonを記述しない場合は後述の;valueや;$G指定があっても全て通常変数として扱われます。
※一般的なプログラミング用語でのグローバル変数とは意味が違いますのでご注意ください
通常変数とグローバル変数の境目は変更することができます。
その場合 0.txt の1行目に命令を記述する必要があります。空行を挟んではいけません。
例えば ;value500 と打つと、通常の変数範囲が %0〜%499・$0〜$499 に、
グローバル変数範囲が %500〜%4095・$500〜$4095 へと変更されることになります。
画面サイズとグローバル変数の境目を両方とも変更したい場合は
;mode800,value500
といった具合に並べて記述します。
ゲームの規模にもよるが、将来のカスタマイズの可能性も考えて、
はじめから ;value500 または ;value1000 くらいにしておいたほうがいいと思います。
後から直すと結構手間がかかります。
ver2.96以降は記述方法が変わりました。解像度や変数・ラベルの詳細を自由に設定できるようになりました。
;$V変数の総数Gグローバル変数開始位置Sウィンドウ横幅,ウィンドウ高さL総ラベル数(兼ファイルログの最大数)
;$V2000G1000S960,540L10000
こちらも必ず 00.txt の1行目に命令を記述する必要があります。空行を挟んではいけません。
上の指定例では、変数%0〜999と$0〜999が通常変数(ローカル変数)、
変数%1000〜1999と$1000〜1999がグローバル変数になり、2000番以降は利用できません。
ウィンドウサイズ(0,0)-(959,539)で、総ラベル数は10000個までとなります。
過去作との互換性がありますので、ver2.96のエンジンでも;mode800,value1000の記述が有効です。
画像のこと。わかりにくいという人はレイヤーのようなものと考えてみて下さい。
そして、一枚のレイヤーに一枚の画像を描くとそれ以外には使えないと思って下さい。
合計1000枚のレイヤー使えると考えると、中々に贅沢ですよね。
下にそのレイヤー階層の上下を書いてみました。参考までにどうぞ。
humanz 200; まずこの2行を*define節に記述します。
windowback; 深いことは考えず儀式みたいなものと思ってください。
まず上記のコードを書いておきますと、表示順が↓のようになります。これを頭に叩き込んでおきましょう。
_______________ |(上) スプライト番号0 | | ↑ スプライト番号199 | | ○ テキストウィンドウ | 通常の文章 | ● 立ち絵 | ld命令 | ↓ スプライト番号200 | | ↓ スプライト番号999 | |(下) 背景 | bg命令  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
もちろん humanz 200 の200を変更すると、基準となる立ち絵の階層が変わります。
また、windowback を削りますと、文章がスプライト番号0より上に表示されるようになります。
上の表にありますように、Nスクではスプライト番号が若い程上層に表示されます。
例えばセーブサムネイルにマウスポインタを重ねた時に、選択用の枠を表示させたいという場合には
サムネイルのスプライト番号よりも、選択枠のスプライト番号を若くする必要があります。
ちなみに、スプライト0番の上層に「バー」が、その更に上の階層に「数値ラベル」が存在します。
その二つは逆に若い番号が下になります。
さらに、mpegやaviなどの「動画」は無条件で最上部にて再生されます。
■キー取得のオプション命令
usewheel
useescspc
※*define節に記述。以後全ボタン命令で有効。
getpage
getenter
gettab
getfunction
getcursor
getinsert
getzxc
getmclick(※ver2.94以降)
※実行部に記述。btndef系後にbtnwait系命令までに挟む。
getskipoff
※カスタマイズ時の*text_lb内で使用。
(※有効範囲)
これらのボタン取得設定及びbtnareaやbtntime類での設定は、
一度設定されると次のbtndef clearまでずっと有効になります。
usewheelとuseescspcに関してはclear後も有効です。
■返り値一覧
1〜999:スプライトボタンの選択
0:左クリック(非getenter時のEnterキー)
-1:右クリック
-2:ホイール上方向(非usewheel時のbtntime時間切れ)
-3:ホイール下方向
-4:btnarea範囲にマウスカーソル
-5:btntime時間切れ(usewheel時)
-10:Esc
-11:Spaceバー
-12:PageUp
-13:PageDown
-19:Enter
-20:TAB
-21:F1
-22:F2
-23:F3
-24:F4
-25:F5
-26:F6
-27:F7
-28:F8
-29:F9
-30:F10
-31:F11
-32:F12
-40:↑キー
-42:↓キー
-41:→キー
-43:←キー
-50:Insert
-51:Z
-52:X
-53:C
-60:スキップ終了
-61:オート終了
-70:マウスの中ボタンをクリック(※ver2.94以降)
■キーボード一覧
デフォルト時取得可能一覧
フルオプション時(※エンター/スペースが0から-19/-11に変化)
上記画像を作る際に利用させていただいた素材
Keyboard Keys Images | attosoft.info http://attosoft.info/blog/japanese-keyboard-images/ (CC BY)
■キー取得のオプション命令
bcursor
※実行部に記述。bclearからbexecまでに挟む。
■返り値一覧
"S0"〜"S999":スプライトボタンの選択
"LCLICK":マウス左クリック・エンターキー・スペースキー
"RCLICK":マウス右クリック
"MCLICK":マウス中クリック(ホイールクリック)
"WHEELUP":マウスホイール上回転
"WHEELDOWN":マウスホイール下回転
"1"〜"0":各数字キー
"A"〜"Z":各英字キー(※Dキーデバッグ/Nキースキップに注意)
"F1"〜"F12":ファンクションキー
"PAGEUP":ページアップキー
"PAGEDOWN":ページダウンキー
"ESC":エスケープキー
"SHIFT":シフトキー
"CTRL":コントロールキー
"SPACE":スペースキー(※bcursor時。非設定時は"LCLICK")
"RETURN":エンターキー(※bcursor時。"ENTER"ではないことに注意。非設定時は"LCLICK")
"UP":カーソルキー上(※bcursor時。非設定時は無効)
"DOWN":カーソルキー下(※bcursor時。非設定時は無効)
"LEFT":カーソルキー左(※bcursor時。非設定時は無効)
"RIGHT":カーソルキー右(※bcursor時。非設定時は無効)
"SKIP":スキップ状態時・メニューの「選択肢まで進む」
"AUTO":オート状態時・メニューの「オートモード」(※待ち時間の設定があってもノータイム)
"TIMEOUT":タイムアウト(btimeの待ち時間経過後にこれを持って流れる)
■キーボード一覧
デフォルト時取得可能一覧(※テンキー取得不可なことに注意)
bcursor命令の使用時(※エンター・スペース・カーソルキーで動作変更)
上記画像を作る際に利用させていただいた素材
Keyboard Keys Images | attosoft.info http://attosoft.info/blog/japanese-keyboard-images/ (CC BY)
isで始まる命令文で現在の状況を取得できます。指定した数値変数に下記の値が返ってきます。
isskip %数値変数
返り値:
0 = 状態は通常
1 = スキップ中
2 = オート中
(※スキップだけでなく、オート状態の取得も出来る)
isdown %数値変数
返り値:
0 = ボタン入力されていない
1 = 入力がされている
(※左クリックを押しっぱなしかどうか等の判定に使用)
isfull %数値変数
返り値:
0 = ウィンドウ表示中
1 = フルスクリーン表示中
(※コンフィグ画面などで使用)
ispage %数値変数
返り値:
0 = @で*text_lbに入ってきている
1 = ¥で*text_lbに入ってきている
(※システムカスタマイズ時のクリック待ちマーク分けなどに使用)
例文:systemcall skip
skip …… メッセージスキップ。既読未読は事前の設定に従う。 automode …… オート開始。待ち時間は設定に従う。 save …… デフォルトのセーブメニューを表示。 load …… デフォルトのロードメニューを表示。 lookback …… デフォルトのバックログを表示。 windowerase …… テキストウィンドウを一時消去。 reset …… リセットしますか? はい/いいえ のメニューを表示。 resetdlg …… リセット確認 はい/いいえ の「ダイアログ」を表示。 rmenu …… デフォルトの右クリックメニューを表示。
例:
waiting.png 16セル 透過png の場合。(※左端が1番セルで右へ順に連結して作成します)
lsp 1,":a/16,50,0;waiting.png",100,100
lsp スプライト番号,":透過タグ/セル数,1セル当たりの時間,ループ形式;画像ファイル",x座標,y座標
■透過タグ
いつもの画像タグを指定。l r c a m と各種ありますが、まず a(透過付)と c(ベタ)以外は使いません。
■1セル当たりの時間
・全指定
上のサンプルでは、全てのセルの持ち時間を 50 と指定しています。
少ない数値では早く、大きい数値では遅くなります。
・個別指定
上の 50 の所を <10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160> 等と書きます。
これで個別に持ち時間を指定できます。セルの数だけ指定が必要です。指定が足りない場合はタグエラー。
--------------------------- タグエラー --------------------------- タグの指定がおかしいです。 00.txt line:21 > lsp 8,":a/10,<10,30,40,50,60,70,80,90,100>,0;img¥anim.png",10,10 --------------------------- OK ---------------------------
■ループ形式
・ 0 ……先頭に戻る繰り返し 例:12345123451234512345...
・ 1 ……終端でストップする 例:12345
・ 2 ……終端で遡行する繰り返し 例:12345432123454321...
bsp / spbtn / exbtn に番号指定するとマウスオーバーで変化するようなスプライトの定義の仕方です。
■普通の画像スプライト(基本)
lsp 1,":a/2,0,3;img¥button1.png",100,0
lsp 2,":c/2,0,3;img¥button2.png",100,100
指定としてはアニメスプライトの一種なのですが、気にせず/2,0,3と決まり文句で覚えましょう。
■文字列スプライト
lsp 3,":s/50,50,0;#FFFFFF#FF0000"+"ボタン3",100,200
普通の文字列スプライトですが、NScripterは色コードを並べると自動でセルを増やしてくれます。
■矩形スプライト(ver.2.93以降)
lsp 4,":c/2,0,3;>400,50,#FFFFFF#FF0000",100,300
矩形スプライトです。NScripterは色コードを並べると横に均等に塗り分けをしてくれます。
ただ、/2,0,3指定によって横幅400をセル数2で割った200x50の長方形になることに注意。
;実例
lsp 1,":a/2,0,3;img¥button1.png",100,0
lsp 2,":c/2,0,3;img¥button2.png",100,100
lsp 3,":s/50,50,0;#FFFFFF#FF0000"+"ボタン3",100,200
lsp 4,":c/2,0,3;>400,50,#FFFFFF#FF0000",100,300
print 1
for %0=1 to 4:bsp %0:next
bexec $0
mesbox $0,"返り値"
end
動作確認用に素材を置いておきます。
button1.png(透過度付)
button2.png(ベタ)