LNS026a フキダシ

LNS026 メッセージ拡張の拡張スクリプト。キャラクターの上下にフキダシを表示する拡張スクリプトです。





参考資料

デモ動画


スクリーンショット

  

デモ動画のイベントコマンドリスト



基本情報

前提スクリプト

LNS000 追加機能
LNS020 Window_Base拡張
LNS026 メッセージ拡張
上記のスクリプトが全て必要です。

挿入位置


必要素材

Graphics/System/Window_Balloon.png
右クリック→「名前をつけて保存」で指定のフォルダに保存してください。


説明

概要

 注釈で「フキダシ」と書くと、その直後の [文章の表示] がキャラクターの上下にフキダシとして表示されます。フキダシのウィンドウスキンには、Graphics/System/Window_Balloon が使われます。
 フキダシが有効なのは注釈の直後のコマンドのみで、次の [文章の表示] は通常のメッセージウィンドウになります。1つのフキダシに複数の [文章の表示] を適用したい場合は、\m でメッセージを繋げるか、毎回メッセージの前に注釈を入れてください。

◆ [文章の表示] について

※通常のメッセージウィンドウは 4行まで内容を表示できるようになっていますが、フキダシの場合は 3行になります。

[文章の表示]には、以下の制御文字が使えます。(これに加えて、LNS026 メッセージ拡張で追加される制御文字も使えます)
  • \M[名前]
    • フキダシの上部にその名前を入れた小さなウィンドウを表示します。
    • メッセージの最初の行が \M[名前] だけの場合、その直後の改行は無視され、次の行からがメッセージ内容としては扱われます。[文章の表示] の1行目に名前を入れて、残りの3行に表示するメッセージを書くことができます。
    • 直後の [文章の表示] が同じキャラクターに対するフキダシだった場合、最初のフキダシで設定された名前が継続して表示されます。つまり、同じキャラクターに喋らせ続ける限りは \M[名前] を書き直す必要はありません。
    • フキダシを[ホールド]した場合、その後に別の処理を挟んで再び同じキャラクターにフキダシを表示するときにも、\M[名前] は省略できます。

  • \~
    • これが読み取られた瞬間、後述の [スルー] オプションを強制的に有効にします。
    • 文章の途中にこれを入れることで、誰かの発言中に他の誰かが割って入ったり、発言内容に合わせて移動を開始したりといった処理が可能となります。
    • ただし、あるメッセージ(A)の表示中に、この文字が処理されて次のメッセージ(B)が表示されはじめたとき、B が表示し終わる前に A の表示が終わると、最終的にA の入力待ち→ B の入力待ち と入力待ちが 2 回発生することになります。
    • A の入力待ちを避けたい場合、「フキダシ」注釈に「ホールド」を追記した上で文章の最後に「\^」を入れてください(下図)。
    • A が B よりも後に表示完了する場合、B の入力待ちを処理した時点で A も強制的に閉じられます。

フキダシを準備した状態では、[文章の表示] のオプションが別の意味を持ちます。

  • 「表示位置」
    • フキダシの表示位置を指定します。
    • 「上」の場合はキャラクターの頭上に、「下」の場合は足下に表示されます。
    • 位置クリッピング(後述)が有効な場合、ウィンドウが画面外にはみ出そうになると自動的に逆側に移動します。
    • 「中」の場合、状況に応じてフキダシ位置が自動で決定されます。
      • ①フキダシを初めて表示するとき:
        フキダシを表示した時点でキャラクターが画面の中央より上にいれば上に、中央より下にいれば下に表示されます。プレイヤーは基本的に画面中央に表示されるため、プレイヤーを対象とした場合は常に上になります。
      • ②既に別のフキダシが表示されているとき:
        直前のフキダシと位置が被ることを防ぐため、直前のフキダシとは反対側に表示されます。

  • 「背景」
    • フキダシ内に表示する顔グラフィックの位置を指定します。
    • 「背景を暗くする」の場合は左に、「透明にする」の場合は右に表示されます。
    • 「通常ウィンドウ」の場合は、表示位置が上の場合は左に、表示位置が下の場合は右に表示されます。
    • いずれの場合でも、メッセージに顔グラフィックが設定されていなければそのためのスペースは取られません。

◆ [注釈] について

 注釈の「フキダシ」と同じ行に文字列を付け加えることで、挙動を指定します。

  • 「対象:n」(n : 任意の整数) 省略時 : 0
    • フキダシを表示するキャラクターをイベントのIDで指定します。
    • 0 の場合は「このイベント」になります。-1 はプレイヤーになります。
    • -2 の場合はフォロワーの1番目、-3 の場合はフォロワーの2番目、…になります。
    • 「フキダシ(n)」と書いても同じ意味になります。
    • 存在しないイベントやフォロワーの番号を指定するとフキダシは無効になります。
    • 「対象:V1」 のように書くと、指定された番号の変数の値がイベントIDを指すと解釈されます(変数の値がマイナスの場合は上記に従います)
    • 「対象:N1」のように書くと、パーティ内にいる指定IDのアクターを指すと解釈されます。パーティにそのアクターがいない場合通常のウィンドウになります。
    • 「対象:P1」のように書くと、対応した番号のピクチャを対象とします。表示されていないピクチャを指定した場合は通常のウィンドウになります。
      ※この機能を使う場合、[ピクチャの表示] を行った後に 1フレーム以上のウェイトを挟んでください。

  • 「形:n」(n : 0, 1, 2, 3, 4, 5 のいずれか) 省略時 : 0 (可変)
    • フキダシの先端部分の形を指定します。標準の添付画像では、
      1 : 通常の形
      2 : 雲吹き出し
      3 と 4 : 未設定(0 と同じ)
      5 : トゲ吹き出し(全体が変形)
      です。0 の場合は先端の変形を行いません。5 の場合先端は表示されません。

  • 「位置:n」(n : 上, 下 のいずれか) 省略時 : 自動
    • [選択肢の表示] などで表示されるサブウィンドウは、直前に [文章の表示] が無い場合、位置が自動で設定されることになります。(上記「表示位置」が「中」の場合に相当)。
    • 事前に注釈で設定しておくと、[文章の表示] が無い場合に設定された位置に表示されます。
    • [文章の表示] の直後にある [選択肢] [数値入力] [アイテム選択] の表示位置はこの設定値に関わらず [文章の表示] の表示位置と逆の位置になります。

  • 「クリップしない」
    • ウィンドウの位置クリッピングを無効にします。
    • 書かなければ有効になります。
    • クリッピングが有効な場合、キャラクターが画面外に移動してもフキダシウィンドウは画面内に留まるように位置が補正されます。
    • クリッピングが無効な場合、キャラクターが画面外に移動するとウィンドウも見えなくなります。
    • 入力待ちは有効にも関わらずウィンドウがあるのかどうか分からなくなるため、強制終了(\^)と併用したほうが無難です。

  • 「ウェイトなし」「スルー」「ウェイトなし(n)」「スルー(n)」
    • メッセージの処理が終わるのを待たずに次のイベントコマンドに移ります。
    • 複数のキャラクターに同時に喋らせたい場合などにご利用ください。
    • フキダシは後に表示されたものほど上に表示されるため、位置が重なると読めなくなる可能性があります。
    • 一連のメッセージの直後が [選択肢] [数値入力] [アイテム選択] のいずれかの場合、スルーは無効になります。
    • 最後に表示されたウィンドウ(カレントウィンドウ)以外は、改ページなどに伴う入力待ちを n フレームのウェイトで置き換えます。
    • 括弧を省略した場合は 45 フレームのウェイトになります。
    • メッセージの最後に到達すると、カレントウィンドウが閉じられるのを待って、そのウィンドウも閉じられます。
    • メッセージが終わる前にカレントウィンドウが閉じられた場合、まだ開いているウィンドウのうち最後に開かれたものが新たなカレントウィンドウとなります。
    • メッセージの連結をする場合、途中で表示設定(ウィンドウや顔の位置など)が変わるとメッセージの開き直しが挟まるため、スルー設定は無効になります。

  • 「ホールド」「ホールド(半透明)」
    • メッセージを表示し終わったあと、ウィンドウを消さずに残します。
    • 2 番目の形式の場合、ウィンドウの不透明度が下がります。
    • ホールドされたウィンドウは、
      ①次に同じキャラクターに対してフキダシを表示するとき
      ②フキダシ消去(後述)を行ったとき
      ③並列処理でないイベントの開始/終了時
      のいずれかのタイミングで消されます。
    • ①の場合、\M[名前]によって名前ウィンドウが有効化されていた場合は、次のメッセージでもそのまま継続して表示されます。

 また、「フキダシ」以外の注釈に以下の文字列を書くと、表示中のフキダシに対して所定の動作を行います。

  • 「フキダシ待機」
    • 「スルー」された全てのフキダシウィンドウが消えるまで待ちます。
    • 複数のキャラクターに同時に喋らせた場合など、最後のメッセージの後に置いて使います。

  • 「フキダシ消去」
    • 「ホールド」された全てのフキダシウィンドウを消します。
    • イベントの終了時には自動で呼ばれるので書いておく必要はありません。


備考

再定義されるメソッド

  • Game_Player#id
  • Game_Follower#id
「フキダシ」の対象として指定する場合と同じ値を返すようになります。(プレイヤーは-1、フォロワーは-2以降)

  • Window_Message#update_fiber
フキダシの予約がある場合、本来の処理より優先してフキダシを表示するように変更します。

上記のメソッドを拡張するスクリプトはこれよりも後ろに入れてください。

設定項目

MSG_BalloonName<初期値:"Window_Balloon">
フキダシに使うウィンドウスキンの名前です。違う名前のスキンを使いたい場合はここを変更してください。
MSG_MaxWidth<初期値:388>
フキダシの最大幅です。横幅が長すぎるとフキダシの見た目が不自然となるため、画面幅の2/3程度の大きさを推奨します。
MSG_StandardBackOpacity<初期値:204>
フキダシウィンドウの背景(白い部分)の不透明度です。枠の不透明度は255で固定となります。
MSG_TranslucentOpacity<初期値:176>
[ホールド(半透明)]適用時のウィンドウ枠の不透明度です。
MSG_TranslucentBackOpacity<初期値:112>
[ホールド(半透明)]適用時のウィンドウ背景の不透明度です。
MSG_DefaultTailType<初期値:1>
「形:n」の記述を省略した場合のフキダシの形です。

素材規格


フキダシ用のウィンドウスキンは、通常のウィンドウスキンをベースにしたオリジナルの規格となります。
各要素は以下の様な仕様となっています。
A
通常フキダシの背景。四隅の16×16はそのまま描画され、残りの周囲16ドットは縦横のみに拡大縮小、中央32×32はウィンドウの大きさに合わせて拡大縮小して描画されます。
B
通常フキダシの枠および矢印。四隅の16×16はそのまま描画され、残りの枠(辺の部分)はウィンドウに合わせて縦横に拡大縮小されます。
矢印は通常のウィンドウと同じ用途に使われます。
C, D, E
通常のウィンドウスキンと同じ用途です。Eの色は、フキダシが白い背景のため、全体的に黒っぽくしてあります。
F
名前ウィンドウの背景。縦横がそれぞれ半分であること以外、Aと同様に描画されます。
G
名前ウィンドウの枠。縦横がそれぞれ半分であること以外、Bと同様に描画されます。
H
フキダシの先端。16×16の画像を横に4つ並べたものを縦方向に2個並べます。上半分が上向きのフキダシ、下半分が下向きのフキダシの先端として使われます。
実際に描画される際には、上半分(または下半分)がフキダシ枠と重なるように配置され、残りの半分がキャラクターのすぐ横にくるように描画されます。
I
トゲフキダシの背景。基本的にAと同じですが、辺の部分は拡大縮小ではなくタイリング状に並べて描画されます。
J
トゲフキダシの枠。基本的にBと同じですが、辺の部分は拡大縮小ではなくタイリング状に並べて描画されます。


更新履歴

  • 2020/12/04 対象が画面外にいるときなどにフキダシのしっぽの表示が乱れる場合がある問題の修正
  • 2019/11/11 選択肢などを連続で設定したときにエラーが発生する場合がある問題の修正
  • 2019/11/02 フキダシメッセージに選択肢などを設定するとエラーが発生する場合がある問題の修正
  • 2019/10/19 フキダシ位置「中」のときの挙動を変更、フキダシウィンドウスキンの名前を変えられるように変更


  • test -- 2016-03-20 03:57:45
コメント:

すべてのコメントを見る
最終更新:2020年12月04日 01:00