こんばんは。
マップ名を表示させている時、画面にマップが表示されている状態を認識したいです。
何がしたいかというとマップ名が表示されているとマップ名の下にある画像が隠れたり
マップ名そのものが見づらくなってしまう為、
マップ名が消えたら表示させる処理を入れたいと思います。
スクリプトを色々漁ってみましたがわかりませんでした。
$gameMap.isなんちゃらというスクリプトを想定していましたがそれが見当たらず…orz
マップ名が表示されたらtrue消えたらfalseのスクリプトを知ってる方いましたら教えてくださると嬉しいです。
【解決済み】マップ名表示中のスクリプトについて
Re: マップ名表示中のスクリプトについて
しぐれん様
お返事ありがとうございます。せっかく教えて頂いて申し訳ですが…そのWicdow_MapNameだとそれは関数名であってtrue , false の値が取れないので、変数名で教えて頂けないでしょうか?正確にはその関数の中から変数が見つけられなかったということになります。
追記
…それかその関数の返り値から値がとれるんでしょうか?
条件分岐のスクリプトに記載できるような形式が好ましいです。
しぐれん さんが書きました:Window_MapNameで表示されていますね。
制御に関しては、Scene_Mapにあります。
お返事ありがとうございます。せっかく教えて頂いて申し訳ですが…そのWicdow_MapNameだとそれは関数名であってtrue , false の値が取れないので、変数名で教えて頂けないでしょうか?正確にはその関数の中から変数が見つけられなかったということになります。
追記
…それかその関数の返り値から値がとれるんでしょうか?
条件分岐のスクリプトに記載できるような形式が好ましいです。
Re: マップ名表示中のスクリプトについて
表示の有否をtrue falseで返してくれるfunctionはWindow_MapNameには存在致しません。
これは表示方法がフェードイン、アウトによる透明度の変化によって行われているからですね。
基本contentsOpacity > 0かつvisible = trueなら表示されている、どちら片方でも条件から外れていたら表示されていない、と言う扱いだと考えます。
これは表示方法がフェードイン、アウトによる透明度の変化によって行われているからですね。
基本contentsOpacity > 0かつvisible = trueなら表示されている、どちら片方でも条件から外れていたら表示されていない、と言う扱いだと考えます。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
Re: マップ名表示中のスクリプトについて
マップ名の再表示、もしくは強制的に消すなら一応スクリプトで制御できますがそういう単純なことを言っているわけではないのかな?
コード: 全て選択
SceneManager._scene._mapNameWindow.open();
SceneManager._scene._mapNameWindow.close();
Re: マップ名表示中のスクリプトについて
剣崎 宗二様
透明度の変化のみであることを了解しました。
contentsOpacityという変数はrpg_window.js内4650行付近にあるWindow_MapName内に
あるのは発見できましたがこの中にvisibleという変数が発見できませんでした。
全く別のところにあるのでしょうか?
また、別のプラグインからその値を参照するにはどのように書けばよいでしょうか?
にいやん様
すみません、マップ名を消したいわけではないのです。マップ名が現在表示されているかを確認したいのです。
ですがそちらのスクリプトに関しては大変勉強になりました。ありがとうございました。
追記
rpg_windows.jsのバージョンを記載し忘れました。v1.6.1です。
これ以外だと行数が異なるかもしれません。
剣崎 宗二 さんが書きました:基本contentsOpacity > 0かつvisible = trueなら表示されている、どちら片方でも条件から外れていたら表示されていない、と言う扱いだと考えます。
透明度の変化のみであることを了解しました。
contentsOpacityという変数はrpg_window.js内4650行付近にあるWindow_MapName内に
あるのは発見できましたがこの中にvisibleという変数が発見できませんでした。
全く別のところにあるのでしょうか?
また、別のプラグインからその値を参照するにはどのように書けばよいでしょうか?
にいやん様
すみません、マップ名を消したいわけではないのです。マップ名が現在表示されているかを確認したいのです。
ですがそちらのスクリプトに関しては大変勉強になりました。ありがとうございました。
追記
rpg_windows.jsのバージョンを記載し忘れました。v1.6.1です。
これ以外だと行数が異なるかもしれません。
Re: マップ名表示中のスクリプトについて
こんにちは。
プラグイン化することで、マップ名表示中に指定したスイッチ番号をオンに、非表示になった場合にオフになります。
追記
プラグインでスイッチに反映させるようにしました。
プラグイン化することで、マップ名表示中に指定したスイッチ番号をオンに、非表示になった場合にオフになります。
コード: 全て選択
(function () {
'use strict';
/** スイッチ番号を指定 */
var switchId = 1;
var _Window_MapName_open = Window_MapName.prototype.open;
Window_MapName.prototype.open = function() {
_Window_MapName_open.apply(this, arguments);
if ($gameMap.displayName()) $gameSwitches.setValue(switchId, true);
};
var _Window_MapName_close = Window_MapName.prototype.close;
Window_MapName.prototype.close = function() {
_Window_MapName_close.apply(this, arguments);
if ($gameSwitches.value(switchId)) $gameSwitches.setValue(switchId, false);
};
var _Window_MapName_updateFadeOut = Window_MapName.prototype.updateFadeOut;
Window_MapName.prototype.updateFadeOut = function() {
_Window_MapName_updateFadeOut.apply(this, arguments);
if ($gameSwitches.value(switchId)) $gameSwitches.setValue(switchId, false);
};
})();
追記
プラグインでスイッチに反映させるようにしました。
最後に編集したユーザー astral on 2019年3月26日(火) 18:18 [ 編集 2 回目 ]
Re: マップ名表示中のスクリプトについて
visibleはWindow_MapNameの継承元であるWindow_Baseから存在します。(より正確にはpixi.jsレベルから存在しております)
.hide()および.show()により制御されております。
Window_MapNameの一部のfunctionにて.hide()が呼び出されているためこれも確認する必要があるのではないかと判断しました。
.hide()および.show()により制御されております。
Window_MapNameの一部のfunctionにて.hide()が呼び出されているためこれも確認する必要があるのではないかと判断しました。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
Re: マップ名表示中のスクリプトについて
astral様
ありがとうございました。解決致しました。
SceneManager._scene._mapNameWindow._showCount > 0
というスクリプトが求めていたものでした。
_showCountにアクセスするのにSceneManager._scene._mapNameWindow.が必要だったんですね。
これがわからなくて悪戦苦闘してました。これこそまさしくビンゴといった具合で助かりました。
$gameMap.isNameDisplayEnabled()はおそらくマップ名表示が有効であるかのbool値かと思うのですが
当方、常にマップ名表示有効にしてますがこれは必要なのでしょうか?
あと条件に$gameMap.displayName()もないとエディタでマップ名に記載がされてない状態でも
マップ名が存在していると認識してしまうようです。
剣崎 宗二様
visibleについて詳しくおしえていただきありがとうございました。大変勉強になります。
その程度のこともわからない無知な私をお許しくださいorz
それにしてもWindow_Baseのような大本にあるプロパティくらいは知っておく必要ありますね<今更
.hide()でvisibleをfalseに、.show()でtrueにする感じですね!了解しました。心得ておきます。
ありがとうございました。解決致しました。
SceneManager._scene._mapNameWindow._showCount > 0
というスクリプトが求めていたものでした。
_showCountにアクセスするのにSceneManager._scene._mapNameWindow.が必要だったんですね。
これがわからなくて悪戦苦闘してました。これこそまさしくビンゴといった具合で助かりました。
$gameMap.isNameDisplayEnabled()はおそらくマップ名表示が有効であるかのbool値かと思うのですが
当方、常にマップ名表示有効にしてますがこれは必要なのでしょうか?
あと条件に$gameMap.displayName()もないとエディタでマップ名に記載がされてない状態でも
マップ名が存在していると認識してしまうようです。
剣崎 宗二様
visibleについて詳しくおしえていただきありがとうございました。大変勉強になります。
その程度のこともわからない無知な私をお許しくださいorz
それにしてもWindow_Baseのような大本にあるプロパティくらいは知っておく必要ありますね<今更
.hide()でvisibleをfalseに、.show()でtrueにする感じですね!了解しました。心得ておきます。
Re: マップ名表示中のスクリプトについて
SceneManager._sceneについては、
Scene_Map.prototype.createMapNameWindow = function() {
this._mapNameWindow = new Window_MapName();
this.addChild(this._mapNameWindow);
};
Scene_MapのthisがSceneManager._sceneになっているので、
SceneManager._scene._mapNameWindowで参照できます。
$gameMap.isNameDisplayEnabled()は、Window_MapNameの仕様や競合含めて、
マップ名が非表示なのに_showCountが1以上のまま減らない場合もあるため入れています。
$gameMap.displayName()の表示名の設定関係なく、透明状態で表示されている仕様でした。
これも条件分岐のスクリプトに必要ですね。
Scene_Map.prototype.createMapNameWindow = function() {
this._mapNameWindow = new Window_MapName();
this.addChild(this._mapNameWindow);
};
Scene_MapのthisがSceneManager._sceneになっているので、
SceneManager._scene._mapNameWindowで参照できます。
$gameMap.isNameDisplayEnabled()は、Window_MapNameの仕様や競合含めて、
マップ名が非表示なのに_showCountが1以上のまま減らない場合もあるため入れています。
$gameMap.displayName()の表示名の設定関係なく、透明状態で表示されている仕様でした。
これも条件分岐のスクリプトに必要ですね。