【解決】入力したアクターの名前を他のアクターに反映するプラグイン

アバター
白頭イワシ
記事: 8
登録日時: 2020年10月09日(金) 13:29

【解決】入力したアクターの名前を他のアクターに反映するプラグイン

投稿記事by 白頭イワシ » 2020年10月10日(土) 17:28

名前入力したアクターの名前を他のアクターに反映するようなプラグインは無いでしょうか?
例えば
『アクター1』というアクターに『アレックス』と名前を付けるとして
『アレックス』という名前が『アクター2』というアクターにも反映されるような感じの物があればいいのですが…
デフォルトで出来るのでしたらすみません
最後に編集したユーザー 白頭イワシ on 2020年10月16日(金) 20:08 [ 編集 1 回目 ]

アクターが沢山出てくるゲームが作りたい!
https://twitter.com/hakuto_iwashi
アバター
白頭イワシ
記事: 8
登録日時: 2020年10月09日(金) 13:29

Re: 入力したアクターの名前を他のアクターに反映するプラグイン

投稿記事by 白頭イワシ » 2020年10月16日(金) 19:57

自己解決しました
解決方法ですが

名前入力するキャラをID#0001、変更したいキャラをID#0002として

名前入力処理の後に、スクリプトを挿入し以下のように実施

コード: 全て選択

a = $gameActors._data[1]._name
$gameActors._data[2]._name = a


複数指定したい時(例としてID#0002~#0005まで変えたい時)

コード: 全て選択

a = $gameActors._data[1]._name
$gameActors._data[2]._name = a
$gameActors._data[3]._name = a
$gameActors._data[4]._name = a
$gameActors._data[5]._name = a


こんな感じに増やしていけば出来ました

前提として一度パーティに入ってないといけないので、一番最初に加入と脱退の処理を入れとかないとエラーが出ます
スクリプトで実行する場合、上記の処理を行う前に

コード: 全て選択

//加入の処理
$gameParty.addActor(1)
$gameParty.addActor(2)
$gameParty.addActor(3)
$gameParty.addActor(4)
$gameParty.addActor(5)
//脱退の処理
$gameParty.removeActor(1)
$gameParty.removeActor(2)
$gameParty.removeActor(3)
$gameParty.removeActor(4)
$gameParty.removeActor(5)

と入れておくといいかもしれません
アクターが沢山出てくるゲームが作りたい!
https://twitter.com/hakuto_iwashi
アバター
Plasma Dark
記事: 717
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 【解決】入力したアクターの名前を他のアクターに反映するプラグイン

投稿記事by Plasma Dark » 2020年10月16日(金) 23:05

前提として一度パーティに入ってないといけないので、一番最初に加入と脱退の処理を入れとかないとエラーが出ます


_で始まる変数に外部からアクセスするとこういう良くないことが起こります。
アクセス用兼初期化用のメソッドがあるので、それを介してアクセスすると良いでしょう。

アクターID2, 3, 4, 5に対し、アクターID1に入力した名前を反映させたい場合は以下のように書けます。

コード: 全て選択

[2, 3, 4, 5].forEach(actorId => {
  $gameActors.actor(actorId).setName($gameActors.actor(1).name());
});


加入と脱退の処理は不要になります。
アバター
白頭イワシ
記事: 8
登録日時: 2020年10月09日(金) 13:29

Re: 【解決】入力したアクターの名前を他のアクターに反映するプラグイン

投稿記事by 白頭イワシ » 2020年10月17日(土) 04:53

Plasma Dark さんが書きました:
前提として一度パーティに入ってないといけないので、一番最初に加入と脱退の処理を入れとかないとエラーが出ます


_で始まる変数に外部からアクセスするとこういう良くないことが起こります。
アクセス用兼初期化用のメソッドがあるので、それを介してアクセスすると良いでしょう。

アクターID2, 3, 4, 5に対し、アクターID1に入力した名前を反映させたい場合は以下のように書けます。

コード: 全て選択

[2, 3, 4, 5].forEach(actorId => {
  $gameActors.actor(actorId).setName($gameActors.actor(1).name());
});


加入と脱退の処理は不要になります。


動作確認しました、ありがとうございます。
forEach使えばよかったんですね…まだまだ勉強不足でした。
アクターが沢山出てくるゲームが作りたい!
https://twitter.com/hakuto_iwashi

“MZ:プラグイン素材のリクエスト” へ戻る