ウインドウスキン切り替えプラグイン

フォーラムルール
素材の利用規約を決めたいけど、どんなことを書けばいいのか分からない場合は、
素材のテンプレートをご利用下さい。
アバター
ビービー
記事: 197
登録日時: 2016年1月12日(火) 18:40

ウインドウスキン切り替えプラグイン

投稿記事by ビービー » 2016年7月17日(日) 21:01

ゲーム中に変数の操作でウインドウを切り替える事ができるプラグインです。

systemフォルダ内にWindow2とWindow3というウインドウ画像を配置していただければあとは
プラグインパラメータで指定した変数をイベントで2にすればWindow2と切り替わり、3とすればWindow3に切り替わります。それ以外の数値の際はWindowが表示されます。

切り替わる際に”文字の色”と”文字枠の色”と”文字枠の幅”をプラグインパラメータで指定していれば同時に切り替える事ができます。
※ゲーム開始時の文字の変更は対応できていません。どうすればできるのか教えてください。

あとウインドウの透明度もそれぞれのウインドウごとに指定する事ができます。

まったくもってjavaスクリプトを知らない人間が作ったプラグインなのでおかしな動作をする可能性があります。
どなたか改善点を発見された場合教えていただけるとありがたいです。よろしくお願いします。
image_20160717_203606.jpg



追記:
上記プラグインは文字色を変える際に問題が発生したので、文字色を変える仕様を取り払ったものに変更しました。

ただ文字色を変えれないと白いウインドウだったりした場合、文字が見ずらいですので、代案を考えました。
Window3.png
Window3.png (7.83 KiB) 閲覧数: 2718 回

この画像の赤枠内がそのウインドウのデフォルトの文字色になっているので、この部分を画像のようにそのウインドウで使用したい文字色に変更する事でウインドウごとに違う文字色という事が可能になります。

追記2:
文章の表示で背景”暗くする”にした場合の背景の色を変更できる機能を追加しました。
BB_WindowSelector.js
(9.25 KiB) ダウンロード数: 52 回


追記3:
ツクールMVのバージョン1.3.3に対応したと思われるものを作りました。
BB_WindowSelector3.js
(9.74 KiB) ダウンロード数: 105 回


画像
画像
画像
画像
画像
画像
最後に編集したユーザー ビービー on 2016年10月22日(土) 15:47 [ 編集 4 回目 ]

------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
ビービー
記事: 197
登録日時: 2016年1月12日(火) 18:40

Re: ウインドウスキン切り替えプラグイン

投稿記事by ビービー » 2016年7月18日(月) 21:44

不具合を発見しました。
キャプチャウインドウ切り替え.JPG
キャプチャウインドウ切り替え.JPG (113.57 KiB) 閲覧数: 2843 回

このように一つのイベントでウインドウの切り替えを連続して行うと、3回目の表示から一文字目の文字色が反映されないという現象です。
image_20160718_172954.jpg

いちおう変数の操作と文章の表示の間にウエイトを入れれば現象を回避する事は出来ます。
もしくは文字色はプラグインパラメータで変えず制御文字で変えるようにすれば問題ないと思います。
キャプチャウインドウ切り替え2.JPG
キャプチャウインドウ切り替え2.JPG (33.95 KiB) 閲覧数: 2843 回

しかしやはりプラグイン自体を直したいと思っているのですが、自分ではどうすれば改善されるのかわからないので、どなたか改善する方法を教えていただけるとありがたいです。
よろしくお願いします。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
名無し蛙
記事: 38
登録日時: 2015年11月23日(月) 02:46

Re: ウインドウスキン切り替えプラグイン

投稿記事by 名無し蛙 » 2016年7月19日(火) 13:30

お疲れ様です。

症状的に十中八九ローディングの問題ですね。
一文字目描画時点で未完了で二文字目描画時に既に完了しているものだと思われます。
問題は何のローディングが未完了なのか、ですが
ざっと見る限りloadSystemImages2がどこからも呼び出されていないところが怪しいです。
動作確認まではしていませんけど。
アバター
ビービー
記事: 197
登録日時: 2016年1月12日(火) 18:40

Re: ウインドウスキン切り替えプラグイン

投稿記事by ビービー » 2016年7月19日(火) 19:11

名無し蛙さん返信ありがとうございます。

”loadSystemImages2がどこからも呼び出されていない”ということで、ここかなと思った部分をrpg_scenesからコピーしてみたのですがダメでした。

コード: 全て選択

Scene_Boot.prototype.create = function() {
    Scene_Base.prototype.create.call(this);
    DataManager.loadDatabase();
    ConfigManager.load();
    this.loadSystemImages();
    this.loadSystemImages2();
};

あと他の方のプラグインを見て以下を真似してみたのですがこちらも見当違いのようでした。

コード: 全て選択

var Scene_Boot_loadSystemImages2 = Scene_Boot.prototype.loadSystemImages2;
Scene_Boot.prototype.loadSystemImages2 = function() {

初歩的な質問で恐縮なのですが”呼び出す”というのはどうすればいいのでしょうか?
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
名無し蛙
記事: 38
登録日時: 2015年11月23日(月) 02:46

Re: ウインドウスキン切り替えプラグイン

投稿記事by 名無し蛙 » 2016年7月20日(水) 02:07

>初歩的な質問で恐縮なのですが”呼び出す”というのはどうすればいいのでしょうか?

自分が指摘したのは上の方法で合ってますよ。でもこの問題とは直接関係が無かったようですね
こちらでも再現環境を整えて弄くってみましたけど原因は分かりました

コード: 全て選択

Window_Message.prototype.newPage = function(textState) {
    this.contents.clear();
    this.resetFontSettings();
    this.clearFlags();
    this.loadMessageFace();
    textState.x = this.newLineX();
    textState.y = 0;
    textState.left = this.newLineX();
    textState.height = this.calcTextHeight(textState, false);
};


メッセージの改ページの処理内で
>this.resetFontSettings();
が実行されています。これは

コード: 全て選択

Window_Base.prototype.resetFontSettings = function() {
    this.contents.fontFace = this.standardFontFace();
    this.contents.fontSize = this.standardFontSize();
    this.resetTextColor();
};


文字のフォントと大きさと色を強制的にデフォルト値にリセットする処理です。
これで「改ページ直後の一文字目が文字枠だけ変化して文字色だけ白に変化している」という状態の説明がつくと思います。

それじゃどうやって改善すれば良いのか、というと難しいところですね。
このプラグインはメッセージウィンドウのみ適用予定なのか、全てのウィンドウに適用予定なのかは存じませんが
制御文字付きテキスト描画内でもthis.resetFontSettings();が使用されています。

コード: 全て選択

Window_Base.prototype.drawTextEx = function(text, x, y) {
    if (text) {
        var textState = { index: 0, x: x, y: y, left: x };
        textState.text = this.convertEscapeCharacters(text);
        textState.height = this.calcTextHeight(textState, false);
        this.resetFontSettings();
        while (textState.index < textState.text.length) {
            this.processCharacter(textState);
        }
        return textState.x - x;
    } else {
        return 0;
    }
};


つまり一部のウィンドウでは事前にthis.changeTextColorを実行しても適用されません。
それじゃresetFontSettingsを改造したり削除すれば良いんじゃないか、という話になりますけど
また別の問題が新たに発生する可能性があり「簡単な変更プラグイン」ではなくなってしまう恐れがあります。
それを踏まえた上でプラグインの実装を複雑化するかプラグインの利用方法を単純化・限定するか一考した方が良いと思います。
アバター
ビービー
記事: 197
登録日時: 2016年1月12日(火) 18:40

Re: ウインドウスキン切り替えプラグイン

投稿記事by ビービー » 2016年7月20日(水) 02:49

名無し蛙さん返信ありがとうございます。

色々調べていただけたようで本当にありがたいです。
文字の色がまさかそんな大変なこととは知らず本当にすみません。

おっしゃるとおりこれ以上複雑化しても、もっと自分ではどうしようもなくなるだけなので、文字色に関する部分をコメントアウトしたものを再投稿しようと思います。

このたびは本当にありがとうございました。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
アバター
ビービー
記事: 197
登録日時: 2016年1月12日(火) 18:40

Re: ウインドウスキン切り替えプラグイン

投稿記事by ビービー » 2016年10月22日(土) 15:49

ツクールMVのバージョン1.3.3に対応しているような気がするものをUPしました。
最初の記事からダウンロードしてください。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/

“MV:プラグイン素材” へ戻る