すり抜けしないイベントIDの取得方法

ドラねこ
記事: 21
登録日時: 2016年5月27日(金) 15:28

すり抜けしないイベントIDの取得方法

投稿記事by ドラねこ » 2020年4月12日(日) 23:08

スクリプトで$gameMap.eventsXyNt(x, y) を使用すると配列でイベントIDを取得する為か、他のスクリプトと合わせた時にエラーが発生してしまいます。

$gameMap.eventIdXy(x, y)のように1つだけイベントIDを取得し、かつすり抜けしないイベントだけを選べるスクリプトはあるでしょうか?


【現在のスクリプト】
$gameVariables.setValue(49,$gameMap.eventsXy($gameVariables.value(47),$gameVariables.value(48)));

var targetID = $gameVariables.value(49);
if(targetID != 0 && ~$dataMap.events[targetID].note.indexOf("[対象者]")){
var mapID = this._mapId;
if($gameSelfSwitches.value([mapID, targetID, "B"])){
$gameVariables.setValue($gameVariables.value(49),20);
if(~$dataMap.events[targetID].note.indexOf("[巨大モンスター]")){
$gameVariables.setValue(45,$gameVariables.value(45)+1);
}
$gameVariables.setValue(45,$gameVariables.value(45)-1);
}

【エラーコード】
TypeError
Cannot read property 'note' of undefined

【参考にしたページ】
RPGツクールと数学のブログ アクションRPGの基礎(RPGツクールMV)(2/4)
https://fermiumbay13.hatenablog.com/ent ... /01/190453

【解決済み】同じマスに複数イベントが重なっている時のイベントID所得方法
viewtopic.php?t=8470

アバター
WTR
記事: 558
登録日時: 2015年12月22日(火) 19:14

Re: すり抜けしないイベントIDの取得方法

投稿記事by WTR » 2020年4月12日(日) 23:33

$gameMap.eventsXyNt(x, y) はイベントIDではなく、イベントオブジェクトそのものを取得します。

戻り値は配列ですが
すり抜けしないイベントが対象なので、1つしか戻ってこないとすると(ちょっと自信ないです…

コード: 全て選択

$gameMap.eventsXyNt(x, y)[0]._eventId


で対象のイベントIDが参照できると思います。

すり抜けしないイベントが重なることってあるんでしたっけ?
あるとすると、上記はちょっと問題がありますが…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
ドラねこ
記事: 21
登録日時: 2016年5月27日(金) 15:28

Re: すり抜けしないイベントIDの取得方法

投稿記事by ドラねこ » 2020年4月13日(月) 19:10

返信ありがとうございます!
配列を1つだけに設定する発想があったんですね...!

あれから試行錯誤してすり抜けるイベントIDを大きくしてマップに配置する事で当面の問題は解決しました。
配列で呼ぶとやはりエラーが出てしまったので今後も解決しなければ別枠で質問しようと思います。

素早く対応していただきありがとうございました。

“MV:質問” へ戻る