(解決しました)選択肢表示の位置(上下Y軸)を一時的に変更したい

返信する
KITCHEN
記事: 47
登録日時: 2021年8月01日(日) 18:10

(解決しました)選択肢表示の位置(上下Y軸)を一時的に変更したい

投稿記事 by KITCHEN »

お世話になります。よろしく願います。

選択肢表示の位置(上下Y軸)を一時的に変更したいと考えています。
1場面のみでそれを行いたいので、それ以外はデフォルトの表示でしたいと考えています。
その為、コアスクリプトの数値を変更するなど他に影響を及ぼすものではなく
そのシーンのみで戻せる形に出来ないでしょうか。

プラグインや、スクリプトで一時的に可能な方法があればアドバイスを頂ければと思います。
どうぞよろしくお願い致します。
最後に編集したユーザー KITCHEN [ 2022年2月04日(金) 16:29 ], 累計 1 回
アバター
なぴぃ
記事: 41
登録日時: 2021年12月19日(日) 19:47
連絡する:

Re: 選択肢表示の位置(上下Y軸)を一時的に変更したい

投稿記事 by なぴぃ »

プラグインを作って解決する方法を順を追って書いてみます。

選択肢の位置を決定しているのはコアスクリプトrpg_windows.jsの Window_ChoiceList.prototype.updatePlacement というメソッドです。
ここでウィンドウ位置の設定に応じてX座標(this.x)とy座標(this.y)を入力しています。

この値を以下のように上書きするとy座標の位置が変数yの値に応じて変化します。

コード: 全て選択

Window_ChoiceList.prototype.updatePlacement = function() {
    var positionType = $gameMessage.choicePositionType();
    var messageY = this._messageWindow.y;
    this.width = this.windowWidth();
    this.height = this.windowHeight();
    switch (positionType) {
    case 0:
        this.x = 0;
        break;
    case 1:
        this.x = (Graphics.boxWidth - this.width) / 2;
        break;
    case 2:
        this.x = Graphics.boxWidth - this.width;
        break;
    }
    if (messageY >= Graphics.boxHeight / 2) {
        this.y = messageY - this.height;
    } else {
        this.y = messageY + this._messageWindow.height;
    }

    //↓追記分
    this.y = this.y + $gameVariables.value(120); //y座標に元のy座標+変数120の値を代入
};
これだと使い終わった時0に戻すのが面倒なので位置を上書きし終わったら変数を0にリセットするようにします。

コード: 全て選択

    //↓追記分
   this.y = this.y + $gameVariables.value(120); //y座標に元のy座標+変数120の値を代入
   $gameVariables.setValue(120, 0); //代入後変数を0に戻す
コアスクリプトへの追記の場合はこれで完成です。
競合しにくいようにプラグイン化すると以下のようになります。(プラグイン化の方法はこちらを参照 https://tkool.jp/mz/plugin/make/koushiki.html

コード: 全て選択

const _Window_ChoiceList_prototype_updatePlacement = Window_ChoiceList.prototype.updatePlacement;
Window_ChoiceList.prototype.updatePlacement = function() {
    _Window_ChoiceList_prototype_updatePlacement.apply(ths,arguments); //元の処理を実行

    //↓追記分
   this.y = this.y + $gameVariables.value(120); //y座標に元のy座標+変数120の値を代入
   $gameVariables.setValue(120, 0); //代入後変数を0に戻す
これを使いたい変数番号に変えてメモ帳等に貼り付けて保存し、拡張子を.jsに変更すればプラグインになります。
なぴぃ
Twitter: https://twitter.com/napiiey
プラグイン置き場: https://napiiey.github.io/plugins/
KITCHEN
記事: 47
登録日時: 2021年8月01日(日) 18:10

Re: 選択肢表示の位置(上下Y軸)を一時的に変更したい

投稿記事 by KITCHEN »

なぴぃ 様

アドバイスを頂戴しましてありがとうございます。
参考に致しまして、試してみたいと思います。感謝します。
アバター
ムノクラ
記事: 2118
登録日時: 2018年2月23日(金) 11:41
連絡する:

Re: 選択肢表示の位置(上下Y軸)を一時的に変更したい

投稿記事 by ムノクラ »

https://raw.githubusercontent.com/munok ... iceCols.js

既存のプラグインに機能追加しました。
お試しください。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
KITCHEN
記事: 47
登録日時: 2021年8月01日(日) 18:10

Re: 選択肢表示の位置(上下Y軸)を一時的に変更したい

投稿記事 by KITCHEN »

ムノクラさま、ありがとうございます。わざわざお手数をお掛けしまして感謝します。
返信する

“MV:質問”に戻る