このページはCOOL ONLINE終了に伴いO-Show様の許可を得て作成したBinary Heavenのミラーサイトです
[TOP] [Profile] [NScripter] [BBS] [Links]
中級編 No.10
数値ラベル
■概要■
数値を簡単に表示させることができる「数値ラベル」について解説します。

SLG等でのパラメーターなどを表現するのに向いています。


使用命令:

「prnum」(NScr暫定命令表.txt)
「prnumclear」(NScr暫定命令表.txt)

「mode_saya」(NScr暫定命令表.txt)
■パラメータ表現

この項で解説する内容は、さほど難しいことではありません。

使われる場面も限られてくると思いますので、「こんなものもあるのか」という感じで気楽に聞いてください。



育成ゲームなどのいわゆるシミュレーションゲームでは、「パラメーター」という概念が用いられます。

ほとんどの場合、これを画面上に表示しておきたい場面があると思います。


数字変数を表示するにはテキストに混ぜてそのまま「%0」などと書くことで表示することができますが、これではテキストなので流れていってしまいます。

常に画面上に表示しておくにはスプライトがベストだと思われますが、自分で用意した数字のスプライトを表示するにしても、文字列スプライトを使うにしても、複雑な処理が必要・または不可能なのはお分かりいただけると思います。

文字列スプライトでは文字変数しか表示できませんし、「itoa」命令(NScr更新0204.txt)を使って数値を文字列に変換すると、半角文字になってしまい都合が悪いですからね。


そこで、NScripterでは数字を表示する専用の命令が用意されています。

それが「prnum」命令です。

この「prnum」で表示される数字を、スプライトなどとは区別して「数値ラベル」と呼びます。


この数値ラベルは、スプライトとよく似ていますが別物として扱われます。

位置関係としては立ち絵とスプライトより上、テキストウィンドウより下です。

(「windowback」命令時にはスプライトと同じくテキストウィンドウの上に来ます。「humanz」命令では、設定に関係なく常に立ち絵より上です。)



■数値ラベルを表示するスクリプト

数値ラベルを表示するスクリプトを見てみましょう。



	prnum 8,123,200,250,26,26,#FF0000

	print 1


数字を一つずつ説明します。


まず一番左の「8」という数字は、「数値ラベル番号」です。

要するに、スプライト番号みたいなものです。

数値ラベル番号には「0〜99」の番号を使うことができます。

ちなみに、数値ラベル同士の位置関係は番号が大きい方が上に来ます。

これはスプライトの「小さい方が上に来る」の逆となっています。


次の「123」という数字、これは数値ラベルとして実際に画面に表示する数字です。

通常ならば、ここに数字変数を指定するわけですね。


次の「200」と「250」という数字は、数値ラベルを表示するX・Y座標です。

これはスプライトなどと同じく、その位置が数値ラベルの左上の座標になります。


その次の二つの「26」という数字は、数値ラベルの一文字の幅・高さです。

普通は幅と高さを等しくします。

幅と高さが違いすぎると表示が変になってしまうので、おそらくそういう仕様になっているのだと思います。


最後の「#FF0000」が、数値ラベルの色です。16進数で指定します。


なお、数値ラベルは「print」を行わないと画面に表示されません。



■数値ラベルを消去するスクリプト

次は数値ラベルを消去するスクリプトです。



	prnumclear

	print 1


「prnumclear」というのが、全ての数値ラベルを消去する命令です。

これも「print」を必要とします。


現在の所、数値ラベルを個別に消去する命令はないようです。

また、数値ラベルにはスプライトのような表示・非表示という状態も存在しません。

あくまで表示するか消してしまうかだけです。



■数値ラベルが関係する命令

上では「数値ラベルには表示・非表示という状態は存在しない」と言いましたが、実際には非表示状態になることがあります。

どういうことかと言うと、「mode_saya」という命令があるせいです。



*define

	mode_saya

	game

*start


この命令は定義ブロックに記述します。


この命令を記述すると、NScripterは以下の動作をするようになります。


・テキストウィンドウが消えているとき、表示状態に関わらず、スプライトの0〜9番が非表示になる。

・テキストウィンドウが消えているとき、全ての数値ラベルが非表示になる。


これは、シミュレーションゲームを作る時に役に立ちます。

パラメーターを表示するためのウィンドウをスプライトで作ったりしている場合、テキストウィンドウと連携しているように見せることができるからです。


下のスクリプトを実行してみると、実際に消えていることがわかります。



*define

	mode_saya

	rmenu "テキストウィンドウ消去",windowerase

	game

*start

	lsp 5,":s#FFFFFFスプライト5番",100,100
	lsp 15,":s#FFFFFFスプライト15番",100,150

	prnum 8,123,200,250,26,26,#FF0000

	print 1


	右クリックメニューで、テキストウィンドウを消去してみてください。\


指示通り、右クリックメニューでテキストウィンドウを消去してみてください。

(定義ブロックの「rmenu」命令は、右クリックメニューを設定する命令です)



また、「mode_saya」では「バー」というものも同時に非表示になります。

「バー」については、「中級編 No.11 バー」を参考にしてみてください。



■数値ラベルの注意点

数値ラベルの現在の仕様では、数字を三桁までしか表示することができません。

「999」までが限界です。

四桁以上を表示しようとしても、上三桁までで切られてしまいます。
(「1000」だったら「100」になります)
■総括■
パラメータ表現には、次で説明する「バー」もあわせて使うと効果的です。


次へ   前へ   NScripterのIndexへ