ページ 1 / 2
【解決済み】「イベントの一時消去」の解除
Posted: 2019年6月12日(水) 21:49
by kamometrain
「イベントの一時消去」を解除、つまり一時消去されたイベントを復活するには、どうすればいいのでしょうか。
なお、マップを変えれば解除できるのは知っていますが、マップは変えたくありません。
よろしくお願いします。
Re: 「イベントの一時消去」の解除
Posted: 2019年6月12日(水) 22:53
by にゃたま
kamometrain様
イベントの一時消去を復活させたい意図が不明ですが
おそらくは以下のスクリプトでできるかと思います。
コード: 全て選択
$gameMap.event(eventID)._erased = false;
$gameMap.event(eventID).refresh();
可能であればセルフスイッチや通常のスイッチなど
他の手段で代用できないのでしょうか?
おそらくは消去したものを戻してほしくないから
そういったコマンドがないような気がします。
Re: 「イベントの一時消去」の解除
Posted: 2019年6月13日(木) 22:26
by kamometrain
お返事ありがとうございます。
イベントの一時消去を復活させたい意図が不明ですが
仰られるとおり、意図が分からないと、回答が難しいでよね。
シンボルエンカウントを作っていまして、敵を倒したら、そのシンボルを消すために、「イベントの一時消去」を使っているのです。マップが変えれば、消えたシンボルが復活できるので、使い勝手もいいと思ったのです。
マップ上には多くの敵がいる。個々にスィッチをするのも面倒なので、この「イベントの一時消去」は便利だな、と。
ところが、「マップが変えれば」というのが、実は、「マップIDを変えれば」ということに気づきました。移動イベントを使っただけでは、シンボルは復活しないわけなんですね。
そこで、今回の質問となったわけです。
質問を言い換えますと、
疑似的に(?)、「マップIDを変わった」状況にできないものか、というものです。
(移動イベントの都度、いったんダミーのマップを、間にかませるといった方法ぐらいしか浮かばないのですが・・・)
説明が下手で申し訳ありません。
この説明で分かりますでしょうか?
Re: 「イベントの一時消去」の解除
Posted: 2019年6月13日(木) 23:31
by にゃたま
kamometrain様
私自身の理解力が乏しい為、間違ったように解釈していたらすみません。
kamometrain さんが書きました:
疑似的に(?)、「マップIDを変わった」状況にできないものか、というものです。
現在のマップにいながらにして全ての敵を復活させたいということですね?
それでしたら過去に私が似たような質問に回答してましたが…
(
viewtopic.php?t=5632)
トリアコンタン様のテンプレートイベントプラグインを利用するのが一番手っ取り早いかもしれません。
https://triacontane.blogspot.com/2016/0 ... st_25.html
姉妹プラグインのような存在の動的生成イベントプラグインとも相性がいいのでおすすめです。
https://triacontane.blogspot.com/2016/08/blog-post.html
これで解決できませんか?
追記
尚、プラグインを利用しない方法ですと(
viewtopic.php?t=7690)
にてノムクラ様が答えておられましたセルフスイッチ式で$gameSelfSwitches.clear();という
スクリプトで全てのセルフスイッチがリセットされるのでこういった方法もあります。
敵を倒したらセルフスイッチをオンにして復活してほしいタイミングで使えばよいかと思います。
Re: 「イベントの一時消去」の解除
Posted: 2019年6月13日(木) 23:49
by kamometrain
ありがとうございます。
おそらくは、仰っているとおりのものです。
実のところ、質問をする前に、このページを拝見させていただいたのですが、
そのときは、理解できず、このページに行きつくとは思っていませんでした。
自分にはハードルが高そうですが、まずは、やってみることにします。
また行き詰まることがありましたら、教えていただけると助かります。
Re: 「イベントの一時消去」の解除
Posted: 2019年6月14日(金) 00:02
by にゃたま
すみません。
前回投稿の追記のタイミングとほぼ同時になってしまいました。
こちらの方法ももし試してなければお試しください。
テンプレートイベントの方法より簡単かもしれません。
ただしプラグインを使ったほうが共通したイベントにまとめれるので
使いこなせればかなり開発の効率上がります(これは個人的な主観です)
特定のリージョンやタグなどに限定して敵をランダムで発生させたい
ときは動的生成イベントプラグインも便利ですよ。
追記
リフレッシュがされてないようでしたのでスクリプトに修正をする必要があります。
前のコードに$gameSelfSwitches.onChange();を追加してください。
コード: 全て選択
$gameSelfSwitches.clear();
$gameSelfSwitches.onChange();
Re: 「イベントの一時消去」の解除
Posted: 2019年6月14日(金) 15:57
by kamometrain
ありがとうございます。
正直、テンプレートイベントは、自分には難しかったですね。
教えていただいたページをたどると、同じくトリアコンタン様の一時スィッチプラグインがありました。
これで仰られたセルフスィッチを利用してできると思ったのですが、
これも、いったんマップIDを変えないと、指定されたセルフスィッチのON/OFFができないようです。
また、$gameSelfSwitches.clear();ですが、A~DすべてがOFFになるようです。
例えば、Dだけを指定してOFFというようなことができないでしょうか。
Re: 「イベントの一時消去」の解除
Posted: 2019年6月14日(金) 17:05
by astral
こんにちは。
$gameSelfSwitches.clear()は全マップの全セルフスイッチ初期化します。
こちらのスクリプトで、現在のマップIDのDだけをOFFにすることができます。
コード: 全て選択
var mapId = $gameMap.mapId(); //対象マップID
var selfId = 'D'; //対象セルフスイッチID
Object.keys($gameSelfSwitches._data).forEach(function(self){
var key= self.split(',');
if (key[0] == mapId && key[2] === selfId) $gameSelfSwitches.setValue(key);
});
Re: 「イベントの一時消去」の解除
Posted: 2019年6月15日(土) 00:01
by kamometrain
ありがとうございます。解決しました。
試してみましたが、問題なく動きました。
にゃたま さん astralさん ありがとうございました。
感動ものです。
おかげでセルフスィッチの幅も広がりました(実際に広げるかどうかは未定ですが・・)
Re: 「イベントの一時消去」の解除
Posted: 2021年6月12日(土) 23:11
by コミット
astral さんが書きました:こんにちは。
$gameSelfSwitches.clear()は全マップの全セルフスイッチ初期化します。
こちらのスクリプトで、現在のマップIDのDだけをOFFにすることができます。
コード: 全て選択
var mapId = $gameMap.mapId(); //対象マップID
var selfId = 'D'; //対象セルフスイッチID
Object.keys($gameSelfSwitches._data).forEach(function(self){
var key= self.split(',');
if (key[0] == mapId && key[2] === selfId) $gameSelfSwitches.setValue(key);
});
大変役に立つ情報をありがとうございます。
解決済みが張られているところ掘り起こして申し訳ありませんが、
上記の「現在のマップIDのDだけをOFF」のスクリプトを逆に、「現在のマップIDのDだけをON」にするスクリプトはどうやって記述すればよろしいでしょうか?
また、全マップの全セルフスイッチをONにする方法も知りたいです。
どうかよろしくお願いします。