初級者向けTIPS

■ INDEX

01.ラベル*defineは存在しません  02.テキスト速度が反映されないけど?  03.セーブ数少なくない?  04.nsaアーカイブ作ろうとしても途中でエラーになるよ?  05.ムービーが再生できない  06.nsaアーカイブを複数使うときの注意  07.ボリューム設定変えても反映されないよ?  08.実行ファイルのアイコン変えられないの?  09.MIDI音楽を使う人へ  10.初心者向けdefine節テンプレ(部分)  11.define節全部のテンプレ案  12.個人的なお願い(よくみかける不満点)  13.色コード  14.表示できないカラーモード  15.バックログが重いよ?  16.PNGが半分真っ黒に!?  17.影抜き画像の作成について  18.Ctrlスキップの利点  19.よくあるQ&A  20.ボタンのサンプル  21.リリース時のアーカイブ化  22.エラーメッセージについて  23.デフォルトままでwin7だとどう見えるのか?  24.結局ver2.82とver2.95どっちがいいの?  25.存在しないoggを2〜3回bgmすると強制終了  26.ver296以降の変形サイズとフルスクリーン  27.msp命令の使い方例  28.文字列と文字列変数の連結について 

※ 注意
初めてNScripterに触れられる制作者さんは、先に習得への道しるべを参照して下さい。
本サイトではシステムカスタマイズを行っていない制作者向けのTIPSを初級者向けとして記述しています。
初級では、ある程度Nスクを理解された方を対象に、作品完成までに必要となりそうな内容を記載しています。
記述に対応するバージョン表記をしています(nscr2.82nscr2.95nscr2.96)H25時点の最新はver2.96です。


ラベルエラー ラベル*defineは存在しません……とか言われるんだけど

nscr2.82nscr2.95nscr2.96
ゲーム制作に向いてないから諦めればいいと思うよ。

マニュアル読めてない時点でゲーム制作は絶望的に向いてないと思いますが……。
旧マニュアルのindex.htmを開いてNScripterのしくみを参照するか、他サイトへどうぞ。

△page top

メニューで変えてもテキスト速度が反映されないけど?

nscr2.82nscr2.95nscr2.96
defaultspeed で設定した文字スピードは textspeeddefault を記述しておかないと反映されません。
メニューバーで高速・普通・低速とあるのに反映出来ないソフトは相当に格好悪いので、
一度setwindowした後は、テキスト表示までに必ずtextspeeddefaultを記述しておきましょう。
文字速度を固定するならば killmenu なりでメニュー項目を削っておきましょう。
(文字速度を固定する場合は瞬間表示である0指定を推奨)

△page top

セーブ数少なくない?

nscr2.82nscr2.95nscr2.96
デフォルト状態での限界はセーブ数が20個までです。
これを少ないと感じるのならば、システムカスタマイズを行えば解決できます。
カスタマイズを行うとセーブ数の限度はほぼないと思ってください。
(4002個までは確認しましたが、途中で止めたので限度はわかりません)
この機会に貴方もカスタマイズに足を踏み入れてみませんか?
トライ&エラーはやってみると面白いものです。

△page top

nsaアーカイブ作ろうとしても途中でエラーになるよ?

nscr2.82nscr2.95nscr2.96
nsaアーカイブ、ns2アーカイブ内では全角ファイル名が使えません。(つまり日本語ファイル名はダメ)
そのため、ゲームで使うフォルダやファイルの名前は必ず半角英数にしておきましょう。
(nsaarc.exe・NS2Arc.exe両者とも共通仕様です)

nscr2.95nscr2.96
NS2Arc.exeを使ってns2アーカイブを作成する際に、アーカイブ属性付きのフォルダがあると蹴られます。
winXPの場合、フォルダを右クリックしてプロパティを調べますと属性の欄に「アーカイブ」とありますので、
そこのチェックを切ってから再びNS2Arc.exeを使ってみてください。
(※ この情報はsenzogawaさんTwitterより)

△page top

ムービーが再生できない

nscr2.82nscr2.95nscr2.96
原因はいくつか考えられます。
・ゲームを実行しているPCにそのムービーに必要なコーデックが入っていないため。
 →対応:有名規格で作り直しましょう。
・nsa・ns2ファイル内に入れたムービーは読み込めないため。
 →対応:アーカイブに入れず、生データで出しておきましょう。
その他、ファイルが壊れている、スクリプト記述ミス、などの凡ミスが挙げられます。

不特定多数に頒布する作品では、メジャーな圧縮形式でムービーを制作するようにしましょう。
わざわざマイナー規格でムービーを作っておきながら、
サポートの代わりにユーザーさんにコーデックの導入を強いるのは少々疑問です。

(2013/02/12 追記)
経験上、MPEG-1が無難だと思います。
皆様DVD再生できるだろうしMPEG-2なら……と思って爆死しました。
それと、wmv形式も環境によってアウトです。
正直、私はこの手の話に詳しくないため、ムービーに詳しい方がいらっしゃいましたら教えてください。

△page top

nsaアーカイブを複数使うときの注意

nscr2.82
「arc.nsa」「arc1.nsa」「arc2.nsa」といったように連番で繋ぎましょう。
例えばこの例ですと、arc1.nsaがなければarc2.nsaがあっても認識されません。
ちなみにarc.nsaとarc4.nsaに同名ファイルがあった場合、「若い番号」のアーカイブ内容が優先されます。
また、同名生データがありますとそちらが最優先になります。

nscr2.95nscr2.96
上記は旧アーカイブ形式であるnsa形式での注意点です。
現行のns2アーカイブでは、たとえば「00.ns2」の次に「05.ns2」というような
飛び飛びのファイル名でも問題なく認識してくれます。(連番にした方が管理しやすいとは思いますが)
このようにns2の場合は連番にする必要はないのですが、かならず00.ns2を置く必要があります。
複数のns2アーカイブ利用時に同名ファイルがあった場合は、「後の番号」のアーカイブが優先されます。
また、同名生データがありますとそちらが最優先になります。

△page top

ボリューム設定変えても反映されないよ?

nscr2.82nscr2.95nscr2.96
とにかく音楽はbgm命令で、効果音&ボイスはdwave命令で再生するように統一しましょう。
そうすれば↓のダイアログで設定したボリュームの通りに再生されます。

(もし、効果音にwaveなどの古い命令を使っていた場合は音量が反映されません)

△page top

実行ファイルのアイコン変えられないの?

nscr2.82nscr2.95nscr2.96
KH IconRewrite98 または IconReset で検索すると幸せになれるかもしれません。
ちなみにXPでの画像反映は、名前を変えるかフォルダを移動するかすれば確認できます。
(Thumb.dbにサムネイルのキャッシュ情報が残ってるのでこうなります)

△page top

※重要※ MIDI音楽を使う人へ

(MIDIについては、この時代に容量を抑える必要性が落ちたこと、
(音源がユーザーさんのマシン依存となることから非推奨です。

nscr2.82
「アクセサリ」「エンターテイメント」で出せる「ボリュームコントロール」で音量を調整しても、
エンジン側では現在の音量は100%だと認識させたまま(デフォルト値)ですから、
別の曲を再生する度に音量がちゃんと100%に戻ってしまいます。
そこで、メニューバーに必ずdwavevolumeを入れておきましょう。
さらにユーザーさんに対して、音楽の音量調整はメニューのボリューム設定から行うように
必ずアナウンスしておいてください。
そうすれば、別の曲を再生する度に音量が100%に戻ることはなく、設定音量で鳴ってくれます。

ヘッドフォンでゲームする人が貴方に大きな怒りを抱くようになる前に必ずやっておきましょう。
dwavevolumeは次項の初心者向けテンプレのように、insertmenu部分に記述してください。

nscr2.95nscr2.96
nsogg2.dll利用時はMIDIファイルを鳴らすことはできません
利用しなければ鳴らすことは出来ますが、現在MIDIを使うメリットはありません。

△page top

初心者向けテンプレ


defaultspeed 0,25,10
kidokuskip
automode
automode_time 2000
resetmenu
insertmenu "終了(&X)",END
insertmenu "バージョン情報(&V)",VERSION
insertmenu "リセット(&R)",RESET
insertmenu "オート開始(&A)",AUTO
insertmenu "選択肢までスキップ(&S)",SKIP
insertmenu "各種設定(&C)",SUB
insertmenu "ボリューム設定(&V)",DWAVEVOLUME,1
insertmenu "スキップ設定(&S)",SUB,1
insertmenu "全て",KIDOKUOFF,2
insertmenu "既読のみ",KIDOKUON,2
insertmenu "フォント(&F)",FONT,1
insertmenu "テキスト速度(&T)",SUB,1
insertmenu "瞬間表示",TEXTSLOW,2
insertmenu "普通",TEXTMIDDLE,2
insertmenu "早い",TEXTFAST,2
insertmenu "画面(&W)",SUB,1
insertmenu "フルスクリーン",FULL,2
insertmenu "ウィンドウ",WINDOW,2
;(※一度setwindowした後はテキスト表示までに必ずtextspeeddefaultを記述すること)

nscr2.82nscr2.95nscr2.96
*define節に上記のコードを加えておけばデフォルト状態で操作性がアップすると思われます。
ほぼ使われないTEXTSLOWを「瞬間表示」という項目にしておくとユーザーさんに親切ですね。
automode_time命令の数値を変えると待ち時間を変更出来ます。
当然ですがkidokuskip命令を加えておかないと「スキップ設定」が有効にならず、全スキップのみです。

表示例

△page top

(リクエスト)define節テンプレ案

nscr2.82nscr2.95nscr2.96
いっそ*define節全部のテンプレートが欲しいという意見を頂きましたので、適当に一例を作ってみました。
非カスタマイズ状態でもある程度ユーザーさんに使いやすいものになっていると思います。

  0.txt ←リンク先を開いたのちコピー&ペーストしてください(更新日:08/12/04)

あくまで例ですので、ご利用の方はここから各自改変していってくださればと思います。
カーソル画像データは公式nscr.lzhの「デフォルトのカーソルファイル」の名前で指定しています。
画像を実行ファイルと同じ階層に置いてください。

△page top

個人的なお願い ―フリーソフトなどでよく見かける不満点―

nscr2.82nscr2.95nscr2.96

○ 揺らしエフェクト

縦揺れもしくは横揺れ命令は非常にウザイです。スキップで飛ばせないのがまず最悪。
出来ればやめてほしいし、使いたいなら可能な限り振幅を減らしてくれると有り難いです。
指定時間を短くした場合でも、低スペックだとガン無視してくれますから、殆ど意味が無かったりします。
また、quakexquakeyよりもquakeの方がずっと軽いので、そちらをお勧めします。

○ テキスト速度

テキスト速度が遅すぎる作品は、プレーする上で非常にツライものがあります。
遅くてプレイを投げ出したくなるゲームはあっても、早すぎてそう思うゲームはありません。
個人的には10〜15ミリ秒あたりが快適です。また、確実に瞬間表示を求めるユーザさんが存在します。

△page top

色コード

nscr2.82nscr2.95nscr2.96
普段の文字色の色指定や、文字スプライトの色指定は
#FFFFFFなどのカラーコードを使います。


lsp 1,":s/40,40,0;#FFFFFF"+"文字スプライト",100,100

使いたい色をフォトショやSAIなどの画像ソフトで確認後に、
RGB順に0〜255の数値を16進数に変換すれば、正確な色コードを求める事が出来ます。


例えば画像の色ならば
(R,G,B)=(174,136,184)=(AE,88,B8)なので、#AE88B8となります。

わざわざ手間を掛けずとも「HTML 色一覧」などの検索ワードで検索してみますと、
色々とカラーパレットが書かれたウェブサイトがヒットします。普段はそちらを利用すると便利です。
特定の色を正確に出したい場合には、上記のように変換しましょう。

16進数への変換が分からないなら、
(XP)ウィンドウズ標準の電卓を関数電卓表示で使うと早いです。
(Win7)ウィンドウズ標準の電卓をプログラマ表示で使うと早いです。

△page top

表示できないカラーモード

nscr2.82
グレースケール
  拡張子:JPG・PNG(nscrpng.spi利用)
  エラーは出ませんが、画像は表示できません。

インデックスカラー
  拡張子:BMP・PNG(nscrpng.spi利用)
  エラーは出ませんが、画像は表示できません。

CMYKモード
  拡張子:JPG
  エラーメッセージが出てNScripterが落ちます。画像はRGBモードで統一すること。

  完成直前に画像差し替えなどする時には注意。致命的ミスとなります。
  印刷用パッケ画などを作っているとCMYKで作業していることが多いので気をつけましょう。

nscr2.95nscr2.96
グレースケール(JPG,PNG)表示可能。インデックスカラー(BMP,PNG)表示可能。
しかし、CMYKモードはエラー落ちします。画像はRGBモードで統一すること。

△page top

マウスホイールでバックログを遡っていると重いけど、これは仕様なの?

使っている「nscr.exe」のバージョン情報を確認してみましょう。
ver2.75あたりではこういった障害報告が出ていましたが、
その直後のバージョンアップでとっくに解消されています。
最近のver2.95/ver2.96はもちろん、まだ広く使われているver2.82でも全く問題ありません。
これはユーザビリティに大きく関わりますので、公式からDLして差し替えておきましょう。

△page top

PNGが左に半分ずれて、右半分が真っ黒になるよ?

nscr2.82
nscrplg様の神プラグインnscrpng.spiを使うとPNGを利用できるようになります。
題のように、右半分が黒くなるのは、自動で影データ付きの画像だと判断されているからです。
画像の作成時に「透明部分」の情報が無くなるように作成しましょう。
photoshop6.0ならweb用保存→透明部分のチェックを解除後に保存することで、問題のないCGが作成できます。
他のツールでもその手の情報削るようにすれば大丈夫でしょう。
ちなみに640x480の画像ならば大体20kb程サイズが減ります。
スクリプト担当側で加工環境が無い時は、絵描きさんに上記の件を伝えて加工してもらいましょう。

PNGの利点は可逆圧縮、ライセンス不安なし、αチャンネル利用可能、等々あります。
BMPよりもサイズが小さくなるので、nsa化した後は逆にbmpより読み込みが軽くなります。
JPGのような劣化がないので特にエフェクト用のマスクに使う場合に有効です。
また、立ち絵やカットインなどの、影抜きがデリケートな素材に大変適しているのでオススメです。

△page top

ボタンなどの影抜き画像の作成について

nscr2.82nscr2.95nscr2.96
たまにこういうの↓を見かけますが、アンリエリアス部や滲みありの素材だと端に色が残る可能性があります。
1.1

考え方としては、右側のモノクロ部の黒の濃淡に応じて表示されるだけなので、
こういう↓画像の方が間違いないです。
2.2

というか1の画像を作る方が手間かかりません?

nscr2.95nscr2.96
現在は透過つきPNGが使えますのでマスク用の陰影CGを並べる必要はありません。
当時と比べて素材作成が非常に楽になっていますね。
BMP,JPG画像を使いたい場合は、やはり以前通りに並べる必要があります。
(透過png)png

△page top

Ctrlキースキップの利点

nscr2.82
スキップ中ではボイス・効果音が再生されませんが、Ctrlスキップでは通常通りに再生されます。


スクリプト例\
例えば存在しないhoge.oggを再生させようとします。¥
dwave 0,"voice\hoge.ogg"
通常のスキップでは読みに行かないのでエラー落ちしませんが、¥
CtrlキーでのスキップではロードエラーでNスクが落ちます。¥

作品リリース前の流しデバッグでは、ボイスや効果音の見落としを避けるため、
通常スキップではなくCtrlスキップでチェックすることをおすすめします。

似たような事例ですが、NScripterDS.dllに存在しないファイルを投げても何もしないだけで落ちません。
defsubでラッピングする際に、fileexist命令とmesbox命令でアナウンスさせた方が便利です。

nscr2.95nscr2.96
ver2.83以降の実行エンジンでは、存在しないBGMファイルを再生させようとしても
無視するだけで落ちなくなりました。作品配布を考えると非常にありがたい仕様改善です。
ただ、デバッグに限ってはfileexist命令とmesbox命令でアナウンスさせておいた方が確実です。

nscr2.82nscr2.95nscr2.96
ちなみに、mode_wave_demo命令を記述すれば、skip中でもボイス・効果音が再生されるようになります。
ループ効果音の開始命令が飛ばされなくなりますので、こちらの命令を入れておいた方が演出は確実です。

△page top

よくあるQ&A

nscr2.82nscr2.95nscr2.96

Q:windowchipやっても何か変なんだけどどうして?
A:挙動が妙なので、本サイトでは非推奨です。システムカスタマイズしてvsp命令で管理するのが確実です。

Q:立ち絵を表示する時に、テキストウィンドウが一時的に消えるのどうにかなんないの?
A:ちゃんとマニュアルを読みましょう。erasetextwindow命令の説明を読みましょう。

Q:autoの秒数変えたのに反映されんぞ。defaultfontでフォント変えたのに反映されんぞ。(以下略)
A:define節の内容変えたらenvdataを削除しましょう。

Q:何でホイール使えないの?
A:ちゃんとマニュアルを読みましょう。usewheel命令使いましょう。

Q:intlimit命令効かないんだけど。
A:例えば変数%100に0〜50という限度を設定したい場合は下のように書いてください。
  intlimit %100,0,50 ではなく intlimit 100,0,50 と書くのが正しいです。

Q:nega 2やったら落ちるんだけど
A:パラメータに2を与えるのは諦めましょう。nega 1を利用しましょう。

Q:動画の音量ってどうやって調整すんの?
A:movieのボリュームはbgmvolと連動しています。
  (プラグインを噛ませた再生の場合は当該プラグインのreadme等を参照してください)

Q:スプライトが欠けて表示されるんだけどバグってんのこれ?
A:スプライトのデフォルト表示形式はleftupです。leftupでは左上にある色を透過します。
  用途に合わせてちゃんとタグを指定することで解決します。
  透過させたくないならばファイル名の前に:c;を指定します。(例:lsp 1,":c;sample.bmp",0,0
  (タグに関しては旧マニュアルの「グラフィックファイルの説明」を参照してください)

Q:prnum命令がなんか変じゃね?
A:公式の[良くあるご質問.txt]で利用しないようアナウンスされています。
  代わりに文字列スプライトで表示します。3桁制限もありませんからこちらの方が便利です。
  (例:文字列スプライト → lsp 1,":s/20,40,0;#FFFFFF"+"987654",100,100

Q:変な文字画面に出てきて「構文エラー」とかで落ちるんだけどバグ?
A:命令文で全角スペースを使った可能性が高いです。その場合は半角スペースに正しく打ち直してください。
  表示用のテキストでは全角スペースを、命令文では半角スペースを使うのがルールです。

Q:テキストウインドウ変更でシナリオのログが消えるとか終わってね?
A:setwindowではなくsetwindow3命令を使いましょう。ログはシスカマして自作するだけです。

△page top

ボタンのサンプル

nscr2.95nscr2.96
こちらのサンプルは、サイトにいただきました質問への返答時に作成したものです。
サンプルスクリプトは次の内容となります。
「ショップを選択して入店、一回入って出たらそのショップには入れないようにする」

  btn_sample.zip ←右クリックして保存を選んでください

簡単なスクリプトですが、必要な方は参考にしてみてください。(新ボタン利用のためver2.93以降対応)

△page top

作品リリースの際のアーカイブ化(リクエスト)

nscr2.95nscr2.96

フォルダ[dll]
フォルダ[movie]
フォルダ[savedata]
00.ns2
nscr.exe
nscript.dat
readme.txt

大抵のNScripter製ゲームの構成はこんな感じでしょうか?
質問があったので、ここで 00.ns2 と nscript.dat の作り方を示しておきます。
( 動画ファイルを使わないならば、フォルダ[movie]は不要です。
( savedirを使わないならば、フォルダ[savedata]は不要です。

step1 アーカイブを作る


まず、適当に[0]や[1]などと名前を付けたフォルダを2つ新規作成します。
一時的に利用するだけなので、場所はデスクトップなど何処でも構いません。

00.ns2用の準備
ゲームを作っていた作業フォルダから、画像ファイルや音楽ファイルをフォルダごと、
今作ったフォルダ[0]にコピーしてください。
( luaを利用している方は、system.luaファイルもフォルダ[0]にコピーしてください。
( その他ライブラリ分けしてあるluaファイルがある場合も同様に複製してください。

nscript.dat用の準備
ゲームを作っていた作業フォルダから、00.txt〜99.txtをフォルダ[1]にコピーしてください。


下準備が終わりましたので、実際に 00.ns2 を作ってみます。
NScripterを最初ダウンロードした時のファイルから[ツール]フォルダを開きます。
そこにある NS2Arc.exe を実行します。
このツールで画像用アーカイブであるns2ファイルを作成することができます。

このように、コマンドプロンプトの黒画面と、フォルダの参照の2つのウィンドウが表示されます。
「フォルダの参照」で、先ほど用意した[0]フォルダを選択してみてください。
もしデスクトップに作っているならば、そのまま下の方にスクロールしていけばあるはずです。
選択して「OK」を押せばあとは勝手にツール側で00.ns2を作ってくれます。

保存先を[デスクトップ]にして実行するとこんな感じ。
この画面でEnterキー押せばツールを終了します。
あとは、デスクトップに 00.ns2 があるか確認してみてください。

次は nscript.dat を作ります。これも00.ns2と同様の手順を取ります。
NScripterを最初ダウンロードした時のファイルから[ツール]フォルダを開きます。
今回はそこにある nscmake.exe の方を実行してください。
このツールでシナリオ用アーカイブであるnscript.datファイルを作成することができます。

「フォルダの参照」で、今度は[1]の方のフォルダを選択してOKを押し、
こちらも同様に、保存先をデスクトップにしてください。
デスクトップに nscript.dat が生成されているはずです。

(※利用した[0]と[1]のフォルダはもう要らないので削除してしまって大丈夫です)

step2 リリース用にまとめる

まず、デスクトップに[ゲーム名]でフォルダを新規作成します。出来れば半角英文で。
そこに、先ほど作った 00.ns2 と nscript.dat を入れてください。
次に、ゲームを作っていた作業フォルダから、
readme.txt や nscr.exe をその[ゲーム名]フォルダにコピーします。
同じように、nslua.dll,nsogg2.dll,nspng.dllなどが入った[dll]フォルダもコピーします。
[savedata]や[movie]のフォルダがあればそれもまたコピーしておきます。
これで実際に頒布するための構成が整いました。

step3 動作チェック

nscr.exeを実行して一通り動作するか確認してください。
動かないようならば、何処かで失敗していますので最初からやりなおしてください。
(※*definensa命令を書き忘れる凡ミスにご注意ください)
問題なく動いたならば貴方のゲームは完成です。おめでとうございます。
最後に、テストプレーで自動生成されたenvdataやその他セーブデータ類を削っておきましょう。

あとは、そのままzip圧縮するもよし、インストーラーを作ってCD-Rに焼き付けるもよし、
頒布用途に合わせてご自由にどうぞ。

(その他)

Q:アーカイブを作るときに途中でエラーが発生するよ?
A:NScripterは日本語ファイル名は使えません。
  半角英数名に変えるか、不要ファイルなら削ってからツールにかけてください。

Q:セーブできないってクレーム来るよ?
A:圧縮・解凍ソフトによっては空っぽのフォルダが勝手に消去されてしまうことがあります。
  [savedata]フォルダが必要な場合は、中にダミーのtxtファイルを入れて対処しましょう。

△page top

エラーメッセージについて

NScripterについて何か行き詰まった時に各種掲示板で質問をする機会があるかもしれません。
そういった時にエラーメッセージが添付されていないことがままあります。
回答側にとってはスクリプトミスのアタリを付ける意味でかなり重要な情報なので、
エラー落ちでの質問の際には出来る限り付記しておきましょう。

さて、このエラーメッセージをわざわざ打ち込むのが面倒だという方がいるかもしれませんが、
実はWindowsの基本機能で簡単に対処できます。
エラーメッセージが出ている時に「Ctrl+C」でコピーすると、クリップボードに内容をコピーできます。
あとは「メモ帳」などにペーストすると下のように出ます。

---------------------------
エラー
---------------------------
スクリプトファイルが見つかりません。

00.txt line:1

---------------------------
OK   
---------------------------

△page top

デフォルトままでwin7だとどう見えるのか?

nscr2.82nscr2.95nscr2.96

何もしていない状態では上記スクリーンショットのようにメニューが二段になってしまいます。
特に弄る気も無く、640x480で充分な場合でも「CD-DA」項目を削る(killmenu 7)などして、
最低限見た目を整えておくとよいのではないでしょうか?


背景に表示した画像はこちらです。

△page top

結局ver2.82とver2.95以降どっちがいいの?

全面的にver2.95以降推しです。なんといっても色んな部分で非常に楽になっているのが大きいです。
PNG・OGG利用の敷居がdll置くだけという簡潔さなど、初心者の方には間違いなくこちらの方が楽ですね。
ある程度以上使いこなせる方も、Luaが利用出来るという大きな発展がありますので視界が全然違います。
その他諸々恩恵ありますので、既に2.82で見事に組んでる場合を除き、ver2.95以降への切替を推奨します。

現在もver2.82利用の方は、NScripterDS.dllとnscrpng.spiの二つのDLLでシステムを固めてあり、
今更切り替えたくないということが使い続けている主要因ではないかなと想像しています。
しかしながらver2.95以降でも、アーカイブにnsaを利用すれば今までと同じようにこの二つのDLLが使えます。
エンジン更新に伴って便利な機能も増えていますし、基本的には更新を強くオススメします。

◎ PNGプラグインについて

一応、大前提を再確認しておきますね。
nscrpng.spiはnsaアーカイブからしかファイルを読めません。
nspng.dllはns2アーカイブからしかファイルを読めません。

◎ NScripterのバージョン確認方法について

versionstrを設定していないデフォルト状態では、
メニューバーの[バージョン情報]をクリックするだけで確認できます。

---------------------------
バージョン情報
---------------------------
NScripter Version 2.95
プログラム制作 高橋直樹
---------------------------
OK   
---------------------------

getversionを使っても確認できます。


getversion %0:itoa $0,%0:mesbox $0,"現在のバージョン"

◎ 各バージョンについて(2013/02/14 追記)

ver2.82:現在絶版のオフィシャルガイド当時のバージョンです。ver2.93以前では長期安定版でした。
ver2.95:ver2.93を境にLua導入や命令系など大きく仕様変化のあったNScripterの安定版です。
ver2.96:ついにウィンドウサイズを自由に設定出来るようになった最新版です。
基本的には最新版の利用をオススメします。

△page top

存在しないoggを2〜3回bgmすると強制終了

nscr2.95nscr2.96
新しい隠れ仕様が見つかったので初級TIPSに記しておきます。
luilui様、ご協力誠にありがとうございました。
まずは再現コード


;※nsogg2.dllを利用した状態であること
*define
bgmfadeout 1
game
*start
bgm "bgm¥noting.ogg"    ;※noting.oggは存在しないファイルであること
bgm "bgm¥noting.ogg"
bgm "bgm¥noting.ogg"
mesbox "上の三つ目のbgmで強制終了しますので","ここに辿り着けません"
end

nsogg2.dll利用状態では、存在しないファイルをbgm指定してもエラー落ちしない仕様になっています。
しかしながら、bgmfadeout命令に1以上の値を与えていた場合、
存在しないoggファイルを累計3回bgm命令に投げると、エラーメッセージなしの強制終了となります。
これは非常に原因を特定しにくい動作だと思いますのでご注意ください。


;※nsogg2.dllを利用した状態であること
*define
bgmfadeout 1000
game
*start
bgm "existmusic.ogg"    ;※existmusic.oggは存在するファイル
bgm "bgm¥noting.ogg"    ;※noting.oggは存在しないファイル
bgm "bgm¥noting.ogg"
mesbox "このケースだと二つ目の非実在oggで強制終了します","ここに辿り着けません"
end

このように、2回の非実在oggで落ちるケースも存在します。

この動作への基本的な対策としては……
type1.普通に存在するファイルをbgm命令で指定するだけで大丈夫です。
type2.または、↓のようにbgm命令をdefsub上書きしてもよいかと思います。


;//define節追記分
defsub bgm

;//実行節追記分
*bgm
        getparam $0
        split $0,")",$1,$2;             ※ループ復帰点対策
        if $2 == "" mov $2,$1:mov $1,"";※ループ復帰点がない場合対策
        fileexist %0,$2;                実在ファイルかチェック
        if %0 == 0 mesbox $0,"file not found":return;非実在ファイルなので警告を出して帰る
        if $1 != "" mov $1,$1+")";      ※ループ復帰点対策
        _bgm $1+$2;                     再生
return
(%0 $0 $1 $2 を利用しています。バッティングする場合は変更してください)

これで非実在ファイルを投げた場合に警告を出せる上、落とさずにテストプレイを続行できます。

ちなみに、mp3の場合はnsogg2.dll経由になりませんのでデフォで明示的にエラーメッセージが出ます。

---------------------------
ロードエラー
---------------------------
ファイルnoting.mp3を開けません。

0.txt line:5

|game
|*start
>bgm "noting.mp3"
---------------------------
OK   
---------------------------

ただし、mp3は予期せぬ環境エラーの原因になりますので、ogg利用を推奨します。

nscr2.96 2012,09,17 △page top

ver296以降の変形サイズとフルスクリーン

nscr2.96
※1280x1024アナログモニタで確認した動作です。


;$V2000G1000S1280,720L10000

ver2.95までは00.txtの1行目に;mode800と記述して800x600サイズのゲームウィンドウを設定できました。
ver2.96以降は上記の例のような記述で自由にウィンドウサイズを設定することができるようになりました。
ターゲットによって変わりますが、恐らく現時点では1366x768のノートPCのシェアを考えても、
XGAサイズの1024x768だったり、1280x720あたりのHD720サイズ指定が中心かと思われます。
16:9サイズが実現出来るだけでガラっと雰囲気が変わってきますね。

さて、まずは1280x1024アナログモニタに1280x720のゲームでのお話です。「フルスクリーン」を行うと、
モニタ側で調整のできない古いアナログモニタだと横幅が縮んで表示されてしまいます。
仕様なので、諦めて「ウィンドウ」でプレーしてもらうか、モニタを買い換えて貰うしかないですね。

そこまでならば、見た目は悪いもののプレーをして貰うことはできるのですが、


;$V2000G1000S700,700L10000

上記の正方形のような設定をした状況で「フルスクリーン」を行ってしまうと、全画面になり切れず、
横に縮みすらせず、Win-Fullを行ったり来たりするチラつきを延々と繰り返し、操作不能になります。
メモリが足りていないマシンなどでは、ブラックアウトしたのちに画面が固まったりも。
これは再起動またはCtrl+Shift+Escで直接アプリを落とすと復帰できました。
次に、この操作不能動作への対策です。


;$V2000G1000S700,700L10000
*define
deletemenu
game

このようにdeletemenu命令でNScripterからWindowsのメニューバーを無くしましょう。
これによってAlt+Enterなどによる最大化を行っても操作不能バグが発生しません。
変形サイズでゲームを配布・頒布する場合には、必ずdeletemenuを入れておきましょう。

nscr2.96 2012,12,13 △page top

msp命令の使い方例

nscr2.82nscr2.95nscr2.96
Twitterにてとある方とやり取りした際に作成したサンプルをこちらにも公開いたします。
こちらのサンプルコードから、msp命令の基本的な使い方が判るかと思います。

collage_sel_test.zip (←右クリックして保存)

基本的にはfor nextwaitprint 1とを組み合わせて使い、
最後はamspで無理矢理帳尻を合わせるという形になると思います。
サンプルにコメントを残しましたので参考まで。

2013,02,11 △page top

文字列と文字列変数の連結について

まずは下の矩形スプライトを表示する命令を見てください。矩形は「くけい」と読みます。
lsp 15,":c;>100,20,#FFFFFF",10,10:print 1
これは、100x20ピクセル範囲を白で塗りつぶした長方形を(10,10)位置に表示させる命令です。

注目して欲しい部分はダブルクオーテーションで囲まれた中身。
":c;>100,20,#FFFFFF"
ちょうど↑の部分ですね。ここが文字列の範囲です。
NScripterは文字列の演算が出来ますので、下記のように書いても同じように動作します。 ":c;>"+"100"+","+"20"+","+#FFFFFF"

ここまで来ればお気づきだと思いますが、100や20の部分を文字列変数にすれば
毎回、好きな大きさの長方形を作ることができます。#FFFFFF部分なら色を変更できます。


mov %0,100
mov %1,20
itoa $0,%0;itoaは数値を文字列に変える命令 → 数値変数%0の中身100を"100"に変換して$0に代入
itoa $1,%1;itoaは数値を文字列に変える命令 → 数値変数%1の中身20を"20"に変換して$1に代入
lsp 15,":c;>"+$0+","+$1+",#FFFFFF",10,10
print 1

lspに限らず、どのNScripter命令でも文字列部分はこのように柔軟な形で利用することができます。

ただ、最初のうちに間違いやすいのは↓このように書いてしまうこと。これだとエラーです。
lsp 15,":c;>"+"$0"+","+"$1"+",#FFFFFF",10,10
何が違うかと言うと$0という変数を"$0"と書いてしまっていることです。

$0 だけで変数の中身の "100" と同じ情報になっていますが、 それを更に""で囲ってしまうと
今度は「変数」ではなく"$0"という「文字列」になってしまいます。それで記述エラーになるわけです。


;ちなみにこれも上のサンプルと同じ動作をします。mov命令でも同じように連結ができます。
mov %0,100:itoa $0,%0
mov %1,20:itoa $1,%1
mov $3,":c;>"+$0+","+$1+",#FFFFFF"
lsp 15,$3,10,10
print 1

※矩形スプライトはver.2.93から追加された機能です。
( 矩形スプライトは長方形を塗りつぶす命令ですからbar命令の代わりに使えます。
( 最上部固定のbar命令と違い、スプライトとして表示階層を自由に設定できるため便利です。

2013,02,12 △page top