NSCR命令 / NSLUA関数一覧

基本

特殊定義実行定義・実行非推奨

*define定義節ラベル
game定義節終了宣言
*start実行節ラベル
forループ処理開始
nextループ処理終了
breakループ処理から強制的に抜ける
if条件文(真)
notif条件文(偽)
cmp二つの文字列を SJIS順比較
gotoラベルジャンプ
tablegotoテーブルジャンプ
gosubサブルーチンジャンプ
returnサブルーチンからの復帰
skip指定行数分ジャンプ
jumpf~までジャンプ(前方)
jumpb~までジャンプ(後方)
numalias数値エイリアス作成
stralias文字列エイリアス作成
defsubユーザ定義命令実装
getparamユーザ定義命令の引数取得

特殊文字

特殊定義実行定義・実行非推奨

*この行はラベル
;ここからコメント
:一行に複数の命令をつなぐ
@クリック待ち
\改ページ待ち
/直後の改行を無視
#rrggbbテキストの色変更
!sテキスト一文字あたりの表示速度の設定
!sdテキスト表示速度を初期値に戻す
!d指定時間待つ(スキップ可)
!w指定時間待つ(スキップ不可)
%数字変数
$文字変数

変数

特殊定義実行定義・実行非推奨

mov変数に値を代入する
;value普通変数とグローバル変数の境目を変更する
globalonグローバル変数を使用可能にする

数値

特殊定義実行定義・実行非推奨

add変数に値を加算
sub数字変数から値を減算
mul数字変数に値を乗算
div数字変数から値を除算
mod数字変数から値を除算し、その余りを取得
inc数字変数の値を 1増やす
dec数字変数の値を 1減らす
rnd乱数発生
rnd2指定範囲内で乱数発生
sin三角関数正弦値取得
cos三角関数余弦値取得
tan三角関数正接値取得
intlimit数字変数の値を制限する
dim配列変数の宣言

文字列

特殊定義実行定義・実行非推奨

itoa数値を半角文字列に変換する
itoa2数値を全角文字列に変換する
atoi半角文字列を数値に変換する
len文字列の長さを取得
mid文字列の切り出し
split文字列を区切り文字で分割して、その結果を得る

マウス・キー

特殊定義実行定義・実行非推奨

click左クリックを待つ
lrclick左クリックまたは右クリックを待つ
autoclick指定時間後、自動左クリックする
clickpos最後に左クリックした座標を取得
isdownマウス左ボタンの状態を取得
roff右クリック無効化
rmode右クリックの使用有無を切り替える
getmouseposマウスカーソル位置取得
movemousecursorマウスカーソル移動
mousecursorマウスカーソル変更
mousemodeマウスカーソルの表示状態切り替え
checkkeyキーの押下状態を取得

ウェイト・タイマー

特殊定義実行定義・実行非推奨

wait指定時間待つ(スキップ不可)
delay指定時間待つ(スキップ可)
spwaitスプライトのアニメーションが終わるのを待つ
resettimer内部タイマーリセット
waittimer内部タイマーが指定値以上になるまで待つ
gettimer内部タイマーの値を取得

割り込み

特殊定義実行定義・実行非推奨

trap左クリック監視
r_trap右クリック監視
lr_trap左右クリック監視
trap2左クリックと[選択肢まで進む]を監視
lr_trap2左右クリックと[選択肢まで進む]を監視
timertrap指定時間経過後にラベルジャンプ

ボタン

特殊定義実行定義・実行非推奨

bexecボタン待ち
bclearbexecの定義消去
bspbexecで、スプライトをボタン登録
bdefbspボタンにマウスカーソルが乗っていない時の設定
bcursorbexecで、カーソルキーと [ENTER][SPACE]を取得可能にする
btimebexecのタイムアウト設定
btransbexecで、ボタン画像の透過部分をボタン範囲としない
bdownbexecで左クリックの値を返すタイミングを、ボタンを押した時にする

旧ボタン

特殊定義実行定義・実行非推奨

btnwaitボタン待ち(旧)
btnwait2ボタン待ち(旧・ボタン画像、定義を消去しない)
btndefbtnwaitで、ボタン画像の読み込みやメモリ消去、ボタン定義の消去
btnbtnwaitで、指定範囲をボタン登録
spbtnbtnwaitで、スプライトをボタン登録
exbtnbtnwaitで、スプライトをボタン登録(制御文字列指定可)
exbtn_dexbtnボタンにマウスカーソルが乗っていない時の設定
cellcheckspbtnbtnwaitで、複数セルのスプライトをボタン登録
cellcheckexbtnbtnwaitで、複数セルのスプライトをボタン登録(制御文字列指定可)
transbtnbtnwaitで、ボタン画像の透過部分を範囲としない
btntimebtnwait処理のタイムアウト設定
btntime2btnwait処理のタイムアウト設定(DWAVE 0の再生終了を待つ)
getbtntimerbtnwait開始~ボタン押下までの時間を取得
getmouseoverbtnwait時、ボタンにマウスカーソルを重ねるだけで押したことにする
btnnowindowerasebtnwait時、テキストウィンドウが消えなくなる
btnareabtnwait時、指定位置にマウスカーソルが来た時に値を返す
btndownbtnwait時、左クリック動作を取得するタイミングを変更する
getcursorbtnwait時、カーソルキーを取得可能にする
getenterbtnwait時、[ENTER]キーを取得可能にする
getfunctionbtnwait時、ファンクションキーを取得可能にする
getinsertbtnwait時、[Insert]キーを取得可能にする
getpagebtnwait時、[PgUp][PgDn]キーを取得可能にする
gettabbtnwait時、[TAB]キーを取得可能にする
getzxcbtnwait時、[Z][X][C]キーを取得可能にする
getmclickbtnwait時、中クリックを取得可能にする
useescspcbtnwait時、[ESC]と[SPACE]を取得可能にする
usewheelbtnwait時、マウスホイール入力を取得可能にする
getskipoffbtnwait時、スキップオフ/オートモードオフを取得可能にする
spclclkbtnwait時、[SPACE]を左クリックと同じ扱いにする
textbtnwaitテキストボタン待ち
textexbtnテキストボタンを制御文字列で制御
gettextbtnstrテキストボタン番号に対応した文字列を取得
linkcolorテキストボタンの色設定
textbtnstartテキストボタンの開始番号を設定する
textbtnoffテキストボタンを一時的にオフにする
erasetextbtnテキストボタンモードを抜けた時の処理

テキストラベル

特殊定義実行定義・実行非推奨

textgosubテキストラベルの設定
ispageテキストラベルの呼び出し理由を取得
texecテキスト送りまたは改ページ
texec2テキスト送りまたは改ページ(テキストを消去しない)

プレテキストラベル

特殊定義実行定義・実行非推奨

pretextgosubプレテキストラベルの設定
gettagテキストタグの内容を取得
zenkakkoテキストタグで全角タグを使用可能にする

テキストウィンドウ

特殊定義実行定義・実行非推奨

setwindowテキストウィンドウ設定
setwindow3テキストウィンドウ設定(回想バッファを消去しない)
setwindow2テキストウィンドウの外観変更
windoweffectテキストウィンドウ/テキスト表示のエフェクト指定
erasetextwindowエフェクト時のテキストウィンドウの挙動を設定する
noterasemanテキストウィンドウ消去時、立ち絵を消さない
windowchip指定スプライトの表示状態がテキストウィンドウと連動する
windowbackテキストウィンドウの表示順変更
textoffテキストウィンドウ非表示
textontextoffで隠したテキストウィンドウを再表示

テキスト

特殊定義実行定義・実行非推奨

english半角英文モード有効
tateyoko縦書きモード
addkinsoku禁則文字列追加
setkinsoku禁則文字列再設定
kinsoku禁則処理の有無を切り替える
rubyonルビモード有効
rubyon2その行にルビがある時だけ、ルビモード有効
rubyoffルビモード無効
fontテキストのフォントを変更する
textspeed文字表示速度変更
textspeeddefault文字表示速度を規定値に戻す
textcolorテキスト色変更
brテキスト改行
indentテキストインデント
locateテキスト表示位置変更
shadedistanceテキストの影位置をずらす
texthideテキスト非表示
textshowtexthideで隠したテキストを再表示
textclearテキスト消去
isskip現在のスキップ状態を取得
skipoffテキストのスキップ状態解除
kidokuskip[選択肢まで進む]を既読スキップに
kidokumodeスキップ形式の変更
automode_timeオートモードのテキスト送り時間変更
puttext文字列をテキストとして表示
gettext現在表示しているテキストを取得
linepageテキストの末備に、自動的に \を補う
clickskippageテキスト表示中のクリックで、改ページ待ちまで瞬時表示する
clickstr強制クリック文字設定
clickvoiceクリック待ち時音声の設定

テキストカーソル

特殊定義実行定義・実行非推奨

getcursorpos次に表示するテキストの先頭座標位置取得
getcursorpos2現在表示しているテキストの終了座標位置取得
getnextline次に表示するテキストの行頭位置取得
abssetcursorテキストカーソル画像を、絶対座標で表示設定する
setcursorテキストカーソル画像を、相対座標で表示設定する

選択肢

特殊定義実行定義・実行非推奨

select選択肢(選択結果に対応するラベルへジャンプ)
selgosub選択肢(選択結果に対応するラベルへサブルーチンジャンプ)
selnum選択肢(選択結果を取得)
selectcolor選択肢の文字色設定
selectvoice選択肢時音声の設定
*customselcselで呼び出すラベル
cselシステムカスタマイズ時用の選択肢命令
getcselnumcsel選択肢の個数を取得
getcselstrcselで設定した選択肢の文字列を取得
cselbtncsel命令の選択肢ボタン作成
selectbtnwaitcsel命令時用ボタン待ち
cselgotocsel命令時用ラベルジャンプ
nextcsel次の命令が cselであるかどうかを取得

描画

特殊定義実行定義・実行非推奨

print指定エフェクトで画面描画
repaint画面の再描画
effectエフェクト番号に効果を割り当てる
effectblankエフェクト終了後、次の命令を実行するまでの時間を設定
effectcutスキップ時にエフェクトをカット
effectskipエフェクト中にクリックした時、エフェクトをスキップするか
seteffectspeedエフェクト速度を指定
flushout画面のフラッシュアウト効果
monocro画面を任意の色階調に
mosaicin画面のモザイクイン効果
mosaicout画面のモザイクアウト効果
nega画面のネガポジ反転
quake画面を縦に揺らす
quakex画面を横に揺らす(処理が重い)
quakey画面を縦に揺らす(処理が重い)

スプライト

特殊定義実行定義・実行非推奨

transmode透過色の初期設定変更
lspスプライト読み込み(表示モード)
lsphスプライト読み込み(非表示モード)
vspスプライトの表示モード切り替え
allsphide全てのスプライトを一括で非表示
allspresumeallsphide で非表示にしたスプライトを表示
cspスプライトをメモリから消去
amspスプライト移動(絶対座標)
mspスプライト移動(相対座標)
cellスプライトの表示セル変更
strsp複数行の文字列スプライトを読み込む(表示モード)
strsph複数行の文字列スプライトを読み込む(非表示モード)
spstrスプライトを制御文字列で制御
spfont文字列スプライトのフォント設定
getspmodeスプライトの現在の表示モードを取得
getspsizeスプライトの幅、高さ(、セル数)を取得
lsp2拡張スプライト読み込み(表示モード)
lsph2拡張スプライト読み込み(非表示モード)
lsp2add拡張スプライト読み込み(加算合成・表示)
lsph2add拡張スプライト読み込み(加算合成・非表示)
lsp2sub拡張スプライト読み込み(減算合成・表示)
lsph2sub拡張スプライト読み込み(減算合成・非表示)
vsp2拡張スプライトの表示モード切り替え
allsp2hide全ての拡張スプライトを一括で非表示にする
allsp2resumeallsp2hide で非表示にした拡張スプライトを表示
csp2拡張スプライトをメモリから消去
amsp2拡張スプライト移動(絶対座標)
msp2拡張スプライト移動(相対座標)

画像一般

特殊定義実行定義・実行非推奨

bg背景画像表示
bgalia特殊なサイズの背景画像を指定可能にする
ld立ち絵表示
cl立ち絵消去
tal立ち絵の透過度変更
humanorder立ち絵間のエフェクト優先順位変更
humanpos立ち絵の基準座標設定
underline立ち絵の地面座標設定
humanzスプライトと立ち絵の優先順位設定
barバー表示
barclear全てのバーを消去
prnum数値ラベル表示
prnumclear全ての数値ラベルを消去

テクスチャ

特殊定義実行定義・実行非推奨

bltボタン画像バッファを使い、高速描画
ofscpy現在の画面を仮想画面として取り込む
bgcpy現在の画面を背景として取り込む
drawdraw系命令で描画した画像を実画面に表示
drawclear仮想画面を黒く塗り潰す
drawfill仮想画面を指定色で塗り潰す
drawbg仮想画面に現在の背景画面を描画
drawbg2仮想画面の指定位置に、現在の背景画面を描画
drawsp仮想画面にスプライト描画
drawsp2仮想画面にスプライト描画(倍率、回転角度指定可)
drawsp3仮想画面にスプライト描画(一次変換適用)
drawtext仮想画面にテキストウィンドウを描画

画像処理

特殊定義実行定義・実行非推奨

getscreenshotスクリーンショットをメモリ内に確保
savescreenshotメモリ内のスクリーンショットをファイル保存
savescreenshot2メモリ内のスクリーンショットをファイル保存(メモリの消去をしない)
deletescreenshotメモリ内のスクリーンショットを消去
bmpcut一枚の画像を指定数で分割して、ファイル保存
chainbmp画像の連結保存
createdummyダミーファイル作成
bw2aNSCRの透過形式 BMPファイルを作成
bw2a3NSCRの透過形式 BMPファイルを作成

音声

特殊定義実行定義・実行非推奨

bgmonce音声ファイルを DirectSound再生(単発)
bgm音声ファイルを DirectSound再生(ループ)
stopbgm / bgmonce での再生を停止する
dwave音声ファイルを DirectSound再生(単発)
dwaveloop音声ファイルを DirectSound再生(ループ)
dwaveload音声ファイルをメモリに読み込む
dwaveplay指定音声チャンネルを DirectSound再生(単発)
dwaveplayloop指定音声チャンネルを DirectSound再生(ループ)
dwavestop指定音声チャンネルの再生を停止する
loopbgm二つの音声ファイルを使用し、擬似区間ループ再生
loopbgmstoploopbgm での再生を停止する
mp3saveMP3ファイルの単発再生(ロード後、セーブ地点から再生)
waveWAVEファイルの再生(単発)
waveloopWAVEファイルの再生(ループ)
wavestopwave/ waveloopでの再生を停止する
playonceMIDIファイルまたは CDトラックの再生(単発)
playMIDIファイル または CDトラックの再生(ループ)
playstopplay/ playonceでの再生を停止する
defbgmvolBGMの初期音量設定
defvoicevolVOICEの初期音量設定
defsevolSEの初期音量設定
bgmvolBGMの音量変更
voicevolVOICEの音量変更
sevolSEの音量変更
chvol指定音声チャンネルの音量を一時的に変更
getbgmvol現在の BGM音量値を取得
getsevol現在の SE音量値を取得
getvoicevol現在の VOICE音量値を取得
bgmfadeinBGMのフェードイン設定
bgmfadeoutBGMのフェードアウト設定
cdfadeoutCD再生のフェードアウト設定
bgmdownmodeボイス再生時、BGM の音量を一時的に下げるかを設定する
mode_wave_demo[選択肢まで進む]時も音声を再生する

動画

特殊定義実行定義・実行非推奨

mpegplayMPEGファイルを DirectShowで非同期再生
movieMPEGファイルを DirectShow再生
aviAVIファイル再生

システム

特殊定義実行定義・実行非推奨

endNSCR終了
resetNSCRをリセットし、*startラベルから読み直す
defineresetNSCRをリセットし、*defineラベルから読み直す
getversionNSCRのバージョンを取得
date現在の日付を取得
time現在の時刻を取得
filelogファイルアクセスログをファイル保存
labellog通過したラベルのログをファイル保存
labelexistラベルの存在を調査
debuglogデバッグウィンドウの内容をファイル保存
fileexistファイルの有無を調査
chkcdfileCDドライブからファイル検索
chkcdfile_exCDドライブからファイル検索し、結果を変数に返す
fileremoveファイル削除
readfileファイル読み込み
csvopencsvファイルを開く
csveofcsvファイルを最後まで読み終わっているかを取得
csvread現在開いている csvファイルからデータを読み込む
csvwrite現在開いている csvファイルにデータを書き込む
csvclose現在開いている csvファイルを閉じる
getiniINIファイル利用
getregレジストリ利用
shellファイル実行(ShellExec API)
winexecファイル実行(WinExec API)

ゲームシステム

特殊定義実行定義・実行非推奨

rlookback右クリックで回想モードに入るようにする
rmenu右クリックでシステムメニューが開くようにする
menusetwindowシステムメニュー用のウィンドウ設定
menuselectcolorシステムメニュー文字色の設定
menuselectvoiceシステムメニュー時音声の設定
savenameセーブ・ロードメニュータイトル、セーブファイル名称を設定する
savenumberセーブメニュー最大数の設定
lookbackcolor回想モードのテキスト色設定
lookbackbutton回想モード用ボタン画像を設定
lookbacksp回想モードのボタン画像を、読み込み済みのスプライトで設定
lookbackvoice回想モードのページ送り時に再生する WAVEファイルを設定
maxkaisoupage回想モードの最大ページ数を設定
savegameセーブ
savegame2文字列を付け加えてセーブ
getsavestrsavegame2で保存した文字列を取得
savedirセーブデータを格納するフォルダを指定する
errorsaveエラー発生時に自動セーブ
savetimeセーブファイルの日付と時間を取得
savefileexistセーブファイルの有無を調査
saveoffセーブポイント更新オフ
saveonセーブポイント更新オン
autosaveoffテキスト文頭以外でのセーブポイント更新を停止する
savepointautosaveoff時、セーブポイントを手動作成する
loadgameロード
loadgosubロード直後に、指定ラベルへサブルーチンジャンプする
lookbackoff回想バッファへの書き込み中止
lookbackon回想バッファへの書き込み再開
lookbackflush回想バッファ消去
checkpage回想データが取得可能か調査
getlog回想データ取得(改行、ルビ情報を含む)
getlogtext回想データ取得(改行、ルビ情報を含まない)
gettaglog回想データ内のテキストタグ情報取得
logsp取得済み回想データをスプライト登録
logsp2取得済み回想データをスプライト登録(上位 logsp命令)
systemcallシステムメニューの機能を実行

ウィンドウ

特殊定義実行定義・実行非推奨

;modeウィンドウサイズ変更
minimizewindowウィンドウ最小化
isfull現在の画面モードを取得
getwindowsizeウィンドウの表示領域サイズを取得
captionウィンドウタイトル変更
killmenu指定位置のウィンドウメニューを削除
deletemenu全てのウィンドウメニューを削除
resetmenuウィンドウメニューのカスタマイズ宣言
insertmenuウィンドウメニューのカスタマイズ
defaultfontテキストの初期フォント設定
defaultspeed初期文字表示速度設定
automode_time2insertmenuの引数 AUTOSPEEDで使用する値の設定
automodeウィンドウメニューに「オートモード」「ボリューム」項目を追加
versionstrウィンドウメニューのバージョン情報ダイアログ設定
menu_automodeオートモード
menu_click_defテキスト表示モード切り替え(クリック待ち文字に従う)
menu_click_pageテキスト表示モード切り替え(ページごと)
menu_cd_onCD再生切り替え(オン)
menu_cd_offCD再生切り替え(オフ)
menu_window画面モード切り替え(ウィンドウ)
menu_full画面モード切り替え(フルスクリーン)
menu_dwavvol音量変更ダイアログ表示
menu_endNSCR終了確認ダイアログ表示

ダイアログ

特殊定義実行定義・実行非推奨

input文字列入力ダイアログ表示
inputstr文字列入力ダイアログ表示(上位 input命令)
textfield文字列入力ウィンドウ表示
mesboxメッセージダイアログ表示
okcancelbox「OK/キャンセル」ダイアログ表示
yesnobox「はい/いいえ」ダイアログ表示
createdebugwindow起動時から常に、デバッグウィンドウを表示

圧縮・プラグイン

特殊定義実行定義・実行非推奨

nsaNSAアーカイブモード
nsadirNSAアーカイブを読み込むフォルダを指定
addnsadirNSAアーカイブを読み込むフォルダを追加
arcアーカイブ展開プラグインを指定
spi画像圧縮プラグインを指定
soundpressplgin音楽圧縮プラグインを指定
exec_dllプラグイン実行
getretプラグイン、lrclick、textfieldの返り値取得
setlayerDLLファイルをレイヤ登録
layermessage登録済みレイヤにメッセージを送る

NSLUA全般

NSLUA特殊NSCR定義NSLUA高水準NSLUA低水準

NL_dofileLuaスクリプトを呼び出す
NL_requireLuaモジュールを呼び出す

NSLUAユーザ関数

NSLUA特殊NSCR定義NSLUA高水準NSLUA低水準

luasubNSCR上で Luaユーザ関数を登録
luacallNSCR上でコールバック関数を登録

NSCRと値をやり取り

NSLUA特殊NSCR定義NSLUA高水準NSLUA低水準

NSPopIntNSLUAユーザ関数の引数から NSCR数字変数値読み込み
NSPopStrNSLUAユーザ関数の引数から NSCR文字変数値読み込み
NSPopIntRefNSLUAユーザ関数の引数から NSCR数字変数番号読み込み
NSPopStrRefNSLUAユーザ関数の引数から NSCR文字変数番号読み込み
NSPopLabelNSLUAユーザ関数の引数から NSCRのラベル名読み込み
NSPopIDNSLUAユーザ関数の引数から NSCR識別子読み込み
NSPopCommaNSLUAユーザ関数引数列のコンマを一つ読み飛ばす
NSCheckCommaNSLUAユーザ関数引数列の、次の記号がコンマかどうか調査
NSSetIntValueNSCRの数字変数に値を代入
NSSetStrValueNSCRの文字変数に値を代入
NSGetIntValueNSCRの数字変数から値を取得
NSGetStrValueNSCRの文字変数から値を取得

NSCRの機能呼び出し

NSLUA特殊NSCR定義NSLUA高水準NSLUA低水準

NSExecNSCRの命令を実行
NSGotoNSCR上でラベルジャンプ
NSGosubNSCR上でサブルーチンジャンプ
NSReturnNSCR上でサブルーチンから復帰
NSDoEventsWindowsのメッセージ処理
NSOkBoxメッセージダイアログ表示
NSYesNoBox「はい / いいえ」ダイアログ表示
NSGetWindowSizeウィンドウ表示領域取得
NSGetSkipテキストのスキップ状態取得
NSTimer内部タイマー取得
NSGetFileInfoNSAアーカイブからファイルを検索し、その情報を取得
NSGetMouseマウスカーソル位置取得
NSGetClick直前のマウス入力を取得
NSGetKey指定キーを押しているか調査
NSLuaAnimationIntervalNSLUAアニメーション割り込みの発生間隔を指定
NSLuaAnimationModeNSLUAアニメーション割り込みの有無を切り替え
NSExecAnimationNSCRのアニメーション処理を実行
NSSleep 指定時間、他のスレッドに動作を明け渡す
NSSystemCallNSCRのシステム機能を呼び出す
NSSavePointセーブポイント更新
NSEndNSCR終了
NSClick左クリックを待つ

NSLUA描画

NSLUA特殊NSCR定義NSLUA高水準NSLUA低水準

NSUpdate無効領域再描画
NSInvalidate矩形範囲内を無効領域とする
NSSpLoadスプライト読み込み
NSSpVisibleスプライトの表示モード切り替え
NSSpClearスプライトをメモリから消去
NSSpMoveスプライト移動
NSSpCellスプライトの表示セル変更
NSSpGetInfoスプライト情報取得
NSSpGetPosスプライトの位置取得
NSSp2Load拡張スプライト読み込み
NSSp2Visible拡張スプライトの表示モード切り替え
NSSp2Clear拡張スプライトをメモリから消去
NSSp2Move拡張スプライト移動
NSSp2GetInfo拡張スプライト情報取得
NSSp2GetPos拡張スプライトの位置取得

NSLUA直接描画

NSLUA特殊NSCR定義NSLUA高水準NSLUA低水準

NSDClear仮想画面を黒く塗り潰す
NSDFill仮想画面の指定領域を、指定色で塗り潰す
NSDLoad仮想画面に PNGファイルをテクスチャとして読み込む
NSDDeleteテクスチャ削除
NSDGetSizeテクスチャのサイズを取得
NSDBltテクスチャを実画面にそのまま転送
NSDSpテクスチャを実画面に転送(透過情報考慮)
NSDSpAddテクスチャを実画面に転送(透過情報考慮・加算合成)
NSDSp2テクスチャを実画面に転送(透過情報考慮・拡張)
NSDSp2Addテクスチャを実画面に転送(透過情報考慮・拡張・加算合成)
NSDPresentテクスチャを実画面に表示
NSDPresentRectテクスチャを実画面に表示(描画範囲指定有)
NSDCopyToBg現在の画面を背景として取り込む
NSDOffMode直接描画系関数の書き込み先変更
NSDTransitionNSDOffMode(true)時の画像を、実画面に表示
NSDTransitionFNSDOffMode(true)時の画像を、実画面に表示(スキップ不可)
NSDDLLテクスチャ作成時に呼び出す DLLファイルを指定
NSDCallDLLファイルを利用し、テクスチャの情報を取得
NSDSetSpriteテクスチャをスプライトに変換

NSLUA音声

NSLUA特殊NSCR定義NSLUA高水準NSLUA低水準

NSOggLoadストリーミング再生チャンネルに音声ファイル読み込み
NSOggPlayNSOggLoadで読み込んだ音声を再生
NSOggPlay2NSOggLoadで読み込んだ音声を再生(ループ地点指定可)
NSOggClose指定チャンネルの再生停止
NSOggVolume指定チャンネルの音量変更
NSOggIsPlaying指定チャンネルの再生状況調査
NSOggFade指定チャンネルのフェード指定

NSLUAその他

NSLUA特殊NSCR定義NSLUA高水準NSLUA低水準

NSLinear一次変換値を求める
NSDefSpline三次スプラインデータ登録
NSSpline三次スプライン補間値を求める

基本

*DEFINE

特殊/必須

定義節ラベル。
定義節とは、ゲームの基本設定をする場所のこと。
定義節内での設定は envdata(自動生成)に記録する。
*define
game
;↑ここまでが定義節
;↓ここからが実行節
*start

関連: category:基本

GAME

特殊/必須

定義節終了宣言。
この命令後、実行節へジャンプする。
game

関連: *define / *start / category:基本

*START

特殊/必須

実行節ラベル。
実行節とは、実際のゲーム内容を記述する場所のこと。
*start

関連: *define / game / category:基本

FOR %val=startnum TO endnum[ STEP stepnum] .. NEXT

定義・実行

ループ処理。
forがループ開始、nextがループ終了を示す。

ループ変数 %valに stepnum(規定値 1)を加えていき、
それが endnum以上(stepnumが負の時は以下)になるまで、..を繰り返す。
for %0=0 to 4
 mov %1,%0
 %1@
next

関連: break / category:基本

BREAK

定義・実行

ループ処理から強制的に抜ける。
break

関連: for / category:基本

IF cond:exec[:exec..]

NOTIF [IFと同様]

定義・実行/(NOTIF)非推奨:不具合あり

条件文。
ifは condを評価し、真ならば execを実行する。
notifは condを評価し、偽ならば execを実行する。

条件式には変数、数値、文字列、または fchk、lchkが使用できる。
文字列の SJIS辞書順での比較も可。
異なる論理演算の混在は不可。
【比較/論理演算子】
== / = 等しい
!= / <> 等しくない
> より大きい
< より小さい
>= 以上
<= 以下
fchk "imgfile" 画像ファイル imgfileがファイルログにあれば真
lchk "*label" ラベル *labelがラベルログにあれば真
&& 直前の式と直後の式の両方とも成立すれば真
| / || 直前の式と直後の式のどちらかが成立すれば真
if %0==1 :goto *test
if $0=="あいうえお" :mov %1,1 :goto *test
;コロンで実行文をつなげられる

if fchk "image.bmp" :goto *test
;指定画像がファイルログにあれば真

if %0==1 && %2=5 :goto *test
;両方成立したら真

if %0==1 || %2==5 :goto *test
;どちらかが成立すれば真

if %0==%1 || %0==0: if %1==1 :goto *test
; %0==%1 || %0==0 なら %1==1を評価し、成立なら *testへ飛ぶ

関連: category:基本

CMP %val,"str","str2"

定義・実行

strと str2を SJIS順比較し、結果を %valに得る。
返り値は 正の数:str2が大きい 負の数:strが大きい 0:等しい。
cmp %0,"左","右"

関連: if / category:基本

GOTO *label

定義・実行

ラベル *labelにジャンプする。
goto *label

関連: NSGoto / category:基本

TABLEGOTO %val,*label[,*label2..]

定義・実行

テーブルジャンプ。
%valの値が 0なら *label、1なら *label2..にジャンプする。
tablegoto %0,*lbl,*lbl2

関連: category:基本

GOSUB *label

定義・実行

ラベル *labelにサブルーチンジャンプする。
gosub *lbl

関連: NSGosub / category:基本

RETURN[ *label]

定義・実行

サブルーチンからの復帰。
ラベル *labelを指定すると、サブルーチンスタックを一つ消費した後、*labelにジャンプする。
return

関連: NSReturn / category:基本

SKIP line

定義・実行

行数 line分ジャンプ。空行も含む。
lineが正の場合は後方、負の場合は前方へジャンプ。
skip 10

関連: category:基本

JUMPF

JUMPB

定義・実行/非推奨:不具合あり

~までジャンプ。
jumpfが次の ~、jumpbが直前の ~。
jumpf
この文は飛ばす。
~
この文は表示する。

jumpb

関連: category:基本

NUMALIAS alias,num

STRALIAS alias,"str"

定義

エイリアス aliasを作成する。
これは特定の数値や文字列に名前をつけることができる命令である。
numaliasは数値、straliasは文字列。
aliasは 一文字目:半角英字 または _ 、二文字目~:半角英数字 または _ とする。
*define
numalias test,2 ;以降 test=2
numalias akari_love,0 ;以降 %akari_love=%0

stralias man_a0,":a/10,20,2;img\man_alpha.bmp"
game

*start
lsp test,"img\test.bmp",0,0
mov %akari_love,1
ld c,man_a0,1

関連: category:基本

DEFSUB *label

定義

ユーザ定義命令実装。命令はサブルーチンとして作成する。
命令名は先頭に _を使用できないこと以外、エイリアス(numalias)とつけ方は同じ。

ユーザ定義命令名は NSCRに元からある命令名でも登録できる。
呼び出す優先順は luasub → defsub → 元々の命令。
元々の命令を呼ぶ場合は頭に _をつける。
*define
defsub subname
game

*subname
getparam i%50,%51
mul %%50,%51*4
;%50=3 なので、%%50=%3(mul %3,4と同じ)
return

*start
subname %3,10

%3@

関連: gosub / category:基本

GETPARAM {%val|$val}[,..]

定義・実行

ユーザ定義命令の引数取得。
i%val/ s%val とすると、呼び出し元の数字変数番号 / 文字変数番号を取得できる。
getparam %0

関連: defsub / category:基本

特殊文字

*label

特殊

この行はラベル。

ラベル名 labelは半角英数字か _のみでつける。
ただし「半角数字で始まる名前」は不可。
*lbl

関連: category:特殊文字

;comment

特殊

ここからコメント。
;コメント

関連: category:特殊文字

exec:exec[:exec..]

特殊

一行に複数の命令 execをつなぐ。
click :goto *lbl

関連: category:特殊文字

@

\

特殊

クリック待ち。
@は通常の文字送り、\は改ページ。
通常@
改ページ\

関連: category:特殊文字

/

特殊

直後の改行を無視。
この行と/
この行は同じとみなす@

関連: category:特殊文字

#rrggbb

特殊

テキストの色変更。
色指定は HTMLと同じ 16進数形式。
#ff0000テキスト@

関連: textcolor / category:特殊文字

!Sms

特殊/不具合あり

テキスト一文字あたりの表示速度 msの設定。
!s15

関連: textspeed / category:特殊文字

!SD

特殊

テキスト表示速度を規定値に戻す。
これは setwindow等の文字速度の反映に必要。
!sd

関連: category:特殊文字

!Dms

!Wms

特殊

指定時間 ms待つ。
!dはクリックでスキップ可、!wは不可。
!d1000
!w1000

関連: delay / wait / category:特殊文字

%val

$val

特殊

変数を表示。
%valは数字変数、$valは文字変数。
エイリアスも使用可。
現在の%0、$0の値は%0、$0です。@

関連: mov / category:特殊文字

変数

MOV {%val,num|$val,"str"}

定義・実行

変数 %val/$valに値を代入する。
%valは数字変数、$valは文字変数を示し、それぞれに合う型の値しか代入できない。

数字変数の規定値は 0、文字変数の規定値は ""。
変数番号 valには 0~4095が指定でき、規定値は 普通:~199 グローバル:200~。
文字変数に代入できる値は 半角 8190文字まで。
【通常変数とグローバル変数の違い】
初期化のタイミング 値の保存先 値の保存/復元のタイミング
通常 NSCR終了/リセット時 save??.dat savegame/loadgame
グローバル global.sav/envdataがない時 global.sav ボタン待ち/NSCR起動時
  • 算術演算子は +:加算, -:減算 *:乗算 /:除算(小数点切り捨て)。
  • 文字列を +でつなぐと、+は連結演算子となる。
  • %%val/ $%val とすると、%valという数字変数/ $valという文字変数への代入になる。
  • グローバル変数の使用には globalon宣言が必要。
mov %0,24
; %0=24

mov $0,"あああ": mov $1,"いいい"+$0
; $1="いいいあああ"

for %0=10 to 14 :mov %%0,%0*2 :next
; %10=20, %11=22, %12=24, %13=26, %14=28

関連: ;value / NSSetIntValue / NSSetStrValue / category:変数

;VALUEvarnum

特殊

普通変数とグローバル変数の境目を変更する。
変数番号 varnumは 0~4095まで指定でき、規定値は 普通:~199 グローバル:200~。
;value500

関連: ;mode / category:変数

GLOBALON

定義

グローバル変数を使用可能にする。
globalon

関連: category:変数

数値

ADD {%val,num|$val,"str"}

定義・実行

変数 %val/ $valに値 num/ "str"を加算。
add %0,5
add $0,"あいうえお"

関連: inc / category:数値

SUB %val,num

定義・実行

変数 %valから値 numを減算。
sub %0,5

関連: dec / category:数値

MUL %val,num

定義・実行

変数 %valに値 numを乗算。
mul %0,5

関連: category:数値

DIV %val,num

定義・実行

変数 %valから値 numを除算。
小数点以下は切り捨てる。
div %0,5

関連: category:数値

MOD %val,num

定義・実行

変数 %valから値 numを除算し、その余りを取得。
この命令は、演算子としての利用も可能。
mod %0,5
mov %0,5 mod 2 ; %0=1

関連: category:数値

INC %val

DEC %val

定義・実行

変数 %valの値を 1増減する。
incは増、decは減。
inc %0
dec %0

関連: add / sub / category:数値

RND %val,max

RND2 %val,min,max

定義・実行

乱数を発生させ、結果を %valに取得する。
返り値は rnd:0~ max rnd2:min~max。
rnd %5,100 ;%5に 0から 99の値が入る
rnd2 %3,10,20 ;%3に 10から 20の値が入る

関連: category:数値

SIN %val,dig

COS %val,dig

TAN %val,dig

定義・実行

角度 digの三角関数値を %valに取得する。
sinが正弦、cosが余弦、tanが正接。
値は 100倍したものを返す。
sin %0,90 ;%0=1000
cos %1,60 ;%1=500
tan %2,30

関連: category:数値

INTLIMIT varnum,min,max

定義

変数名 varnumを持つ数字変数の値が、minと maxの間しか取らなくなる。
intlimit 0,10,20
;%0は10から20までの値しか取らなくなる

関連: category:数値

DIM ?var[index][[index]..]

定義

配列の宣言。
配列番号は 0~ 200、扱える次元は 20まで。
エイリアスも使用可。
*define
dim ?0[9] ;配列番号 0は 0 ~9までの添え字を持つ
game

*start
mov ?0[0],0
mov ?0[9],9

movl ?0,0,1,2,3,4
; ?0[0] = 0, ?0[1] = 1, ?0[2] = 2, ?0[3] = 3, ?0[4] = 4

関連: category:数値

文字列

ITOA $val,num

ITOA2 $val,num

定義・実行

数値 numを文字列に変換し、結果を $valに取得する。
itoaは半角、itoa2は全角。
itoa $0,120 ;$0="120"
itoa2 $0,120 ;$0="120"

関連: atoi / category:文字列

ATOI %val,"str"

定義・実行

半角文字列 strを数値に変換し、結果を %valに取得する。
変換できない場合 0を返す。
atoi %0,"123" ;%0=123

関連: itoa / category:文字列

LEN %val,"str"

定義・実行

文字列 strの長さを求め、結果を %valに取得する。
単位は 1byte。
len %0,$0

関連: category:文字列

MID $val,"str",startnum,byte

定義・実行

文字列 strから指定範囲の文字列を切り出して、結果を $valに取得する。
指定範囲は開始位置 startnumより数えて byte分。
startnumは 0から始まる。
mid $0,"あいうえお",2,4
; $0="いう"

関連: category:文字列

SPLIT "str","delchr",{%val|$val}[,..]

定義・実行

文字列 strを区切り文字 delchrで分割して、その結果を変数 %val/$valに取得する。
結果は変数の型に合わせて変換される。
値が足りないまたは何もないと 0または ""を返す。
mov $1,"12/てすと"
split $1,"/",%0,$0
; %0=12, $0="てすと"

関連: category:文字列

マウス・キー

CLICK

実行

左クリックを待つ。
click

関連: NSClick / category:マウス・キー

LRCLICK

実行

左クリックまたは右クリックを待つ。
返り値は 0:右クリック 1:左クリックで、getretにて取得する。
lrclick

関連: category:マウス・キー

AUTOCLICK ms

実行

時間 ms後、自動左クリックする。
msを 0で解除する。
autoclick 1000

関連: category:マウス・キー

CLICKPOS %val,%val

実行

最後に左クリックした座標を変数 %valに返す。
返り値は x座標、y座標。
clickpos %0,%1

関連: category:マウス・キー

ISDOWN %val

実行

マウス左ボタンの状態を変数 %valに返す。
返り値は 1:押している 0:離している。
isdown %0

関連: category:マウス・キー

ROFF

定義

右クリック無効化。
roff

関連: category:マウス・キー

RMODE flag

実行

右クリックの使用有無を切り替える。
flagは 0:無効 1:有効(規定値)。
roff時は無効。
rmode 0

関連: category:マウス・キー

GETMOUSEPOS %val,%val

実行

マウスカーソル位置を変数 %valに返す。
返り値は x座標、y座標。
getmousepos %0,%1

関連: NSGetMouse / category:マウス・キー

MOVEMOUSECURSOR x,y

実行

マウスカーソルを座標 x,yに移動する。
movemousecursor 100,10

関連: category:マウス・キー

MOUSECURSOR "curfile"

実行

マウスカーソルを Windowsカーソルファイル curfileに変更する。
mousecursor "test.cur"

関連: category:マウス・キー

MOUSEMODE flag

実行

マウスカーソルの表示状態切り替え。
flagは 0:非表示 1:表示。
mousemode 0

関連: category:マウス・キー

CHECKKEY %val,"key"

実行/([F10])使用禁:Windowsのキーアサインと競合

キー keyを押しているかを変数 %valに返す。
返り値は 1:キーを押している 0:押していない。
【指定できるキー】
半角英字、半角数字、半角記号 そのまま指定("A" 等)
ファンクションキー "F1"~ "F12"
カーソルキー "UP" / "DOWN" / "LEFT" / "RIGHT"
[SPACE] "SPACE" または " "
[ENTER] "ENTER" または "RETURN"
[CTRL] "CTRL"
[SHIFT] "SHIFT"
[PgUp]/[PgDn] "PAGEUP"/"PAGEDOWN"
checkkey %5,"A"

関連: NSGetKey / category:マウス・キー

ウェイト・タイマー

DELAY ms

WAIT ms

実行

時間 ms待つ。
delayはクリックでスキップ可、waitは不可。
delay 1000
wait %0

関連: NSSleep / category:ウェイト・タイマー

SPWAIT spnum

実行

スプライト spnumのアニメーションが終わる(最初のコマに戻るか停止する)のを待つ。
spwait 0

関連: category:ウェイト・タイマー

RESETTIMER

実行

内部タイマーリセット。
このタイマーは、NSCR起動後 ms単位で常に回り続けている。
resettimer

関連: category:ウェイト・タイマー

WAITTIMER ms

実行

内部タイマーが時間 ms以上になるまで待つ。
waittimer 1000

関連: category:ウェイト・タイマー

GETTIMER %val

実行

内部タイマーの値を変数 %valに返す。
gettimer %0

関連: NSTimer / category:ウェイト・タイマー

割り込み

TRAP {*label|opt}

TRAP2 [TRAPと同様]

LR_TRAP [TRAPと同様]

LR_TRAP2 [TRAPと同様]

R_TRAP [TRAPと同様]

実行

動作を監視し、命令に対応した動作が発生した時、割り込んでラベル *labelへジャンプする。
設定はジャンプ後自動的に解除する。
【監視する動作】
trap 左クリック
trap2 左クリックと[選択肢まで進む]
lr_trap 左右クリック
lr_trap2 左右クリックと[選択肢まで進む]
r_trap 右クリック
【opt】
off 割り込みを解除し、設定を消去
stop 割り込みを一時的に禁止
resume stopを解除し、再び割り込みを許可
# stop中にクリックしていた場合、
この時点で割り込みが発生する。
trap *label
trap2 off

関連: category:割り込み

TIMERTRAP {*label,ms|opt}

実行

時間 ms経過後にラベルジャンプ。
opt、留意点は trap同様。
timertrap *test,30000

関連: category:割り込み

ボタン

BEXEC {$val|%val}[,{$val|%val}]

実行

ボタン待ち。
引数は文字変数と数字変数、またはその両方を指定できる。
値は マウス:ボタンを離した時(規定値) キーボード:キーを押した時に取得。
【返り値】
数字変数は ボタン押下時:該当スプライト番号 それ以外:-1。
文字変数は以下の表参照。
"Sspnum" 押下したスプライト spnum
"LCLICK" ボタン以外を左クリック/スキップ中/(通常時)[SPACE][ENTER]
"RCLICK" 右クリック
"WHEELUP" / "WHEELDOWN" ホイール上 / ホイール下
"MCLICK" 中クリック
"key"
([SPACE][ENTER]以外)
押下したキー key
# 詳細は checkkey参照
"UP"/"DOWN"/"LEFT"/"RIGHT"
bcursor時)
カーソルキー上/下/左/右
# 通常はボタン間の移動
"SPACE"
bcursor時)
[SPACE]
"RETURN"
bcursor時)
[ENTER]
"TIMEOUT"
btime時)
タイムアウト
"SKIP" スキップ中
"AUTO" オートモード中
  • 定義が不要になったら bclearで消去すること。
  • (ボタン待ち命令全てにおいて)命令が来た時点で自動的に print 1される。
  • 中クリック及びホイールマウスのない環境もあるのに注意すること。
*btnlp
bclear ;ボタン定義クリア
bexec $0,%0 ;文字変数と数字変数に結果を受け取る
if $0=="A" :goto *aaa
if %0==-1  :goto *rclick
goto *btnlp ;スクリプトが次に流れないようにループさせる

*rclick
右クリックした。@
goto *btnlp

*aaa
Aを押した。@
goto *btnlp

関連: category:ボタン

BCLEAR

実行

bexecの定義を消去する。
bclear

関連: category:ボタン

BSP spnum[,"opt_mouseoff","opt_mouseon","opt_mousedown"]

実行

bexecで スプライト spnumをボタン登録する。
ボタン押下時、bexec戻り値に対応スプライト番号 または "S対応スプライト番号" を返す。
制御文字列 optの規定値は、マウスオフ opt_mouseoff:"Pspnum,0" マウスオン opt_mouseon:"Pspnum,1" マウスボタン押下 opt_mousedown:"Pspnum,2"。
【opt】
マウスオフ、マウスオン、マウスボタンダウンの順に指定。何もしない時は空欄にする。
Cspnum スプライト spnumを非表示
Cspnum-spnum2 spnum~ spnum2を非表示
Pspnum spnumを表示
Pspnum,cellnum spnumのセル cellnumを表示
Mspnum,lx,ly spnumを座標 lx,lyへ移動
Schnum,(sndfile) 音声ファイル sndfileを音声チャンネル chnumで再生
bsp 1
bsp 2,"P3,0","P3,1","P4,1"

関連: category:ボタン

BDEF "opt"

実行

bspボタンにマウスカーソルが乗っていない時の設定。
制御文字列 optは bsp参照。
bdef "C0"

関連: category:ボタン

BCURSOR

実行

bexec時、カーソルキーと [ENTER][SPACE]を取得可能にする。
bcursor

関連: category:ボタン

BTIME ms[,flag]

実行

bexecのタイムアウト時間 msを設定する。
flagを 1とすると、タイムアウトしていてもボイス(DWAVE 0)の再生終了まで待つ。
btime 2000

関連: category:ボタン

BTRANS

実行

bexec時、ボタン画像の透過部分をボタン範囲としない。
btrans

関連: category:ボタン

BDOWN

実行

bexec時、左クリック動作を取得するタイミングを、ボタンを押した時にする。
bdown

関連: category:ボタン

旧ボタン

BTNWAIT %val

BTNWAIT2 %val

実行

ボタン待ち(旧)。
btnwaitは、結果が返り次第ボタン定義及び画像を消去する。
btnwait2では定義も画像もメモリ上に残る。不要になったら btndefで消去すること。

返り値 %valは 0:ボタン以外を左クリック -1:右クリック その他の数値:登録したボタン番号。
%valが 0以下の時は、すぐにまたこの命令を呼べば、また同じボタンモードになる。
%valが 1以上の時は、押された瞬間の画像のまま、ボタン定義は全て消去する。
btnwait %0
btnwait2 %0

関連: bexec / category:旧ボタン

BTNDEF {"imgfile"|""|clear}

実行

btnwaitで、ボタン画像 imgfileの読み込みやメモリ消去、ボタン定義の消去をする。
引数に imgfileを指定すると、ボタン定義消去後画像を読み込む。
""を指定すると、ボタン定義と、メモリ内のボタン画像を消去する。
clear ならボタン定義のみを消去する。
btndef clear

関連: bclear / category:旧ボタン

BTN btnnum,lx,ly,btnw,btnh,imgx,imgy

実行

btnwaitで座標 lx,lyからサイズ btnw,btnhの範囲をボタン btnnumに登録する。
ボタン画像はあらかじめ btndefで読み込んでおく。ボタン上にマウスカーソルが重なると、読み込んだボタン画像位置 imgx,imgyから btnw,btnhの範囲を lx,lyに表示する。
btndef "btn.bmp"
btn 1,20,20,64,64,0,0

関連: category:旧ボタン

SPBTN btnnum,spnum

実行

btnwaitでスプライト spnumをボタン btnnumに登録する。
spnumが複数セルの場合、マウスオフ:セル 0 マウスオン:セル 1、ボタン押下:セル 2 と表示される。
留意点は btn同様。
spbtn 1,1

関連: bsp / category:旧ボタン

EXBTN spnum,btnnum,"opt"

実行

btnwaitでスプライト spnumをボタン btnnumに登録し、制御文字列 optで制御できるようにする。
optは bsp参照。留意点は btn同様。
exbtn 1,1,""

関連: bsp / category:旧ボタン

EXBTN_D "opt"

実行

exbtnボタンにマウスカーソルが乗っていない時の設定。
optは bsp参照。
exbtn_d ""

関連: bdef / category:旧ボタン

CELLCHECKSPBTN spnum,btnnum

実行

btnwaitで、複数セルを持つスプライト spnumをボタン btnnumに登録する。
マウスオフ:セル 0 マウスオン:セル 1、ボタン押下:セル 2 になる。
留意点は btn同様。
cellcheckspbtn 1,1,""

関連: category:旧ボタン

CELLCHECKEXBTN spnum,btnnum,"opt"

実行

btnwaitで、複数セルを持つスプライト spnumをボタン btnnumに登録し、制御文字列 optで制御できるようにする。
optは bsp参照。留意点は btn / exbtn / cellcheckspbtn同様。
cellcheckexbtn 1,1,""

関連: category:旧ボタン

TRANSBTN

実行

btnwaitで、ボタン画像の透過部分を範囲としない。
transbtn

関連: btrans / category:旧ボタン

BTNTIME ms

BTNTIME2 ms

実行

btnwaitでのタイムアウト時間 msを設定する。
btntimeでは、何も押されず時間経過すると -2を返す。
btntime2では、何も押されず時間経過すると、ボイス(DWAVE 0)の再生終了後、-2を返す。
btntime 1000
btntime2 1000

関連: btime / category:旧ボタン

GETBTNTIMER %val

実行

btnwait開始~ボタン押下までの時間を変数 %valに返す。
getbtntimer %0

関連: category:旧ボタン

GETMOUSEOVER spnum_min,spnum_max

実行

btnwait時、ボタンにマウスカーソルを重ねるだけで押したことにする。
スプライト spnum_min~ spnum_max内のボタンが対象になる。
getmouseover 1,5

関連: category:旧ボタン

BTNNOWINDOWERASE

定義

btnwait時にテキストウィンドウが消えなくなる。
btnnowindowerase

関連: category:旧ボタン

BTNAREA x

実行

btnwait時、位置 xにマウスカーソルが来た場合に -4を返す。
値は 正:x以下 負:xの絶対値以上にマウスカーソルが来た時に返す。
btnarea 100

関連: category:旧ボタン

BTNDOWN flag

実行

btnwait時、左クリック動作を取得するタイミングを変更する。
flagは 1:左クリックを押した時 0:離した時(規定値)。
btndown 1

関連: category:旧ボタン

GETCURSOR

GETENTER

GETFUNCTION

GETINSERT

GETPAGE

GETTAB

GETZXC

GETMCLICK

実行/(gettab / getfunction:[F10])非推奨:Windowsキーアサインと競合

btnwait時、命令に対応したキーを取得可能にする。
【命令と対応キー、返り値一覧】
0 左クリック、(通常時)[ENTER]
-1 右クリック
-2 btntime時間切れ (usewheel時はホイール上)
-3 usewheel[ホイール下]
-5 usewheel時)btntime時間切れ
-10 / -11 useescspc時)[ESC]/[SPACE]
-12 / -13 getpage [PgUp]/[PgDn]
-19 getenter [ENTER]
-20 gettab [TAB]
-21~ -32 getfunction [F1]~[F12]
-40 / -41 / -42 / -43 getcursor [UP]/[RIGHT]/[DOWN]/[LEFT]
-50 getinsert [Insert]
-51 / -52 / -53 getzxc [Z]/[X]/[C]
-60 / -61 getskipoff時)スキップモード終了/オートモード終了
-70 getmclick [中クリック]
getcursor

関連: bsursor / category:旧ボタン

USEESCSPC

定義

btnwait時、[ESC]と[SPACE]を取得可能にする。
返り値は [ESC]:-10 [SPACE]:-11。
useescspc

関連: category:旧ボタン

USEWHEEL

定義

btnwait時、マウスホイール入力を取得可能にする。
返り値は ホイール上:-2 ホイール下:-3。
usewheel

関連: category:旧ボタン

GETSKIPOFF

実行

btnwait時、スキップオフ/オートモードオフを取得可能にする。
返り値は スキップオフ:-60 オートモードオフ:-61。
getskipoff

関連: category:旧ボタン

SPCLCLK

実行

btnwait時、[SPACE]を左クリックと同じ扱いにする。
spclclk

関連: category:旧ボタン

TEXTBTNWAIT %val

実行

テキストボタン待ち。
返り値は btnwait参照。

【テキストボタン】
テキストのある部分をボタンとして扱う機能のこと。
<TEXTBTNNUMtextbtntext>text..のように記述する。

【システムカスタマイズ】
@/ \時の挙動・動作を自作すること。 rmenu等より自由度が高く、例えばセーブメニューを画像ボタン化したり、 マウスホイールやカーソルキーでテキスト送り等といったことが可能になる。
*define
textgosub *textlb
game

*textlb
btndef clear

*textlb_lp
textbtnwait %0
if %0==0  :goto *textlb_end
if %0==1  :goto *textlb_textbtn
if %0==-1 :goto *textlb_menu
goto *txtlb_lp

*textlb_end
texec
saveon
return

*textlb_menu
systemcall save
goto *textlb

*textlb_textbtn
if %0==1 :mesbox "テキストのある部分をボタンとして扱う機能のこと。","Tips"
erasetextbtn
goto *textlb

*start
左クリックでテキスト送り@
右クリックでセーブ@
<1テキストボタン>サンプル\
end

関連: category:旧ボタン

TEXTEXBTN textbtnnum,"opt"

実行

テキストボタン textbtnnumを制御文字列 optで制御できるようにする。
optは bsp参照。留意点は exbtn同様。
textexbtn 1,"C0"

関連: category:旧ボタン

GETTEXTBTNSTR $val,textbtnnum

実行

テキストボタン textbtnnumに対応した文字列を変数 $valに返す。
ない場合は ""を返す。
<12あいうえお>かきくけこ@

gettextbtn $0,12
;$0="あいうえお"

関連: category:旧ボタン

LINKCOLOR #color_mouseoff,#color_mouseon

定義・実行

テキストボタンの色設定。
linkcolor "#ffff00","#00ffff"

関連: category:旧ボタン

TEXTBTNSTART num

定義・実行

テキストボタンの開始番号 numを設定する。
規定値は 1。
textbtnstart 3

関連: category:旧ボタン

TEXTBTNOFF

実行

テキストボタンを一時的にオフにする。
textbtnoff

関連: category:旧ボタン

ERASETEXTBTN

実行

テキストボタンモードを抜けた時の処理。
ボタンを消去して元の色に戻す。
erasetextbtn

関連: category:旧ボタン

テキストラベル

TEXTGOSUB *label

定義

テキストラベル *labelの設定。
クリック待ち(@/ \)時、ラベル *labelへサブルーチンジャンプする。
textgosub *lbll

関連: category:テキストラベル

ISPAGE %val

実行

テキストラベルの呼び出し理由を変数 %valに返す。
返り値は 0:クリック待ち 1:改ページ待ち。
;【システムカスタマイズでテキストカーソルを表示する】
lsph 0,"img\cursor0.bmp",0,0
lsph 1,"img\cursor1.bmp",0,0

*textlb
btndef clear

ispage %0
if %0==0 :vsp 0,1 :vsp 1,0
if %0==1 :vsp 0,0 :vsp 1,1

getcursorpos %1,%2
amsp 0,%1,%2 :amsp 1,%1,%2

*textlb_lp
textbtnwait %0

関連: category:テキストラベル

TEXEC

TEXEC2

実行

テキストラベル呼び出し理由が @ならテキスト送り、\なら改ページする。
次の命令が選択肢の時、texecはテキストを消去、texec2は消去しない。
texec
texec2

関連: category:テキストラベル

プレテキストラベル

PRETEXTGOSUB *label

定義

プレテキストラベルの設定。
テキスト表示の直前に、ラベル *labelへサブルーチンジャンプするようになる。
pretextgosub *label

関連: luacall / category:プレテキストラベル

GETTAG {%val|$val}[,..]

定義・実行

テキストタグの内容を取得。

【テキストタグ】
タグは []でくくり、必ずテキスト行頭に入れること。
/で区切ると、数値や文字を別個に取り出すことができる。
省略した場合は ""または 0を返す。
*define
pretextgosub *prelb
game

*start
[太郎/0001.wav]こんにちは。\
end

*prelb
dwavestop 0
gettag $0,$1 ;$0="太郎" $1="0001.wav"
if $0!="" :puttext "【"+$0+"】" 
if $1!="" :dwave 0,$1
return

関連: category:プレテキストラベル

ZENKAKKO

定義/廃止:現在使用不能

テキストタグで【】を使用可能にする。
zenkakko

関連: category:プレテキストラベル

テキストウィンドウ

SETWINDOW letter_x,letter_y,letter_xn,letter_yn,letter_w,letter_h,letter_spx,letter_spy,defspeed_ms,bold,shade,{"#color",lx,ly,rx,ry|"imgfile",lx,ly}

SETWINDOW3 [SETWINDOWと同様]

実行

テキストウィンドウ設定。
通常(透過度落とし)タイプと画像指定タイプが指定できる。
通常タイプでは色指定で色味が変更でき、画像指定タイプではアニメーション以外の画像タグ有効。

setwindowはテキストウィンドウの再設定時に回想バッファを消去する。
消去したくない場合は setwindow3を使う。

letter_xn/letter_ynは横/縦文字数。
letter_w/letter_hは文字サイズ幅/高さ。
letter_spx/letter_spyは横/縦文字間。
defspeed_msは文字の表示速度。
太字フラグ boldは 0:無効 1:有効、影フラグ shadeは 0:無効 1:有効。
setwindow 8,16,23,16,26,26,0,2,20,1,1,"#999999",0,0,639,479

関連: setwindow2 / category:テキストウィンドウ

SETWINDOW2 {"#color"|"imgfile"}

実行

テキストウィンドウの外観変更。
テキストウィンドウ、テキスト、回想バッファを消去しない。
setwindow2 "#ff0000"

関連: setwindow / category:テキストウィンドウ

WINDOWEFFECT effectnum[,ms]

定義・実行

テキストウィンドウ/テキスト表示のエフェクト effextnumを指定する。
effectnumが 1なら msは必要ない。
windoweffect 10,1000
windoweffect 0,0

関連: effect / category:テキストウィンドウ

ERASETEXTWINDOW flag

実行

エフェクト時のテキストウィンドウの挙動を設定する。
flagは 0:そのまま 1:非表示(規定値)。
erasetextwindow 0

関連: category:テキストウィンドウ

NOTERASEMAN

定義

テキストウィンドウ消去時、立ち絵が消えない。
noteraseman

関連: ld / category:テキストウィンドウ

WINDOWCHIP spnum

定義/非推奨:動作不安定

スプライト spnumの表示状態が、テキストウィンドウと連動するようになる。
windowchip 2

関連: category:テキストウィンドウ

WINDOWBACK

定義

テキストウィンドウの表示順変更。

【各要素の表示順・windowback未使用時】
↑動画
|*テキストウィンドウ*
|バー
monocro/ nega効果
|拡張スプライト
|499番以下のスプライト(番数は humanzで変更可)
|立ち絵
|500番以上のスプライト(番数は humanzで変更可)
↓背景

【各要素の表示順・windowback使用時】
↑動画
|バー
|499番以下のスプライト(番数は humanzで変更可)
|*テキストウィンドウ*
|拡張スプライト
monocro/ nega効果
|立ち絵
|500番以上のスプライト(番数は humanzで変更可)
↓背景
windowback

関連: category:テキストウィンドウ

TEXTOFF

TEXTON

実行

テキストウィンドウの表示状態を切り替える。
textoffが非表示、textonが表示。
textoff
texton

関連: texthide / textshow / category:テキストウィンドウ

テキスト

ENGLISH

定義

半角英文モードを有効にする。
テキスト行頭を >とすると、その行は半角英文モードになる。
*define
english
game

*start
>Peter Piper picked a peck of pickled peppers

関連: category:テキスト

TATEYOKO flag

定義・実行/非推奨:回想モードで不具合あり

縦書きモードにする。
flagは 1:オン 0:オフ。
tateyoko 1

関連: category:テキスト

ADDKINSOKU "headstr","tailstr"

SETKINSOKU "headstr","tailstr"

定義

禁則文字列設定。複数指定可。
addkinsokuは追加、setkinsokuは初期化後に再設定。
禁則文字列の規定値は 行頭 headstr:"、。・?!ー々」』)}]" 行末 tailstr:"([{「『"。
addkinsoku "【","】"
setkinsoku "、。」","「"

関連: category:テキスト

KINSOKU flag

実行

禁則処理の有無を切り替える。
flagは on:有効(規定値) off:無効。
kinsoku on

関連: category:テキスト

RUBYON[ rubyw,rubyh[,"fontname"]]

RUBYON2 [RUBYONと同様]

定義・実行/(rubyon2)非推奨:動作不安定

ルビモードにする。
rubyonは全ての行、rubyon2はルビのある行のみ。

ルビサイズ rubyw,rubyhを省略すると、テキストの半分の大きさになる。
ルビは (ルビを振りたい文字列/ルビ) のようにする。
rubyon 12,12,"MS ゴシック"

(祇園精舎/ぎおんしょうじゃ)の鐘の音@
(諸行無常/しょぎょうむじょう)の響きなり\

関連: rubyoff / category:テキスト

RUBYOFF

定義・実行

ルビモードを無効にする。
rubyoff

関連: rubyon / category:テキスト

FONT "fontname"

実行

テキストのフォントを fontnameに変更する。
規定値は "MS ゴシック"。
font "MS 明朝"

関連: defaultfont / spfont / category:テキスト

TEXTSPEED ms

実行

文字表示速度を時間 msに変更する。
textspeed %0

関連: category:テキスト

TEXTSPEEDDEFAULT

実行

文字表示速度を規定値に戻す。
setwindow系命令などの文字速度を有効にする時に必要。
textspeeddefault

関連: category:テキスト

TEXTCOLOR "#color"

実行

テキスト色を #colorに変更する。
textclear "#ff00ff"

関連: category:テキスト

BR

実行

テキスト改行。
br

関連: category:テキスト

INDENT num

実行

テキストインデント。
改行時、文字数 numだけテキストを右にずらす。
indent 2

関連: category:テキスト

LOCATE xn,yn

実行

テキスト表示位置を文字位置 xn,ynに変更。
locate 1,2

関連: category:テキスト

SHADEDISTANCE right,bottom

定義・実行

テキストの影位置を right,bottomピクセル分ずらす。
shadedistance 2,3

関連: category:テキスト

TEXTHIDE

TEXTSHOW

実行

テキストの表示状態を切り替える。テキストウィンドウは含まない。
texthideが非表示、textshowが表示。
texthide
textshow

関連: textclear / textoff / texton / category:テキスト

TEXTCLEAR

実行

テキスト消去。
textclear

関連: textshow / texthide / category:テキスト

ISSKIP %val

実行

現在のスキップ状態を変数 %valに返す。
返り値は 0:通常モード 1:スキップモード 2:オートモード。
isskip %0

関連: category:テキスト

SKIPOFF

実行

テキストのスキップ状態を解除する。
skipoff

関連: category:テキスト

KIDOKUSKIP

定義/Lua×

[選択肢まで進む]を既読スキップにする。
既読ログは kidoku.dat(自動生成)に記録する。
kidokuskip

関連: category:テキスト

KIDOKUMODE flag

定義・実行

スキップ形式の変更。
flagは 0:強制 1:既読。
kidokumode 0

関連: category:テキスト

AUTOMODE_TIME ms

定義・実行

オートモードのテキスト送り時間 msを設定する。
規定値は 1000ms。
automode_time 1000

関連: category:テキスト

PUTTEXT "str"

実行

文字列 strをテキストとして表示する。
puttext "ハローワールド"

関連: category:テキスト

GETTEXT $val

実行

現在表示しているテキストを変数 $valに返す。
改行情報は取得しない。
gettext $0

関連: getlog / category:テキスト

LINEPAGE

定義

テキストの末尾に、自動的に \を補う。
linepage

関連: category:テキスト

CLICKSKIPPAGE

定義

テキスト表示中のクリックで、改ページ待ちまで瞬時表示するよう設定。
*define
clickskippage
game
*start
このメッセージを表示中にクリックすると@ここまで瞬時表示する\

関連: category:テキスト

CLICKSTR "clickstr",point

定義/不具合あり

強制クリック文字 clickstrの設定。設定できる文字は全角のみ。
改行目安 point以降の行に clickstrがあると改ページになる。
一時的にオフにしたい場合は、clickstrの直前に _を入れる。
clickstr "」。!?",2

関連: category:テキスト

CLICKVOICE "sndfile","sndfile"

定義

クリック待ち時に再生する音声ファイル sndfileを設定する。
指定順は 普通のクリック待ち(@)、改ページ待ち(\)。
clickvoice "click.wav","page.wav"

関連: category:テキスト

テキストカーソル

GETCURSORPOS %val,%val

GETCURSORPOS2 %val,%val

実行

テキストカーソル位置を変数 %valに返す。
getcursorposは現在のテキストカーソル位置(次に表示するテキストの頭位置)を、
getcursorpos2は現在表示中のテキスト終了位置を取得する。
返り値は x座標、y座標。
;【getcursorpos / getcursorpos2 / getnextlineの違い】
setwindow 8,16,23,16,26,26,0,2,20,1,1,"#999999",0,0,639,479
lsp 0,":c;>26,26,#ff0000",0,0 ;赤は getcursorpos
lsp 1,":c;>26,26,#0000ff",0,0 ;青は getcursorpos2
lsp 2,":c;>26,26,#008000",0,0 ;緑は getnextline

for %10=0 to 4
あいうえおかきくけこさしすせそたちつてとなにぬ/

getcursorpos %0,%1
getcursorpos2 %2,%3
getnextline %4,%5

amsp 0,%0,%1
amsp 1,%2,%3
amsp 2,%4,%5
@
next

関連: category:テキストカーソル

GETNEXTLINE %val,%val

実行

次に表示するテキストの行頭位置を変数 %valに返す。
座標は現在のテキストカーソル位置(getcursorposと同じ位置)が基準。
返り値は x座標、y座標。
getnextline %0,%1

関連: category:テキストカーソル

ABSSETCURSOR textcurnum,"imgfile",lx,ly

SETCURSOR textcurnum,"imgfile",lx_add,ly_add

実行

テキストカーソルの表示設定。
abssetcursorが基準位置からの絶対座標 lx,ly、setcursorが相対座標 lx_add,ly_add指定。
基準位置は、次に表示するテキストの先頭座標位置。
カーソル番号 textcurnumは 0:クリック待ち時 1:改ページ待ち時。
setcursor 0,":a;img\cursor0.bmp",0,0
abssetcursor 1,":a;img\cursor1.bmp",0,0

関連: category:テキストカーソル

選択肢

SELECT "str",*label[,"str",*label][,..]

SELGOSUB [SELECTと同様]

実行

選択肢。
選択肢文字列 strをクリック後、対応するラベル *labelにジャンプする。
selectは通常のジャンプ、selgosubはサブルーチンジャンプ。
select "選択肢1",*lbll1,"選択肢2",*lbl2
selgosub "選択肢1",*lbl1,"選択肢2",*lbl2,"選択肢3",*lbl3

関連: csel / category:選択肢

SELNUM %val,"str"[,"str"][,..]

実行

選択肢。
選択肢文字列 strをクリック後、結果を変数 %valに返す。
結果は 0:一つ目の選択肢 1:二つ目の選択肢..。
留意点は select同様。
selnum %0,"選択肢0","選択肢1","選択肢2"

関連: category:選択肢

SELECTCOLOR "#color_mouseon","#color_mouseoff"

定義

選択肢の文字色設定。
selectcolor "#888888","#ffffff"

関連: category:選択肢

SELECTVOICE "sndfile","sndfile","sndfile"

定義

選択肢での音声ファイル sndfile設定。再生は DirectSound。
ファイル指定順は 選択肢表示時、カーソルオン時、選択肢を選んだ時。
selectvoice "sel.wav","selon.wav","selclick.wav"

関連: category:選択肢

*CUSTOMSEL

特殊

cselで呼び出すラベル。
*customsel

関連: category:選択肢

CSEL "str",*label[,"str",*label][,..]

実行

システムカスタマイズ時用の選択肢命令。
選択が行われると *customselへジャンプする。 留意点は select同様。
csel "選択肢1",*lbl1,"選択肢2",*lbl2

関連: select / category:選択肢

GETCSELNUM %val

実行

csel選択肢の個数を変数 %valに返す。
getcselnum %0

関連: category:選択肢

GETCSELSTR $val,selectnum

実行

cselで設定した選択肢の文字列を変数 $valに返す。
選択肢番号 selectnumは 0から。
getcselstr $0,0

関連: category:選択肢

CSELBTN selectnum,selectbtnnum,x,y

実行

csel命令の選択肢ボタン selectbtnnumを作成する。
選択肢番号 selectnumは 0、selectbtnnumは 1から始まる。
cselbtn 0,1,100,100

関連: category:選択肢

SELECTBTNWAIT %val

実行

csel時用ボタン待ち。
csel "選択肢1",*test1,"選択肢2",*test2

*customsel
getcselnum %1
getcselstr $2,0 :getcselstr $3,1
cselbtn 0,1,100,100 :cselbtn 1,2,100,130

*selbtn_lp
selectbtnwait %0
if %0==1 :cselgoto 0
if %0==2 :cselgoto 1
goto *selbtn_lp

関連: textbtnwait / category:選択肢

CSELGOTO selectnum

実行

csel命令時用ラベルジャンプ。
cselgoto 0

関連: goto / category:選択肢

NEXTCSEL %val

実行

次の命令が cselであるかどうかを変数 %valに返す。
返り値は 1:次は csel 0:その他。
nextcsel %0

関連: category:選択肢

描画

PRINT {effectsetnum|effectnum[,ms[,"ruleimgfile"]]}

実行

指定エフェクトで画面描画。
エフェクト定義番号 effectsetnum/効果番号 effectnumについては effectを参照のこと。
print 1
print 10,1000

関連: NSUpdate / category:描画

REPAINT

実行

画面の再描画。
repaint

関連: category:描画

EFFECT effectsetnum,effectnum[,ms[,"ruleimgfile"]]

定義/一部に不具合あり

エフェクト定義番号 effectsetnumに効果を割り当てる。
effectsetnumは 0 ~255までで、規定値は 0:メモリ読込のみ(変更不可) 1:瞬時表示。
【効果番号 effectnum】
0 次の画面描画で表示
1 瞬時表示(時間指定不要)
# このエフェクトを使った後は、printなどで直ちに画面を確定させること。
2 / 3 / 4 / 5 シャッター(順に 左/右/上/下)
6 / 7 / 8 / 9 カーテン(順に 左/右/上/下)
10 ピクセル単位のクロスフェード
11 / 12 / 13 / 14 スクロール(順に 左/右/上/下)
15 ルール画像ファイル ruleimgfileのピクセルコピーによるフェード
# 第三引数に ruleimgfileを指定する。
# ruleimgfileの白い場所ほど遅く表示する。
# rukeimgfileが画面より小さいときは敷き詰める。
16 / 17 モザイクアウト/モザイクイン
# このエフェクトを使った後は、printなどで直ちに画面を確定させること。
*廃止:ワイドスクリーン環境で不具合あり。mosaicout / mosaicin を使用すること*
18 ルール画像ファイル ruleimgfileの時間差クロスフェード
# 15番の上位エフェクト。
# 15番よりも綺麗だが、マシン負担が全効果中一番大きい。
  • effettsetnum 0は変更不可。1以降を使用すること。
  • (エフェクト関連命令全てにおいて)スキップ時に effectcutがないと、環境により不具合が生じる。
effect 1,1 ; 瞬時表示
effect 2,10,1000 ; 1000msかけてクロスフェード
effect 3,15,2000,"m1.bmp" ; 2000msかけて "m1.bmp"のピクセルフェード

関連: print / category:描画

EFFECTBLANK ms

定義

エフェクト終了後、次の命令を実行するまでの時間 msを設定する。
エフェクト番号が 1である場合は無視。
effectblank 1000

関連: effect / category:描画

EFFECTCUT

定義

スキップ時、エフェクトも飛ばす。
effectcut

関連: category:描画

EFFECTSKIP flag

定義・実行

エフェクト中にクリックした時、エフェクトをスキップするかを設定する。
flagは 0:しない 1:する(規定値)。
effectskip 0

関連: category:描画

SETEFFECTSPEED flag

定義・実行

エフェクト速度を指定する。
flagは 0:通常(規定値) 1:倍速 2:スキップ。
seteffectspeed 1

関連: category:描画

FLUSHOUT ms

実行

画面を時間 msかけてフラッシュアウト。
処理は重め。
flushout 1000

関連: category:描画

MONOCRO {"#color"|off}

実行

画面を色 #color階調にする。
引数 offで解除する。
monocro "#0000ff"

関連: category:描画

MOSAICIN maxsize,num,ms

MOSAICOUT [MOSAICINと同様]

実行/v2.96以降

画面のモザイク効果。
mosaicinがモザイクイン、mosaicoutがモザイクアウト。
maxsizeはモザイクの最大サイズ、numは分割数、msは効果にかける時間。
mosaicin 34,16,2000

関連: category:描画

NEGA flag

実行/不具合あり

画面のネガポジ反転。
flagは 0:解除 1:nega→monocro順 2:monocro→nega順。
nega 1

関連: category:描画

QUAKE px,ms

実行

画面を px分、時間 msかけて縦に揺らす。
quake 8,1000

関連: category:描画

QUAKEX num,ms

QUAKEY num,ms

実行

画面を num回、時間 msかけて揺らす。処理は重め。
quakexが横揺れ、quakeyが縦揺れ。
quakex 10,1000
quakey 10,1000

関連: category:描画

スプライト

TRANSMODE flag

定義

透過色の規定値変更。
flagは leftup:左上(規定値) copy:そのまま alpha:アルファブレンド。
transmode copy

関連: category:スプライト

LSP spnum,"imgfile",lx,ly[,alpha]

LSPH [LSPと同様]

実行

画像ファイル imgfileをスプライト spnumとして、左上座標 lx,lyに読み込む。
lspは表示モード、lsphは非表示モード。
spnumは 0~ 999で、若い番号ほど上(手前)に表示する。
透過度 alphaは 255が規定値で、0~255。
imgfileには画像タグが使用可。

【画像タグ】

"(:[alphaflag][/cellnum[,{ms_anime|<ms_anime,ms_anime[,..]>}][,animeflag];]imgfile"

コロンで開始、セミコロンで終了、スラッシュはアニメ指定の宣言。
アニメは画像の横幅をセル数 cellnumで割り、その一つ一つをアニメ上の一コマとする。
ms_animeはアニメ一コマあたりの時間で、コマごとに指定することも可能。
透過形式 alphaflag/アニメ形式 animeflagについては後述の表を参照のこと。
":s#color[#color..]str"
":s/w,h,letterspace[,style];#color[#color..]str"
alphaflagを sにすると、文字列をスプライトとして登録できる。
w/hは文字サイズ幅/高さ、letterspaceは文字間。
文字色 #colorを複数指定すると、複数セルを持つスプライトとなる。
文字修飾 styleは 0:アンチエイリアスあり(規定値) 1:アンチエイリアスなし 2:袋文字。
":c;>w,h,#color[#color...]"
imgfileを上記のようにすると、幅 w、高さ h、色 #colorで塗り潰した矩形画像を作成できる。
#colorを複数指定すると、wを #color分に均等(3色なら3つ)に分け、それぞれ塗り潰す。
alphaflagも考慮することに注意。
【透過形式 alphaflag】
l 左上ドット色透過(規定値)
r 右下ドット色透過
c コピー(そのまま表示)
#rrggbb HTML色コードで直接指定(フルカラー画像のみ)
!pal パレット番号で直接指定(256色画像のみ)
a アルファブレンド(フルカラー画像のみ)
# BMP, JPG, 通常PNG(要 nspng.dll)の場合
画像右に 白黒256階調のルール画像を連結する(白いほど透過)。
セルが複数の場合、元画像・ルール画像..の順に連結すること。
# 透過PNG(要 nspng.dll)の場合
ルール画像は不要。
セルが複数の場合、元画像・元画像..の順に連結すること。
m ルールに基づく(フルカラー且つセルが単数の画像のみ)
# aでのルール画像と元画像とを、別のファイルとして指定する形式。
【アニメ形式 animeflag】
0 最終セル到達後、最初のセルに戻りループ
1 最終セル到達後停止
2 最初のセル~最終セルを往復
3 アニメしない(規定値) # この形式は、セル数以外を全て省略可。
lsp 0,"sprite.bmp",10,10

;画像タグ
lsp 0,":c;sprite.bmp",200,200 ;コピー

lsp 0,":a/5,100,0;sprite.bmp",200,200
lsp 0,":/5,100,0;sprite.bmp",200,200 ;透過形式省略で規定値
lsp 0,":/5,<100,50,100,50,100>,0;sprite.bmp",200,200
lsp 0,":/5;sprite.bmp",200,200 ;アニメ指定 3の場合はセル数以外を省略可

;文字列スプライト
lsp 0,":s#FFFFFF文字列スプライト",100,100
lsp 0,":s/20,20,1,1;#FFFFFFサンプル文字列",100,100

;矩形画像
lsp 0,":c;>100,50,#FF8866",200,200
lsp 0,":c/2;>100,50,#FFFFFF#888888",200,200 ;矩形画像を 2色にセル分け

関連: print / vsp / csp / cell / spwait / strsp / lsp2 / NSSpLoad / category:スプライト

LSP2 sp2num,"imgfile",cx,cy,xs,ys,rot[,alpha]

LSPH2 [LSP2と同様]

LSP2ADD [LSP2と同様]

LSPH2ADD [LSP2と同様]

LSP2SUB [LSP2と同様]

LSPH2SUB [LSP2と同様]

実行

画像ファイル imgfileを拡張スプライト sp2numとして、中心座標 cx,cyに読み込む。
lsp2系が表示、lsph2系が非表示モード。
lsp2add / lsph2add で加算、lsp2sub / lsph2sub で減算合成可。
拡張スプライト番号 sp2numは 0~ 255で、若い番号ほど上(手前)に表示する。

cx/cyは中心座標。
倍率 xs/ysは 100が規定値で、が正の値だと拡大、負の値だと縮小になる。
角度 rotは 0が規定値で、正の値だと反時計回り、負の値だと時計回りになる。
透過度 alphaは 255が規定値で、0~255。
lsp2 0,"sprite.bmp",10,10,200,200,45,100
;中心座標 x10,y10、拡大率縦横それぞれ200%、45度回転、透過度100。

関連: print / vsp2 / csp2 / lsp / NSSp2Load / category:スプライト

VSP spnum,flag

VSP2 sp2num,flag

実行

スプライトの表示モード切り替え。
vspは通常 spnum、vsp2は拡張スプライト sp2num。
flagは 1:表示 0:非表示。
vsp 0,1
vsp2 0,1

関連: lsp / lsp2 / NSSpVisible / NSSp2Visible / category:スプライト

ALLSPHIDE

ALLSPRESUME

ALLSPHIDE

ALLSPRESUME

実行

全てのスプライトに対し表示モード切り替え処理を行う。
通常スプライトの場合、allsphideが非表示、allspresumeが表示。
拡張スプライトの場合、allsp2hideが非表示、allsp2resumeが表示。
allsphide
allspresume

allsp2hide
allsp2resume

関連: lsp / lsp2 / category:スプライト

CSP spnum

CSP2 sp2num

実行

スプライトをメモリから消去。
cspは通常 spnum、csp2は拡張スプライト sp2num。
-1を指定すると、全てのスプライトが対象になる。
csp 0
csp2 0

関連: lsp / lsp2 / NSSpClaer / NSSp2Clear / category:スプライト

AMSP spnum,lx,ly[,alpha]

MSP spnum,lx_add,ly_add[,alpha_add]

実行

スプライト spnumを移動する。
amspは絶対値、mspは相対値指定。
透過度 alphaは 255が規定値で、0~255。
amsp 2,5,2,100
msp 2,5,2,100

関連: lsp / NSSpMove / category:スプライト

AMSP2 sp2num,cx,cy,xs,ys,rot[,alpha]

MSP2 sp2num,cx_add,cy_add,xs_add,ys_add,rot_add[,alpha_add]

実行

拡張スプライト sp2numを移動する。
amsp2が絶対値、msp2が相対値指定。
引数については lsp2を参照のこと。
amsp2 2,5,2,50,200,100
msp2 2,5,2,50,200,100

関連: lsp2 / NSSp2Move / category:スプライト

CELL spnum,cell

実行

スプライト spnumのセル変更。
セル cellは 0~。
cell 0,1

関連: lsp / NSSpCell / category:スプライト

STRSP spnum,"str",lx,ly,letter_xn,letter_yn,letter_w,letter_h,letter_spx,letter_spy,bold,shade[,"#color"..]

STRSPH [STRSPと同様]

実行

複数行の文字列スプライト spnumを読み込む。
strspが表示モード、strsphが非表示モード。

改行は自動で行う。明示的に改行したい時は \を記述する。
禁則設定有効。フォントは spfontの設定に従う。

色指定 #colorが複数の時は、複数セルになる。
その他の引数については setwindowを参照のこと。
strsp 0,"あいう\えお",10,10,10,2,24,24,2,2,1,1,"#ffffff"
strsph 1,"かきく\けこ",10,10,10,2,24,24,2,2,1,1,"#ffffff","#ff0000"

関連: category:スプライト

SPSTR "opt"

実行

スプライトを制御文字列 optで制御。
optは bsp参照。
spstr "C11P10,2P9"

関連: category:スプライト

SPFONT {"fontname"[,letter_w,letter_h,letter_spx,letter_spy,bold,shade]|clear}

定義・実行

文字列スプライトのフォント設定。
規定値は現在のテキスト設定。

fontnameはフォント名。その他の引数については setwindowを参照のこと。
clearで規定値に戻す。
spfont "MS 明朝"
spfont "MS 明朝",22,22,0,0,1,0
spfont clear

関連: font / category:スプライト

GETSPMODE %val,spnum

実行

スプライト spnumの現在の表示モードを変数 %valに返す。
返り値は 1:表示 0:非表示。
getspmode %2,10

関連: category:スプライト

GETSPSIZE spnum,%val,%val[,%val]

実行

スプライト spnumの幅、高さ、セル数を変数 %valに返す。
getspsize 0,%0,%1

関連: NSSpGetInfo / category:スプライト

画像一般

BG {"imgfile"|"#color"|"black"|"white"},{effectsetnum|effectnum[,ms[,"ruleimgfile"]]}

実行

背景画像表示。
色 #color/black/white を指定すると、単色での塗り潰しになる。
エフェクト定義番号 effectsetnum/効果番号 effectnumについては effectを参照のこと。
bg "bg.bmp",1
bg "bg.bmp",10,1000

関連: category:画像一般

BGALIA lx,ly,w,h

定義/非推奨:動作不安定

特殊なサイズの背景画像を使用可能にする。
bgalia 10,10,128,64

関連: category:画像一般

LD id,"imgfile",{effectsetnum|effectnum[,ms[,"ruleimgfile"]]}

実行

立ち絵表示。
立ち絵位置指定文字 idは l:左 r:右 c:中央。
立ち絵画像ファイル imgfileには画像タグ有効。
ld l,":l;test.bmp",0

関連: cl / effect / category:画像一般

CL id,{effectsetnum|effectnum[,ms[,"ruleimgfile"]]}

実行

立ち絵消去。
立ち絵位置指定文字 idは l:左 r:右 c:中央 a:全て。
cl a,1

関連: effect / category:画像一般

TAL id,alpha,{effectsetnum|effectnum[,ms[,"ruleimgfile"]]}

実行

立ち絵の透過度変更。
立ち絵位置指定文字 idは l:左 r:右 c:中央。
tal l,80,1

関連: effect / category:画像一般

HUMANORDER "str",effectsetnum

実行

立ち絵間のエフェクト優先順位変更。
立ち絵位置指定文字列 strは l:左 r:右 c:中央 で、規定値は "rcl"。
humanorder "rcl",1

関連: effect / category:画像一般

HUMANPOS l_lx,c_lx,r_lx

定義・実行

立ち絵の基準左上座標 l_lx,c_lx,r_lxの設定。
規定値は 左:160 中央:320 右:480。
humanpos 160,320,480

関連: category:画像一般

UNDERLINE y

定義・実行

立ち絵の地面座標 yの設定。
規定値は 479。
underline 240

関連: category:画像一般

HUMANZ spnum

定義

スプライトと立ち絵の優先順位設定。
spnum以上のスプライトが立ち絵の奥になる。
規定値は 500。
humanz 1

関連: windowback / category:画像一般

BAR barnum,param,lx,ly,maxw,h,maxparam,"#color"

実行

バー barnumを座標 lx,lyに表示する。
バー番号 barnumは 0~ 99。
param/maxparamはバーの現在値/最大値。
maxwは最大幅。
bar 1,23,5,5,200,8,100,"#ff7777"

関連: barclear / category:画像一般

BARCLEAR

実行

全てのバーを消去。
barclear

関連: bar / category:画像一般

PRNUM prnum,param,lx,ly,w,h,"#color"

実行/廃止:問題があるためサポート終了

数値ラベル prnumを座標 lx,lyの位置に表示する。
prnumは 0~99、値 paramは 0~999。
prnum 0,100,10,10,26,26,"#ffffff"

関連: category:画像一般

PRNUMCLEAR

実行/廃止:問題があるためサポート終了

全ての数値ラベルを消去。
prnumclear

関連: category:画像一般

テクスチャ

BLT lx,ly,btnimgx,btnimgy,btnimgw,btnimgh

実行

ボタン画像バッファを使い、座標 lx,lyに直接画像を描画する。
ボタン画像が実画面上の大きさと異なる場合、画像は拡大縮小する。
ボタン画像はあらかじめ btndefで読み込んでおくこと。
btnimgx,btnimgy,btnimgw,btnimghはボタン画像から切り出す位置を示す。
btndef "anime.bmp"

for %0=0 to 640 step 4
 blt 0,0,%0,%0/2+160,0,0,320,240
 wait 1
next

ofscpy
; 状態をセーブしたい時は bgcpy
bg "#000000",10,2000

関連: category:テクスチャ

OFSCPY

BGCPY

実行

現在の画面を複製して取り込む。
blt処理の画像を確定させるのに使う。
ofscpyは実画面を仮想画面に取り込み、テキストウィンドウなどの描画で消去される上、セーブもされない。
bgcpyは実画面を背景画面として取り込み、テキストウィンドウなどの描画でも消えず、セーブ時に状態を記憶(save*.ssに保存)する。
ofscpy
bgcpy

関連: blt / category:テクスチャ

DRAW

実行

draw系命令で描画した画像を実画面に表示する。
saveoff ;デモ処理は saveoffした方が速くなる

mov %0,0 ;初期角度
bg "test.bmp",1

*lp
drawclear
drawbg2 320,240,100,100,%0*5
draw

wait 5 ;ウェイトを多少入れないと、メッセージ処理が遅れがちになる
add %0,5
if %0<=360*5 :goto *lp

関連: category:テクスチャ

DRAWCLEAR

実行

仮想画面を黒く塗り潰す。
drawclear

関連: category:テクスチャ

DRAWFILL r,g,b

実行

仮想画面を指定色で塗り潰す。
色形式は rgbで、それぞれ 0~255を指定する。
drawfill 255,0,128

関連: category:テクスチャ

DRAWBG

実行

仮想画面に現在の背景画面を描画する。
スプライト、立ち絵、テキストウィンドウは含まない。
drawbg

関連: category:テクスチャ

DRAWBG2 cx,cy,xs,ys,rot

実行

仮想画面の中心座標 cx,cyに、現在の背景画面を描画する。
スプライト、立ち絵、テキストウィンドウは含まない。
倍率 xs/ysは 100、回転角度 rotは 0が基準。
rotが正の数なら反時計回り、負の数なら時計回りになる。
drawbg2 320,240,200,300,15
;x320,y240を中心にして、横200%/縦300%、
;反時計回りに15度傾けて背景を描画

関連: category:テクスチャ

DRAWSP spnum,cell,alpha,lx,ly

実行

仮想画面の左上座標 lx,lyに読み込み済みスプライト spnumを描画する。
drawsp 2,1,128,20,40
;スプライト 2のセル 1を、x20,y40に透過度 20で表示

関連: lsp / category:テクスチャ

DRAWSP2 spnum,cell,alpha,cx,cy,xs,ys,rot

実行

仮想画面の中心座標 cx,cyに読み込み済みスプライト spnumを描画する(倍率 xs/ys、回転角度 rot指定可)。
留意点は drawsp同様。
drawsp2 2,1,128,20,40,150,60,-10
;スプライト 2のセル 1を、中心 x20,y40に、
;拡大率横150%/縦60%、さらに時計回りに 10度傾けて、透過度 128で表示

関連: lsp / category:テクスチャ

DRAWSP3 spnum,cellnum,alpha,cx,cy,matrix_lx,matrix_rx,matrix_ly,matrix_ry

実行

仮想画面の中心座標 cx,cyに読み込み済みスプライト spnumを描画する(一次変換適用)。
行列要素 matrix_lx,matrix_rx,matrix_ly,matrix_ryは実際の 1000倍の値になり、Y軸は上へ伸びている。
留意点は drawsp同様。
drawsp3 2,1,128,20,40,1500,300,800,1200
;スプライト 2のセル 1を、x20,y40に、
;一次変換行列 {1.500 3.00} {8.00 1.200}で変換した画像を、透過度 128で表示

関連: lsp / category:テクスチャ

DRAWTEXT

実行

仮想画面にテキストウィンドウを描画する。
drawtext

関連: category:テクスチャ

画像処理

GETSCREENSHOT w,h

実行

スクリーンショットをメモリ内に確保。
getscreenshot 640,480

関連: savescreenshot / deletescreenshot / category:画像処理

SAVESCREENSHOT "filename"

SAVESCREENSHOT2 "filename"

実行

メモリ内のスクリーンショットをファイル filenameに保存する。
savescreenshotは 保存時にメモリ内画像を消去する、savescreenshot2は消去しない。
形式は BMP。
savescreenshot "ss.bmp"

関連: getscreenshot / category:画像処理

DELETESCREENSHOT

実行

メモリ内のスクリーンショットを消去。
deletescreenshot

関連: getscreenshot / category:画像処理

BMPCUT "imgfile",xn,yn

定義・実行

画像ファイル imgfileを分割数 xn/ynで分割して、ファイルに保存する。
保存ファイル名はランダムで指定できない。
bmpcut "test.bmp",3,2

関連: category:画像処理

CHAINBMP "imgfile"

定義・実行

画像ファイル imgfileを連結保存する。
命令を実行するごとに、out.bmp(自動生成、ファイル名指定不可)の右方向に連結していく。
chainbmp "test.bmp"

関連: category:画像処理

CREATEDUMMY "filename"

定義

ダミーファイル filenameを作成する。
ファイルは 640*480・白背景に黒文字で filename入りの BMP画像。
createdummy "test.bmp"

関連: category:画像処理

BW2A "imgfile_noext"

BW2A3 "imgfile"

定義・実行/廃止:サポート終了

画像ファイル imgfileから NSCRの透過形式 BMPファイルを作成する。
bw2aはエンジンと同じ位置にある imgfile_noext_w.bmpと imgfile_noext_b.bmpの二つの画像ファイルから、 bw2a3はフォルダ w内の白抜き画像 imgfileとフォルダ b内の黒抜き画像 imgfileから、それぞれ作成する。
bw2a "test"
bw2a3 "test.bmp"

関連: category:画像処理

音声

BGM "[(looppoint)]sndfile"

BGMONCE "sndfile"

実行

音声ファイル sndfileを DirectSound再生する。
bgmはループ、bgmonceは単発再生。

BGMではループ時に戻る点 looppointが指定できる。
looppointの単位は秒で、小数が使える。
【音声形式について】
nsogg2.dllを導入すると OGG形式及びストリーミング再生が可能になる。
サポート状況 nsogg2.dllなしでの再生 nsogg2.dllありでの再生
OGG ×
PCM
MP3 ×/形式自体に問題があるため ×
MIDI ×/再生環境が多岐に渡るため △/stop以外の命令が無効 ×
bgm "bgm.ogg"
bgmonce "bgm.ogg"

bgm "(5.37)bgm.ogg"
; はじめは bgm.ogg を一度最後まで再生、
; 2度目からのループ再生は bgm.ogg の 5.37秒地点より行う

関連: stop / category:音声

STOP

実行

bgm/ bgmonceでの再生を停止する。
stop

関連: bgm / category:音声

DWAVE chnum,"sndfile"

DWAVELOOP chnum,"sndfile"

実行

音声ファイル sndfileを DirectSoundで再生する。
dwaveが単発、dwaveloopがループ再生。
音声チャンネル chnumは 0~49(nsogg2.dllが使用できる環境なら 0~203?)。
対応形式は OGG(要 nsogg2.dll)/ PCM(無圧縮WAVE)。
dwave 0,"test.wav"

関連: dwavestop / category:音声

DWAVELOAD chnum,"sndfile"

実行

音声ファイル sndfileをメモリに読み込む。
音声チャンネル chnumは 0~49。

この命令であらかじめ音声ファイルを読み込んでおき、dwaveplayなどで再生すると、
特に低スペック環境での音声の途切れやずれが軽減する可能性がある。
dwaveload 1,"test2.wav"

関連: category:音声

DWAVEPLAY chnum

DWAVEPLAYLOOP chnum

実行

読み込み済み音声チャンネル chnumを DirectSound再生。
dwaveplayが単発、dwaveplayloopがループ再生。
chnumは 0~49。留意点は dwave同様。
再生するとその時点で chnumの音声を消去する。
dwaveplay 1

関連: dwaveload / dwavestop / dwave / category:音声

DWAVESTOP chnum

実行

音声チャンネル chnumの再生を停止する。
dwavestop 0

関連: dwave / category:音声

LOOPBGM "sndfile_head","sndfile_loop"

実行/廃止:サポート終了

二つの音声ファイル sndfile_head/sndfile_loopを使用し、擬似区間ループ再生する。
対応形式は PCM(無圧縮WAVE)。音量は bgmvolに従う。
loopbgm "bgm_s.wav","bgm_l.wav"
; bgm.s.wav を一回再生し、その後は bgm_l.wav をループ再生する。

関連: bgm / category:音声

LOOPBGMSTOP

実行/廃止:サポート終了

loopbgmでの再生を停止する。
loopbgmstop

関連: category:音声

MP3SAVE "mp3file"

実行/廃止:問題があるためサポート終了

MP3ファイル mp3fileの単発再生。
再生中にセーブするとロード後も再生する。
mp3save "test.mp3"

関連: category:音声

WAVE "wavefile"

WAVELOOP "wavefile"

実行/廃止:サポート終了

WAVEファイル wavefileの再生。
waveが単発、waveloopがループ再生。
wave "test.wav"

関連: bgm / category:音声

WAVESTOP

実行/廃止:サポート終了

wave/ waveloopでの再生を停止する。
wavestop

関連: category:音声

PLAY {"midifile"|"*cdtracknum"}

PLAYONCE {"midifile"|"*cdtracknum"}

実行/廃止:問題があるためサポート終了

MIDIファイル midifileまたは CDトラック cdtracknumの再生。
playがループ再生、playonceが単発再生。
play "test.mid"

関連: category:音声

PLAYSTOP

実行/廃止:問題があるためサポート終了

play / playonceでの再生を停止する。
playstop

関連: category:音声

DEFBGMVOL vol

DEFSEVOL vol

DEFVOICEVOL vol

定義

初期音量値 volの設定。
defbgmvolは BGM、defvoicevolは VOICE(DWAVE 0)、defsevolは SE(DWAVE 1~49)。
volの規定値は 100。
defbgmvol 100
defvoicevol 100
defsevol 100

関連: category:音声

BGMVOL vol

SEVOL vol

VOICEVOL vol

実行

音量値 volの設定。
bgmvolは BGM、voicevolは VOICE(DWAVE 0)、sevolは SE(DWAVE 1~49)。
volの規定値は 100で、0~100。
bgmvol 100
voicevol 100
sevol 100

関連: category:音声

CHVOL chnum,vol

実行

音声チャンネル chnumの音量を一時的に変更する。
chnumは 0~49。volの規定値は 100で、0~100。
chvol 3,100

関連: category:音声

GETBGMVOL %val

GETSEVOL %val

GETVOICEVOL %val

実行

現在の音量値を変数 %valに返す。
getbgmvolが BGM、getsevolが SE(DWAVE 1~49)、getvoicevolが(DWAVE 0)。
返り値は 0~100。
getbgmvol %0
getsevol %0
getvoicevol %0

関連: category:音声

BGMFADEIN ms

BGMFADEOUT ms

定義・実行

BGMのフェード時間 msの設定。
bgmfadeinがフェードイン、bgmfadeoutがフェードアウト。
bgmfadein 1000

関連: category:音声

CDFADEOUT ms

定義・実行/廃止:問題があるためサポート終了

CD再生のフェードアウト時間 msの設定。
cdfadeout 1000

関連: category:音声

BGMDOWNMODE flag

定義・実行

ボイス(DWAVE 0)再生時、BGMの音量を一時的に下げるかを設定する。
flagは 1:下げる 0:下げない。
bgmdownmode 1

関連: category:音声

MODE_WAVE_DEMO

定義

[選択肢まで進む]時も音声を再生する。
mode_wave_demo

関連: category:音声

動画

MPEGPLAY "mpgfile",flag

実行

MPEGファイル mpgfileを DirectShowで非同期再生。
flagは 1:クリックで再生を中止する 0:しない。
mpegplay "test.mpg",1

関連: category:動画

MOVIE "mpgfile"[,opt]

実行

MPEGファイル mpgfileを DirectShowで再生する。
mpegplayより細かい設定が可能。
留意点は mpegplay同様。
【再生オプション opt】
stop以外は組み合わせることができる。
なし 最後まで再生
# クリックでスキップできない。
POS,lx,ly,w,h 座標 lx,lyから数えてサイズ x,yの位置で再生
CLICK クリックで再生を終了(async 時無効)
LOOP ループ再生
# asyncまたは clickを指定しないと停止できなくなる。
ASYNC 非同期再生
# 再生開始時に処理を NSCRに戻す。
STOP asyncで再生中の動画を停止する。
movie "test.mpg",pos,10,20,320,240,async,loop

関連: category:動画

AVI "avifile",flag

実行/廃止:サポート終了

AVIファイル avifileの再生。
flagは 1:クリックで再生終了 0:しない。
avi "test.avi",1

関連: \ / category:動画

システム

END

定義・実行

NSCR終了。
end

関連: luacall / category:システム

RESET

DEFINERESET

実行/(definereset)非推奨:動作不安定

NSCRをリセット。
リセット後、resetは *startから、
defineresetは *defineから読み直す。
reset

関連: luacall / category:システム

GETVERSION %val

定義・実行

NSCRのバージョンを変数 %valに返す。
返り値は 3桁の整数。
getversion %0

関連: category:システム

DATE %val,%val,%val

実行

現在の日付を変数 %valに返す。
返り値は 年(西暦下2桁)、月、日。
date %0,%1,%2

関連: category:システム

TIME %val,%val,%val

実行

現在の時刻を変数 %valに返す。
返り値は 時、分、秒。
time %3,%4,%5

関連: category:システム

FILELOG

定義/Lua×

ファイルアクセスログをファイル保存(NScrFlog.dat・自動生成)。

【ログから条件判断】

("filename")"TRUEstr""FALSEstr"

ファイル filenameが NScrflog.datにあるなら TRUEstr、ないなら FALSEstrを返す。
filelog

lsp 0,("img\cg1.bmp")"img\cg1_sum.bmp""img\dummy_sum.bmp",0,0
;ログに img\cg1.bmpがあれば img\cg1_sum.bmpを、
;なければ img\dummy_sum.bmpをスプライト 0に読み込む

関連: category:システム

LABELLOG

定義/Lua×

通過したラベルのログをファイル保存(NScrllog.dat・自動生成)。
labellog

関連: category:システム

LABELEXIST %val,label

実行

ラベル labelの存在を調査し、結果を変数 %valに返す。
返り値は 1:存在する 0:しない。
labelexist %0,*label1

関連: category:システム

DEBUGLOG flag

定義・実行

デバッグウィンドウの内容をファイル(debuglog.txt・自動生成)に保存する。
ログがすでにある場合は追記。
flagは 1:オン 0:オフ。
debuglog 1

関連: category:システム

FILEEXIST %val,"filename"

実行

ファイル filenameの存在を調査し、結果を変数 %valに返す。NSAアーカイブからも検索可。
返り値は 1:存在する 0:しない。
fileexist %0,"test.bmp"

関連: category:システム

CHKCDFILE "filename","errmsg"

CHKCDFILE_EX %val,"filename"

定義/廃止:問題があるためサポート終了

CDドライブからファイル filename検索。
chkcdfileはファイルが存在しない場合、「再試行/キャンセル」のダイアログを表示する。
chkcdfile_exは検索結果を変数 %valに返す。返り値は 1:ファイルが存在する 0:しない。
chkcdfile "file.dat","ファイルが見つかりません。"
chkcdfile_ex %200,"file.dat"

関連: category:システム

FILEREMOVE "filename"

実行

ファイル filename削除。
fileremove "test.txt"

関連: category:システム

READFILE $val,"filename"

定義・実行

ファイル filenameを読み込み、その内容を変数 $valに返す。
readfile $0,"file.txt"

関連: category:システム

CSVOPEN "filename","mode"

定義・実行

csvファイル filenameを開く。
NSAアーカイブからの読み込みも可。
【mode】
"r" 通常の読み取りモードで開く
"rc" "wc"で書き込んだ暗号化 csvファイルを開く
"w" 通常の書き込みモードで開く
"wc" 暗号化書き込みモードで開く
;【test.csvから値を読み取り、その値を test2.csvに書き込む】
csvopen "test.csv","r"

csveof %0
if %0==0 :csvclose :end
if %0==1 :goto *write

*write
csvread $1
csvclose

csvopen "test2.csv","w"
csvwrite $1
csvclose

関連: category:システム

CSVEOF %val

定義・実行

csvファイルを最後まで読み終わっているかを取得し、変数 %valに返す。
扱いは読み取りモード、返り値は 1:読み終わっている 0:いない。
空行は「空文字列 1個だけがある行」とみなす。
留意点は csvopen同様。
csveof %0

関連: category:システム

CSVREAD {%val|$val}[,..]

定義・実行

現在開いている csvファイルからデータを読み込み、変数 %val/$valに返す。
扱いは読み取りモード、値は上から順に読み込む。
留意点は csvopen同様。
csvread "test.csv"

関連: category:システム

CSVWRITE {num|"str"}[,..]

定義・実行

現在開いている csvファイルにデータ num/strを書き込む。
扱いは書き込みモード、値は指定順に書き込む。 留意点は csvopen同様。
csvwrite "abc"

関連: category:システム

CSVCLOSE

定義・実行

現在開いている csvファイルを閉じる。
csvclose

関連: category:システム

GETINI $val,"inifile","sect","key"

定義・実行

INIファイル inifileを読み込み、sect内の key値を変数 $valに返す。
タブやスペースは無視する。
取得できない場合 ""を返す。
; test.ini
[player]
name="data"

; NSCR
getini $0,"test.ini","player","name"
;$0="data"

関連: category:システム

GETREG $val,"path","key"

定義・実行

レジストリを読み込み、値を変数 $valに返す。
HKEY_CURRENT_USER以下のキーのみ。
getreg $0,"software\leaf\toheart","datadir"

関連: category:システム

SHELL "filename"

実行

ShellExecute APIを使用し、ファイル filenameを非同期実行する。
shell "text.txt"

関連: category:システム

WINEXEC "filename",sync

実行

WinExec APIを使用し、ファイル filenameを実行する。
同期フラグ syncは 0:しない 0以外:する。
フルスクリーン時は SW_MAXIMIZE、通常スクリーン時は SW_SHOWNORMALを指定する。
NSCRに WM_USER+10を送ると実行再開、WM_USER+20を送るとプログラム終了。
winexec "test.exe",0

関連: category:システム

ゲームシステム

RLOOKBACK

定義

右クリックで回想モードに入るようにする。
rlookback

関連: category:ゲームシステム

RMENU "funcname",func[,"funcname",func..]

定義

右クリックでシステムメニューが開くようにする。
funcnameは機能名。機能 funcは上から順に指定、その内容は systemcall参照。
rmenu "セーブ",save,"ロード",load,"回想",lookback

関連: category:ゲームシステム

定義

システムメニューのウィンドウ設定。
ウィンドウは 全画面・明度を落とすタイプで固定。
引数については setwindowを参照のこと。
menusetwindow 12,12,2,2,1,0,"#ffffff"

関連: category:ゲームシステム

定義

システムメニューの文字色 #colorを設定する。
#colorの指定は順に カーソルオン時、カーソルオフ時、セーブ(ロード)ファイルがない時。
menuselectcolor "#0000ff","#ff0000","#ffffff"

関連: category:ゲームシステム

定義

システムメニュー時の音声 sndfileを設定する。
再生は DirectSound、規定値は全て ""(音声の再生をしない)。
sndfileの指定は順に メニューが開く時、メニューキャンセル時、カーソルオン時、
メニュークリック時、無効操作時の警告、はい選択時、いいえ選択時。
menuselectvoice "mopen.wav","mcancel.wav","","","","",""

関連: category:ゲームシステム

SAVENAME "savetitle","loadtitle","savename"

定義

セーブ・ロードメニュー関連の文字列を設定する。
savename "<セーブ>","<ロード>","しおり"

関連: category:ゲームシステム

SAVENUMBER maxnum

定義

セーブメニュー最大数 maxnumの設定。
maxnumの規定値は 9、最大値は 20。
savenumber 10

関連: category:ゲームシステム

LOOKBACKBUTTON "imgfile","imgfile","imgfile","imgfile"

定義

回想モード用ボタン画像を設定。
画像ファイル imgfileの指定は順に 戻るボタンオン、戻るボタンオフ、進むボタンオン、進むボタンオフ。
位置は固定(戻るボタン:左上 進むボタン:左下)。
画像タグはアニメーション以外有効。
lookbackbutton "uoncur.bmp","uoffcur.bmp","doncur.bmp","doffcur.bmp"

関連: category:ゲームシステム

LOOKBACKSP spnum_back,spnum_rewind

定義

回想モードのボタン画像を、読み込み済みのスプライト spnum_back,spnum_rewindで設定する。
戻るボタン spnum_back/進むボタン spnum_rewindの位置はそれらの読み込み位置と同じになる。
スプライトが複数セルの場合、マウスオフ:セル 0 マウスオン:セル 1になる。
画像タグはアニメーション以外有効。
lookbacksp 2,3 ;2番と3番のスプライトが回想ボタンになる

関連: category:ゲームシステム

LOOKBACKCOLOR "#color"

定義

回想モードのテキスト色 #color設定。
lookbackcolor"#ff0000"

関連: category:ゲームシステム

LOOKBACKVOICE "sndfile"

定義

回想モードのページ送り時に再生する音声ファイル sndfileの設定。
lookbackvoice "test.wav"

関連: category:ゲームシステム

SAVEDIR "folder"

定義

セーブデータを格納するフォルダ folderを指定する。
savedir "savedata"

関連: category:ゲームシステム

SAVEFILEEXIST %val,savenum

実行

セーブ番号 savenumを持つセーブファイルの有無を調査し、結果を変数 %valに返す。
返り値は 1:存在する 0:存在しない。
savefileexist %0,1

関連: category:ゲームシステム

SAVEGAME savenum

実行

セーブ番号 savenumにセーブする。
savegame 1

関連: saveon / load / luacall / category:ゲームシステム

SAVEGAME2 savenum,"str"

実行

文字列を付け加えて、セーブ番号 savenumにセーブする。
保存した文字列の取得には getsavestrを使用する。
留意点は savegame同様。
savegame2 12,"8月5日 ヒロインAルート"

関連: category:ゲームシステム

GETSAVESTR $val,savenum

実行

savegame2で保存したセーブ番号 savenumの文字列を、変数 $valに取得する。
getsavestr $1,12

関連: category:ゲームシステム

ERRORSAVE

定義

エラー発生時に自動セーブする。
セーブファイルは save999.dat。
errorsave

関連: category:ゲームシステム

SAVEON

SAVEOFF

実行

セーブポイント更新のオン/オフ。
saveonがオン、saveoffがオフ。

セーブポイントは、saveon時にテキスト文頭(pretextgosub直前)で自動作成する。
そのため、オフにすることにより重い処理で実行速度が上がる可能性がある。
  • セーブポイント更新時に準備されるデータは、あくまで save??.datに保存されるものであって、 global.savなど別途で保存されるデータには影響がないのに注意すること。
  • テキストタグ処理内/テキストラベル処理内/テキスト表示処理中は強制オフ。 また、これらの処理内でセーブポイントを更新しないこと(ロード時に表示が崩れたり、回想バッファが失われる不具合が発生するため)。
  • Lua側の変数値は保存されない。保存したい場合は別途セーブファイルを自作し、操作する必要がある。
saveon
saveoff

関連: autosaveoff / savepoint / category:ゲームシステム

AUTOSAVEOFF

定義

テキスト文頭以外での自動セーブポイント更新を停止する。
saveoff/ saveonは無視する。
意図的にセーブポイントを作成したい時は savepointを使用する。
autosaveoff

関連: category:ゲームシステム

SAVEPOINT

実行

autosaveoff時、セーブポイントを手動作成する。
ロードがうまくいかない時は、描画直前に作成するなど作成位置をずらしてみること。
savepoint

関連: NSSavePoint / category:ゲームシステム

SAVETIME savenum,%val,%val,%val,%val

実行

セーブ番号 savenumを持つセーブファイルの日付と時間を変数 %valに返す。
返り値は 月、日、時、分。
セーブファイルが存在しない場合は、月の値に 0を返す。
savetime 3,%0,%1,%2,%3

関連: category:ゲームシステム

LOADGAME savenum

実行

セーブ番号 savenumを持つセーブファイルをロードする。
loadgame 1

関連: loadgosub / savegame / luacall / category:ゲームシステム

LOADGOSUB *label

定義

ロード直後に、ラベル *labelへサブルーチンジャンプする。 zz
loadgosub *loadlb

関連: loadgame / category:ゲームシステム

LOOKBACKOFF

LOOKBACKON

実行

回想バッファへの書き込み中止/再開。
lookbackoffは中止、lookbackonは再開。
lookbackoff
lookbackon

関連: category:ゲームシステム

LOOKBACKFLUSH

実行

回想バッファ消去。
lookbackflush

関連: category:ゲームシステム

MAXKAISOUPAGE maxpage

定義

回想データの最大ページ数を設定。
最大ページ数 maxpageの規定値は 16。あまりにも大きな値だとパフォーマンスが落ちる。
maxkaisoupage 10

関連: category:ゲームシステム

CHECKPAGE %val,page

実行

回想データが取得可能か調査し、結果を変数 %valに返す。
返り値は 1:取得可 0:不可。
ページ pageは 1(直前のページ)以上。
checkpage %5,1

関連: category:ゲームシステム

GETLOG $val,page

GETLOGTEXT $val,page

実行

回想データを変数 $valに取得する。
getlogは改行やルビ情報を含み、getlogtextは含まない。
ページ pageは 0(現在表示中のページ)以上。
getlog $0,%5
getlogtext $3,2

関連: category:ゲームシステム

GETTAGLOG $val,page

実行

回想データ内のテキストタグ情報を変数 $valに取得する。
ページ pageは 0(現在表示中のページ)以上。
テキストタグが無い場合 ""を返す。
テキストタグの仕様については gettagを参照のこと。
;gettag $1,$2 と同じことをするには以下のようにする
gettaglog $0,2
split $0,"/",$1,$2

関連: category:ゲームシステム

LOGSP spnum,$val,lx,ly[,"#color"..]

実行/非推奨:動作不安定

取得済み回想データ $valをスプライト spnumとして、座標 lx,lyに読み込む。
#colorを複数指定すると、複数セルを持つスプライトになる。
logsp 8,$0,60,90

関連: category:ゲームシステム

LOGSP2 spnum,$val,lx,ly,letter_w,letter_h,letter_spx,letter_spy[,"#color"..]

実行

取得済み回想データ $valをスプライト spnumとして、座標 lx,lyに読み込む。
logspよりも細かな設定が可能。
#colorを複数指定すると、複数セルを持つスプライトになる。
その他の引数については setwindowを参照のこと。
logsp2 2,$0,150,20,17,17,0,1

関連: getlog / strsp / category:ゲームシステム

SYSTEMCALL func

実行

システムメニューの機能 funcを実行する。
システムメニューを抜けると、この命令の次の文から動作を再開する。
【func】
load ロードメニュー表示
lookback 回想モード
reset リセットメニュー表示(キャンセル可)
resetdlg リセットダイアログ表示(キャンセル可)
save セーブメニュー表示
skip 「選択肢まで進む」と同じ
automode 「オートモード」と同じ
windowerase テキストウィンドウ非表示
rmenu(systemcall のみ) システムメニュー表示
systemcall lookback

関連: category:ゲームシステム

ウィンドウ

;MODEnum

特殊

ウィンドウサイズ変更。
サイズ指定 numは 800*600:800 400*300:400 320*240:320。
;mode800

;-- ;valueと組み合わせる場合は以下のようにする。
;mode800,value500
;-- また、Luaのみで実行する場合は --mode800のようにする。

関連: category:ウィンドウ

MINIMIZEWINDOW

実行

ウィンドウ最小化。
minimizewindow

関連: category:ウィンドウ

ISFULL %val

実行

現在の画面モードを取得し、結果を変数 %valに返す。
返り値は 1:フルスクリーン 0:通常のウィンドウ。
isfull %0

関連: category:ウィンドウ

GETWINDOWSIZE %val,%val

実行

ウィンドウの表示領域(メニュー等を除いた部分)のサイズを取得し、変数 %valに返す。
返り値は 幅、高さ。
getwindowsize %0,%1

関連: NSGetWindowSize / category:ウィンドウ

CAPTION "title"

定義・実行

ウィンドウタイトルを titleに変更する。
caption "自作ゲーム"

関連: category:ウィンドウ

KILLMENU num

定義/Lua×

位置 numにあるウィンドウメニューを削除する。
numは 0からで、左から数える。
killmenu 7
; CD-DAを削除

関連: category:ウィンドウ

DELETEMENU

定義/Lua×

全てのウィンドウメニューを削除する。
deletemenu

関連: category:ウィンドウ

RESETMENU

定義/Lua×

ウィンドウメニューのカスタマイズ宣言。
実際のカスタマイズは insertmenuで行う。
resetmenu

関連: category:ウィンドウ

INSERTMENU "menuname",func[,subnum]

定義/一部機能に問題あり/Lua×

ウィンドウメニューのカスタマイズ。
サブメニュー内の項目には、機能コード funcに続いて階層数 subnumを指定する。
この命令を使用する前に resetmenuでカスタマイズ宣言を行うこと。
メニューの表示順は設定の逆順になる。
【詳細】
func 対応メニュー 説明
FULL / WINDOW 画面 フルスクリーン(モニタによっては無効)/ウィンドウ
同義:menu_full / menu_window
FONT フォント テキストウィンドウのフォント変更
同義:font 規定値変更:defaultfont
CLICKDEF / CLICKPAGE 表示形式 デフォルト/ページごと
*非推奨:表示に不具合あり*
TEXTSLOW / TEXTMIDDLE / TEXTFAST 文字速度 低速/中速/高速
TEXTSPEED - テキスト速度設定ダイアログ
DWAVEVOLUME ボリューム 音量設定ダイアログ
# Windowsのボリュームには影響しない。
同義:menu_dwavvol
WAVEOFF / WAVEON ボリューム 音量オフ/オン
*廃止:サポート終了。[ボリューム]項目も削除推奨*
SKIP 選択肢まで進む 選択肢まで進む
KIDOKUOFF / KIDOKUON - 強制スキップ/既読スキップ
# kidokuskipがないと無意味。
AUTO オートモード テキスト送りを自動にする
同義:menu_automode
AUTOSPEED - オートモード速度。automode_time2が必要。
CDDRIVE / CDOFF / CDON CD-DA CDドライブ変更/CD再生オフ/CD再生オン
*廃止:問題があるためサポート終了*
VERSION バージョン情報 バージョン情報
変更:versionstr
RESET - リセット
END 終了 NSCR終了
同義:menu_end
SUB - サブメニューを示す
resetmenu ; 宣言が必要

insertmenu "終了",END
insertmenu "バージョン情報",VERSION
;ここからサブメニュー
insertmenu "環境設定",SUB
insertmenu "フォント",FONT,1
insertmenu "テキスト速度",TEXTSPEED,1

関連: category:ウィンドウ

DEFAULTFONT "fontname"

定義

ウィンドウメニュー[フォント]-[デフォルト]で使用するフォント fontnameを設定する。
規定値は MS ゴシック。
defaultfont "MS 明朝"

関連: category:ウィンドウ

DEFAULTSPEED ms_low,ms_middle,ms_high

定義

ウィンドウメニュー[文字速度]で使用する文字速度 ms_low,ms_middle,ms_highを設定する。
defaultspeed 50,20,10

関連: category:ウィンドウ

AUTOMODE_TIME2 ms_min,ms_def,ms_max

定義・実行

insertmenuの引数 AUTOSPEEDで使用する値 ms_min,ms_def,ms_maxの設定。
automode_time2 1000,2000,8000

関連: category:ウィンドウ

AUTOMODE

定義/廃止:現在は必要ない

ウィンドウメニューに[オートモード][ボリューム]項目を追加する。
automode

関連: category:ウィンドウ

VERSIONSTR "firstline","secondline"

定義

ウィンドウメニューのバージョン情報ダイアログ設定。
firstlineが一行目、secondlineが二行目。
versionstr "自作ゲーム Version 0.1","制作 わたし"

関連: category:ウィンドウ

実行/一部命令に不具合あり

ウィンドウメニューの機能を実行する。
【一覧】
menu_automode オートモード
# systemcall automode の方が動作が軽い。
menu_cd_on/menu_cd_off CD再生のオン/オフ
*廃止:問題があるためサポート終了*
menu_click_def/menu_click_page テキスト表示モード切り替え
*非推奨:不具合あり*
menu_dwavevol 音量変更ダイアログ表示
menu_end NSCR終了確認ダイアログ表示
menu_full/menu_window 画面モードをフルスクリーン/通常にする
# 使用モニタによっては無効になることがある。
menu_automode
menu_dwavvol
menu_end
menu_full

関連: category:ウィンドウ

ダイアログ

INPUT $val,"msg","def\",maxletter,zenkaku

実行

文字列入力ダイアログ表示。結果は変数 $valへ返す。
msgはダイアログに表示する文字列、defは入力ボックスの初期値。
最大文字数 maxletterの単位は byte、全角強制フラグ zenkakuは 1:オン 0:オフ。
input $0,"名前を入力してください。","たろう",12,1

関連: category:ダイアログ

INPUTSTR $val,"msg",maxletter,zenkaku[,dlgw,dlgh,inputw,inputh]

実行

文字列入力ダイアログ表示。入力結果は変数 $valへ返す。
msgはダイアログに表示する文字列。
最大文字数 maxletterの単位は byte、全角強制フラグ zenkakuは 1:オン 0:オフ。
dlgw/dlghでダイアログのサイズを、inputw/inputhで入力ボックスのサイズを指定可能。
inputstr $0,"名前を入力してください。",20,1,200,200,80,40

関連: category:ダイアログ

TEXTFIELD $val,lx,ly,rx,ry,letter_w,letter_h,zenkaku

実行

文字列入力ウィンドウ表示。入力結果は変数 $valへ返す。

文字変数に値が入っている場合、その値が入力ウィンドウの初期文字列となる。
文字サイズ letter_w/letter_hの単位は byte、全角強制フラグ zenkakuは 1:オン 0:オフ。

左クリック、[ENTER][ESC][TAB]のいずれかをウィンドウ外で押した時に命令から抜ける。
どのキーでこの命令を抜けたかは、getretの返り値 0:[TAB]以外 1:[TAB] で判断できる。
textfield $0,100,50,320,70,10,20,1

関連: category:ダイアログ

MESBOX "msg","title"

定義・実行

メッセージダイアログ表示。
mesbox "本文","タイトル"

関連: category:ダイアログ

OKCANCELBOX %val,"msg","title"

YESNOBOX [OKCANCELBOXと同様]

定義・実行

判定ダイアログ表示。結果は変数 %valへ返す。
okcancelboxは「OK/キャンセル」、yesnoboxは「はい/いいえ」のボタン。
返り値は 1:OK/はい 0:キャンセル/いいえ。
okcancelbox %0,"セーブしますか?","セーブ確認"
yesnobox %0,"ロードしますか?","ロード確認"

関連: category:ダイアログ

CREATEDEBUGWINDOW

定義

起動時から常にデバッグウィンドウを表示する。
暗号化スクリプトでは [D]キーデバッグが無効になるので、こちらを利用すること。
createdebugwindow

関連: category:ダイアログ

圧縮・プラグイン

NSA

定義/Lua×

NSCRを NSAアーカイブモードにする。
arc.nsaは nsaarc.exeで作成する。
連番化も可能で、その際の検索は数値順で行われる。
nsa

関連: category:圧縮・プラグイン

NSADIR "folder"

定義

NSAアーカイブを読み込むフォルダ folderを指定する。
nsadir "nsadata"

関連: category:圧縮・プラグイン

ADDNSADIR "folder"

定義・実行

NSAアーカイブを読み込むフォルダ folderを追加する。
addnsadir "nsadata02"

関連: category:圧縮・プラグイン

ARC "filename|dllname"

定義/廃止:サポート終了

アーカイブ展開プラグインの指定。
arc "lvns3dat.pak|axlfpak.spi"

関連: category:圧縮・プラグイン

SPI "spiname|ext"

定義

画像圧縮プラグインの指定。
BMP, JPGは必要ない。
PNGは nspng.dllがあれば必要ない。
spi "gifplgin.dll|gif"

関連: category:圧縮・プラグイン

SOUNDPRESSPLGIN "dllname|ext"

定義/廃止:現在は必要ない

音楽圧縮プラグインの指定。
soundpressplgin "nbzplgin.dll|nbz"

関連: category:圧縮・プラグイン

EXEC_DLL "dllname/param"

定義・実行

プラグイン実行。
返り値は getretで数値、文字列を一つずつ取得する。
exec_dll "execdll.dll/test"
getret %0 :getret $0
%0@
$0\

関連: category:圧縮・プラグイン

GETRET {%val|$val}

実行

DLL、lrclicktextfieldの返り値取得。
getret %0

関連: category:圧縮・プラグイン

SETLAYER layernum,refresh_ms,"dllname"

定義

DLLファイル dllnameをレイヤ layernumとして登録する。
refresh_msは更新間隔。小さいほどマシンに負担がかかる。
setlayer 0,30,"dlltest.dll"

関連: layermessage / category:圧縮・プラグイン

LAYERMESSAGE layernum,"msg"

実行

登録済みレイヤ layernumにメッセージ msgを送る。
返り値は getretにて取得する。
*define
setlayer 0,30,"dlltest.dll"
game

*start
lsph 2,"*0"
;レイヤをスプライトとして登録
click

vsp 2,1
print 1
;扱い方もスプライトと同じ

layermessage 0,"hogehoge"
;レイヤ 0に "hogehoge"というメッセージを送る

関連: category:圧縮・プラグイン


NSLUA特殊

NL_dofile("*.lua")

NSLUA特殊

Luaスクリプトファイル *.luaを呼び出す。
NSAアーカイブ内のファイルも可。
system.lua で使用すること。
NL_dofile("lib.lua")

関連: category:NSLUA全般

NL_require("*.lua")

NSLUA特殊

Luaモジュールファイル *.luaを呼び出す。
NSAアーカイブ内のファイルも可。
-- mod.lua
module("mod",package.seeall)
v = 'abc'

-- system.lua
NL_require("mod.lua")
a = mod.v --> 'abc'

関連: category:NSLUA全般

NSLUAユーザ関数

LUASUB nsluafunc

NSCR定義

NSCR上で Luaユーザ関数 nsluafuncを登録する。
defsubと似たような使い方。
Lua側の関数は NSCOM_nsluafuncとする。

nsluafuncには引数も返り値もない(指定しても無効)。
引数や返り値は、NSPopInt関数などを使って取得すること。

関数名は NSCRに元からある命令名でも登録できる。
呼び出す優先順は luasub → defsub → 元々の命令 になる。
元々の命令を呼ぶ場合は頭に _をつける。
luasub func
;Lua上で NSExec("luasub func")としてもよい

-- ### ここから Lua ###
function NSCOM_func()
 NSOkBox("テスト","func")
end

関連: category:NSLUAユーザ関数

LUACALL callback

NSCR定義

NSCR上で コールバック関数 callbackを登録する。
NSCRの動作を横取りし、表示文をスプライトで置き換えることなどが可能になる。

Lua側の関数は NSCALL_callbackfuncとする。
Lua関数の引数や文字列は、それぞれの機能ごとに形式が定められている。
【callback】
tag タグテキスト取得。
引数/タグテキスト 返り値/なし 呼び出し元/pretextgosub
# デフォルトの処理や pretextgosubは無効。
# この命令から NSGoto等でジャンプしないこと。
text テキストを取得後、変換(変数の展開、半角数字を全角数字に)。
引数/変換後テキスト 返り値/なし 呼び出し元/テキスト表示直前
# デフォルトの処理や textgosubは無効。
text0 変換前テキスト取得。
引数/変換前テキスト 返り値/なし 呼び出し元/テキスト行の文字列取得時
# デフォルトの変換処理やテキスト表示処理は無効。
animation NSLUAのアニメーション割り込み(NSLuaAnimationMode)時の動作。
引数/なし 返り値/true:画面を更新 false:更新しない
呼び出し元/セルアニメーションが発生するクリック待ち時等
(マルチスレッドではない。呼び出している間他の動作は止まる)
close ウィンドウの「×」をクリックした時の動作。
引数/なし 返り値/true:プログラム終了 false:キャンセル。
# デフォルトの処理(ダイアログ表示)は無効。
end プログラム終了直前(end)の動作。
引数/なし 返り値/なし
# デフォルトの処理(ダイアログ表示)は無効。
savepoint セーブポイント到達時の動作。以後にデフォルトの処理を行う。
引数/なし 返り値/なし
# tag/text/text0 のいずれかをカスタマイズしている場合、
セーブポイントは「saveon時における、テキスト・命令文の各行頭」になる。
# Lua側で保存しておきたいデータがある場合、ここでメモリ内データを更新すること。
save savegame直前の動作。以後にデフォルトの処理を行う。
引数/セーブ番号 返り値/なし。
load loadgame直後の動作。
引数/セーブ番号 返り値/なし。
reset 定義節から game、またはリセット(reset)によって、*startに飛んだ時の動作。
引数/なし 返り値/なし
luacall tag
; Lua上で NSExec("luacall tag")としてもよい

-- ### ここから Lua ###
function NSCALL_tag(TAG)
 NSExec("lsp 0,\":s#ffffff"..TAG.."\",100,100")
 NSExec("print 1")
end

関連: category:NSLUAユーザ関数

NSCRと値をやり取り

num=NSPopInt()

str=NSPopStr()

NSLUA高水準

NSLUAユーザ関数の引数から、NSCR変数値読み込み。
返り値は NSPopIntが数値(配列変数可)、NSPopStrが文字列。
NSExec("luasub test")
function NSCOM_test()
 local n=NSPopInt()
 NSPopComma()
 local s=NSPopStr()

 local val="数字変数値:"..n..",文字変数値:"..s
 NSOkBox(val,"test")
end

;###ここからNSCR###
mov %5,100 :mov $5,"abc"
test %5,$5

関連: getparam / category:NSCRと値をやり取り

num=NSPopIntRef()

num=NSPopStrRef()

NSLUA高水準

NSLUAユーザ関数の引数から、NSCRの変数番号読み込み。
返り値は NSPopIntRefが数字変数、NSPopStrが文字変数番号。
留意点は NSPopInt同様。
ref=NSPopIntRef()

関連: category:NSCRと値をやり取り

str=NSPopLabel()

NSLUA高水準

NSLUAユーザ関数の引数から、NSCRのラベル名読み込み。
留意点は NSPopInt同様。
label=NSPopLabel()

関連: category:NSCRと値をやり取り

str=NSPopID()

NSLUA高水準

NSLUAユーザ関数の引数から、NSCRの識別子読み込み。
識別子とは ld命令の立ち絵指定文字のような、""で囲まれていない文字列のこと。
留意点は NSPopInt同様。
id=NSPopID()

関連: category:NSCRと値をやり取り

NSPopComma()

NSLUA高水準

NSLUAユーザ関数引数列のコンマを一つ読み飛ばす。
NSPopComma()

関連: category:NSCRと値をやり取り

boo=NSCheckComma()

NSLUA高水準

NSLUAユーザ関数引数列の次の記号がコンマかどうかを調査。
返り値は 次がコンマである:true 次はコンマでない:false。
-- コンマがなくなるまで NSPopStr()を繰り返す
if (NSCheckComma()) then
 NSPopComma()
 s = NSPopStr()
end

関連: category:NSCRと値をやり取り

NSSetIntValue(NSCRrefnum,num)

NSSetStrValue(NSCRrefnum,"str")

NSLUA高水準

NSCRの変数に値を代入する。
NSSetIntValueは数値、NSSetStrValueは文字列。
NSSetIntValue(3,10) -- %3=10
NSSetStrValue(10,"test") -- $10="test"

関連: mov / category:NSCRと値をやり取り

num=NSGetIntValue()

str=NSGetStrValue()

NSLUA高水準

NSCRの変数から値を取得。
NSGetIntValueは数字変数、NSGetStrValueは文字変数。
num=NSGetIntValue(10) -- num=%10の値
str=NSGetStrValue(12) -- str=$12の値

関連: category:NSCRと値をやり取り

NSCRの機能呼び出し

NSExec("NSCRfunc")

NSLUA高水準

NSCRの命令を実行する。
NSExec("wait 100")

関連: category:NSCRの機能呼び出し

NSGoto("*label")

NSGosub("*label")

NSLUA高水準

NSCR上でラベルジャンプ。
NSGotoは通常、NSGosubはサブルーチンジャンプ。
NSGoto ("*label")
NSGosub ("*sub")

関連: goto / gosub / category:NSCRの機能呼び出し

NSReturn()

NSLUA高水準

NSCR上でサブルーチンから復帰。
NSReturn()

関連: return / category:NSCRの機能呼び出し

boo=NSDoEvents()

NSLUA高水準

Windowsのメッセージ処理。
時間のかかる関数から時々呼んで処理をすること。
返り値は終了フラグ。
if (NSDoEvents()) then NSReturn() end

関連: category:NSCRの機能呼び出し

NSOkBox("msg","title")

NSLUA低水準

メッセージダイアログ表示。
NSOkBox("本文","タイトル")

関連: mesbox / category:NSCRの機能呼び出し

boo=NSYesNoBox("main","title")

NSLUA低水準

「はい/いいえ」ダイアログ表示。
返り値は true:はい false:いいえ。
result=NSYesNoBox("質問","タイトル")

関連: yesnobox / category:NSCRの機能呼び出し

num,num=NSGetWindowSize()

NSLUA低水準

ウィンドウ表示領域取得。
返り値は 幅、高さ。
w,h=NSGetWindowSize()

関連: getwindowsize / category:NSCRの機能呼び出し

num=NSGetSkip()

NSLUA低水準

テキストのスキップ状態取得。
返り値は 0:通常 1:スキップモード 2:オートモード。
skipmode=NSGetSkip()

関連: isskip / category:NSCRの機能呼び出し

num=NSTimer()

NSLUA低水準

内部タイマー取得。
NSCR側のタイマーとは別扱いで、resettimerの影響も受けない。
したがって Lua側の経過時間計測は、この関数を二回呼び出し、その差をとるようにする。
time=NSTimer()

関連: gettimer / category:NSCRの機能呼び出し

val[,num,num]=NSGetFileinfo("filename")

NSLUA低水準

NSAアーカイブからファイル filenameを検索し、その情報を取得。
返り値は アーカイブ名、ファイル先頭から数えた開始位置、サイズ(byte)。
filenameが未圧縮の場合、指定ファイル名、0、サイズ を返す。
filenameがない場合、アーカイブ名に nilを返す。
arcname,offset,length=NSGetFileinfo("img\\image.bmp")

関連: category:NSCRの機能呼び出し

num,num=NSGetMouse()

NSLUA低水準

マウスカーソル位置取得。
返り値は x座標、y座標。画面外の場合はそれぞれ -1を返す。
x,y=NSGetMouse()

関連: getmousepos / category:NSCRの機能呼び出し

var,var,var,var,var=NSGetClick()

NSLUA低水準

直前のマウス入力を取得。
返り値は 左アップ、右アップ、ホイール、左ダウン、右ダウン。
ホイールの返り値は -1:上 0:入力なし 1:下。その他はブーリアン。
直前の入力がマウス以外なら全て false。
l,r,w,ld,rd=NSGetClick()

関連: category:NSCRの機能呼び出し

boo=NSGetKey("key")

NSLUA低水準

指定キーを押しているか調査。
返り値は true:押している false:押していない。
keyは checkkey同様。
key=NSGetKey("CTRL")

関連: category:NSCRの機能呼び出し

NSLuaAnimationInterval(ms)

NSLUA低水準

NSLUAアニメーション割り込みの発生間隔を指定。
時間は概算。
NSLuaAnimationInterval(33)
-- 1000/30fps = 33ms

関連: category:NSCRの機能呼び出し

NSLuaAnimationMode(flag)

NSLUA低水準

NSLUAアニメーション割り込みの有無を切り替える。
flagは true:開始 false:停止(規定値)。
NSLuaAnimationMode(true)

関連: category:NSCRの機能呼び出し

NSExecAnimation()

NSLUA低水準

NSCRのアニメーション処理を実行。
NSExecAnimation()

関連: category:NSCRの機能呼び出し

NSSleep(ms)

NSLUA低水準

時間 ms後、他のスレッドに動作を明け渡す。
Lua上の処理が長時間続くと CPU使用率が上がるので、時々呼ぶこと。
NSSleep(1)

関連: wait / category:NSCRの機能呼び出し

NSSystemCall("func")

NSLUA低水準

NSCRのシステム機能 funcを呼び出す。
【func】
reset リセット(確認なし)
close 「閉じる」ボタンを押したのと同じ
end 終了(確認なし)
full 画面モード切り替え(フルスクリーン)
window 画面モード切り替え(ウィンドウ)
skip スキップ
automode オートモード
skipoff スキップ停止
NSSystemCall("close")

関連: systemcall / category:NSCRの機能呼び出し

NSSavePoint()

NSLUA低水準

セーブポイント更新。
NSExec("savepoint") は使えないので、こちらを使用すること。
NSSavePoint()

関連: savepoint / category:NSCRの機能呼び出し

NSEnd()

NSLUA低水準

NSCR終了。
NSEnd()

関連: end / category:NSCRの機能呼び出し

NSClick()

NSLUA低水準

左クリックを待つ。
NSClick()

関連: click / category:NSCRの機能呼び出し

NSLUA描画

NSUpdate()

NSLUA低水準

無効領域再描画。
NSUpdate()

関連: print / category:NSLUA描画

NSInvalidate(lx,ly,rx,ry)

NSLUA低水準

矩形範囲内 lx,ly,rx,ryを無効領域とする。
反映は NSUpdate後。
NSInvalidate(10,10,100,100)

関連: category:NSLUA描画

NSSpLoad(spnum,"imgfile")

NSSp2Load(sp2num,"imgfile")

NSLUA低水準

スプライト読み込み。
NSSpLoadは通常、NSSp2Loadは拡張スプライト。
NSSpLoad(0,":a/2,0,3;img\\test.bmp")
NSSp2Load(0,":c;img\\test.bmp")

関連: lsp / lsp2 / category:NSLUA描画

NSSpVisible(spnum,flag)

NSSp2Visible(spnum,flag)

NSLUA低水準

スプライトの表示モード切り替え。
NSSpVisibleは通常、NSSp2Visibleは拡張スプライト。
flagは 表示:true 非表示:false。
NSSpVisible(1,true)
NSSp2Visible(1,true)

関連: vsp / vsp2 / category:NSLUA描画

NSSpClear(spnum)

NSSp2Clear(sp2num)

NSLUA低水準

スプライトをメモリから消去。
NSSpClearは通常、NSSp2Clearは拡張スプライト。
NSSpClear(2)
NSSp2Clear(2)

関連: csp / csp2 / category:NSLUA描画

NSSpMove(spnum,lx,ly,alpha)

NSSp2Move(sp2num,cx,cy,xs,ys,rot,alpha,opt)

NSLUA低水準

スプライトを絶対座標指定で移動する。
NSSpMoveは通常、NSSp2Moveは拡張スプライト。
NSSp2Moveでは 加算 / 減算合成可。
出力オプション optは 0:普通 1:加算合成 2:減算合成。
NSSpMove(3,100,100,255)
NSSp2Move(0,100,100,100,100,45,255,0)

関連: amsp / amsp2 / category:NSLUA描画

NSSpCell(spnum,cell)

NSLUA低水準

スプライトの表示セル変更。
NSSpCell(4,0)

関連: cell / category:NSLUA描画

num,num,num=NSSpGetInfo(spnum)

num,num=NSSp2GetInfo(sp2num)

NSLUA低水準

スプライト情報取得。
NSSpGetInfoは通常、NSSp2GetInfoは拡張スプライト。
返り値は 幅、高さ[、セル数]。
w,h,cell=NSSpGetInfo(2)
w,h=NSSp2GetInfo(2)

関連: getspinfo / category:NSLUA描画

num,num,num=NSSpGetPos(spnum)

num,num,num,num,num,num,num=NSSp2GetPos(sp2num)

NSLUA低水準

スプライトの位置取得。
NSSpGetPosは通常、NSSp2GetPosは拡張スプライト。
返り値は NSSpGetPos:左上x、左上y、透過度
NSSp2GetPos:中心x、中心y、倍率x、倍率y、回転角度、透過度、出力オプション。
lx,ly,alpha=NSSpGetPos(2)
cx,cy=NSSp2GetPos(7)

関連: category:NSLUA描画

NSLUAテクスチャ

NSDClear()

NSLUA低水準

仮想画面を黒く塗り潰す。
NSDClear()

関連: drawclear / category:NSLUA直接描画

NSDFill(lx,ly,rx,ry,r,g,b)

NSLUA低水準

仮想画面の指定範囲内を、指定色で塗り潰す。
NSDFill(10,10,100,100,255,0,255)

関連: drawfill / category:NSLUA直接描画

NSDLoad(texnum,{"imgfile"|"*xs,ys[,r,g,b,alpha]"})

NSLUA低水準

仮想画面に PNGファイルかフィル画像をテクスチャとして読み込む。
テクスチャ番号 texnumは 0~ 15。
NSDLoad(2,"test.png")
NSDLoad(3,"*32,32")
NSDLoad(4,"*48,24,128,64,32,255")
-- テクスチャ 4に 48*24、R=128 G=64 B=32 α=255の画像を作成

関連: category:NSLUA直接描画

NSDDelete(texnum)

NSLUA低水準

テクスチャの削除。
NSDDelete(2)

関連: category:NSLUA直接描画

num,num=NSDGetSize(texnum)

NSLUA低水準

テクスチャのサイズを取得。
返り値は 幅、高さ。
width,height=NSDGetSize(2)

関連: category:NSLUA直接描画

NSDBlt(texnum,lx,ly,img_w,img_h,img_lx,img_ly)

NSLUA低水準

テクスチャを実画面にそのまま転送。
img_w,img_hは元画像から切り出すサイズ、img_lx,img_lyは切り出す位置を示す。
NSDBlt(2,100,100,32,32,0,32)

関連: blt / category:NSLUA直接描画

NSDSp(texnum,lx,ly,img_w,img_h,img_lx,img_ly,alpha)

NSDSpAdd([NSSSpと同様])

NSLUA低水準

テクスチャを透過情報を考慮して実画面へ転送。
NSDSp2Addで加算合成可。
透過度 alphaの規定値は 255(元画像の透過情報に従う)で、0~ 255。
留意点は NSDBlt同様。
NSDSp(2,100,100,32,32,0,32,255)
NSDSpAdd(2,100,100,32,32,0,32,255)

関連: drawsp / category:NSLUA直接描画

NSDSp2(texnum,cx,cy,img_lx,img_ly,img_w,img_h,xs,ys,rot,alpha)

NSDSp2Add([NSDSp2と同様])

NSLUA低水準

テクスチャを、透過情報を考慮して実画面へ転送(倍率、回転角度指定あり)。
NSDSp2Add で加算合成可。
倍率 xs/ys及び回転角度 rotは小数指定で、規定値はそれぞれ 1.0(元サイズ)、0.0(回転なし)。
透過度 alphaの規定値は 255(元画像の透過情報に従う)で、0~ 255。
留意点は NSDBlt / NSDSp同様。
NSDSp2(2,100,100,32,32,0,32,1.0,1.0,0.0,255)
NSDSp2Add(2,100,100,32,32,0,32,1.0,1.0,0.0,255)

関連: drawsp2 / category:NSLUA直接描画

NSDPresent()

NSDPresentRect(lx,ly,rx,ry)

NSLUA低水準

テクスチャを実画面に表示。
NSDPresentは全画面、NSDPresentRectは矩形範囲内に表示。
NSDPresent()
NSDPresentRect(100,100,200,200)

関連: draw / category:NSLUA直接描画

NSDCopyToBg()

NSLUA低水準

現在の画面を背景として取り込む。

NSLUAの直接描画系関数は NSCRの描画処理とは別のものなので、
Luaから抜けたり NSExec関数を呼ぶと、NSLUAで描画中の画像を全て上書きする。
そのため画面状態を保持したい場合は、この関数で現在の画面を NSCR上の背景画面としてコピーすること。
NSDCopyToBg()

関連: bgcpy / category:NSLUA直接描画

NSDOffMode(flag)

NSLUA低水準

直接描画系関数の書き込み先変更。
NSDTransition系関数と組み合わせて使用する。
flagは true:仮想画面 false:実画面(規定値)。
NSDOffMode(true)

関連: category:NSLUA直接描画

NSDTransition(effectnum,ms(,"imgfile"))

NSDTransitionF([NSDTransitionと同様])

NSLUA低水準

NSDOffMode(true)時の画像を、NSCRのエフェクト処理で実画面に表示。
NSDTransitionは [CTRL]で高速化、[SPACE][ENTER] 左クリックでキャンセル可。
一旦画像を NSCRのものに変換してから行うため、NSDPresent系関数より低速。
NSDTransition(10,500) -- print 10,500と同じ
NSDTransitionF(18,1000,"rule.png") -- 高速化やキャンセルは不可

関連: effect / category:NSLUA直接描画

num=NSDDLL("dllfile","dllfunc")

NSLUA低水準

テクスチャ作成時に呼び出す DLLファイルの設定。
Luaスクリプトの読み込み時に一度だけ実行する。
proc=NSDDLL("test.dll","test")

関連: category:NSLUA直接描画

NSDCall(texnum,"imgfile",funcnum[,dllparam])

NSLUA低水準

読み込み済み DLLファイルを利用し、テクスチャの情報を取得。
取得単位は byte。
DLL用引数 dllparamを省略すると、NULLを送る。

【DLL関数の型】
void Func (unsigned char *ptr,int w,int h,const char *param);
paramは呼び出し元から渡された文字列引数。指定がない場合は NULLが入る。
wは画像の幅、hは画像の高さ。ptrはビットデータ配列。
(x,y)ピクセルのデータはptr[x*4+y*w*4]~ptr[x*4+y*w*4+3]にある。
例えば x*4+y*w*4=posなら、p[pos]=青 p[pos+1]=緑 p[pos+2]=赤 p[pos+3]=透過度。
fontproc=NSDDLL("deffont.dll","Font")
-- deffont.dll内のFont関数を読み込み、関数番号をfontprocに代入する。

NSDCall(10,"*200,60",fontproc,"20,20,あいうえお")
--テクスチャ 10を画像ファイル "*200,60"で初期化後、
--番号 fontprocに登録した DLL関数を"20,20,あいうえお"という引数で呼ぶ

関連: category:NSLUA直接描画

NSDSetSprite(spnum,texnum[,tag])

NSLUA低水準

テクスチャをスプライトに変換。
テクスチャにはセルやアニメ設定がないため、必要に応じて画像タグ tagを指定すること。
tagの規定値は :a;。
NSDSetSprite(1,0)
NSDSetSprite(1,0,":a/3;")

関連: category:NSLUA直接描画

NSLUA音声

NSOggLoad(chnum,"sndfile")

NSLUA低水準

ストリーミング再生チャンネル chnumに音声ファイルを読み込む。
チャンネル番号は 1~255?
NSOggLoad(3,"snd\\se.ogg")

関連: dwaveload / category:NSLUA音声

NSOggPlay(chnum,loop)

NSOggPlay2(chnum,looppoint)

NSLUA低水準

chnumの音声を再生。
NSOggPlayのループ指定 loopは ループ:true 単発:false。
NSOggPlay2では、ループ開始点 looppoint(double型使用可)を指定できる。
NSOggPlay(3,false)
NSOggPlay2(4,1.4142)

関連: dwaveplay / dwaveplayloop / category:NSLUA音声

NSOggClose(chnum)

NSLUA低水準

chnumの再生を停止する。
NSOggClose(4)

関連: category:NSLUA音声

NSOggVolume(chnum,vol)

NSLUA低水準

chnumの音量変更。
volは 0が最大、-10000が最小。
NSOggVolume(3,0)

関連: sevol / category:NSLUA音声

boo=NSOggIsPlaying(chnum)

NSLUA低水準

chnumの再生状況調査。
返り値は true:再生中 false:停止。
isp=NSOggIsPlaying(10)

関連: category:NSLUA音声

NSOggFade(chnum,vol_fadein,vol_fadeout,ms,flag)

NSLUA低水準

chnumのフェード指定。
フェード音量 vol_fadein/vol_fadeoutは 0が最大、-10000が最小。
フェード終了後の処理 flagは true:ファイルを閉じる false:再生続行。
NSOggFade(4,-10000,0,1000,false)

関連: category:NSLUA音声

NSLUAその他

num=NSLinear(x0,y0,x1,y1,x)

NSLUA低水準

一次変換値を求める。
返り値は計算結果。
y=NSLinear(1,5,3,15,4)
--(1,5)と(3,15)を通る直線はy=5xなので、x=4の時の値20がyに代入される

関連: category:NSLUAその他

NSDefSpline(splinenum,interpolation_x,interpolation_y)

NSLUA低水準

三次スプライン補間に必要な計算をして、データ登録する。
スプラインデータ番号 splinenumは 0~ 99。
x補間 interpolation_xには x座標を小さい順に代入した配列を、
y補間 interpolation_yには その x値にそれぞれ対応する y値を代入した配列を指定する。
NSDefSpline(0,{1,2,4},{2,4,8})

関連: category:NSLUAその他

num=NSSpline(splinenum,x)

NSLUA低水準

スプラインデータ番号 splinenumを使用し、x値から y値を求める。
返り値は計算結果。
xa={1,2,4}
ya={2,4,8}
NSDefSpline(0,xa,ya)
y=NSSpline(0,3)
-- y=6

関連: category:NSLUAその他


付録

仕様

  • フリー・同人:無料、サポートなし 商業:一作品につき40万円、サポートあり
  • 最低動作環境:DirectX9以上で WindowsXP以降のOS
  • 対応画像形式:RGBフルカラー または 256色の BMP / JPG / PNG(要プラグイン)
  • 対応音声形式:PCM(無圧縮WAVE), OGG(要プラグイン)
  • 対応動画形式:MPEG-1
  • スクリプトの記述は00.txt~99.txt・SJISで行う。nscr.exeはこれを番号順に連結して読み込む。
    連結後、(冒頭にあれば ;mode/;value)→*definegame*start~と実行していく。
  • スクリプトファイルの検索順は ??.txt→nscript.dat→(Luaが使用可能なら)NSCOM_main関数。
  • 画像など外部ファイルの検索順は、生ファイル→NSAアーカイブ内のファイル。
  • プラグインは nscr.exeと同じ場所(の dllフォルダ)に置くことで利用可能になる。
  • nslua.dllと system.luaを置くことでLuaスクリプトが使用可能になる。
    読み込みのタイミングは game直後(ほぼ定義節扱い)。
  • envdataには現在のシステム設定及び定義節の情報が保存されている。 これにはglobal.sav/NScrFlog.dat/NScrllog.dat/kidoku.datを使用しているかの情報も含まれているため、 削除すると global.savなどの有無に関係なく、保存している値が全て初期化される。

基本的な記法

  • 大文字小文字は区別しない。
  • ;から行末はコメント。
    ; comment
    
  • 先頭 *の行はラベル名。
  • ラベル名は半角英数字か _のみでつける。ただし「半角数字で始まる名前」は不可。
  • 全角文字またはテキスト系特殊文字で始まる行は表示文とみなす。
  • @/ \でクリック待ち。前者が通常文字送り、後者が改ページ。
  • テキスト系特殊文字以外の半角文字で始まる行は命令文とみなす。
    *label
    表示文です。@
    
    delay 1000
    
  • 定義節ラベル *definegame及び 実行節ラベル *startは必須。
    *define
    game
    
    *start
    てすと@
    end
    

  • 文字列型と数値型が存在する。
  • 数値は実数型で、小数点以下は切り捨てる。
    1 ; 1
    3.1416 ; 3
    
  • 文字列は "で囲む。エスケープ不可。
    "あいうえお"
    

変数

  • %valは数字変数、$valは文字変数を示す。
  • 前者の初期値は 0、後者は ""。
  • それぞれに対応する型と異なる型の値を代入しようとするとエラー。
  • 通常変数とグローバル変数が存在する。
  • 通常変数はセーブファイル単位、グローバル変数はエンジン単位で保存される変数のこと。
  • NSCRの変数は、どこからでもアクセス可能な、一般的に言われるグローバル変数である。
  • 変数の代入は movで行う。
    mov %0,1 ; %0 = 1
    mov $0,"あいうえお" ; $0 = "あいうえお"
    

演算子

  • 以下は算術演算子一覧。
    5 + 2 ; 7(加算)
    5 - 2 ; 3(減算)
    5 * 2 ; 10(乗算)
    5 / 2 ; 2(除算)
    
    "あ"+"い" ; "あい"(+演算で 文字列を指定した場合、+は連結演算子になる)
    
  • 以下は比較/論理演算子一覧。後述の ifで使用する。
    ; *比較演算*
    a == b ; 等しい
    a != b ; 等しくない
    a < b ; より小さい
    a > b ; より大きい
    a <= b ; 以下
    a >= b ; 以上
    
    ; *論理演算*
    a && b ; aと bが共に成立するなら真
    a || b ; aか bが成立するなら真
    

制御文

  • goto でラベルジャンプ、gosub でサブルーチンジャンプ、returnでサブルーチンから復帰。
    goto *gotojump
    
    ※この文章は表示されない。
    
    *gotojump
    現在地は*gotojump。
    goto *gosubjump
    
    ※ここも表示されない。
    
    *gosubjump
    現在地は*gosubjump。ここでサブルーチンジャンプ。
    gosub *gosubjump_sub
    再び*gosubjumpへ戻った。プログラム終了。
    end
    
    *gosubjump_sub
    現在地は*gosubjump_sub。returnで戻る。
    return
    
  • ifで条件文。複数行不可。命令を :でつなぐと連続実行する。
    if %0==1: puttext "普通の条件文"
    if %0==%1 || %0==0: if %1==1 && %2==1 :puttext "OR演算とAND演算を共存させた条件文"
    
  • ループ文は fornext。途中で抜けるには break
    for %0 = 1 to 10
      if %1==1: break
      itoa2 $0,%0
      puttext $0
    next
    

描画

  • nspng.dllで PNG形式の画像が使用可能になる。
  • bg で背景を表示する。
  • 描画エフェクトの設定は effectで行う。
    *define
    effect 2,10,1000
    ; エフェクト設定番号 2に「1000msかけてクロスフェード」というエフェクトを割り当てる
    game
    
    bg "bg.bmp",2
    ; bg.bmpをエフェクト設定番号 2で表示
    ; bg "bg.bmp",10,1000でもよい
    
  • lsp / lsph でスプライトの設定。
    lspは以後の画面描画で表示される、lsphがされないものとして読み込む。
  • vspでスプライトの表示モードを切り替える。
  • cspでスプライトを消去する。
  • スプライトの表示は printなどの画面描画で反映される。
    lsp 0,"sp1.bmp",0,0
    lsph 1,"sp2.bmp",320,0
    print 1
    sp1.bmpだけが表示されます。@
    
    vsp 1,1 :print 1
    sp2.bmpも表示されます。@
    
    csp 1 : print 1
    sp1.bmpを消去しました。\
    

音声

  • 以下の命令を使う際は、原則 nsogg2.dllを導入すること。
  • BGMは bgm / bgmonceで再生する。停止するには stop
    bgm "bgm.ogg"
    クリックで停止します。@
    stop
    
  • SEは dwave / dwaveloopで再生する。停止するには dwavestop
    dwave 0,"se.ogg"
    クリックで停止します。@
    dwavestop
    

ボタン

  • bexec でボタン待ちを行う。 オーバーフローを防ぐため、ボタン待ちの前に bclearを入れるのが原則。
  • bsp でスプライトボタンの登録を行う。
    lsp 1,":s#ffffff#ff0000ボタン",0,0
    
    *btnlp
    bclear ;ボタン定義クリア
    bsp 1 ; スプライト 1をボタン登録
    bexec $0,%0 ;文字変数と数字変数に結果を受け取る
    if $0=="A" :goto *a
    if %0==-1 :goto *rclk
    if %0==1 :goto *spbtn ; $0=="S1"でもよい
    goto *btnlp ;スクリプトが次に流れないようにループさせる
    
    *rclk
    右クリックした。\
    goto *btnlp
    
    *a
    Aを押した。\
    goto *btnlp
    
    *spbtn
    スプライトボタン%0を押した。\
    goto *btnlp
    

システムカスタマイズ

環境設定/v2.96以降

スクリプト一行目の ;$で始まる行は環境設定とする。
以下は組み合わせも可。

Sw,h
ウィンドウサイズ。規定値は 幅 w:640 高さ h:480。
;modeの拡張版で、ワイドサイズの指定も可能になっている。
Gnum
通常変数とグローバル変数の境目 numの設定。規定値は 200。;valueと同等。
Vmaxnum
変数の最大数 maxnumの設定。
実際のインデックスは 0から始まるので、最大インデックスは 最大数 -1。
Lmaxnum
ラベル及びファイルログの最大数 maxnumの設定。規定値は 10000。
;$S800,600G1500V2000L2000
; -- ウィンドウサイズ 800,600 変数の境目 1500
; -- 変数最大数 2000 ラベル最大数 2000

スクリプトの暗号化

*元の形式に戻すことはできないので注意すること*

  1. nscmake2.exeを起動後、00.txt等があるフォルダを指定して実行する。
    また、スクリプトファイルの指定した番号以降をパッチ(??.np)としてリリースできる。
  2. 生成ファイル(nscript.dat/??.np)を nscr.exeと同じ場所に置く。

ファイルのアーカイブ化

*元の形式に戻すことはできないので注意すること*

  • プラグイン、動画ファイル、(プラグイン未使用時)巨大な音声ファイルはアーカイブ化不可。
  • アーカイブ化するファイルパスに 2byte文字が含まれていると、異常終了する。
  • 連番化可。読み込みは番号順。
  • NSA形式と NS2形式のアーカイブを共存させてはいけない。
  • (NSA形式)BMPファイルは圧縮するため、その分のデコードにより読み込みが遅い。
  • (NS2形式)現在いくつかの不具合や制限が存在する。
【NSA形式でアーカイブ化】
  1. スクリプトの定義節に nsaを記述する。
  2. アーカイブ化可能なファイルを、アーカイブ化対象フォルダに入れる。
  3. nsaarc.exeを起動後、ファイル群のあるフォルダを指定して実行する。
  4. 生成ファイル(arc.nsa, arc1.nsa..)を nscr.exeと同じ場所に置く。
【NS2形式でアーカイブ化】
  1. アーカイブ化可能なファイルを、アーカイブ化対象フォルダに入れる。
  2. NS2Arc.exeを起動後、ファイル群のあるフォルダを指定して実行する。
  3. 生成ファイル(00.ns2, 01.ns2..)を nscr.exeと同じ場所に置く。

初期キー割り当て

以下はシステムカスタマイズや NSLUAなどで変更可。
左クリック テキスト送り / 決定 / スキップ・オートモード解除
右クリック テキストウィンドウ表示切替 / キャンセル / スキップ・オートモード解除
[ENTER][SPACE] テキスト送り / 決定
カーソルキー ボタン待ち時、カーソル移動
[CTRL] 押している間、テキストスキップ
[N] 選択肢までスキップ
[D] デバッグウィンドウ表示(スクリプト未暗号化時のみ)

エラーメッセージ(一部)

【スクリプトファイルが見つかりません】
nslua.dllが存在しない状態で、??.txt/nscript.datがいずれも無効である。
【Lua関数NSCOM_mainが存在しません】
nslua.dllが存在している状態で、??.txt/nscript.dat/system.lua-NSCOM_mainがいずれも無効である。
【ラベル*defineが存在しません/ラベル*startが存在しません】
*define/*startのいずれかが存在しない。
【ファイルの終端に達しました】
これ以上実行する命令がない。
【不正な命令funcです】
funcという命令が存在しない。
funcを対応していない節で実行しようとした。
【数字が来るべきところに数字がありません/文字列が来るべきところに文字列がありません】
命令の引数に、誤った型の値を指定しようとした。
【コンマが必要なところにコンマがありません】
命令の引数が足りない。