【StoneStoryRPG/Stonescript】8-1.ネイティブ関数(環境音・色・描画・整数)
カスタム関数は独自に定義する関数でしたが、ネイティブ関数はStoneScriptにデフォルトで定義されている関数です。宣言を必要とせず、コマンドと同じような感覚で使用することができます。
環境音
ambient (環境音ID一括取得)
再生中の環境音(オーディオ設定の「雰囲気」に該当する音)のIDをコンマ区切りの文字列で返します。デフォルトでステージに流れている環境音も取得します。
>`0,0,再生中の環境音 = @ambient@
画面上の座標(0,0)に「再生中の環境音 = [ambient]」と表示する
ambient.Add([環境音ID]) (環境音追加)
指定されたIDの環境音を流します。環境音は4つまで同時に鳴らせます。それ以上追加された場合は、古い順に削除されます。
?loc.begin
ambient.Add(ambient_rocky)
もし探索が開始したら?
┗ ambient_rockyという名前のambientをAddする
ambient.Stop() (環境音全停止)
?time = 3
ambient.Stop()
ambient.Add(ambient_mines)
もしステージに入って3フレーム経過したら?
┣ ambientをStopさせる
┗ ambient_minesという名前のambientをAddする
色
color.FromRGB([r値],[g値],[b値]) (RGBをカラーコードに変換)
RGB(0~255の値が3つ)をカラーコードに変換した文字列を返します。
var c = color.FromRGB(255, 0, 128)
>`0,0,@c@, @c@
変数cを定義し、(R:255, G:0, B:128)に対応するcolorをRGBからカラーコードに変換したものを格納する
画面上の座標(0,0)に[c]の色で[c]を表示する
color.ToRGB([カラーコード]) (カラーコードをRGBに変換)
カラーコードをRGBに変換し、3つの数の配列として返します。
var c = color.Random()
var rgb = color.ToRGB(c)
var r = rgb[0]
var g = rgb[1]
var b = rgb[2]
>`0,0,@c@, @c@ \n @r@ \n @g@ \n @b@
変数cを宣言し、Randomなcolorを格納する
変数rgbを宣言し、[c]に対応するcolorをカラーコードからRGB
に変換したものを格納する
変数rを宣言し、[rgb]の0番目の値を格納する。※
変数gを宣言し、[rgb]の1番目の値を格納する。
変数bを宣言し、[rgb]の2番目の値を格納する。
画面上の座標(0,0)に[c]の色で[c]を表示し、次行以降に[r][b][g]の値を表示する
プログラミングの世界では、配列の最初の要素は「0」番目として扱います。
color.Lerp([カラーコード],[カラーコード],[割合]) (色の線形補間)
割合0では1番目の色、割合1では2番目の色になるように、指定した割合でのカラーコードを返します。
var c1 = "#ff4400"
var c2 = "#8888ff"
var t = 0.5
var c
t = math.sin(time*0.1) / 2 + 0.5
c = color.Lerp(c1, c2, t)
>`0,1,@c@,@c@\n ██████
変数c1を宣言し、「#ff4400」を格納する
変数c2を宣言し、「#8888ff」を格納する
変数tを宣言し、0.5を格納する
変数cを宣言する
tにsin(ステージ経過時間× 0.1) ÷2 +0.5の値を格納する ※
cに[c1]と[c2]のLerp(線形補完)の割合[t]に相当するcolorを格納する
color.Random() (ランダムカラー)
ランダムな色コードを返します。常に実行する場合は、色がわちゃわちゃ変わります。
var c
c = color.Random()
>`0,0,@c@,@c@\n ██████
描画
draw.Bg([x座標], [y座標], [カラーコード]) (指定マスの背景色変更)
指定された座標の文字の背景色を変更します。
draw.Bg(5, 4, #red)
画面上の座標(5,4)のBg(Background)をredにdrawする
draw.Bg([x座標], [y座標], [カラーコード], [幅], [高さ]) (指定範囲の背景色変更)
指定された座標から指定された幅と高さの中にある全ての文字の背景色を変更します。
draw.Bg(5, 4, #cyan, 10, 6)
画面上の座標(5,4)から幅10高さ6の範囲のBgをcyanにdrawする
draw.Box([x座標], [y座標], [幅], [高さ], [カラーコード], [スタイル番号]) (指定範囲に四角描画)
色付き枠の黒い四角を描画します。奥から順に、ステージ→四角→文字の順で重ねて描画されます。スタイル番号は0~10番の11種類あります。
スタイル番号
0:枠なし(=真っ黒)
1:細枠
2:頂点が点
3:二重枠
4:下だけ二重
5:下と左だけ二重
6:下と左だけ二重
7:太枠
8:太枠 (※7と違いが判らなかった)
9:上下のみ
10:全部枠線(=全面着色)
//キーボードの左右入力で枠線のデザインを切り替える
var style = 1
?key = leftBegin
style--
?key = rightBegin
style++
draw.Box(10, 5, 30, 15, #333333, style)
変数styleを宣言し、1を格納する
もしkeyがleftBeginなら?
┗styleの値を1減らす
もしkeyがrightBeginなら?
┗styleの値を1増やす
画面上の座標(10,5)から幅30高さ15の範囲に#333333で[style]番の枠線デザインのBoxをdrawする
備考:スタイル番号に0~10以外を設定した場合、絶対値を11で割った余りと同じスタイル番号とみなされます。例:15→4、-1→1
draw.Clear() (描画全消去)
ステージと四角の描画を消去します。表示させている文字は消えません。普通に呼び出すと文字以外真っ暗になります。
draw.GetSymbol([x座標], [y座標]) (指定マスの文字取得)
指定された座標の文字を返します。
//キーボード上下左右入力で取得する文字の座標を変える
var s
var x = 20
var y = 10
var drawX
?key=leftBegin
x--
?key=rightBegin
x++
?key=upBegin
y--
?key=downBegin
y++
s = draw.GetSymbol(x, y)
>`0,1,文字 = @s@
drawX = x - 1
>`@drawX@,@y@,[#]
変数sを宣言する
変数xを宣言し20を格納する
変数yを宣言し10を格納する(デフォルトで取得する座標)
変数drawXを宣言する
~ (キー入力でxとyを増減させる)
sに座標(x,y)にdrawされたSymbolをGetして格納する
画面上の座標(0,1)に「文字 = [s]」と表示する
drawXに[x]-1の値を格納する
画面上の座標([drawX],[y])に「[ ]」と表示する ※
ここではどの文字を取得しているかを[]で挟んで示しています。
draw.Player() (プレーヤー再描画)
draw.Clear()した後にこれを呼ぶと、プレーヤーだけを表示することができます。
整数
int.Parse([文字列]) (文字列を整数値に変換)
文字列として表記された数字を、数値(整数)に変換して返します。数字ではない文字列を変換しようとするとエラーを吐きます。
補足:プログラミングの世界には、変数の「型」というものが存在します。例えば、int型(整数)、string型(文字列)、var型(自動)などがあります。StoneScriptにおいては、そこまで強く意識する必要はないと思います。