NSCR命令 / NSLUA関数一覧
基本
*DEFINE
特殊/必須
定義節ラベル。
定義節とは、ゲームの基本設定をする場所のこと。
定義節内での設定は envdata(自動生成)に記録する。
- 不具合を避けるため、動作確認は必ず envdataを削除してからにすること。
*define
game
;↑ここまでが定義節
;↓ここからが実行節
*start
関連: category:基本
GAME
特殊/必須
*START
特殊/必須
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すること。
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
定義・実行
TABLEGOTO %val,*label[,*label2..]
定義・実行
テーブルジャンプ。
%valの値が 0なら *label、1なら *label2..にジャンプする。
tablegoto %0,*lbl,*lbl2
関連: category:基本
GOSUB *label
定義・実行
RETURN[ *label]
定義・実行
サブルーチンからの復帰。
ラベル *labelを指定すると、サブルーチンスタックを一つ消費した後、*labelにジャンプする。
return
関連: NSReturn / category:基本
SKIP line
定義・実行
行数 line分ジャンプ。空行も含む。
lineが正の場合は後方、負の場合は前方へジャンプ。
skip 10
関連: category:基本
JUMPF
JUMPB
定義・実行/非推奨:不具合あり
~までジャンプ。
jumpfが次の ~、jumpbが直前の ~。
- 2byte目に 0x7Eを含む文字がこの命令と飛び先の ~の間に存在すると誤動作する
(×ミн円樫救鯨降止淳厨掻蓄冬梅敷盆欲凭嘸宀恠捫桎毯烝痿窰縷艤蛬諧轜閙驃黯蕙)。
- 行き先が遠いほど動作は遅い。
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
定義
GETPARAM {%val|$val}[,..]
定義・実行
ユーザ定義命令の引数取得。
i%val/ s%val とすると、呼び出し元の数字変数番号 / 文字変数番号を取得できる。
- 引数がある場合は、使用に関わらず全て受け取ること。
また、引数の取得は必ず defsubサブルーチンの一番始めに行うようにすること。
getparam %0
関連: defsub / category:基本
特殊文字
*label
特殊
この行はラベル。
ラベル名 labelは半角英数字か _のみでつける。
ただし「半角数字で始まる名前」は不可。
- 命令の引数としてのラベル名は、文字列としてもよい("*label" 等)。
*lbl
関連: category:特殊文字
;comment
特殊
exec:exec[:exec..]
特殊
@
\
特殊
/
特殊
#rrggbb
特殊
!Sms
特殊/不具合あり
!SD
特殊
!Dms
!Wms
特殊
%val
$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~。
- グローバル変数の使用には globalon宣言が必要。
- 必ずスクリプトの一行目に記述すること。
;value500
関連: ;mode / category:変数
GLOBALON
定義
数値
ADD {%val,num|$val,"str"}
定義・実行
変数 %val/ $valに値 num/ "str"を加算。
add %0,5
add $0,"あいうえお"
関連: inc / category:数値
SUB %val,num
定義・実行
MUL %val,num
定義・実行
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
定義・実行
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まで。
エイリアスも使用可。
- movl ?var,num[,..]で、?varに対し一度に数値を代入する。
- 配列変数の操作は mov / movlからしか受け付けない。また、数値しか代入できない。
*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
実行
LRCLICK
実行
AUTOCLICK ms
実行
CLICKPOS %val,%val
実行
ISDOWN %val
実行
ROFF
定義
RMODE flag
実行
GETMOUSEPOS %val,%val
実行
MOVEMOUSECURSOR x,y
実行
MOUSECURSOR "curfile"
実行
マウスカーソルを Windowsカーソルファイル curfileに変更する。
mousecursor "test.cur"
関連: category:マウス・キー
MOUSEMODE flag
実行
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
実行
SPWAIT spnum
実行
RESETTIMER
実行
WAITTIMER ms
実行
GETTIMER %val
実行
割り込み
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中にクリックしていた場合、 この時点で割り込みが発生する。 |
- 判定は個々の命令の動作間のみで行われる(ボタン待ちやクリック待ちでは判定しない)。
また、ウェイト中に割り込みが発生した場合、ウェイト終了後にラベルジャンプする。
- この命令からジャンプするラベルの間にサブルーチンが含まれていると、予期せぬ動作になることがある。
optの stopや resumeをうまく使うこと。
trap *label
trap2 off
関連: category:割り込み
TIMERTRAP {*label,ms|opt}
実行
ボタン
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
実行
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で再生 |
- bclearと bexecの間で使用すること。
- 使用しなくなったボタンは bclearで必ず消去すること。
- 必ず bdefも設定すること。
- 複数のボタン範囲が重なっていると、後から登録した方を優先する。
- 制御文字列 Sの音量は、定義前の設定が反映されるのに注意すること。
bsp 1
bsp 2,"P3,0","P3,1","P4,1"
関連: category:ボタン
BDEF "opt"
実行
BCURSOR
実行
BTIME ms[,flag]
実行
bexecのタイムアウト時間 msを設定する。
flagを 1とすると、タイムアウトしていてもボイス(DWAVE 0)の再生終了まで待つ。
- bclearと bexecの間で使用すること。
- もう一度 btimeするまで、値(設定時間、経過時間)を消去しないのに注意。
btime 2000
関連: category:ボタン
BTRANS
実行
BDOWN
実行
旧ボタン
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に表示する。
- ボタン番号は 0~。
- btndefと btnwait系命令の間で使用すること。
- 使用しなくなったボタンは btndefで必ず消去すること。
- 複数のボタン範囲が重なっていると、後から登録した方を優先する。
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"
実行
EXBTN_D "opt"
実行
CELLCHECKSPBTN spnum,btnnum
実行
btnwaitで、複数セルを持つスプライト spnumをボタン btnnumに登録する。
マウスオフ:セル 0 マウスオン:セル 1、ボタン押下:セル 2 になる。
留意点は
btn同様。
cellcheckspbtn 1,1,""
関連: category:旧ボタン
CELLCHECKEXBTN spnum,btnnum,"opt"
実行
TRANSBTN
実行
BTNTIME ms
BTNTIME2 ms
実行
btnwaitでのタイムアウト時間 msを設定する。
btntimeでは、何も押されず時間経過すると -2を返す。
btntime2では、何も押されず時間経過すると、ボイス(DWAVE 0)の再生終了後、-2を返す。
btntime 1000
btntime2 1000
関連: btime / category:旧ボタン
GETBTNTIMER %val
実行
GETMOUSEOVER spnum_min,spnum_max
実行
btnwait時、ボタンにマウスカーソルを重ねるだけで押したことにする。
スプライト spnum_min~ spnum_max内のボタンが対象になる。
getmouseover 1,5
関連: category:旧ボタン
BTNNOWINDOWERASE
定義
BTNAREA x
実行
BTNDOWN flag
実行
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
定義
USEWHEEL
定義
GETSKIPOFF
実行
SPCLCLK
実行
TEXTBTNWAIT %val
実行
TEXTEXBTN textbtnnum,"opt"
実行
GETTEXTBTNSTR $val,textbtnnum
実行
テキストボタン textbtnnumに対応した文字列を変数 $valに返す。
ない場合は ""を返す。
<12あいうえお>かきくけこ@
gettextbtn $0,12
;$0="あいうえお"
関連: category:旧ボタン
LINKCOLOR #color_mouseoff,#color_mouseon
定義・実行
TEXTBTNSTART num
定義・実行
TEXTBTNOFF
実行
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
定義
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
定義/廃止:現在使用不能
テキストウィンドウ
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:有効。
- defspeed_msは textspeeddefaultがないと反映しない。
- setwindow3でテキストウィンドウを再設定するとき、元々のテキストウィンドウ設定と同じ縦横幅でないと、回想時に不具合が出るので注意すること。
setwindow 8,16,23,16,26,26,0,2,20,1,1,"#999999",0,0,639,479
関連: setwindow2 / category:テキストウィンドウ
SETWINDOW2 {"#color"|"imgfile"}
実行
WINDOWEFFECT effectnum[,ms]
定義・実行
テキストウィンドウ/テキスト表示のエフェクト effextnumを指定する。
effectnumが 1なら msは必要ない。
windoweffect 10,1000
windoweffect 0,0
関連: effect / category:テキストウィンドウ
ERASETEXTWINDOW flag
実行
エフェクト時のテキストウィンドウの挙動を設定する。
flagは 0:そのまま 1:非表示(規定値)。
erasetextwindow 0
関連: category:テキストウィンドウ
NOTERASEMAN
定義
WINDOWCHIP spnum
定義/非推奨:動作不安定
WINDOWBACK
定義
テキストウィンドウの表示順変更。
【各要素の表示順・windowback未使用時】
↑動画
|*テキストウィンドウ*
|バー
|
monocro/
nega効果
|拡張スプライト
|499番以下のスプライト(番数は
humanzで変更可)
|立ち絵
|500番以上のスプライト(番数は
humanzで変更可)
↓背景
【各要素の表示順・windowback使用時】
↑動画
|バー
|499番以下のスプライト(番数は
humanzで変更可)
|*テキストウィンドウ*
|拡張スプライト
|
monocro/
nega効果
|立ち絵
|500番以上のスプライト(番数は
humanzで変更可)
↓背景
windowback
関連: category:テキストウィンドウ
TEXTOFF
TEXTON
実行
テキスト
ENGLISH
定義
半角英文モードを有効にする。
テキスト行頭を >とすると、その行は半角英文モードになる。
- 半角英文モードの行では、全角文字や特殊文字は使用できない。
*define
english
game
*start
>Peter Piper picked a peck of pickled peppers
関連: category:テキスト
TATEYOKO flag
定義・実行/非推奨:回想モードで不具合あり
ADDKINSOKU "headstr","tailstr"
SETKINSOKU "headstr","tailstr"
定義
禁則文字列設定。複数指定可。
addkinsokuは追加、setkinsokuは初期化後に再設定。
禁則文字列の規定値は 行頭 headstr:"、。・?!ー々」』)}]" 行末 tailstr:"([{「『"。
addkinsoku "【","】"
setkinsoku "、。」","「"
関連: category:テキスト
KINSOKU flag
実行
禁則処理の有無を切り替える。
flagは on:有効(規定値) off:無効。
- NSCRの禁則処理は、禁則文字直前の文字から次行に折り返す形式。
kinsoku on
関連: category:テキスト
RUBYON[ rubyw,rubyh[,"fontname"]]
RUBYON2 [RUBYONと同様]
定義・実行/(rubyon2)非推奨:動作不安定
ルビモードにする。
rubyonは全ての行、rubyon2はルビのある行のみ。
ルビサイズ rubyw,rubyhを省略すると、テキストの半分の大きさになる。
ルビは (ルビを振りたい文字列/ルビ) のようにする。
- ルビ付きテキスト部は下詰めになる。
- ルビ付きテキスト部は改行せず一行に収めようとする。
また一行の文字数を超える場合、ルビ部を改行せずそのまま表示する。
- ルビ字数が元の文字数より多いと、文字幅を合わせようとする。
- ルビ機能を使う時は、setwindowや strspで縦字間をルビの縦幅(縦書きモードなら逆)以上空けること。
rubyon 12,12,"MS ゴシック"
(祇園精舎/ぎおんしょうじゃ)の鐘の音@
(諸行無常/しょぎょうむじょう)の響きなり\
関連: rubyoff / category:テキスト
RUBYOFF
定義・実行
FONT "fontname"
実行
TEXTSPEED ms
実行
TEXTSPEEDDEFAULT
実行
TEXTCOLOR "#color"
実行
BR
実行
INDENT num
実行
LOCATE xn,yn
実行
SHADEDISTANCE right,bottom
定義・実行
テキストの影位置を right,bottomピクセル分ずらす。
shadedistance 2,3
関連: category:テキスト
TEXTHIDE
TEXTSHOW
実行
TEXTCLEAR
実行
ISSKIP %val
実行
現在のスキップ状態を変数 %valに返す。
返り値は 0:通常モード 1:スキップモード 2:オートモード。
isskip %0
関連: category:テキスト
SKIPOFF
実行
KIDOKUSKIP
定義/Lua×
[選択肢まで進む]を既読スキップにする。
既読ログは kidoku.dat(自動生成)に記録する。
- ログの変更があると、次のボタン待ち時にファイルを自動更新する。
- 不具合を避けるため、動作確認は必ず kidoku.datを削除してからにすること。
- 既読位置は、savegameで保存されるスクリプト行位置と同じ仕様。
kidokuskip
関連: category:テキスト
KIDOKUMODE flag
定義・実行
AUTOMODE_TIME ms
定義・実行
オートモードのテキスト送り時間 msを設定する。
規定値は 1000ms。
automode_time 1000
関連: category:テキスト
PUTTEXT "str"
実行
GETTEXT $val
実行
LINEPAGE
定義
CLICKSKIPPAGE
定義
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
実行
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"
定義
SELECTVOICE "sndfile","sndfile","sndfile"
定義
選択肢での音声ファイル sndfile設定。再生は DirectSound。
ファイル指定順は 選択肢表示時、カーソルオン時、選択肢を選んだ時。
selectvoice "sel.wav","selon.wav","selclick.wav"
関連: category:選択肢
*CUSTOMSEL
特殊
CSEL "str",*label[,"str",*label][,..]
実行
GETCSELNUM %val
実行
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
実行
NEXTCSEL %val
実行
描画
PRINT {effectsetnum|effectnum[,ms[,"ruleimgfile"]]}
実行
REPAINT
実行
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
定義
EFFECTSKIP flag
定義・実行
エフェクト中にクリックした時、エフェクトをスキップするかを設定する。
flagは 0:しない 1:する(規定値)。
effectskip 0
関連: category:描画
SETEFFECTSPEED flag
定義・実行
エフェクト速度を指定する。
flagは 0:通常(規定値) 1:倍速 2:スキップ。
seteffectspeed 1
関連: category:描画
FLUSHOUT ms
実行
画面を時間 msかけてフラッシュアウト。
処理は重め。
- この命令後は、printなどで直ちに画面を確定させること。
flushout 1000
関連: category:描画
MONOCRO {"#color"|off}
実行
画面を色 #color階調にする。
引数 offで解除する。
- この命令後は、printなどで直ちに画面を確定させること。
- テキストウィンドウ以上の階層にある画像は影響を受けない。
monocro "#0000ff"
関連: category:描画
MOSAICIN maxsize,num,ms
MOSAICOUT [MOSAICINと同様]
実行/v2.96以降
画面のモザイク効果。
mosaicinがモザイクイン、mosaicoutがモザイクアウト。
maxsizeはモザイクの最大サイズ、numは分割数、msは効果にかける時間。
- effectの 17、16の代替命令。
- この命令後は、printなどで直ちに画面を確定させること。
- テキストウィンドウ以上の階層にある画像は影響を受けない。
mosaicin 34,16,2000
関連: category:描画
NEGA flag
実行/不具合あり
画面のネガポジ反転。
flagは 0:解除 1:nega→monocro順 2:monocro→nega順。
- 次の画面描画で反映。
- flag 2には不具合があるので使用しないこと。
- テキストウィンドウ以上の階層にある画像は影響を受けない。
nega 1
関連: category:描画
QUAKE px,ms
実行
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 / lsp2add / lsp2sub は次の画面描画で反映。
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
実行
ALLSPHIDE
ALLSPRESUME
ALLSPHIDE
ALLSPRESUME
実行
全てのスプライトに対し表示モード切り替え処理を行う。
通常スプライトの場合、allsphideが非表示、allspresumeが表示。
拡張スプライトの場合、allsp2hideが非表示、allsp2resumeが表示。
- 次の画面描画で反映。
- vsp / vsp2のフラグとは別扱いで、優先順位はこちらの方が上。
allsphide
allspresume
allsp2hide
allsp2resume
関連: lsp / lsp2 / category:スプライト
CSP spnum
CSP2 sp2num
実行
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
実行
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"
実行
SPFONT {"fontname"[,letter_w,letter_h,letter_spx,letter_spy,bold,shade]|clear}
定義・実行
文字列スプライトのフォント設定。
規定値は現在のテキスト設定。
fontnameはフォント名。その他の引数については
setwindowを参照のこと。
clearで規定値に戻す。
- スプライト番号の使い回しをしている場合、設定が反映されないことがある。
回避するには、この命令直前に cspで該当スプライトを消去してから、スプライトを再設定すること。
spfont "MS 明朝"
spfont "MS 明朝",22,22,0,0,1,0
spfont clear
関連: font / category:スプライト
GETSPMODE %val,spnum
実行
スプライト spnumの現在の表示モードを変数 %valに返す。
返り値は 1:表示 0:非表示。
- スプライトを消去(csp)しても、設定は残っていることに注意。
getspmode %2,10
関連: category:スプライト
GETSPSIZE spnum,%val,%val[,%val]
実行
画像一般
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
定義/非推奨:動作不安定
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"]]}
実行
TAL id,alpha,{effectsetnum|effectnum[,ms[,"ruleimgfile"]]}
実行
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
定義・実行
HUMANZ spnum
定義
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
実行
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
実行/廃止:問題があるためサポート終了
テクスチャ
BLT lx,ly,btnimgx,btnimgy,btnimgw,btnimgh
実行
ボタン画像バッファを使い、座標 lx,lyに直接画像を描画する。
ボタン画像が実画面上の大きさと異なる場合、画像は拡大縮小する。
ボタン画像はあらかじめ
btndefで読み込んでおくこと。
btnimgx,btnimgy,btnimgw,btnimghはボタン画像から切り出す位置を示す。
- この命令を実行して画像を描画すると、画面データが不定になる。
必ず直後に ofscpy / bgcpyを使い、画像を確定させること。
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
実行
DRAWCLEAR
実行
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が正の数なら反時計回り、負の数なら時計回りになる。
- drawで画面に反映する。
- 画面からはみ出た部分は描画しない。
drawbg2 320,240,200,300,15
;x320,y240を中心にして、横200%/縦300%、
;反時計回りに15度傾けて背景を描画
関連: category:テクスチャ
DRAWSP spnum,cell,alpha,lx,ly
実行
仮想画面の左上座標 lx,lyに読み込み済みスプライト spnumを描画する。
- drawで画面に反映する。
- 画面からはみ出た部分は描画しない。
- スプライトやテキストウィンドウは、新しく書いた方が上になる。
- 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
実行
仮想画面にテキストウィンドウを描画する。
- drawで画面に反映する。
- スプライトやテキストウィンドウは、新しく書いた方が上になる。
drawtext
関連: category:テクスチャ
画像処理
GETSCREENSHOT w,h
実行
SAVESCREENSHOT "filename"
SAVESCREENSHOT2 "filename"
実行
メモリ内のスクリーンショットをファイル filenameに保存する。
savescreenshotは 保存時にメモリ内画像を消去する、savescreenshot2は消去しない。
形式は BMP。
savescreenshot "ss.bmp"
関連: getscreenshot / category:画像処理
DELETESCREENSHOT
実行
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以外の命令が無効 |
× |
- nsogg2.dllは原則導入すること。
- bgmfadein及び bgmvolの現在値をそのまま継承する。
- ループ指定時、時間が指定ファイル名の時間より長いと不具合が起きる。
- dwave系命令と同時使用(ミキシング)可。
- mp3loop / mp3は bgm / bgmonceの別表記。後者で統一すること。
bgm "bgm.ogg"
bgmonce "bgm.ogg"
bgm "(5.37)bgm.ogg"
; はじめは bgm.ogg を一度最後まで再生、
; 2度目からのループ再生は bgm.ogg の 5.37秒地点より行う
関連: stop / category:音声
STOP
実行
DWAVE chnum,"sndfile"
DWAVELOOP chnum,"sndfile"
実行
音声ファイル sndfileを DirectSoundで再生する。
dwaveが単発、dwaveloopがループ再生。
音声チャンネル chnumは 0~49(
nsogg2.dllが使用できる環境なら 0~203?)。
対応形式は OGG(要 nsogg2.dll)/ PCM(無圧縮WAVE)。
- 異なるチャンネルや bgm系命令と同時使用(ミキシング)可。
- オートモードでの再生終了待ちは chnum 0で行う。
- nsogg2.dllは原則導入すること。
- nsogg2.dllを導入するとストリーミング再生になる。
その際 dwaveloopでループ指定も可能になる。詳しくは bgm参照。
dwave 0,"test.wav"
関連: dwavestop / category:音声
DWAVELOAD chnum,"sndfile"
実行
音声ファイル sndfileをメモリに読み込む。
音声チャンネル chnumは 0~49。
この命令であらかじめ音声ファイルを読み込んでおき、
dwaveplayなどで再生すると、
特に低スペック環境での音声の途切れやずれが軽減する可能性がある。
dwaveload 1,"test2.wav"
関連: category:音声
DWAVEPLAY chnum
DWAVEPLAYLOOP chnum
実行
DWAVESTOP chnum
実行
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
実行/廃止:サポート終了
MP3SAVE "mp3file"
実行/廃止:問題があるためサポート終了
MP3ファイル mp3fileの単発再生。
再生中にセーブするとロード後も再生する。
mp3save "test.mp3"
関連: category:音声
WAVE "wavefile"
WAVELOOP "wavefile"
実行/廃止:サポート終了
WAVEファイル wavefileの再生。
waveが単発、waveloopがループ再生。
wave "test.wav"
関連: bgm / category:音声
WAVESTOP
実行/廃止:サポート終了
PLAY {"midifile"|"*cdtracknum"}
PLAYONCE {"midifile"|"*cdtracknum"}
実行/廃止:問題があるためサポート終了
MIDIファイル midifileまたは CDトラック cdtracknumの再生。
playがループ再生、playonceが単発再生。
play "test.mid"
関連: category:音声
PLAYSTOP
実行/廃止:問題があるためサポート終了
DEFBGMVOL vol
DEFSEVOL vol
DEFVOICEVOL vol
定義
初期音量値 volの設定。
defbgmvolは BGM、defvoicevolは VOICE(DWAVE 0)、defsevolは SE(DWAVE 1~49)。
volの規定値は 100。
- defmp3volは defbgmvolの別表記。後者で統一すること。
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。
- mp3volは bgmvolの別表記。後者で統一すること。
bgmvol 100
voicevol 100
sevol 100
関連: category:音声
CHVOL chnum,vol
実行
音声チャンネル chnumの音量を一時的に変更する。
chnumは 0~49。volの規定値は 100で、0~100。
- 音量を変更する chnumの再生中に記述すること。
- nsogg2.dllがないと、タイムラグで音声が乱れて聞こえる場合がある。
chvol 3,100
関連: category:音声
GETBGMVOL %val
GETSEVOL %val
GETVOICEVOL %val
実行
現在の音量値を変数 %valに返す。
getbgmvolが BGM、getsevolが SE(DWAVE 1~49)、getvoicevolが(DWAVE 0)。
返り値は 0~100。
- getmp3volは getbgmvolの別表記。後者で統一すること。
getbgmvol %0
getsevol %0
getvoicevol %0
関連: category:音声
BGMFADEIN ms
BGMFADEOUT ms
定義・実行
BGMのフェード時間 msの設定。
bgmfadeinがフェードイン、bgmfadeoutがフェードアウト。
- BGMを変更しても、この命令の現在の設定がそのまま継承される。
- bgmfadeoutは stopでのみ有効。
- mp3fadein/ mp3fadeoutは bgmfadein/ bgmfadeoutの別表記。後者で統一すること。
bgmfadein 1000
関連: category:音声
CDFADEOUT ms
定義・実行/廃止:問題があるためサポート終了
BGMDOWNMODE flag
定義・実行
ボイス(DWAVE 0)再生時、BGMの音量を一時的に下げるかを設定する。
flagは 1:下げる 0:下げない。
bgmdownmode 1
関連: category:音声
MODE_WAVE_DEMO
定義
動画
MPEGPLAY "mpgfile",flag
実行
MPEGファイル mpgfileを DirectShowで非同期再生。
flagは 1:クリックで再生を中止する 0:しない。
- 表示は常に画面の一番手前。
- 音量は bgmvolに依存する。
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
定義・実行
RESET
DEFINERESET
実行/(definereset)非推奨:動作不安定
GETVERSION %val
定義・実行
NSCRのバージョンを変数 %valに返す。
返り値は 3桁の整数。
getversion %0
関連: category:システム
DATE %val,%val,%val
実行
現在の日付を変数 %valに返す。
返り値は 年(西暦下2桁)、月、日。
date %0,%1,%2
関連: category:システム
TIME %val,%val,%val
実行
FILELOG
定義/Lua×
ファイルアクセスログをファイル保存(NScrFlog.dat・自動生成)。
【ログから条件判断】
("filename")"TRUEstr""FALSEstr"
ファイル filenameが NScrflog.datにあるなら TRUEstr、ないなら FALSEstrを返す。
- ログの変更があると、次のボタン待ち時にファイルを自動更新する。
- この命令がなくとも、外部保存しないだけで、常にログは作られている(リセット後も保持)。
- 同じ画像ファイルでも、タグが違えば別だとみなす。
- 不具合を避けるため、動作確認は必ず NScrflog.datを削除してからにすること。
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・自動生成)。
- ログの変更があると、次のボタン待ち時にファイルを自動更新する。
- この命令がなくとも、外部保存しないだけで、常にログは作られている(リセット後も保持)。
- 不具合を避けるため、動作確認は必ず 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"
実行
READFILE $val,"filename"
定義・実行
ファイル filenameを読み込み、その内容を変数 $valに返す。
readfile $0,"file.txt"
関連: category:システム
CSVOPEN "filename","mode"
定義・実行
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
定義・実行
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
定義
定義
右クリックでシステムメニューが開くようにする。
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"
定義
SAVENUMBER maxnum
定義
セーブメニュー最大数 maxnumの設定。
maxnumの規定値は 9、最大値は 20。
- 画面からセーブメニューがはみ出ないようにすること。
savenumber 10
関連: category:ゲームシステム
定義
回想モード用ボタン画像を設定。
画像ファイル 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"
定義
LOOKBACKVOICE "sndfile"
定義
回想モードのページ送り時に再生する音声ファイル sndfileの設定。
lookbackvoice "test.wav"
関連: category:ゲームシステム
SAVEDIR "folder"
定義
セーブデータを格納するフォルダ folderを指定する。
- あらかじめフォルダは作成しておくこと。
- envdataは必ず nscr.exeと同じフォルダに作成する。
savedir "savedata"
関連: category:ゲームシステム
SAVEFILEEXIST %val,savenum
実行
セーブ番号 savenumを持つセーブファイルの有無を調査し、結果を変数 %valに返す。
返り値は 1:存在する 0:存在しない。
savefileexist %0,1
関連: category:ゲームシステム
SAVEGAME savenum
実行
セーブ番号 savenumにセーブする。
- 一つのセーブデータのサイズ上限は 200KB。
容量は、使わなくなった変数の値を消去することで削減できる。
- セーブデータに保存するのは、通常変数の値、描画の状態(strsp/logsp系、テキストウインドウは除く)、スクリプト行位置、回想バッファなど。
これらは全て「直前のセーブポイントでの状態」であるのに注意。
- 保存されるスクリプト行位置とは、スクリプト冒頭から数えた位置のこと。
つまり修正時に行がずれた場合、ロード位置もずれるのに注意。
savegame 1
関連: saveon / load / luacall / category:ゲームシステム
SAVEGAME2 savenum,"str"
実行
GETSAVESTR $val,savenum
実行
ERRORSAVE
定義
SAVEON
SAVEOFF
実行
セーブポイント更新のオン/オフ。
saveonがオン、saveoffがオフ。
セーブポイントは、saveon時にテキスト文頭(
pretextgosub直前)で自動作成する。
そのため、オフにすることにより重い処理で実行速度が上がる可能性がある。
- セーブポイント更新時に準備されるデータは、あくまで save??.datに保存されるものであって、
global.savなど別途で保存されるデータには影響がないのに注意すること。
- テキストタグ処理内/テキストラベル処理内/テキスト表示処理中は強制オフ。
また、これらの処理内でセーブポイントを更新しないこと(ロード時に表示が崩れたり、回想バッファが失われる不具合が発生するため)。
- Lua側の変数値は保存されない。保存したい場合は別途セーブファイルを自作し、操作する必要がある。
saveon
saveoff
関連: autosaveoff / savepoint / category:ゲームシステム
AUTOSAVEOFF
定義
SAVEPOINT
実行
SAVETIME savenum,%val,%val,%val,%val
実行
セーブ番号 savenumを持つセーブファイルの日付と時間を変数 %valに返す。
返り値は 月、日、時、分。
セーブファイルが存在しない場合は、月の値に 0を返す。
savetime 3,%0,%1,%2,%3
関連: category:ゲームシステム
LOADGAME savenum
実行
LOADGOSUB *label
定義
LOOKBACKOFF
LOOKBACKON
実行
回想バッファへの書き込み中止/再開。
lookbackoffは中止、lookbackonは再開。
lookbackoff
lookbackon
関連: category:ゲームシステム
LOOKBACKFLUSH
実行
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と違い、文字列を /区切りで別個に取り出すことはできない。
;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"..]
実行
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。
- 指定が 400以下の場合、モニタによってはフルスクリーン化できないことがある。
- 必ずスクリプトの一行目に記述すること。
;mode800
;-- ;valueと組み合わせる場合は以下のようにする。
;mode800,value500
;-- また、Luaのみで実行する場合は --mode800のようにする。
関連: category:ウィンドウ
MINIMIZEWINDOW
実行
ISFULL %val
実行
現在の画面モードを取得し、結果を変数 %valに返す。
返り値は 1:フルスクリーン 0:通常のウィンドウ。
isfull %0
関連: category:ウィンドウ
GETWINDOWSIZE %val,%val
実行
CAPTION "title"
定義・実行
定義/Lua×
位置 numにあるウィンドウメニューを削除する。
numは 0からで、左から数える。
killmenu 7
; CD-DAを削除
関連: category:ウィンドウ
定義/Lua×
定義/Lua×
定義/一部機能に問題あり/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
定義・実行
AUTOMODE
定義/廃止:現在は必要ない
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:ウィンドウ
ダイアログ
実行
文字列入力ダイアログ表示。結果は変数 $valへ返す。
msgはダイアログに表示する文字列、defは入力ボックスの初期値。
最大文字数 maxletterの単位は byte、全角強制フラグ zenkakuは 1:オン 0:オフ。
input $0,"名前を入力してください。","たろう",12,1
関連: category:ダイアログ
実行
文字列入力ダイアログ表示。入力結果は変数 $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"
定義・実行
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アーカイブ化不可。
- NSAアーカイブ化するファイルパスに 2byte文字が含まれていると、異常終了する。
- BMPファイルは圧縮するため、その分のデコードにより読み込みが遅い。
nsa
関連: category:圧縮・プラグイン
NSADIR "folder"
定義
ADDNSADIR "folder"
定義・実行
ARC "filename|dllname"
定義/廃止:サポート終了
SPI "spiname|ext"
定義
画像圧縮プラグインの指定。
BMP, JPGは必要ない。
PNGは nspng.dllがあれば必要ない。
spi "gifplgin.dll|gif"
関連: category:圧縮・プラグイン
SOUNDPRESSPLGIN "dllname|ext"
定義/廃止:現在は必要ない
EXEC_DLL "dllname/param"
定義・実行
プラグイン実行。
返り値は
getretで数値、文字列を一つずつ取得する。
exec_dll "execdll.dll/test"
getret %0 :getret $0
%0@
$0\
関連: category:圧縮・プラグイン
GETRET {%val|$val}
実行
SETLAYER layernum,refresh_ms,"dllname"
定義
DLLファイル dllnameをレイヤ layernumとして登録する。
refresh_msは更新間隔。小さいほどマシンに負担がかかる。
- レイヤの描画は、右クリックメニュー時やスキップ・エフェクト時停止する。
setlayer 0,30,"dlltest.dll"
関連: layermessage / category:圧縮・プラグイン
LAYERMESSAGE layernum,"msg"
実行
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 → 元々の命令 になる。
元々の命令を呼ぶ場合は頭に _をつける。
- 大文字小文字の扱い方に注意すること(Luaは区別するが、NSCRは区別しない)。
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関数の引数や文字列は、それぞれの機能ごとに形式が定められている。
- 大文字小文字の扱い方に注意すること(Luaは区別するが、NSCRは区別しない)。
【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高水準
str=NSPopLabel()
NSLUA高水準
str=NSPopID()
NSLUA高水準
NSPopComma()
NSLUA高水準
boo=NSCheckComma()
NSLUA高水準
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高水準
NSGoto("*label")
NSGosub("*label")
NSLUA高水準
NSCR上でラベルジャンプ。
NSGotoは通常、NSGosubはサブルーチンジャンプ。
- ジャンプ先は NSCR側のスクリプト実行位置であるのに注意。
NSGoto ("*label")
NSGosub ("*sub")
関連: goto / gosub / category:NSCRの機能呼び出し
NSReturn()
NSLUA高水準
boo=NSDoEvents()
NSLUA高水準
Windowsのメッセージ処理。
時間のかかる関数から時々呼んで処理をすること。
返り値は終了フラグ。
- true時は直ちに関数から抜けて、NSCRに処理を戻すこと。
if (NSDoEvents()) then NSReturn() end
関連: category:NSCRの機能呼び出し
NSOkBox("msg","title")
NSLUA低水準
boo=NSYesNoBox("main","title")
NSLUA低水準
num,num=NSGetWindowSize()
NSLUA低水準
num=NSGetSkip()
NSLUA低水準
num=NSTimer()
NSLUA低水準
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低水準
var,var,var,var,var=NSGetClick()
NSLUA低水準
直前のマウス入力を取得。
返り値は 左アップ、右アップ、ホイール、左ダウン、右ダウン。
ホイールの返り値は -1:上 0:入力なし 1:下。その他はブーリアン。
直前の入力がマウス以外なら全て false。
- [ENTER][SPACE]でも左アップに trueが返る。
l,r,w,ld,rd=NSGetClick()
関連: category:NSCRの機能呼び出し
boo=NSGetKey("key")
NSLUA低水準
NSLuaAnimationInterval(ms)
NSLUA低水準
NSLUAアニメーション割り込みの発生間隔を指定。
時間は概算。
NSLuaAnimationInterval(33)
-- 1000/30fps = 33ms
関連: category:NSCRの機能呼び出し
NSLuaAnimationMode(flag)
NSLUA低水準
NSLUAアニメーション割り込みの有無を切り替える。
flagは true:開始 false:停止(規定値)。
- NSCALL_animation(luacall animation)の中から呼ぶと無限ループするので注意。
NSLuaAnimationMode(true)
関連: category:NSCRの機能呼び出し
NSExecAnimation()
NSLUA低水準
NSCRのアニメーション処理を実行。
- animationコールバック関数から呼ぶと無限ループするので注意すること。
- 次の画面描画で反映。
NSExecAnimation()
関連: category:NSCRの機能呼び出し
NSSleep(ms)
NSLUA低水準
NSSystemCall("func")
NSLUA低水準
NSCRのシステム機能 funcを呼び出す。
【func】
reset |
リセット(確認なし) |
close |
「閉じる」ボタンを押したのと同じ |
end |
終了(確認なし) |
full |
画面モード切り替え(フルスクリーン) |
window |
画面モード切り替え(ウィンドウ) |
skip |
スキップ |
automode |
オートモード |
skipoff |
スキップ停止 |
- メッセージを送るだけなので、即時実行しないこともある。
その場合、NSCRが次にメッセージを処理した時に実行する。
NSSystemCall("close")
関連: systemcall / category:NSCRの機能呼び出し
NSSavePoint()
NSLUA低水準
NSEnd()
NSLUA低水準
NSClick()
NSLUA低水準
NSLUA描画
NSUpdate()
NSLUA低水準
NSInvalidate(lx,ly,rx,ry)
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低水準
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低水準
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低水準
NSDFill(lx,ly,rx,ry,r,g,b)
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低水準
num,num=NSDGetSize(texnum)
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同様。
- 透過度や合成順を考慮して転送するので、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上の背景画面としてコピーすること。
- コピー時、立ち絵は全て消去する。
- 状態は save*.ssに保存する。
NSDCopyToBg()
関連: bgcpy / category:NSLUA直接描画
NSDOffMode(flag)
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;。
- 設定後のスプライトは、「画面外に表示モードで呼び出されている」状態。
- テクスチャは常にアルファブレンド付きなので、
透過色規定値が alpha以外の場合は、tag指定時に必ず透過文字 aをつけること(a以外は使用不可)。
NSDSetSprite(1,0)
NSDSetSprite(1,0,":a/3;")
関連: category:NSLUA直接描画
NSLUA音声
NSOggLoad(chnum,"sndfile")
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低水準
NSOggVolume(chnum,vol)
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低水準
付録
仕様
- フリー・同人:無料、サポートなし 商業:一作品につき40万円、サポートあり
- 最低動作環境:DirectX9以上で WindowsXP以降のOS
- 対応画像形式:RGBフルカラー または 256色の BMP / JPG / PNG(要プラグイン)
- 対応音声形式:PCM(無圧縮WAVE), OGG(要プラグイン)
- 対応動画形式:MPEG-1
- スクリプトの記述は00.txt~99.txt・SJISで行う。nscr.exeはこれを番号順に連結して読み込む。
連結後、(冒頭にあれば ;mode/;value)→*define~game→*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などの有無に関係なく、保存している値が全て初期化される。
基本的な記法
型
- 文字列型と数値型が存在する。
- 数値は実数型で、小数点以下は切り捨てる。
1 ; 1
3.1416 ; 3
- 文字列は "で囲む。エスケープ不可。
"あいうえお"
変数
演算子
- 以下は算術演算子一覧。
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演算を共存させた条件文"
- ループ文は for~next。途中で抜けるには 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を消去しました。\
音声
ボタン
- 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
スクリプトの暗号化
*元の形式に戻すことはできないので注意すること*
- nscmake2.exeを起動後、00.txt等があるフォルダを指定して実行する。
また、スクリプトファイルの指定した番号以降をパッチ(??.np)としてリリースできる。
- 生成ファイル(nscript.dat/??.np)を nscr.exeと同じ場所に置く。
ファイルのアーカイブ化
*元の形式に戻すことはできないので注意すること*
- プラグイン、動画ファイル、(プラグイン未使用時)巨大な音声ファイルはアーカイブ化不可。
- アーカイブ化するファイルパスに 2byte文字が含まれていると、異常終了する。
- 連番化可。読み込みは番号順。
- NSA形式と NS2形式のアーカイブを共存させてはいけない。
- (NSA形式)BMPファイルは圧縮するため、その分のデコードにより読み込みが遅い。
- (NS2形式)現在いくつかの不具合や制限が存在する。
【NSA形式でアーカイブ化】
- スクリプトの定義節に nsaを記述する。
- アーカイブ化可能なファイルを、アーカイブ化対象フォルダに入れる。
- nsaarc.exeを起動後、ファイル群のあるフォルダを指定して実行する。
- 生成ファイル(arc.nsa, arc1.nsa..)を nscr.exeと同じ場所に置く。
【NS2形式でアーカイブ化】
- アーカイブ化可能なファイルを、アーカイブ化対象フォルダに入れる。
- NS2Arc.exeを起動後、ファイル群のあるフォルダを指定して実行する。
- 生成ファイル(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を対応していない節で実行しようとした。
- 【数字が来るべきところに数字がありません/文字列が来るべきところに文字列がありません】
- 命令の引数に、誤った型の値を指定しようとした。
- 【コンマが必要なところにコンマがありません】
- 命令の引数が足りない。