【解決】イベントの上に文字を表示するプラグインについて

アバター
dori
記事: 73
登録日時: 2016年9月20日(火) 10:08
お住まい: ちたま

【解決】イベントの上に文字を表示するプラグインについて

投稿記事by dori » 2021年1月03日(日) 08:13

https://paradre.com/%E3%82%A4%E3%83%99% ... %E3%82%AF/

こちらのプラグインで
話したらセルフスイッチが入り、キャラクターの名前が表示される…
というイベントを作りテストプレイを行ったところ…

キャラに話しかける前にセーブ→キャラに話しかける→キャラの上に名前が表示される→
→タイトルに戻る→先ほどのセープをロード→キャラの名前が表示されたまま

…という不具合が発生してしまいました。
どなたか修正して頂けないでしょうか?
添付ファイル
無題.png
無題.png (45.26 KiB) 閲覧数: 5364 回
最後に編集したユーザー dori on 2021年1月03日(日) 21:51 [ 編集 1 回目 ]

アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: イベントの上に文字を表示するプラグインについて

投稿記事by ムノクラ » 2021年1月03日(日) 09:06

dori さんが書きました:https://paradre.com/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%81%AE%E4%B8%8A%E3%81%AB%E6%96%87%E5%AD%97%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%80%90%E3%83%84%E3%82%AF/

こちらのプラグインで
話したらセルフスイッチが入り、キャラクターの名前が表示される…
というイベントを作りテストプレイを行ったところ…

キャラに話しかける前にセーブ→キャラに話しかける→キャラの上に名前が表示される→
→タイトルに戻る→先ほどのセープをロード→キャラの名前が表示されたまま

…という不具合が発生してしまいました。
どなたか修正して頂けないでしょうか?


下記で代用というわけにはいきませんか?

▼ネームポップ(tomoaky様作) - TMNamePop.js
https://plugin.fungamemake.com/archives/2356
イベントの頭上に文字列を表示する機能を追加します。

再現できるサンプルプロジェクト(マップデータだけでも)をアップいただければ、見てみようかな?という方が現れやすいと思います。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
dori
記事: 73
登録日時: 2016年9月20日(火) 10:08
お住まい: ちたま

Re: イベントの上に文字を表示するプラグインについて

投稿記事by dori » 2021年1月03日(日) 12:34

同じ様なプラグインがあったのですね… :oops:
前回に続き情報ありがとうございます!

ですが…ゲームの方が八割程出来てしまっている状況でして、
入れ替えるとなると頭が痛くなるぐらいの箇所の修正をせねばなりません。
手前勝手で申し訳ないのですが、もう暫く有志を募ってみたいと思います。

再現用のマップデータです。
どなたかお願い致します!
添付ファイル
Map001.zip
(731 バイト) ダウンロード数: 8 回
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: イベントの上に文字を表示するプラグインについて

投稿記事by ムノクラ » 2021年1月03日(日) 12:53

dori さんが書きました:https://paradre.com/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%81%AE%E4%B8%8A%E3%81%AB%E6%96%87%E5%AD%97%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%80%90%E3%83%84%E3%82%AF/

こちらのプラグインで
話したらセルフスイッチが入り、キャラクターの名前が表示される…
というイベントを作りテストプレイを行ったところ…

キャラに話しかける前にセーブ→キャラに話しかける→キャラの上に名前が表示される→
→タイトルに戻る→先ほどのセープをロード→キャラの名前が表示されたまま

…という不具合が発生してしまいました。
どなたか修正して頂けないでしょうか?


サンプルデータを確認したところ、プラグインの挙動どおりに動作していると思います。
セルフスイッチがONの状態をセーブしているのですから、通常通りの動作です。

例えるなら、「宝箱を開けて、セーブしたのをロードすると、宝箱が開いてしまっている」ような状態です。


質問の基本
1.実現したいことを書く
2.試したことを書く
3.躓いている箇所を書く

の1.が抜けているので、どう変更すべきか、現時点ではアドバイスできません。
…だけで終わるのも何なので、予想で書きます。

1.一度話しかけたキャラクターの名前が表示される。
2.セーブ後、ロードすると、過去に話しかけた名前表示が全て消える。

下記の質問に似ている状況と予想しました。
viewtopic.php?t=7690

▼▼基本的な解決方法と予想される手段
1.名前を表示するキャラクターのセルフスイッチを全て個別のスイッチにする。
2.ロード直後にコモンイベントで個別スイッチの全てをオフにする。
おそらく2.は下記を使うと簡単に実装できます。
▼割り込みコモンイベント(トリアコンタン様作) - CommonInterceptor.js
https://plugin.fungamemake.com/archives/1215
指定した時(・ニューゲーム時・ロード完了時・メニュー終了時)にコモンイベントを呼び出します。

これだと、結局は全てのイベントを編集し直すことになるでしょう。
なので、下記のようなセルフスイッチを制御するプラグインを駆使したほうが早いかも知れません。

▼MPP セルフスイッチ自動OFF(木星ペンギン様作) - MPP_DeleteSelfSwitch.js
https://plugin.fungamemake.com/archives/2209
場所移動した際に、マップ内のイベントのセルフスイッチをOFFにします。

▼セルフスイッチの一括操作(MV&MZ)(TYPE74RX-T様作) - RX_T_SelfSw_BatCtrl.js
https://plugin.fungamemake.com/archives/27437
セルフスイッチを一括操作できるようになります。

▼セルフスイッチ一括操作(茶の助様作) - TYA_SwitchControl.js
https://plugin.fungamemake.com/archives/16329
全マップの全イベントのセルフスイッチを一括で操作します。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
dori
記事: 73
登録日時: 2016年9月20日(火) 10:08
お住まい: ちたま

Re: イベントの上に文字を表示するプラグインについて

投稿記事by dori » 2021年1月03日(日) 13:16

ムノクラ様、確認して頂きありがとうございます!
お手数をおかけしてしまい申し訳ないのですが…

話しかける前にセーブ(セルフスイッチがOFFの状態)をして
その後に話しかけ名前を表示させ、メニュー画面からタイトルに戻りロードしてもらい
ロード後に名前が表示されているか確認願いますか?

例えを借り例えますと…
「宝箱を開ける前にセーブし、開けた後に開ける前へロードで戻ったら空いてた」状態といいますか…

新規プロジェクトで、こちらのプラグインだけONの状態で何度試しても
私の方ではこの不具合が発生してしまいます…。
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: イベントの上に文字を表示するプラグインについて

投稿記事by ムノクラ » 2021年1月03日(日) 13:20

dori さんが書きました:ムノクラ様、確認して頂きありがとうございます!
お手数をおかけしてしまい申し訳ないのですが…

話しかける前にセーブ(セルフスイッチがOFFの状態)をして
その後に話しかけ名前を表示させ、メニュー画面からタイトルに戻りロードしてもらい
ロード後に名前が表示されているか確認願いますか?

例えを借り例えますと…
「宝箱を開ける前にセーブし、開けた後に開ける前へロードで戻ったら空いてた」状態といいますか…

新規プロジェクトで、こちらのプラグインだけONの状態で何度試しても
私の方ではこの不具合が発生してしまいます…。


再現できました!

行った手順
1.サンプルデータでニューゲーム
2.何もせずにセーブ
3.イベントに話しかけて名前を表示
4.セーブせずにゲーム終了
5.コンティニューすると、名前が表示されている

調査してみます。

※とりあえず、作者にDM入れておきました。
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
dori
記事: 73
登録日時: 2016年9月20日(火) 10:08
お住まい: ちたま

Re: イベントの上に文字を表示するプラグインについて

投稿記事by dori » 2021年1月03日(日) 13:31

DMして頂き、ありがとうございます!
分かり難い文章で申し訳ありませんでした!

ツクツクしながらマタリと待とうと思います :oops:
アバター
ムノクラ
記事: 2011
登録日時: 2018年2月23日(金) 11:41
連絡を取る:

Re: イベントの上に文字を表示するプラグインについて

投稿記事by ムノクラ » 2021年1月03日(日) 13:33

結構複雑なプラグインなので、ムノクラの調査は期待しないでくださいね…
---
JavaScriptの基本を学習せずにツクールのプラグインやスクリプトを使って横着してゲームを作ろうとしている人間です。
そのような者なので、適当な投稿をするかも知れません。
他の方の投稿を信用してください。
アバター
dori
記事: 73
登録日時: 2016年9月20日(火) 10:08
お住まい: ちたま

Re: イベントの上に文字を表示するプラグインについて

投稿記事by dori » 2021年1月03日(日) 13:47

了解しました!
ツクツクしながら有志が現れるのをマタリと待とうと思います :oops:
ecf5DTTzl6h6lJj02
記事: 455
登録日時: 2018年12月23日(日) 13:55

Re: イベントの上に文字を表示するプラグインについて

投稿記事by ecf5DTTzl6h6lJj02 » 2021年1月03日(日) 20:38

こんばんは。

ロードしたときに、このプラグインで設定している、ウィンドウの情報が正しく初期化されないために、起こっているようです。
ちなみに、ウィンドウを表示した状態でセーブをし、いったんゲームウィンドウを閉じ、再び開いてから、ロードを行うと、今度は、ウィンドウが表示されていない状態でスタートしてしまいます。

ちゃんと確認できていないので、個人でテストしていただくようになってしまいますが、
応急処置として。

まず、EventInfomation.js を エディタで開き、addInfoSprite という関数の下に次のコードを追加してください。

コード: 全て選択

_PD_EventInfomation.removeInfoSpriteAll = function(){
    if(!SceneManager._scene._spriteset) return;
    for(var i = 0, len = $gameMap._events.length; i < len; i++){
        _PD_EventInfomation.removeInfoSprite(i);
    }
};

_PD_EventInfomation.removeInfoSprite = function(eventId) {
    if(!SceneManager._scene._spriteset) return;
    var infoSprite = _PD_EventInfomation.infoSprite;
    var characterSprite = SceneManager._scene._spriteset._characterSprites;
    if(infoSprite[eventId] && infoSprite[eventId].constructor === Sprite){
        characterSprite.forEach(function(sprite){
            if(sprite._character === $gameMap._events[eventId]){
               sprite.removeChild(infoSprite[eventId]);
            }
        });
    }
};

次に、Scene_Map.prototype.createSpriteset という関数を次のコードに差し替えてください。

コード: 全て選択

    Scene_Map.prototype.createSpriteset = function() {
        pd_EI_Scene_Map_createSpriteset.call(this);
        _PD_EventInfomation.removeInfoSpriteAll();
        _PD_EventInfomation.infoSprite = [];
        _PD_EventInfomation.changeVariables = [];
        $gameMap.events().forEach(index=>{_PD_EventInfomation.setupCommand(index)});
        _PD_EventInfomation.addInfoSpriteAll();
    };

これで、一度お試しください。(一応こちらでは改善されたように見えてますが、キチンと改善される保証はできません)

飽くまで、応急処置のコードですので、
作者様にきちんと修正していただいたほうがいいと思います。

“MV:プラグイン素材のリクエスト” へ戻る