スクリプトで$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
すり抜けしないイベントIDの取得方法
Re: すり抜けしないイベントIDの取得方法
$gameMap.eventsXyNt(x, y) はイベントIDではなく、イベントオブジェクトそのものを取得します。
戻り値は配列ですが
すり抜けしないイベントが対象なので、1つしか戻ってこないとすると(ちょっと自信ないです…
で対象のイベントIDが参照できると思います。
すり抜けしないイベントが重なることってあるんでしたっけ?
あるとすると、上記はちょっと問題がありますが…
戻り値は配列ですが
すり抜けしないイベントが対象なので、1つしか戻ってこないとすると(ちょっと自信ないです…
コード: 全て選択
$gameMap.eventsXyNt(x, y)[0]._eventId
で対象のイベントIDが参照できると思います。
すり抜けしないイベントが重なることってあるんでしたっけ?
あるとすると、上記はちょっと問題がありますが…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
https://twitter.com/wtr_in_reverie/
Re: すり抜けしないイベントIDの取得方法
返信ありがとうございます!
配列を1つだけに設定する発想があったんですね...!
あれから試行錯誤してすり抜けるイベントIDを大きくしてマップに配置する事で当面の問題は解決しました。
配列で呼ぶとやはりエラーが出てしまったので今後も解決しなければ別枠で質問しようと思います。
素早く対応していただきありがとうございました。
配列を1つだけに設定する発想があったんですね...!
あれから試行錯誤してすり抜けるイベントIDを大きくしてマップに配置する事で当面の問題は解決しました。
配列で呼ぶとやはりエラーが出てしまったので今後も解決しなければ別枠で質問しようと思います。
素早く対応していただきありがとうございました。