ページ 1 / 1
【解決済】メッセージウィンドウの位置を調整したい
Posted: 2021年4月08日(木) 17:53
by hkaru
マップ上で発生するメッセージウィンドウを、@paramで指定したピクセル分だけ上下左右に動かす機能を作りたいです。
プラグイン作成は初心者で調べてはいるのですが、最初のトッカカリとなる部分がつかめず、苦戦しています。
厚かましいお願いで申し訳ないのですが、後学のために
・処理の簡単なコメント
・調整するパラメータをどうやって見つけたか(到達までの思考経路的な?伝え方悪くてすみません・・・)
を残してくれると助かります。
お手数おかけしますが、助けていただけると幸いです。
Re: メッセージウィンドウの位置を調整したい
Posted: 2021年4月08日(木) 19:28
by ムノクラ
hkaru さんが書きました:マップ上で発生するメッセージウィンドウを、@paramで指定したピクセル分だけ上下左右に動かす機能を作りたいです。
プラグイン作成は初心者で調べてはいるのですが、最初のトッカカリとなる部分がつかめず、苦戦しています。
厚かましいお願いで申し訳ないのですが、後学のために
・処理の簡単なコメント
・調整するパラメータをどうやって見つけたか(到達までの思考経路的な?伝え方悪くてすみません・・・)
を残してくれると助かります。
お手数おかけしますが、助けていただけると幸いです。
簡単ですが作りました。
コード: 全て選択
/*:
* @target MZ
* @plugindesc 文章ウィンドウが下の時にオフセットさせます。
* @author munokura
*
* @help
* 文章ウィンドウが下の時にオフセットさせます。
*
*
* @param offsetPosition
* @text 文章ウィンドウオフセット量
* @desc 文章ウィンドウが下の時にオフセットする量。
* 正値で下、負値で上にオフセットします。
*/
(() => {
"use strict";
const pluginName = document.currentScript.src.split("/").pop().replace(/\.js$/, "");
const parameters = PluginManager.parameters(pluginName);
const offsetPosition = Number(parameters['offsetPosition'] || 0);
const _Window_Message_updatePlacement = Window_Message.prototype.updatePlacement;
Window_Message.prototype.updatePlacement = function () {
this._positionType = $gameMessage.positionType();
// console.log(this._positionType);
// this._positionType // 上:0 / 中:1 下:2 と上記のログで分かる
// 例えば下の時だけプラグインパラメーターで指定した分オフセットさせるとすると下記
if (this._positionType === 2) {
this.y = ((this._positionType * (Graphics.boxHeight - this.height)) / 2) + offsetPosition;
} else {
_Window_Message_updatePlacement.call(this);
}
};
// 元のコード rmmz_windows.js 内
// Window_Message.prototype.updatePlacement = function() {
// const goldWindow = this._goldWindow;
// this._positionType = $gameMessage.positionType();
// this.y = (this._positionType * (Graphics.boxHeight - this.height)) / 2;
// if (goldWindow) {
// goldWindow.y = this.y > 0 ? 0 : Graphics.boxHeight - goldWindow.height;
// }
// };
})();
作り方ですが、下記にまとめた記事があります。
ムノクラのプラグイン作成に関する9割の知識がまとまっていると思うので、そちらを読んでから質問いただいた方が話が早いかな?と思います。
https://fungamemake.com/archives/catego ... /guide-lv5
これを読んで、すぐに理解する人なら、最初のハードルは抜けて、ムノクラに応えられるような質問はなくなるかと…
逆に「記事のここが意味不明!」とご指摘いただけると、助かります。
この記事を書く知識を得るのに独学(コミュニティの人々のサポートあり)で3年かかりました…ITの学歴・職歴なし
Re: メッセージウィンドウの位置を調整したい
Posted: 2021年4月09日(金) 10:04
by hkaru
ムノクラ さんが書きました:hkaru さんが書きました:マップ上で発生するメッセージウィンドウを、@paramで指定したピクセル分だけ上下左右に動かす機能を作りたいです。
プラグイン作成は初心者で調べてはいるのですが、最初のトッカカリとなる部分がつかめず、苦戦しています。
厚かましいお願いで申し訳ないのですが、後学のために
・処理の簡単なコメント
・調整するパラメータをどうやって見つけたか(到達までの思考経路的な?伝え方悪くてすみません・・・)
を残してくれると助かります。
お手数おかけしますが、助けていただけると幸いです。
簡単ですが作りました。
コード: 全て選択
/*:
* @target MZ
* @plugindesc 文章ウィンドウが下の時にオフセットさせます。
* @author munokura
*
* @help
* 文章ウィンドウが下の時にオフセットさせます。
*
*
* @param offsetPosition
* @text 文章ウィンドウオフセット量
* @desc 文章ウィンドウが下の時にオフセットする量。
* 正値で下、負値で上にオフセットします。
*/
(() => {
"use strict";
const pluginName = document.currentScript.src.split("/").pop().replace(/\.js$/, "");
const parameters = PluginManager.parameters(pluginName);
const offsetPosition = Number(parameters['offsetPosition'] || 0);
const _Window_Message_updatePlacement = Window_Message.prototype.updatePlacement;
Window_Message.prototype.updatePlacement = function () {
this._positionType = $gameMessage.positionType();
// console.log(this._positionType);
// this._positionType // 上:0 / 中:1 下:2 と上記のログで分かる
// 例えば下の時だけプラグインパラメーターで指定した分オフセットさせるとすると下記
if (this._positionType === 2) {
this.y = ((this._positionType * (Graphics.boxHeight - this.height)) / 2) + offsetPosition;
} else {
_Window_Message_updatePlacement.call(this);
}
};
// 元のコード rmmz_windows.js 内
// Window_Message.prototype.updatePlacement = function() {
// const goldWindow = this._goldWindow;
// this._positionType = $gameMessage.positionType();
// this.y = (this._positionType * (Graphics.boxHeight - this.height)) / 2;
// if (goldWindow) {
// goldWindow.y = this.y > 0 ? 0 : Graphics.boxHeight - goldWindow.height;
// }
// };
})();
MNKR_MessageOffset.zip
作り方ですが、下記にまとめた記事があります。
ムノクラのプラグイン作成に関する9割の知識がまとまっていると思うので、そちらを読んでから質問いただいた方が話が早いかな?と思います。
https://fungamemake.com/archives/catego ... /guide-lv5
これを読んで、すぐに理解する人なら、最初のハードルは抜けて、ムノクラに応えられるような質問はなくなるかと…
逆に「記事のここが意味不明!」とご指摘いただけると、助かります。
この記事を書く知識を得るのに独学(コミュニティの人々のサポートあり)で3年かかりました…ITの学歴・職歴なし
早速の回答ありがとうございます!
コメントも大変参考になります。
なるほど、触る部分は
Window_Message.prototype.updatePlacement
だったんですね。
ずっと
Window_Message.prototype.initMembers
の項目を見ていました・・・
_positionTypeが上中下の表示位置なのかな~とあたりは付けていたのですが、
実際の表示位置を定義している場所が見つからずに迷ってました・・・
(Window_Message.prototype.updatePlacementに"goldWindow"の記載が集中していたので、
所持金周りの描画処理なのかなって思っていたのもあります。調査不足でした汗)
ムノクラ様のプラグイン講座は現在読み進めていますが、大変分かりやすく読めています。
その2とその3がかなり参考になってます!
こちらも不明点があれば質問させていただくかもしれませんが、よろしくお願いいたします。