【解決済み】スクリプトで複数のイベントの向きと位置を戻す方法について

アバター
しぐにゃも
記事: 2
登録日時: 2023年1月27日(金) 01:22
連絡を取る:

【解決済み】スクリプトで複数のイベントの向きと位置を戻す方法について

投稿記事by しぐにゃも » 2023年1月27日(金) 01:47

お世話になります。
スクリプトを使用し、複数のイベントの向きを戻したいです。

スクリプト:
for(var i = 2; i <= 4; i ++){
$gameMap.event( i ).locate( $dataMap.events[ i ].x , $dataMap.events[ i ].y);
}


これを使うと位置が戻りました。
が、向きが戻りません。
image-03.gif
image-03.gif (225.28 KiB) 閲覧数: 838 回


そこで、こちらに書き換えました。

スクリプト:
for(var i = 2; i <= 4; i ++){
$gameMap.event( i ).locate( $dataMap.events[ i ].x , $dataMap.events[ i ].y);
 $gameMap.event( i ).setDirection( $dataMap.event[ i ].direction());
}


$gameMap.event( i ).setDirection( value );で向きを設定。

valueで$dataMap.event[ i ].direction()を使用しイベントの初期の向きにしようとしました。

が、なぜかタイプエラー(Type Error ・ cannot read property of undefined)が出てきました。
MZ2.png
MZ2.png (33.65 KiB) 閲覧数: 838 回


このエラーの解決法が分からず困っております。
もしよろしければ、ご回答お願い致します。
MZ1.png
最後に編集したユーザー しぐにゃも on 2023年1月27日(金) 13:00 [ 編集 1 回目 ]

アバター
剣崎 宗二
記事: 678
登録日時: 2016年11月12日(土) 20:36
連絡を取る:

Re: スクリプトで複数のイベントの向きと位置を戻す方法について

投稿記事by 剣崎 宗二 » 2023年1月27日(金) 10:34

単純な文字抜けかと。

コード: 全て選択

$dataMap.event[ i ].direction()

event[i]→ events[i]
sが抜けていたように見えます。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
アバター
Plasma Dark
記事: 668
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: スクリプトで複数のイベントの向きと位置を戻す方法について

投稿記事by Plasma Dark » 2023年1月27日(金) 12:34

確かに $dataMap が持つのは events ですが、イベントの定義そのものが直接向きを持っているわけではありません。

イベントの向きは、最初に有効なページに設定された画像の向きによって初期化されます。 (Game_Event.prototype.setupPageSettings 参照)
初期化された向きは _originalDirection に保持されているので、イベントの向きを元に戻すのであれば

コード: 全て選択

const event = $gameMap.event(i);
event.setDirection(event._originalDirection);


こう書けます。
アバター
しぐにゃも
記事: 2
登録日時: 2023年1月27日(金) 01:22
連絡を取る:

Re: スクリプトで複数のイベントの向きと位置を戻す方法について

投稿記事by しぐにゃも » 2023年1月27日(金) 12:57

ご回答ありがとうございます。

こちらですべて、上手く行きました。

コード: 全て選択

for(var i = 2; i <= 4; i ++){
    $gameMap.event( i ).locate( $dataMap.events[ i ].x , $dataMap.events[ i ].y);   
    const event = $gameMap.event(i);
    event.setDirection(event._originalDirection);
}

ありがとうございます。

ーーーーー

それと、$dataMap.events[ i ].direction()にすると、
「Type Error ・ $dataMap.events[ i ].direction is nof a function」が表示されてました。

RPGツクール、スクリプトリファレンス「442」で向きの取得を見ると"s"無し。
他の「369」などのマップイベントの配列を見ると情報が複数あるので"s"が書かれてる。
なので、$dataMap.eventの"s"無しが正解かと思い込んでました。
https://tkool.jp/mz/plugin/javascript/script_reference/gamedate.pdf

image-01.jpg
image-01.jpg (45.42 KiB) 閲覧数: 799 回

が、そもそも$dataMapには向きの情報が無く、 events で合ってたのですね…。

ーーーーー

いろいろ勉強になりました。
本当にありがとうございます。

“MZ:質問” へ戻る