LIGHT.VN関数(Ver13.2.1)

Last-modified: 2022-07-12 (火) 00:19:30


LIGHT.VN関数とは

Ver12.4.0から、エンジンの提供する関数(以降「LVN関数」と呼ぶことにします)が追加されました。
従来もコマンド「スクリプト」でユーザーが設定する関数(スクリプト関数)はありました(項目参照:関数)。
LVN関数も引数を渡す点では共通していますが、以下のような特徴があります。

  • スクリプトの任意の位置に記述できます。
  • 基本的には設定項目で用います。
  • 引数を渡すと、戻り値と呼ばれるひとつの結果(値、文字列、真偽)を返します。

使い方

移動 obj01 (lvRandom(50, 100)) 150 500

各種コマンドの設定項目への代入値として記述するのが、LVN関数の主な用途です。
設定項目に関数名を括弧で囲んで記述し、直後の括弧内に引数を記述します。

  • 括弧で囲むことで変数の代入と同様の働きをします(項目参照:代入)。
    したがって、戻り値が数値ならばその値がそのまま代入され、文字列ならば「"」で囲んだものが代入されます。
    また、波括弧で二重に囲めば、数値と文字列のどちらもそのまま代入されるほか、テキストへの代入が可能になります。
  • 複数の引数を記述する際には、引数の末尾に「,」と半角スペースを加えます
  • 引数に文字列を用いる場合には、設定項目のテキストと同様に「"」で囲んで記述します
    囲まない場合にはその文字列が変数名として扱われるため、エラーの原因になります。
    ただし、セーブスロットを指定する場合には「"」で囲まない文字列を記述します
  • 引数には変数を用いることができます。
    変数名を記述すれば、その箇所の引数に変数値が代入されます。
    ただし、引数の型と変数の型とが一致している必要があります


関数紹介

lvRandom

lvRandom(0, 20)
  • 引数:数値(最小値)、数値(最大値)
    戻り値:数値
  • ひとつめの数値を最小値、ふたつめの数値を最大値とする範囲の乱数を返します。

lvMin

lvMin(7, 20, 16, 1)
  • 引数:数値(複数個)
    戻り値:数値
  • 引数の数値のうち、最も小さい値を返します。
    上記の例では、「1」が戻り値となります。

lvMax

lvMax(7, 20, 16, 1)
  • 引数:数値(複数個)
    戻り値:数値
  • 引数の数値のうち、最も大きい値を返します。
    上記の例では、「20」が戻り値となります。

lvRandomName

lvRandomName("lady_")
  • 引数:文字列(個体名接頭辞)
    戻り値:文字列
  • 指定した文字列を接頭辞に持つ個体名を生成します。
    生成される個体名は存在する個体名と重複しないものになります。

lvExistsObj

lvExistsObj("ch15")
  • 引数:文字列(個体名)
    戻り値:真偽
  • 指定した文字列を個体名に持つ個体が存在していれば「true」、存在しなければ「false」を返します。

lvTimeNow

lvTimeNow("%y-%m-%d")
  • 引数:文字列(時間形式)
    戻り値:文字列
  • 文字列の記述が指定する日時形式の文字列を、その瞬間の日時の数値を込めて文字列で返します。
    日時形式の参考:https://en.cppreference.com/w/c/chrono/strftime
    • 年・月・日は「%y」・「%m」・「%d」、時・分・秒は「%H」・「%M」・「%S」と記述します。

lvSubstring

lvSubstring("忙しいいそがしい", 0, 3)
  • 引数:文字列、数値(始点文字位置)、数値(文字数)
    戻り値:文字列
  • 個々の文字に左端を0とする番号を割り振って、指定した番号から指定した個数の文字を抜き出して新たな文字列として返します。
    上記の例では、「"忙しい"」が戻り値となります。

lvRemoveSuffix

lvRemoveSuffix("おおいそのいそいそしたひと", 6)
  • 引数:文字列、数値(削除文字数)
    戻り値:文字列
  • 指定した文字数を末尾から削除してできた新たな文字列を返します。
    上記の例では、「"おおいそのいそ"」が戻り値となります。

lvPositionCenterX

lvPositionCenterX("theGame")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体の描画中心のx座標(左右方向の座標)を返します。
    個体が存在しない、あるいは位置を持たない個体(音声等)である場合にはエラーとなります。

lvPositionCenterY

lvPositionCenterY("theGame")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体の描画中心のy座標(上下方向の座標)を返します。
    個体が存在しない、あるいは位置を持たない個体(音声等)である場合にはエラーとなります。

lvPositionCenterZ

lvPositionCenterZ("theGame")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体の描画中心のz座標(前後方向の座標)を返します。
    個体が存在しない、あるいは位置を持たない個体(音声等)である場合にはエラーとなります。

lvPositionDeltaX

lvPositionDeltaX("target01")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体の前フレームとのx座標(左右方向の座標)の差を返します。
    個体が存在しない、あるいは位置を持たない個体(音声等)である場合にはエラーとなります。

lvPositionDeltaY

lvPositionDeltaY("target01")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体の前フレームとのY座標(上下方向の座標)の差を返します。
    個体が存在しない、あるいは位置を持たない個体(音声等)である場合にはエラーとなります。

lvRotationX

lvRotationX("target01")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体のX軸回転角度を返します。
    個体が存在しない、あるいは位置を持たない個体(音声等)である場合にはエラーとなります。

lvRotationY

lvRotationY("target01")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体のY軸回転角度を返します。
    個体が存在しない、あるいは位置を持たない個体(音声等)である場合にはエラーとなります。

lvRotationZ

lvRotationZ("target01")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体のZ軸回転角度を返します。
    個体が存在しない、あるいは位置を持たない個体(音声等)である場合にはエラーとなります。

lvTileX

lvTileX("target01")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体の位置するタイルのx番号(左右方向の番号)を返します。
    個体が存在しない場合にはエラーとなります。

lvTileY

lvTileY("target01")
  • 引数:文字列(個体名)
    戻り値:数値
  • 指定した文字列を個体名に持つ個体の位置するタイルのy番号(上下方向の番号)を返します。
    個体が存在しない場合にはエラーとなります。

lvKeyFree

lvKeyFree("r.click")
  • 引数:文字列(キー名)
    戻り値:真偽
  • 指定した文字列がキー名であり、かつそのキーが押されていなければ「true」、押されていれば「false」を返します。
    存在しないキー名を記述した場合にはエラーとなります。

lvKeyDown

lvKeyDown("r.click")
  • 引数:文字列(キー名)
    戻り値:真偽
  • 指定した文字列がキー名であり、かつそのキーが押された瞬間に「true」、それ以外では「false」を返します。
    存在しないキー名を記述した場合にはエラーとなります。

lvKeyPressed

lvKeyPressed("r.click")
  • 引数:文字列(キー名)
    戻り値:真偽
  • 指定した文字列がキー名であり、かつそのキーが押されていれば「true」、押されていなければ「false」を返します。
    存在しないキー名を記述した場合にはエラーとなります。

lvRoundToInteger

lvRoundToInteger(24.71358)
  • 引数:数値(変数値が数値の変数名を含む)
    戻り値:数値
  • 指定した数値または変数名が持つ数値に最も近い整数値を返します。
    上記の例では「25」が返されます。

lvFloor

lvFloor(19.71358)
  • 引数:数値(変数値が数値の変数名を含む)
    戻り値:数値
  • 指定した数値または変数名が持つ数値の整数部分を数値として返します。
    上記の例では「19」が返されます。

lvNumberToString

lvNumberToString(48)
lvNumberToString(1354.551, 0)
  • 引数:数値(変数値が数値の変数名を含む)、数値(小数点以下の桁数を指定、省略可)
    戻り値:数値
  • 指定した数値または変数名が持つ数値を文字列に変換して返します。
  • 小数点以下の桁をどこまで含むかは、引数に数値を加えて指定します。
    「0」は整数となります。上記の例の2つめでは「"1354"」が返されます。

lvCopyDeep

lvCopyDeep(list1)
  • 引数:変数名
    戻り値:変数値(指定した変数と同型)
  • 指定した変数名が持つ変数値を返します。
  • 任意の時点での変数値を別の変数に保存する際に用います。
    変数値がリストやハッシュマップであれば、保存先の別の変数には同じ要素を持つリストやハッシュマップが構築されます。
  • 変数による同値コピー(a=b)では、左辺の変数が変動すれば右辺の変数も変動します(bの参照がaの参照になる)。
    それに対して、このLVN関数によるコピーは、適用時点での変数値をコピーします。
    したがって、それ以降に複製元の変数が変動しても複製先の変数値は変動しません。

lvCreateVarList

lvCreateVarList(2, lvCreateVarHashMap())
lvCreateVarList(3)
lvCreateVarList(5, "空っぽなんですけどォ!?")
  • 引数:数値(要素数)、数値(初期値、省略可)・LVN関数(ListまたはHashmap、省略可)・テキスト(初期値、省略可)・変数名(変数値がリストやハッシュマップではないもの、省略可)
    戻り値:List変数
  • リスト変数を返します。
    項目参照:配列リスト

lvListPushFront

lvListPushFront(list1, 0)
  • 引数:変数名(リスト変数に限る)、数値・テキスト(追加変数値)
    戻り値:List変数(要素追加後のもの)
  • 指定したリスト変数や、指定したインデックスの子要素がリスト変数であるものに対して、指定した変数値を持つ要素をリストの先頭に追加します。
    既存の各要素のインデックスは1増加し、追加された要素のインデックスは「0」となります。

lvListPushBack

lvListPushBack(list1, 0)
  • 引数:変数名(リスト変数に限る)、数値・テキスト(追加変数値)
    戻り値:List変数(要素追加後のもの)
  • 指定したリスト変数や、指定したインデックスの子要素がリスト変数であるものに対して、指定した変数値を持つ要素をリストの末尾に追加します。
    既存の要素のインデックスは変わらず、追加された要素のインデックスは既存のインデックスの最大値よりも1大きい値となります。

lvListAppendBack

lvListAppendBack(list1, list2)
  • 引数:変数名(リスト変数に限る)、変数名(リスト変数に限る)
    戻り値:List変数(要素追加後のもの)
  • 指定したリスト変数や、指定したインデックスの子要素がリスト変数であるものに対して、指定したリスト変数の持つ要素をリストの末尾にすべて順次追加します。

lvListPopFront

lvListPopFront(list1)
  • 引数:変数名(リスト変数に限る)
    戻り値:List変数(要素削除後のもの)
  • 指定したリスト変数や、指定したインデックスの子要素がリスト変数であるものに対して、リストの先頭の要素を削除します。
    既存の各要素(インデックスが0ではないもの)のインデックスは1減少します。

lvListPopBack

lvListPopBack(list1)
  • 引数:変数名(リスト変数に限る)
    戻り値:List変数(要素削除後のもの)
  • 指定したリスト変数や、指定したインデックスの子要素がリスト変数であるものに対して、リストの末尾の要素を削除します。
    既存の各要素のインデックスは変化しません。

lvListPushAt

lvListPushAt(list1, 3, 5)
  • 引数:変数名(リスト変数に限る)、数値(インデックス)、数値・LVN関数(ListまたはHashmap)・テキスト・変数名(変数値がリストやハッシュマップではないもの)
    戻り値:List変数(要素追加後のもの)
  • 指定したインデックスに対して、指定した変数値を挿入します。
    既存の要素のうち、指定されたインデックス以上の要素のインデックスは1増加します。

lvListPopAt

lvListPopAt(list1, 3)
  • 引数:変数名(リスト変数に限る)、数値(インデックス)
    戻り値:List変数(要素削除後のもの)
  • 指定したインデックスの要素を削除します。
    既存の要素のうち、指定されたインデックス以上の要素のインデックスは1減少します。

lvListIndexWithHashKeyValue

lvListIndexWithHashKeyValue(list1, "volume", "green tea")
  • 引数:変数名(リスト変数に限る)、キー(テキスト)、値(数値・テキスト・変数名)
  • 指定したリスト変数の要素に、指定したキーと値を持つハッシュマップ変数が存在すれば、リスト内でのインデックスを返します。
    存在しなければ「-1」を返します。

lvListIndexEmptyFirst

lvListIndexEmptyFirst(list1)
  • 引数:変数名(リスト変数に限る)
    戻り値:数値(インデックス)
  • 指定したリスト変数や、指定したインデックスの要素がリスト変数であるものに対して、未定義の要素または要素を持たないハッシュマップ変数である要素のインデックスを返します。
    すべて定義済の場合には「-1」を返します。

lvCreateVarHashMap

lvCreateVarHashMap()

lvIsEmpty

lvIsEmpty(temp01)
  • 引数:変数名
    戻り値:真偽
  • 指定した変数または要素がリスト変数またはハッシュマップ変数である(要素ではない)場合において、要素が存在しなければ「true」を返します。
    指定した変数がリスト変数でもハッシュマップ変数でもない場合には「false」を返します。
    リスト変数またはハッシュマップ変数であり、かつ1つでも要素(値が未定義のものも含む)を持っている場合にも「false」を返します。
  • このLVN関数が「true」を返すのは、以下の場合です。
    • lvCreateVarList(0)」と定義して、以降に要素を追加しない。
    • 大きさが1以上のリスト変数を定義して、要素をすべて削除した。
    • lvCreateVarHashMap()」と定義して、以降に要素を追加しない。

lvSize

lvSize(list01)
  • 引数:変数名
    戻り値:数値
  • 指定した変数または要素がリスト変数またはハッシュマップ変数である(要素ではない)場合において、要素数を返します。
    指定した変数または要素がリスト変数またはハッシュマップ変数ではない場合には不正となります。

lvShuffle

lvShuffle(list01)
  • 引数:List変数
    戻り値:List変数(インデックス無作為交換後のもの)
  • 指定した変数または要素がリスト変数である(要素ではない)場合において、各要素のインデックスを無作為に再設定します。

lvTextureW

lvTextureW("CG/event01.png")
  • 引数:文字列(画像素材ファイルパス)
    戻り値:数値
  • 指定した画像素材の幅を返します。

lvTextureH

lvTextureH("CG/event01.png")
  • 引数:文字列(画像素材ファイルパス)
    戻り値:数値
  • 指定した画像素材の高さを返します。

lvText

lvText("とうふやさん")
lvText(textbox1)
  • 引数:テキスト・文字個体名・文字窓個体名
    戻り値:テキスト
  • 指定したテキスト、または指定した文字・文字窓個体が保持しているテキストを返します。
    文字入力後の文字窓からテキストを抽出する際などに用います。

lvSaveExists

lvSaveExists(15)
  • 引数:数値(スロット番号)
    戻り値:真偽
  • 指定したスロットにセーブデータが存在していれば「true」、存在しなければ「false」を返します。

lvSaveImagePath

lvSaveImagePath(15)
  • 引数:数値(スロット番号)
    戻り値:文字列(セーブ画像のファイルパス)
  • 指定したスロットにセーブデータが存在していれば、セーブ画像のファイルパスを文字列として返します。
    存在しなければ「""」を返します。

lvSaveInfo

lvSaveInfo(15, "date")
  • 引数:数値(スロット番号)、文字列(情報名)
    戻り値:文字列(情報)
  • 指定したスロットにセーブデータが存在していれば、「Info」内の指定した情報を文字列として返します。
    情報名の確認は、各セーブデータのxmlファイルの2行めで確認できます。通常は「"date"」「"text"」のいずれかを記述します。
    セーブデータや情報名が存在しなければ「""」を返します。

lvSaveGetDataVar

lvSaveGetDataVar(15, "point")
  • 引数:数値(スロット番号)、文字列(変数名)
    戻り値:変数値
  • 指定したスロットにセーブデータが存在していれば、指定した保存変数の値を同じ型で返します。
    セーブデータや変数名が存在しなければ「""」を返します。

lvMath::pi

lvMath::pi()
  • 引数:なし
    戻り値:数値
  • 円周率を返します。

lvMath::deg

lvMath::deg(lvMath::pi())
  • 引数:数値(単位:rad)
    戻り値:数値(単位:°)
  • 角度について、引数の大きさの弧度を度数に変更して返します。

lvMath::rad

lvMath::rad(180)
  • 引数:数値(単位:°)
    戻り値:数値(単位:rad)
  • 角度について、引数の大きさの度数を弧度に変更して返します。

lvMath::abs

lvMath::abs(5.33)
  • 引数:数値
    戻り値:数値
  • 引数の数値の絶対値を返します。

lvMath::sin

lvMath::sin(lvMath::pi())
  • 引数:数値(単位:rad)
    戻り値:数値
  • 引数の正弦を返します。

lvMath::cos

lvMath::cos(lvMath::pi())
  • 引数:数値(単位:rad)
    戻り値:数値
  • 引数の余弦を返します。

lvMath::tan

lvMath::tan(lvMath::pi())
  • 引数:数値(単位:rad)
    戻り値:数値
  • 引数の正接を返します。

lvMath::asin

lvMath::asin(0.5)
  • 引数:数値(-1以上1以下)
    戻り値:数値(単位:rad)
  • 引数の正弦の逆関数を返します。

lvMath::acos

lvMath::acos(lvMath::pi())
  • 引数:数値(-1以上1以下)
    戻り値:数値(単位:rad)
  • 引数の余弦の逆関数を返します。

lvMath::atan

lvMath::atan(lvMath::pi())
  • 引数:数値
    戻り値:数値(単位:rad)
  • 引数の正接の逆関数を返します。

lvMath::atan2

lvMath::atan2(1, 0)
  • 引数:数値(引数a)、数値(引数b)
    戻り値:数値(単位:rad)
  • 2引数による複素数a+ibの偏角を返します。
    数学においてはaとbの両方を0とすることはできませんが、この関数ではその場合において0を返します。

lvMath::sqrt

lvMath::sqrt(9)
  • 引数:数値(正の値)
    戻り値:数値
  • 引数の平方根を返します。

lvSystem::InputType

lvSystem::InputType()
  • 引数:なし
    戻り値:数値
  • 端末の入力方式がマウス・キーボードであれば「0」、タッチパッドであれば「1」を返します。

lvSystem::IsFixedWindowSize

lvSystem::IsFixedWindowSize()
  • 引数:なし
    戻り値:真偽
  • 端末環境等によってウィンドウの大きさを変更できない場合に「true」、変更できる場合に「false」を返します。

lvSystem::IsRunForever

lvSystem::IsRunForever()
  • 引数:なし
    戻り値:真偽
  • 端末環境等によってアプリケーション終了が存在しない場合に「true」、存在する場合に「false」を返します。