スクリプト関係で困ってます!
現在、ツクール内で下記のスクリプトによって
パーティ全体のステートを解除したいと考えています。
$gameParty.members().forEach(function(actor)
{actor.removeState(12,13,14,15,16,17,18,19,20);});
これを、ステートID12~20といった具合に、簡単に省略して書きたいのですが
やり方が分からず、全部を手打ちでやってしまっている状態です。
現在のIDの部分を (12..20) というようにしてもエラーが出てしまいました。
どなたか省略した記述の仕方を教えてください…。
お願いします!
スクリプトによるステートIDの複数指定方法
- Plasma Dark
- 記事: 731
- 登録日時: 2020年2月08日(土) 02:29
- 連絡する:
Re: スクリプトによるステートIDの複数指定方法
Game_Battler.prototype.removeState の定義を確認しましょう。
rmmz_objects.js に書かれている他、とんびさんのリファレンスも見やすくてオススメです。
https://github.com/tonbijp/RPGMakerMZ/b ... Battler.md
対象の関数は、ステートIDをひとつ受け取ってステートを解除するものです。
カンマ区切りで複数の数値を渡しても、先頭以外は無視されます。
解除したいステートIDがわかっているのであれば、以下のようにステートIDの配列に対してループすることで、まとめて解除する挙動を実現できます。
[12, 13, 14, 15, 16, 17, 18, 19, 20] は12から20の連番を配列にしたものです。
この配列を作るコードは Array.prototype.keys, Array.prototype.map とスプレッド構文を使って以下のように書くことができます。
https://developer.mozilla.org/ja/docs/W ... Array/keys
https://developer.mozilla.org/ja/docs/W ... /Array/map
https://developer.mozilla.org/ja/docs/W ... ead_syntax
rmmz_objects.js に書かれている他、とんびさんのリファレンスも見やすくてオススメです。
https://github.com/tonbijp/RPGMakerMZ/b ... Battler.md
対象の関数は、ステートIDをひとつ受け取ってステートを解除するものです。
カンマ区切りで複数の数値を渡しても、先頭以外は無視されます。
解除したいステートIDがわかっているのであれば、以下のようにステートIDの配列に対してループすることで、まとめて解除する挙動を実現できます。
コード: 全て選択
$gameParty.members().forEach(actor => {
[12, 13, 14, 15, 16, 17, 18, 19, 20].forEach(stateId => actor.removeState(stateId));
});
この配列を作るコードは Array.prototype.keys, Array.prototype.map とスプレッド構文を使って以下のように書くことができます。
コード: 全て選択
[...Array(9).keys()].map(i => i + 12)
https://developer.mozilla.org/ja/docs/W ... /Array/map
https://developer.mozilla.org/ja/docs/W ... ead_syntax