お疲れ様です。
トリアコンタン様の「カスタムメニュー作成プラグイン」で、背景画像やレイアウトを調整したスキル画面を作成しようとしています。
スクリプトに関して分からない点があるため、質問させていただければと思います。
※添付画像のレイアウトなどは全体的に仮のものになります
(サンプル1、②の箇所は仮でコマンドリストを設定しています)
理想としては以下のような形で、通常のスキル画面と同じような挙動をイメージしています。
①の箇所:キャラの名前やプロフィールを表示(単独主人公なので、ここは固定の予定)
②の箇所:主人公の各スキルタイプを表示、選択すると④に移動
④の箇所:②のスキルタイプに応じた、各スキルを表示
③の箇所:④のスキルの説明文を表示
(サンプル2、こちらが現在修正中の画面になります)
詰まっているのが主に②④の箇所になります。内容としては…
<②について>
一覧取得スクリプトで`this._actor.skillTypes();`と記載してスキルタイプの名前を取得しようとしているのですが、サンプル2のように数値(おそらくID)で表示されてしまいます。
項目描画スクリプトの調整が必要かと思うのですが、`this.drawItemName(item, r.x, r.y, r.width);`などではundefinedと表示されてしまいました。どのように記載すればよいでしょうか…?
<④について>
こちらは単純に「どのようにスクリプトを記述すれば、②のカーソル(スキルタイプ)に応じた取得スキルを表示できるか」が分からず詰まっています。
②が上手くいっていないので当たり前といえば当たり前ですが…
カスタムメニュー作成プラグインで、細かく調整したスキル画面を作成したい
-
- 記事: 752
- 登録日時: 2018年12月23日(日) 13:55
Re: カスタムメニュー作成プラグインで、細かく調整したスキル画面を作成したい
こんにちは。
また、JavaScript に関してある程度の知識があることを前提として解説しています。
ご容赦ください。
まず ② に関してですが、
お察しの通り、Game_Actor.prototype.skillTypes メソッドで取得されるのは、スキルタイプのIDなので、
これを、スキルタイプの名称に変換する必要があります。
スキルタイプの名称は、$dataSystem.skillTypes に配列で入っています。
マッピングスクリプトで、一覧取得スクリプトで取得した配列を別の配列に変換できるので、
これを使って変換を行います。
マッピングスクリプトに、以下のコードを記述してください。
項目描画スクリプトですが、省略しておけば、勝手に項目描画をしてくれるので、省略([]の状態に)しておいてください。
スキル一覧の描画に、選択項目を使用する必要があるので、
選択項目格納変数を設定してください。
まだ、設定する項目があるのですが、一旦置いておいて、④ のスキル一覧の設定に移ります。
一覧取得スクリプトで、アクターの覚えているスキルを取得します。
で取得できるはずです。
スキルタイプ選択ウィンドウで選択しているスキルタイプのものだけに限定する必要があるので、
フィルタスクリプトを使って限定します。
と入力してください。
findIndex メソッドは 配列の各要素に対して、() 内で設定した関数の内容を実行し、
最初に true を返す要素のインデックスを返却します。
今回は、配列の各要素を value という変数として関数に渡し、
その変数の内容が スキルタイプを選択するウィンドウでの選択項目と(最初に)一致するインデックスを返却させています。(上記コードでは、選択項目が変数ID 0001 に入っているものとして扱っています)
項目描画スクリプトは、
を選択してください。
スキルタイプ選択のウィンドウでカーソルが移動した時に、
再描画するようにしておかないと、スキル一覧の内容がきちんと切り替わらないと思います。
このウィンドウの再描画スイッチを設定し、
スキルタイプ選択のウィンドウのカーソルイベントでスイッチを ON にするように設定してください。
また、シーン開始時には、スキルタイプ選択ウィンドウのインデックスが -1 になっているので、
スキル一覧の描画が正しく行われないので、こちらでも初期イベントで、
スキル一覧の再描画用のスイッチを ON にする設定をする必要があります。
以上で、スキルタイプのウィンドウとスキル一覧のウィンドウが正しく描画できるのではないかなと思います。
詰まっているのは ② と④とおしゃっているので、
スキル説明のウィンドウについては、ご自分で設定できると思いますが、
もし解説が必要であれば、仰ってください。
以上、ご確認お願いします。
ちょっと、長くなってしまいます。tworl さんが書きました:お疲れ様です。
トリアコンタン様の「カスタムメニュー作成プラグイン」で、背景画像やレイアウトを調整したスキル画面を作成しようとしています。
スクリプトに関して分からない点があるため、質問させていただければと思います。
※添付画像のレイアウトなどは全体的に仮のものになります
理想としては以下のような形で、通常のスキル画面と同じような挙動をイメージしています。
①の箇所:キャラの名前やプロフィールを表示(単独主人公なので、ここは固定の予定)
②の箇所:主人公の各スキルタイプを表示、選択すると④に移動
④の箇所:②のスキルタイプに応じた、各スキルを表示
③の箇所:④のスキルの説明文を表示
詰まっているのが主に②④の箇所になります。内容としては…
<②について>
一覧取得スクリプトで`this._actor.skillTypes();`と記載してスキルタイプの名前を取得しようとしているのですが、サンプル2のように数値(おそらくID)で表示されてしまいます。
項目描画スクリプトの調整が必要かと思うのですが、`this.drawItemName(item, r.x, r.y, r.width);`などではundefinedと表示されてしまいました。どのように記載すればよいでしょうか…?
<④について>
こちらは単純に「どのようにスクリプトを記述すれば、②のカーソル(スキルタイプ)に応じた取得スキルを表示できるか」が分からず詰まっています。
②が上手くいっていないので当たり前といえば当たり前ですが…
また、JavaScript に関してある程度の知識があることを前提として解説しています。
ご容赦ください。
まず ② に関してですが、
お察しの通り、Game_Actor.prototype.skillTypes メソッドで取得されるのは、スキルタイプのIDなので、
これを、スキルタイプの名称に変換する必要があります。
スキルタイプの名称は、$dataSystem.skillTypes に配列で入っています。
マッピングスクリプトで、一覧取得スクリプトで取得した配列を別の配列に変換できるので、
これを使って変換を行います。
マッピングスクリプトに、以下のコードを記述してください。
コード: 全て選択
$dataSystem.skillTypes[item]
スキル一覧の描画に、選択項目を使用する必要があるので、
選択項目格納変数を設定してください。
まだ、設定する項目があるのですが、一旦置いておいて、④ のスキル一覧の設定に移ります。
一覧取得スクリプトで、アクターの覚えているスキルを取得します。
コード: 全て選択
this._actor.skills();
スキルタイプ選択ウィンドウで選択しているスキルタイプのものだけに限定する必要があるので、
フィルタスクリプトを使って限定します。
コード: 全て選択
item.stypeId === ($dataSystem.skillTypes.findIndex(value => value === $gameVariables.value(1)));
findIndex メソッドは 配列の各要素に対して、() 内で設定した関数の内容を実行し、
最初に true を返す要素のインデックスを返却します。
今回は、配列の各要素を value という変数として関数に渡し、
その変数の内容が スキルタイプを選択するウィンドウでの選択項目と(最初に)一致するインデックスを返却させています。(上記コードでは、選択項目が変数ID 0001 に入っているものとして扱っています)
項目描画スクリプトは、
コード: 全て選択
this.drawItemName(item, r.x, r.y, r.width); // アイテムやスキルの名称
スキルタイプ選択のウィンドウでカーソルが移動した時に、
再描画するようにしておかないと、スキル一覧の内容がきちんと切り替わらないと思います。
このウィンドウの再描画スイッチを設定し、
スキルタイプ選択のウィンドウのカーソルイベントでスイッチを ON にするように設定してください。
また、シーン開始時には、スキルタイプ選択ウィンドウのインデックスが -1 になっているので、
スキル一覧の描画が正しく行われないので、こちらでも初期イベントで、
スキル一覧の再描画用のスイッチを ON にする設定をする必要があります。
以上で、スキルタイプのウィンドウとスキル一覧のウィンドウが正しく描画できるのではないかなと思います。
詰まっているのは ② と④とおしゃっているので、
スキル説明のウィンドウについては、ご自分で設定できると思いますが、
もし解説が必要であれば、仰ってください。
以上、ご確認お願いします。
Re: カスタムメニュー作成プラグインで、細かく調整したスキル画面を作成したい
ecf5DTTzl6h6lJj02 様
サンプルコード含めて、非常に丁寧かつ的確に解説してくださり、誠にありがとうございます!
おかげさまで添付画像のように、期待通りの挙動が実現できました。
JavaScript以外の言語は多少触っていたので、ご説明いただいた内容のやっていることも、ある程度は理解できたかなと思います。特にマッピングやフィルタスクリプトの記述は自力で続けていても分からなかったと思うので、本当に助かりました…! (以下は余談のような質問なので、スルーしていただいても全く問題ないです)
ご回答いただいてから再度自分で調べ直した際に、ツクール公式?の「RPGツクールMZ スクリプトリファレンス のコピー」というページを見つけました。スクリプトを考える際は、基本的にこちらを参照されていらっしゃるのでしょうか?
(`item.stypeId`などの記述は、プラグインのプリセットには無かったかなと思いまして)
https://rpgmakerofficial.com/product/mz ... tabase.pdf
サンプルコード含めて、非常に丁寧かつ的確に解説してくださり、誠にありがとうございます!
おかげさまで添付画像のように、期待通りの挙動が実現できました。
JavaScript以外の言語は多少触っていたので、ご説明いただいた内容のやっていることも、ある程度は理解できたかなと思います。特にマッピングやフィルタスクリプトの記述は自力で続けていても分からなかったと思うので、本当に助かりました…! (以下は余談のような質問なので、スルーしていただいても全く問題ないです)
ご回答いただいてから再度自分で調べ直した際に、ツクール公式?の「RPGツクールMZ スクリプトリファレンス のコピー」というページを見つけました。スクリプトを考える際は、基本的にこちらを参照されていらっしゃるのでしょうか?
(`item.stypeId`などの記述は、プラグインのプリセットには無かったかなと思いまして)
https://rpgmakerofficial.com/product/mz ... tabase.pdf
-
- 記事: 752
- 登録日時: 2018年12月23日(日) 13:55
Re: カスタムメニュー作成プラグインで、細かく調整したスキル画面を作成したい
私個人としては、コアスクリプト(js フォルダにある rmmz_ で始まっているファイル)などを直接確認してるので、tworl さんが書きました: (以下は余談のような質問なので、スルーしていただいても全く問題ないです)
ご回答いただいてから再度自分で調べ直した際に、ツクール公式?の「RPGツクールMZ スクリプトリファレンス のコピー」というページを見つけました。スクリプトを考える際は、基本的にこちらを参照されていらっしゃるのでしょうか?
(`item.stypeId`などの記述は、プラグインのプリセットには無かったかなと思いまして)
https://rpgmakerofficial.com/product/mz ... tabase.pdf
この辺りのリファレンスをあまり読んでなかったりしますが、
どんなコードで、何が取得できるのかを調べるのに、このリファレンス等を読んでおくのは、いいことだと思います。
このほかに、とんび(鳶嶋工房)さんがGitHub に載せている非公式リファレンスなどがあります。
https://github.com/tonbijp/RPGMakerMZ/b ... e/index.md
公式のリファレンスには載っていない項目などもありますので、
時間や興味があるなら、そちらも読んでおくといいかもしれません。
あとは、 以前どなたかが、書いていましたが、
F8 もしくは F12 キーを押したときに表示される デバッグ用の DevTools というウィンドウの
コンソール画面では、直接コードを入力・実行させることができます。
オブジェクトを表示させれば、
どんなプロパティやメソッドがあるのかを確認することもできますので、
ここで、色々書いて試すのもいいかもしれません。
Re: カスタムメニュー作成プラグインで、細かく調整したスキル画面を作成したい
なるほどありがとうございます、コアスクリプトは頭になかった……
オブジェクトの中身の調べ方などが分からないような状況でしたので、非常にありがたい情報です!
また何か詰まってしまった時には、ご教授いただいた内容を調べてみようかと思います。
オブジェクトの中身の調べ方などが分からないような状況でしたので、非常にありがたい情報です!
また何か詰まってしまった時には、ご教授いただいた内容を調べてみようかと思います。