【解決済】YEP_MessageCore.jsのネームボックスの文字表示位置について

アバター
俄(にわか)
記事: 24
登録日時: 2017年6月11日(日) 21:44
連絡を取る:

【解決済】YEP_MessageCore.jsのネームボックスの文字表示位置について

投稿記事by 俄(にわか) » 2018年6月12日(火) 12:37

こんにちは。いつもお世話になっております。
件名の通りなのですが、YEP_MessageCore.jsで表示するネームボックス内の文字の位置を調整したいのです。

ネームボックスを透明化し自作画像の上にキャラ名を置いているのですが、
キャラの名前の長さによって表示位置がズレてしまい物凄い違和感が発生してしまいました…
プラグインの中身も見てみたのですが、どこをどう書き換えれば良いか全くわからず…
プラグインパラメータは添付画像のように設定しております。
どなたかお力添え頂けないでしょうか;;よろしくお願いします。

スクショ15.jpg
スクショ15.jpg (418.08 KiB) 閲覧数: 342 回
スクショ14.jpg
スクショ14.jpg (207.59 KiB) 閲覧数: 342 回
スクショ16.jpg


-----------------------------------------------------

twitter : https://twitter.com/ALYQUARA
-----------------------------------------------------
最後に編集したユーザー 俄(にわか) on 2018年6月13日(水) 15:43 [ 編集 1 回目 ]

アバター
剣崎 宗二
記事: 165
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: YEP_MessageCore.jsのネームボックスの文字表示位置について

投稿記事by 剣崎 宗二 » 2018年6月12日(火) 15:55

お疲れ様です。

こちらの現象は、YEP_MessageCoreが「名前ウィンドウ自体の幅を拡縮する事で強制的に名前が中央に来るよう調整している」事に由来します。
(試しに「ネームボックスの透明化」を一度解除して試してみればウィンドウ幅が動いているのが分かるかと)

こちら解決法は
・ネームボックス部分の画像を元のウィンドウに合わせて拡縮させる(ネームボックスと会話窓が別々の絵だった場合のみ。一枚絵の場合不可)
・拡縮の度合いに合わせてウィンドウの位置をずらす(要・数学計算、及びパラメーター位置の再調整。Window_NameBox.prototype.adjustPositionX の内部で調整すると宜しいかと)
となります。
アバター
俄(にわか)
記事: 24
登録日時: 2017年6月11日(日) 21:44
連絡を取る:

Re: YEP_MessageCore.jsのネームボックスの文字表示位置について

投稿記事by 俄(にわか) » 2018年6月12日(火) 19:13

剣崎 宗二 様

こんにちは!回答ありがとうございます。
実はこちらのトピック( viewtopic.php?t=3800 )を参考にしてウィンドウ幅を固定していたのですが、そうすると
6.jpg

↑のように何故か文字が左にズレてしまうので不思議に思っていたのです。
そもそもがそういった仕様だったのですね…

画像は自作なのでネームボックス部分のみ画像拡縮させることも可能といえば可能なのですが、
やはりネームボックスの幅が動くのは気になってしまうので、二つ目の方法で実現したいと考えています。
…とはいえ、Window_NameBox.prototype.adjustPositionXの部分を見ても現状、
何が書かれているのかさっぱり理解できない状態でして…orz
具体的にどのあたりを書き換えれば良いか、お時間のあるときで構いませんのでご教示いただけないでしょうか;;
重ねての質問で本当に本当に申し訳ありません;;

コード: 全て選択

Window_NameBox.prototype.adjustPositionX = function() {
    if (this._position === 1) {
      this.x = this._parentWindow.x;
      this.x += eval(Yanfly.Param.MSGNameBoxBufferX);
    } else if (this._position === 2) {
      this.x = this._parentWindow.x;
      this.x += this._parentWindow.width * 3 / 10;
      this.x -= this.width / 2;
    } else if (this._position === 3) {
      this.x = this._parentWindow.x;
      this.x += this._parentWindow.width / 2;
      this.x -= this.width / 2;
    } else if (this._position === 4) {
      this.x = this._parentWindow.x;
      this.x += this._parentWindow.width * 7 / 10;
      this.x -= this.width / 2;
    } else {
      this.x = this._parentWindow.x + this._parentWindow.width;
      this.x -= this.width;
      this.x -= eval(Yanfly.Param.MSGNameBoxBufferX);
    }
    this.x = this.x.clamp(0, Graphics.boxWidth - this.width);
};


-----------------------------------------------------

twitter : https://twitter.com/ALYQUARA
-----------------------------------------------------
アバター
剣崎 宗二
記事: 165
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: YEP_MessageCore.jsのネームボックスの文字表示位置について

投稿記事by 剣崎 宗二 » 2018年6月13日(水) 14:26

テストしてませんが、恐らくはこういう感じかと。

コード: 全て選択

Window_NameBox.prototype.adjustPositionX = function() {
    if (this._position === 1) {
      this.x = this._parentWindow.x;
      this.x += eval(Yanfly.Param.MSGNameBoxBufferX);
    } else if (this._position === 2) {
      this.x = this._parentWindow.x;
      this.x += this._parentWindow.width * 3 / 10;
      this.x -= this.width / 2;
    } else if (this._position === 3) {
      this.x = this._parentWindow.x;
      this.x += this._parentWindow.width / 2;
      this.x -= this.width / 2;
    } else if (this._position === 4) {
      this.x = this._parentWindow.x;
      this.x += this._parentWindow.width * 7 / 10;
      this.x -= this.width / 2;
    } else {
      this.x = this._parentWindow.x + this._parentWindow.width;
      this.x -= this.width;
      this.x -= eval(Yanfly.Param.MSGNameBoxBufferX);
    }

    //↓この行追加
    this.x -= this.windowWidth() / 2;

    this.x = this.x.clamp(0, Graphics.boxWidth - this.width);
};


ただ前述のとおり、この改変を行った後に再度パラメーター「Name Box Buffer X」を調整して位置を合わせる必要があるかと。
アバター
俄(にわか)
記事: 24
登録日時: 2017年6月11日(日) 21:44
連絡を取る:

Re: YEP_MessageCore.jsのネームボックスの文字表示位置について

投稿記事by 俄(にわか) » 2018年6月13日(水) 15:41

8.jpg

ウィンドウ幅を210pxで固定していたのを一旦元に戻し、
this.x -= this.windowWidth() / 2; を書き足してパラメータで位置を調整したところ、
無事に思っていた通りの場所に文字を表示することができました!
こういう記述で位置を指定できるんですね…!大変勉強になりました!
剣崎 宗二様、本当にありがとうございました;;

-----------------------------------------------------

twitter : https://twitter.com/ALYQUARA
-----------------------------------------------------

“MV:質問” へ戻る