TITLE:よくある質問 コマンド・スクリプトについて
質問項目の''追加要望''は、「Wiki編集」 >「[[編集要望>demands]]」にてお願いします。
-[[よくある質問 目次>qaa/top]] のページへ
-[[Light.vn全般>qaa/general]] のページへ
-[[起動・出力について>qaa/startup]] のページへ
-[[エラーメッセージについて>qaa/error]] のページへ
-[[ゲーム制作全般>qaa/novelgame]] のページへ
-''スクリプト''や''エラーメッセージ''に関しては [[アップデート後のエラー対処>update/error]] も参考にしてください。
~
-----
~
#contents
~
//*コマンド・スクリプトについて[#q03]
*エラーがでます・・・コマンドが機能しません・・・ [#p7aae3de]
-まずは対象となる「背景音」「効果音」「絵」「栞」「変数」などの''記述ミス''がないか確かめてみましょう。
1文字抜けていたり、スペースが抜けていたり、それにより同じ個体名になっていなかったり、などの凡ミスに気がつけるとよいです。&br;
▼Light.vnエディターの左メニューボタンにて素材を指定すると、パス・素材名がきっちりと指定されますのでご活用ください。&br;
&attachref(qaa/startup/q02_16b.png,nolink,左メニューボタン);
~
*プログラミングはまったく知りません。スクリプト記述があっているのかも分かりません。 [#r71d77c8]
-Light.vnではミスをしていたら動作しなかったりエラーがでたりします。
逆に狙い通りの動きが出来ている場合は、納得できなくても正解だということになります。
初めのうちはスクリプト記述が長くなったり順番が気になったりなど、これでいいのか?と思われるかもしれませんが使い続けていれば慣れていきますので大丈夫です。
「''出来てるならOK!''」とゆるい感じで製作していくことをお薦めします。
~
*テキストボックスの文字が表示されません。 [#me003453]
-指定しているフォントファイルが「''Fonts''」フォルダに入っているか確認しましょう。
-フォントの''ファイル名''を正確に記述できているかを確認しましょう。
-文字色が背景や文字窓スキンと''同じ色''になっている場合も一応は考えましょう。
-指定した''文字サイズ''が小さすぎて目視できていない場合もあります。フォントサイズを極端に大きくして確かめてみましょう。
-テキストを文字窓上に表示するためには、すでにコマンド「''文字窓''」で設定してある文字窓を、コマンド「''使用文字窓''」で指定する必要があります。この処理をしているかを確認しましょう。&br;
&attachref(./q03_03.png,nolink,テキストボックス);
&br;&color(Red){''※デフォルトのテキストボックス''};
Light.vnサンプル及びLight.vnテンプレートではデフォルトとして「Scripts」>「system」>「''textbox.txt''」を指定しています。
「''textbox.txt''」内の25行目あたり「栞 default」以下を確認してみましょう。
--参照項目:[[''文字窓''>commands/text#textbox]]
--参照項目:[[''使用文字窓''>commands/text#useTextbox]]
--参照項目:[[''文字色''>commands/text#textColour]]&br;
~
*サンプルなどを見るとコマンドの前に「~」が付いている場合とない場合があります。なにか違いがあるのでしょうか? [#rbfd0155]
-コマンド前の「~」はその文章が【コマンドである】と定義するものです。
エディターでは、シナリオは&color(blue){青文字};に、コマンドは&color(red){赤};などで色づけされます。&br;
&attachref(qaa/script/q03_07281.png,nolink,~あり);&br;
シナリオの後にコマンドを記述した場合、コマンドに「~」をつけないと青文字のままシナリオとして表示されることになります。&br;
&attachref(qaa/script/q03_07282.png,nolink,~なし);&br;
「シナリオ」と「コマンド」とを区別するものだと覚えておいてください。
ミス防止のためにコマンドの前には必ず「~」をつけたり、テキスト容量を減らすために区別するときだけ「~」をつけたりと、制作者によって様々なようです。
--参照項目:[[''コマンドとは > コマンドとは何か''>command#command0]]
~
*サンプルなどを見るとコマンドの前に「.」が付いている場合とない場合があります。なにか違いがあるのでしょうか? [#w88e14e0]
-コマンド前の「.」はそのコマンドの実行終了までスクリプトの読み込みを待機させるというものです。
効果時間を指定しているコマンドにだけ有効となります。&br;
&attachref(qaa/script/q03_07283.png,nolink,.あり);&br;
上記の場合、800ミリ秒かけてlogo画像を表示させた後、2000ミリ秒待機し、800ミリ秒かけてlogo画像を消していく流れになります。
スクリプトは上から読み込まれていくため、効果コマンドを並べた場合、同時に効果をスタートさせるのか、ひとつずつ効果を適用していくのか、それを指定する必要があります。
想定通りの動きが出来なかった場合、コマンド前の「.」の有無で動きを確認してみてください。
--参照項目:[[''コマンドとは > コマンドの種類 > 効果コマンド(演出コマンド)''>command#command2]]
~
*文字・ボタン文字・「台詞情報登録」などにおいて改行をしたいのですが可能でしょうか? [#q4b72bc9]
-改行には「''\n''」を使用してください。
--参照項目:[[''文章表現 > 改行''>text#script4]]
--参照項目:[[''文字''>commands/text#text]]
--参照項目:[[''ボタン文字''>commands/UI#btnText]]
--参照項目:[[''台詞情報登録''>commands/text#textTableLoad]]&br;
~
*ボタン文字を装飾したいのですが、色や太字などが反映されません。 [#f9919713]
-ver7.6.0 にて「ボタン文字」の仕様変更がありました。
「文字色」などの装飾コマンドの対象名を「ボタン文字対象名」+「''_text''」としてみてください。&br;
&attachref(./btnText.png,nolink,ボタン文字装飾);&br;&br;
--参照項目:[[''ボタン文字''>commands/UI#btnText]]&br;
~
*文字窓待機絵が表示されません。 [#s09f6f1f]
-文字窓待機絵は既定のものではないので、コマンド「文字窓待機絵」を使い、''自分で設定する必要があります''。
Light.vnサンプル及びLight.vnテンプレートでは「Scripts」>「system」>「''textbox.txt''」内で指定しています。&br;
&attachref(./q03_05.png,nolink,文字窓待機絵);&br;&br;
--参照項目:[[''アニメ登録''>commands/transition#animation]]
--参照項目:[[''アニメ登録簡易''>commands/transition#animationEx]]
--参照項目:[[''文字窓待機絵''>commands/text#textWaitIcon]]&br;
~
*文字窓の斜め左上に、キャラクター名を出すのはどのようにすれば良いのでしょうか。 [#s58557c2]
-【】を使用しましょう。【キャラクターの名前】で出せます。
~【任意の名前】
半角「''~''」が重要なポイントです。
半角「~」はコマンドなどをシナリオテキストと区別するための記述方法です。&br;
&attachref(./q03_06a.png,nolink,【キャラクターの名前】);&br;&br;
--参照項目:[[「コマンド」とは > ''コマンドとは何か''>command#command0]]
~
-この【】での名前表示は「Scripts」>「system」>「''macros.txt''」内に''マクロ''で設定しています。
よってシナリオスクリプト内の最初の方で「''macros.txt''」を読み込ませておく必要があります。
スクリプト system/macros.txt //マクロ設定(キャラ名設定含む)
忘れずに記述しておきましょう。&br;
&attachref(./q03_06b.png,nolink,マクロ設定);&br;&br;
--参照項目:[[''マクロ''>commands/script#macro]]&br;
~
-そして、このマクロは「Scripts」>「system」>「''textbox.txt''」内の「''栞 name _name''」以下を読み込んでいます。&br;
&attachref(./q03_06c.png,nolink,栞 name _name);
~
*シナリオで「地の文」部分の時に、キャラクター名がでてしまいます。 [#z49e02d8]
-キャラクター名だけを消して【】だけにしてみましょう。&br;
&attachref(./q03_07.png,nolink,地の文);
~
*「クリック」や「Enter」を押しても、文章が進まなくなってしまいました。 [#l51df56c]
-Light.vnでは進行続行の操作として、キートリガーである「キーダウン」コマンドで「続行」を指定しています。&br;
&attachref(./q03_08.png,nolink,キートリガー);
&br;キーダウンによる続行の設定の記述忘れがないか確認してみてください。
ロード後に「進行不能」になる場合も、セーブしたスクリプト内に記述し忘れている場合があります。
''「進行不能」の原因はほぼこれ''にあたります。とりあえず記述して確かめてみると良いでしょう。&br;&br;
-キーダウンによる続行は「Scripts」>「system」>「''textbox.txt''」内の「''栞 txt_setToggles''」以下でも設定されています。
デフォルトでは「''macros.txt''」内のマクロ「~コマンドマクロ 文字窓下段 "スクリプト system/textbox.txt default"」によりキーダウン設定も読み込まれています。&br;
&attachref(./q03_08b.png,nolink,栞 txt_setToggles);&br;&br;
--参照項目:[[''キーダウン''>commands/script#keyDown]]
~
*上下(左右)に配置した画像の移動を同時に行いたい場合、何のコマンドを使用すればよいでしょうか? [#ffd22703]
-効果時間があるコマンドの先頭に「.」 をつけると''直列処理''(そのコマンドが終わったら次のコマンドを読み込む)になります。
逆に「.」をつけない場合は''並列処理''になります。
そのため2つ同時に動かしたい場合などは先頭の「.」を消せば良いのです。&br;
--参照項目:[[「コマンド」とは > ''コマンドの種類''>command#command2]]&br;
|効果コマンド(演出コマンド)&br;個体コマンドによって設定された個体を指定して、なんらかの効果の適用、またはなんらかの視覚的な操作を行います。&br;効果コマンドの多くはコマンド名の末尾に「2」を付与すると、コマンド適用前の状態を基準とする相対的な変化になります。&br;さらに、効果時間の設定項目を持つ効果コマンドは、コマンド名の先頭に「.」を付与すると、コマンドの適用終了までスクリプトの以降行の読込みを一時待機します。|
&br;▼移動コマンドによる例&br;
&attachref(./q03_09a.png,nolink,直列処理);
&attachref(./q03_09b.png,nolink,並列処理);
~
*コマンドで対象を複数指定することはできますか? [#za304053]
-一部の効果コマンドにおいては可能です。「,」を使って区切っていきます。
ただし、その後に''半角スペース''を入れる必要があります。&br;
&attachref(./q03_10.png,nolink,複数指定);
~
*「ダイアログスクリプト登録」は一度宣言すれば大丈夫でしょうか? [#v0583df3]
-大丈夫です。次に宣言するまで適用されます。
変更したい場合は、変更を適用開始させたいスクリプト内で宣言しましょう。&br;
&attachref(./q03_11.png,nolink,ダイアログスクリプト登録);
--参照項目:[[''ダイアログスクリプト登録''>commands/system#setDialogScript]]
~
*「アニメ登録」はどこで宣言すればいいのでしょうか? [#o895a2cb]
-アニメを適用させた「絵」コマンドより上に記述しておきましょう。
別のスクリプト.txtにまとめてアニメコマンドを記述し、冒頭で読み込ませておくのも良いと思います。&br;
&attachref(./q03_12.png,nolink,アニメ登録);
--参照項目:[[''アニメ登録''>commands/transition#animation]]
--参照項目:[[''アニメ登録簡易''>commands/transition#animationEx]]
~
*「アニメ登録」は宣言しているのですが、アニメが適用されません。 [#u9697838]
-原因はさまざまです。いったん以下を確かめてみましょう。&br;
+''素材がフォルダに入っていない。''
「Images」フォルダに画像素材が入っていないか、パスを間違えている場合があります。&br;&br;
+''名前を指定していない。''
「絵」コマンドなどで表示する際に「登録済みアニメ名」の前に個体名の「名前」を指定しているか確認してみましょう。&br;&br;
+''アニメは適用されているけど目視できていない。''
分かりやすいアニメ画像に変えて様子をみてみましょう。
ループしない設定(0)になっていて、すぐにアニメが終わってしまっている可能性もあります。
~
*バックログがリセットされてしまいます。 [#rcd40a51]
-該当箇所周辺に「''バックログリセット''」を記述していないか、確認してみてください。
--参照項目:[[''バックログリセット''>commands/text#backlogReset]]
~
*バックログ画面で表示されている「-----」はどこで設定されてますか? [#c68a2c7d]
-「Scripts」>「system」>「''textbox.txt''」内の「''栞 name _name''」以下に記述されています。&br;
&attachref(./q03_15a.png,nolink,バックログ画面);
&attachref(./q03_15b.png,nolink,栞 name _name);
--参照項目:[[''バックログ現在話者''>commands/text#backlogCurSpeaker]]
~
*選択肢が出現したところでセーブした場合、セーブデータをロードすると選択肢を選べずに片方へ進行してしまいます。 [#c2dcb1e5]
-選択肢スクリプト待機部分に「''待機 ボタン選択''」を使用していると思いますが、挙動不審な場合は「&color(Red){''待機 続行禁止''};」に変えるのをお薦めします。&br;
--参照項目:[[''待機''>commands/script#wait]]
~
*テキストを改行したら、改行幅が変わってしまいます。 [#p3c087ca]
-テキストボックス内での自動改行の位置と「.」で故意に改行させる位置が等しくなった場合、改行幅が広くなる症状が出るようです。
プレビューで確認しながら「.」の位置を打ち込みましょう &br;
&attachref(./q03_17.png,nolink,自動改行の位置);
~
*行数が変な挙動をしています。 [#z7a024f4]
-ディスコードやツイッターなどでの改行方法「Shift + Enter」をすると空白行になってしまうようです。
こうなってしまった場合、デリートで戻すことが出来ます。 &br;
&attachref(./q03_18.png,nolink,空白行);
~
*ゲーム内の演出として、パソコンのログインユーザー名を取得したいです。 [#c524288f]
-これをやってしまうとプログラムがウイルスとして認識される可能性が高いです。
最初にユーザー側から直接そういった情報を入力していただく方がいいかもしれません。
~
*ロード後などに「絵」で指定している「背景」や「キャラクター」のレイヤー位置(重なり方)がおかしくなります。 [#f6a182b7]
-レイヤー階層を同じにしていると、後に読み込んだ画像のほうが上に重なりますが、まれに順番が変わったり消えたりするときがあります。
画像の重なりがある場合は、きっちりと違うレイヤー階層(数値)にしておきましょう。
~
*フラグのために設置した「変数 flag = 1」がタイトルに戻った時やゲーム再起動時にもリセットされません。 [#ad810a63]
-もしタイトル画面に戻った時にリセットしたいのであれば、タイトル画面を表示するスクリプト内冒頭に「''変数 flag = 0''」と記述してみてください。
~
*全フラグ回収、全テキスト既読済みのセーブデータというものは作れるのでしょうか? [#fa488d4f]
-変数処理を集約したスクリプト.txtを作ると良いかと思われます。
--例:変数用スクリプト
> 文字スキップ方式 0
>
> ~全域変数 end_a = 1
> ~全域変数 end_b = 1
> ~全域変数 end_c = 1
> ~全域変数 end_d = 1
> ~全域変数 end_true = 2
>
> ~全域変数保存
>
> ~ジャンプ title.txt
-制作ゲーム内で使用している変数を、このようなスクリプトで「''スタートスクリプト''」として読み込ませることで、全フラグ回収済みからスタートすることができます。
もしくは直接「title.txt」の冒頭に記述しておくのも良いでしょう。使用しないときは''コメントアウト''しておけば楽チンです。
ただし「配布」するときに残さないように注意が必要です。
--参照項目:[[文章表現 > ''コメントアウト''>text#script1]]
~
*「正規表現」とは何者ですか? [#u381d62c]
-簡単に言うと「''文字列をまとめられる表現''」です。
「特定の文字や単語を含まないものすべて」や「数字を持つ文字列すべて」などの条件を表すことができます。&br;
--参照項目:[[応用スクリプト > ''正規表現に触れてみよう''>app#app04]]&br;&br;
-なんのことだかまったく分からなければ、ひとつだけ「&color(Red){''.*''};」を覚えておきましょう。
これを知っているだけでも、スクリプト記述がとても楽になります。&br;&br;
--例:''共通文字列がある個体名''を持つ、複数の個体をアウトさせたい時。&br;
「''Ascenario''」という共通個体名を持ってる「背景」「絵」「ボタン」があるとします。&br;
&attachref(./q03_23a.png,nolink,共通個体名);
&br;すべてを「アウト」させたい場合、それぞれの個体名を記述することになります。
もっと沢山ある場合、すべてを記述するのは面倒です!&br;
&attachref(./q03_23b.png,nolink,すべてを「アウト」);
&br;そこで正規表現である「''.*''」を使えば、簡略化することができます。
共通文字列である「Ascenario」はすべて先頭なので、後ろに「''.*''」を記述します。
意味は、''先頭が「Ascenario」となっているすべての文字列・単語''、となります。&br;
&attachref(./q03_23c.png,nolink,Ascenario.*);
&br;最初から文字列・単語に共通文字を使っておくことで、コマンドでの指定が楽になるというわけです。
例の「Ascenario」の場合「Asc.*」や「A.*」でも可能となります。
あまり短くしてしまうと、余計なものまで巻き込んでしまう恐れがありますのでご注意ください。&br;
~
----------
~
-[[よくある質問 目次>qaa/top]] のページへ
-[[Light.vn全般>qaa/general]] のページへ
-[[起動・出力について>qaa/startup]] のページへ
-[[エラーメッセージについて>qaa/error]] のページへ
-[[ゲーム制作全般>qaa/novelgame]] のページへ
-''スクリプト''や''エラーメッセージ''に関しては [[アップデート後のエラー対処>update/error]] も参考にしてください。
~
~
~