例 ある洞窟のマップ上にイベント名「女神像」という3体のイベントがあり、それぞれリージョン1、2、3
に指定したタイル上にある。リージョン1のタイル上にある「女神像」のイベントIDを取得したい。
既に投稿されてある「マップ上のイベント名からID取得(奏ねこま様)」をヒントに、変数に
($gameMap.events().filter(function(e){return e.event().name === '女神像'})[0] || {_eventId:0})._eventId
を格納することで「女神像」のイベントIDは取得できたのですが、3つのうち一番若いIDのものがされるようです。このスクリプト内にさらに「名前=女神像」かつ「その女神像のリージョンID=1」という内容で書けると実現できるかと思うのですが、スクリプトは初心者なもので、アドバイスいただけたら幸いです。
【解決済】マップ上にある複数の同名のイベントからリージョンIDの値の違いによってイベントIDを取得したい。
【解決済】マップ上にある複数の同名のイベントからリージョンIDの値の違いによってイベントIDを取得したい。
最後に編集したユーザー akira57 [ 2021年9月09日(木) 21:42 ], 累計 1 回
-
- 記事: 752
- 登録日時: 2018年12月23日(日) 13:55
Re: マップ上にある複数の同名のイベントからリージョンIDの値の違いによってイベントIDを取得したい。
こんばんは。
で取得できるのではないかと思います。
ご確認ください。
akira57 さんが書きました:例 ある洞窟のマップ上にイベント名「女神像」という3体のイベントがあり、それぞれリージョン1、2、3
に指定したタイル上にある。リージョン1のタイル上にある「女神像」のイベントIDを取得したい。
既に投稿されてある「マップ上のイベント名からID取得(奏ねこま様)」をヒントに、変数に
($gameMap.events().filter(function(e){return e.event().name === '女神像'})[0] || {_eventId:0})._eventId
を格納することで「女神像」のイベントIDは取得できたのですが、3つのうち一番若いIDのものがされるようです。このスクリプト内にさらに「名前=女神像」かつ「その女神像のリージョンID=1」という内容で書けると実現できるかと思うのですが、スクリプトは初心者なもので、アドバイスいただけたら幸いです。
コード: 全て選択
$gameMap.events().find(event => event.event().name === '女神像' && $gameMap.regionId(event.x, event.y) === 1).eventId()
ご確認ください。
Re: マップ上にある複数の同名のイベントからリージョンIDの値の違いによってイベントIDを取得したい。
横から失礼します。
ecf5DTTzl6h6lJj02 氏のコードだと指定のリージョンに当該イベントが配置されてない場合
undefined.eventIdを取得しようとしてエラーになると思います。
奏ねこま氏のコード末尾の|| {_eventId:0})._eventIdはそれを回避する為の措置です。
Game_CharacterBase.prototype.regionIdを使用した方が若干短い事も加味するとこんな感じでしょうか。
まぁ、本来なら分けるべきなんでしょうけども
ecf5DTTzl6h6lJj02 氏のコードだと指定のリージョンに当該イベントが配置されてない場合
undefined.eventIdを取得しようとしてエラーになると思います。
奏ねこま氏のコード末尾の|| {_eventId:0})._eventIdはそれを回避する為の措置です。
Game_CharacterBase.prototype.regionIdを使用した方が若干短い事も加味するとこんな感じでしょうか。
コード: 全て選択
($gameMap.events().find(e => e.event().name === "女神像" && e.regionId() === 1) || {_eventId:0})._eventId
コード: 全て選択
const result = $gameMap.events().find(e => e.event().name === "女神像" && e.regionId() === 1);
const eventId = result ? result.eventId() : 0;
$gameVariables.setValue(1, eventId);
-
- 記事: 752
- 登録日時: 2018年12月23日(日) 13:55
Re: マップ上にある複数の同名のイベントからリージョンIDの値の違いによってイベントIDを取得したい。
すみません。名無し蛙 さんが書きました:横から失礼します。
ecf5DTTzl6h6lJj02 氏のコードだと指定のリージョンに当該イベントが配置されてない場合
undefined.eventIdを取得しようとしてエラーになると思います。
奏ねこま氏のコード末尾の|| {_eventId:0})._eventIdはそれを回避する為の措置です。
Game_CharacterBase.prototype.regionIdを使用した方が若干短い事も加味するとこんな感じでしょうか。まぁ、本来なら分けるべきなんでしょうけどもコード: 全て選択
($gameMap.events().find(e => e.event().name === "女神像" && e.regionId() === 1) || {_eventId:0})._eventId
コード: 全て選択
const result = $gameMap.events().find(e => e.event().name === "女神像" && e.regionId() === 1); const eventId = result ? result.eventId() : 0; $gameVariables.setValue(1, eventId);
画像を見て、各リージョンに女神像が設置されている状態(配置されていないリージョンが無い状態)で、取得するものと思って、コードを書いてしまってます。
あと、Game_CharacterBase に regionid の取得メソッドがあることが、頭から抜けてしまっていました。
大変失礼いたしました。
【解決済】マップ上にある複数の同名のイベントからリージョンIDの値の違いによってイベントIDを取得したい。
◆ecf5DTTzl6h6lJj02様
◆名無し蛙様へ
アドバイスいただいた通り、スクリプトに組み込み実際に試させて頂きました。
おかげさまで無事に意図したとおりリージョンIDの違いによるイベントIDの取得に成功いたしました。
ありがとうございました。
皆さまのスクリプトで文章を作る力に改めて感嘆しているところです。
現在、これまで作成してきたゲームについて、作成したイベントの“ムダ”を見直し、一般化統一化できる箇所を修正している中で困っているところでした。
と、同時に多くのイベントに応用できそうです。
お二人には大変感謝申し上げます。
◆名無し蛙様へ
アドバイスいただいた通り、スクリプトに組み込み実際に試させて頂きました。
おかげさまで無事に意図したとおりリージョンIDの違いによるイベントIDの取得に成功いたしました。
ありがとうございました。
皆さまのスクリプトで文章を作る力に改めて感嘆しているところです。
現在、これまで作成してきたゲームについて、作成したイベントの“ムダ”を見直し、一般化統一化できる箇所を修正している中で困っているところでした。
と、同時に多くのイベントに応用できそうです。
お二人には大変感謝申し上げます。