指定座標にある、すべてのイベントのセルフスイッチAをオンにする方法を探しています。
「変数で指定したX座標・Y座標にあるイベントのセルフスイッチAをオンにする。
指定位置にイベントがなければなにもしない」
という処理を行いたく、スクリプトを使って書いてはみたのですが、
指定位置に複数のイベントが重なっている場合、イベントIDを片方しか取得できません。
例えばスイッチの上に岩が乗っている場合など、スイッチと岩、両方のセルフスイッチをオンにしたいのです。
宜しくお願い致します。
【解決済】同座標にあるすべてのイベントに対して処理を行いたい
【解決済】同座標にあるすべてのイベントに対して処理を行いたい
最後に編集したユーザー negi [ 2020年10月25日(日) 17:27 ], 累計 1 回
Re: 同座標にあるすべてのイベントに対して処理を行いたい
こんにちは!
https://jbbs.shitaraba.net/bbs/read.cgi ... 144514/l50
こちらにあったスクリプトを元に、指定位置に複数のイベントが重なっている場合に全てのイベントIDを
変数に代入するスクリプトです。
重なっているイベントの数だけ変数が必要になります。
例えば上記はX座標7、Y座標9の位置に3つのイベントが重なってい場合、変数11・変数12・変数13に
3つのイベントのIDを代入します。
数値、使用する変数はご自分の作成中のゲームに合わせて変更して下さい。
コード: 全て選択
指定位置に複数のイベントが重なっている場合、イベントIDを片方しか取得できません。
こちらにあったスクリプトを元に、指定位置に複数のイベントが重なっている場合に全てのイベント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])
}
3つのイベントのIDを代入します。
数値、使用する変数はご自分の作成中のゲームに合わせて変更して下さい。
Re: 同座標にあるすべてのイベントに対して処理を行いたい
冷やっこ様、ありがとうございます!
教えて頂いたコードを参考にしてセルフスイッチ操作のスクリプトを作ってみました。
簡単にテストしてみたかぎりでは大丈夫そうです。
大変助かりました。
教えて頂いたコードを参考にしてセルフスイッチ操作のスクリプトを作ってみました。
簡単にテストしてみたかぎりでは大丈夫そうです。
大変助かりました。
コード: 全て選択
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)
}