LNS221 フキダシ

<まだ説明が書かれていない...>






参考資料

デモ動画

※旧LNS026a フキダシ のデモ動画ですが、基本的な機能は同じため参考になると思います。

スクリーンショットサンプル

  

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



基本情報

前提スクリプト


拡張タイプ

○ 要設定 (イベントコマンドで指定する必要あり)
☆ 要画像素材 (特定の画像ファイルが必要)

素材

● 既定値をそのまま使う場合は、以下の画像を Graphics/System に入れてください。
● RTPの画像を加工しているため、ツクールシリーズ以外での利用はご遠慮ください。
Window_Balloon.png


説明

概要

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

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

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

[文章の表示]には、以下の制御文字が使えます。(これに加えて、LNS220 Window_Message拡張で追加される制御文字も使えます)

\BALLOON[対象;タイプ;形]

  • フキダシの対象、名前、顔グラフィックをまとめて指定します。
    • 注釈を省略したい場合に使えます。
    • [文章の表示] でのみ有効です。
    • 必ず [文章の表示] の最初に書いてください。
      • 文章の途中などに書いてあるものはそのまま描画されます。
      • 同じ行に書いてある内容は全て無視されます。本文は 2 行目以降に書いてください。
  • [対象] の指定方法は下の [注釈] における設定を見てください。
    • 戦闘画面では対象 0 は使えません(フキダシになりません)。
  • [タイプ] は省略可能で、以下のいずれかの値を指定します。
    • 0 : フキダシ化のみ (省略時)
    • 1 : 名前を自動設定
    • 2 : 顔グラフィックを自動設定
    • 3 : 顔グラと名前をともに自動設定
    • (4 を足す) : [ホールド] モード
    • (8 を足す) : [ホールド(半透明)] モード
  • [形] の指定方法は下の [注釈] における設定を見てください。
    • 省略時は Default_Tail になります。

\M[名前]

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

\~

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

[文章の表示] のオプション

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

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

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

◆ [注釈] について

 注釈の「フキダシ」と同じ行に文字列を付け加えることで、挙動を指定します。
(例)
フキダシ 対象:0 形:1 ホールド(半透明)

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

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

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

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

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

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

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

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

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


備考

再定義されるメソッド

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

Window_Message#update_fiber
  • フキダシが予約されている場合に表示する処理を入れるために再定義します。

設定項目

Balloon_Name <既定値 "Window_Balloon" >
フキダシ用ウィンドウスキンの名前
Max_Width <既定値 396 >
フキダシの最大幅(顔グラ含まず)
Back_Opacity <既定値 204 >
フキダシ背景の不透明度
TL_Opacity <既定値 176 >
[ホールド(半透明)] 時の内容の不透明度
TL_Back_Opacity <既定値 112 >
[ホールド(半透明)] 時の背景の不透明度
Default_Tail <既定値 1 >
"形:X" を省略したときの先端のタイプ

素材規格


フキダシ用のウィンドウスキンは、通常のウィンドウスキンをベースにしたオリジナルの規格となります。
各要素は以下の様な仕様となっています。
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/29 新版公開(追加機能:注釈を使わずフキダシにする)
  • 2020/12/04 対象が画面外にいるときなどにフキダシのしっぽの表示が乱れる場合がある問題の修正
  • 2019/11/11 選択肢などを連続で設定したときにエラーが発生する場合がある問題の修正
  • 2019/11/02 フキダシメッセージに選択肢などを設定するとエラーが発生する場合がある問題の修正
  • 2019/10/19 フキダシ位置「中」のときの挙動を変更、フキダシウィンドウスキンの名前を変えられるように変更

  • こんにちは。不具合を発見したのでご報告いたします。 LNS000 組み込み拡張 LNS010 Input拡張 LNS100 プリセット拡張 LNS102 マウス操作 LNS140 マップ/キャラ拡張 の5つを導入した状態で、マップ画面でマウスカーソルをゲームウインドウの外側で大きく動かすなどすると、「 スクリプト 'LNS 140 マップ/キャラ拡張' の 980 行目で IndexError が発生しました。 index -1 too small for array; minimum: 0 」というエラーメッセージが表示され、ゲームが終了してしまいます。 スクリプトは全て最新で、内容は改変していません。 -- 2022-07-26 01:29:40
  • 確認が遅れましたが、対応修正しました。正確には「既に対応済みであったがアップロードを忘れていた」という状態でした…… -- 2022-11-01 15:39:07
  • 対応ありがとうございます!しかし LNS000, 010, 100, 102, 140 の5つを入れた状態で起動直後に「スクリプト 'LNS140 マップ/キャラ拡張' の 1719 行目で NameError が発生しました。 undefined method 'lns102_dash?' for class 'Game_Player'」と表示され、終了します。 -- 2022-12-24 16:39:35
コメント:

すべてのコメントを見る
最終更新:2020年12月29日 09:48