【解決済】同座標にあるすべてのイベントに対して処理を行いたい

negi
記事: 7
登録日時: 2018年4月12日(木) 19:48

【解決済】同座標にあるすべてのイベントに対して処理を行いたい

投稿記事by negi » 2020年10月25日(日) 13:24

指定座標にある、すべてのイベントのセルフスイッチAをオンにする方法を探しています。

「変数で指定したX座標・Y座標にあるイベントのセルフスイッチAをオンにする。
指定位置にイベントがなければなにもしない」
という処理を行いたく、スクリプトを使って書いてはみたのですが、
指定位置に複数のイベントが重なっている場合、イベントIDを片方しか取得できません。

例えばスイッチの上に岩が乗っている場合など、スイッチと岩、両方のセルフスイッチをオンにしたいのです。

宜しくお願い致します。
最後に編集したユーザー negi on 2020年10月25日(日) 17:27 [ 編集 1 回目 ]

アバター
冷やっこ
記事: 132
登録日時: 2020年3月04日(水) 22:47

Re: 同座標にあるすべてのイベントに対して処理を行いたい

投稿記事by 冷やっこ » 2020年10月25日(日) 15:55

こんにちは!

コード: 全て選択

指定位置に複数のイベントが重なっている場合、イベントIDを片方しか取得できません。


https://jbbs.shitaraba.net/bbs/read.cgi ... 144514/l50
こちらにあったスクリプトを元に、指定位置に複数のイベントが重なっている場合に全てのイベントIDを
変数に代入するスクリプトです。
重なっているイベントの数だけ変数が必要になります。

コード: 全て選択

◆変数の操作:#0001 = 7
◆変数の操作:#0002 = 9

var x = $gameVariables.value(1); //指定位置X座標
var y = $gameVariables.value(2); //指定位置Y座標
var v = 11; //変数に代入する際の変数の開始ID
var ev_list = $gameMap.eventsXy(x, y);
var evid_list = [];
for(i = 0; i < ev_list.length; i++){
evid_list[i] = ev_list[i].eventId();
$gameVariables.setValue(v+i, evid_list[i])
}

例えば上記はX座標7、Y座標9の位置に3つのイベントが重なってい場合、変数11・変数12・変数13に
3つのイベントのIDを代入します。
数値、使用する変数はご自分の作成中のゲームに合わせて変更して下さい。
negi
記事: 7
登録日時: 2018年4月12日(木) 19:48

Re: 同座標にあるすべてのイベントに対して処理を行いたい

投稿記事by negi » 2020年10月25日(日) 17:26

冷やっこ様、ありがとうございます!

教えて頂いたコードを参考にしてセルフスイッチ操作のスクリプトを作ってみました。
簡単にテストしてみたかぎりでは大丈夫そうです。

大変助かりました。

コード: 全て選択

var x = $gameVariables.value(1); //指定位置X座標
var y = $gameVariables.value(2); //指定位置Y座標
var ev_list = $gameMap.eventsXy(x, y);
var evid_list = [];
for(i = 0; i < ev_list.length; i++){
evid_list[i] = ev_list[i].eventId();
$gameSelfSwitches.setValue([this._mapId, evid_list[i], "A"], true)
}

“MV:質問” へ戻る