【解決済み】スキル習得アイテムの習得アクター名取得について

ねこやなぎ
記事: 7
登録日時: 2024年5月02日(木) 04:13

【解決済み】スキル習得アイテムの習得アクター名取得について

投稿記事by ねこやなぎ » 2024年5月02日(木) 14:52

初めまして、いつもお世話になっております。

アイテムを使用することでコモンイベントを実行し該当アクターへスキルを習得させるスキル習得アイテムを作成しました。

該当アイテムは繰り返し使用可能なもので、別のアクターへ使用すると既に習得しているアクターはスキルを忘れ、別アクターが習得するという仕様です。

アイテム使用する際、アイテム説明欄に(現在の習得者:アクターA)というような一文を追加したいのですが、当然ですがアイテムとスキルの結び付けが出来ていないため取得することが出来ませんでした。

これらのスキルはパーティ内で一人しか習得できないような仕様になっているのですが、何か賢いやり方で習得アクターを取得することは可能でしょうか?
最後に編集したユーザー ねこやなぎ on 2024年5月05日(日) 11:30 [ 編集 1 回目 ]

ecf5DTTzl6h6lJj02
記事: 468
登録日時: 2018年12月23日(日) 13:55

Re: スキル習得アイテムの習得アクター名取得について

投稿記事by ecf5DTTzl6h6lJj02 » 2024年5月02日(木) 20:23

こんばんは。
ねこやなぎ さんが書きました:初めまして、いつもお世話になっております。

アイテムを使用することでコモンイベントを実行し該当アクターへスキルを習得させるスキル習得アイテムを作成しました。

該当アイテムは繰り返し使用可能なもので、別のアクターへ使用すると既に習得しているアクターはスキルを忘れ、別アクターが習得するという仕様です。

アイテム使用する際、アイテム説明欄に(現在の習得者:アクターA)というような一文を追加したいのですが、当然ですがアイテムとスキルの結び付けが出来ていないため取得することが出来ませんでした。

これらのスキルはパーティ内で一人しか習得できないような仕様になっているのですが、何か賢いやり方で習得アクターを取得することは可能でしょうか?

アイテムの説明欄に、習得者の名前を表示したい場合、
以下のようにすると、可能かと思います。

  1. スキル習得させるイベントに、
    スキルを習得するアクターのアクターIDを、変数に記録するコマンドを組み込んでください。

  2. アイテムの説明欄で、アクター名に置き換えたい部分に、
    \N[\V[n]]
    という制御文字を書くと、
    アクターID が 変数ID n 番の値 のアクター名に置き換わってくれますので、
    n にイベントでアクターIDを記録した変数IDを指定してください。
この方法が一番楽だと思いますが、
同様のアイテムがいっぱいあって、変数をたくさん消費してしまうので、
別の方法がいい、などという場合は、
プラグインを作成するほうがいい(作成する必要がある)かもしれません。

ご確認ください。
ねこやなぎ
記事: 7
登録日時: 2024年5月02日(木) 04:13

Re: スキル習得アイテムの習得アクター名取得について

投稿記事by ねこやなぎ » 2024年5月03日(金) 03:14

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

ご教授いただいた内容で実装したところ、習得者の表示が可能になりました、ありがとうございます。

ですが、トリアコンタン様のカスタムメニュー作成プラグインでアイテム説明文とは別のウィンドウに同様の方法でアクター名を取得しようと考えた際に再度行き詰ってしまいました

【設定】
・スキル取得コモンイベントに変数格納処理を追加。
・アイテムのメモ欄に【skill_no】という形で該当変数のIDを格納

【やりたいこと】
カスタムメニュー作成プラグインにより作成した画面で
window1のアイテムにカーソルを合わせた際に
window2に習得アクターの表示を行いたい。

【問題点】
window2の一覧ウィンドウ識別子にwindow1を指定
カスタムメニューでWindow1のアイテムにカーソルを合わせた際にwindow2でitem.meta.skill_noを取得
(アイテム毎に変数IDが取得できていることは確認できています)

window2の項目描画スクリプトに以下の記載を行う
this.drawTextEx(\N[\V[+${item.meta.skill_no}]], r.x, r.y, r.width);

結果、エラーが発生しアクター名の取得が出来ませんでした。
drawTextEx内の記載方法が間違っているかもしれません。

お手数をおかけしますがご助力お願いいたします。
ecf5DTTzl6h6lJj02
記事: 468
登録日時: 2018年12月23日(日) 13:55

Re: スキル習得アイテムの習得アクター名取得について

投稿記事by ecf5DTTzl6h6lJj02 » 2024年5月03日(金) 11:34

こんにちは。
ねこやなぎ さんが書きました:ご回答ありがとうございます。

ご教授いただいた内容で実装したところ、習得者の表示が可能になりました、ありがとうございます。

ですが、トリアコンタン様のカスタムメニュー作成プラグインでアイテム説明文とは別のウィンドウに同様の方法でアクター名を取得しようと考えた際に再度行き詰ってしまいました

【設定】
・スキル取得コモンイベントに変数格納処理を追加。
・アイテムのメモ欄に【skill_no】という形で該当変数のIDを格納

【やりたいこと】
カスタムメニュー作成プラグインにより作成した画面で
window1のアイテムにカーソルを合わせた際に
window2に習得アクターの表示を行いたい。

【問題点】
window2の一覧ウィンドウ識別子にwindow1を指定
カスタムメニューでWindow1のアイテムにカーソルを合わせた際にwindow2でitem.meta.skill_noを取得
(アイテム毎に変数IDが取得できていることは確認できています)

window2の項目描画スクリプトに以下の記載を行う
this.drawTextEx(\N[\V[+${item.meta.skill_no}]], r.x, r.y, r.width);

結果、エラーが発生しアクター名の取得が出来ませんでした。
drawTextEx内の記載方法が間違っているかもしれません。

お手数をおかけしますがご助力お願いいたします。

以下のように設定してみてください。

  1. Window1 の『選択項目格納変数』を設定し、
    選択しているアイテムの情報が変数に格納されるようにする。

  2. 以下内容のコモンイベントを作成する。
    (スクリーンショットで収まりきらなかったので、テキストにしています)

    コード: 全て選択

    ◆注釈:選択項目格納変数で指定した
    :  :変数に入っている、アイテムのデータから
    :  :skill_no のメタ情報があるかどうかをチェックする。
    ◆条件分岐:スクリプト:$gameVariables.value(11).meta['skill_no'];
      ◆注釈:メタ情報がある場合は、
      :  :アクターIDを取得して、適当な変数に代入する。
      ◆変数の操作:#0012 項目描画用 アクターID = $gameVariables.value(parseInt($gameVariables.value(11).meta['skill_no']))
      ◆
    :それ以外のとき
      ◆注釈:メタ情報がない場合は、
      :  :適当な変数に、-1 を代入する。
      ◆変数の操作:#0012 項目描画用 アクターID = -1
      ◆
    :分岐終了

    $gameVariables.value(11) の 11 となっている部分は、
    選択項目格納変数で指定した、変数の番号に置き換えてください。

  3. シーンの『初期イベント』および、Window1 の『カーソルイベント』にて、
    作成したコモンイベントが実行されるように設定する。

  4. Window2 の項目描画スクリプトを以下に設定する。

    コード: 全て選択

    $gameVariables.value(12) >= 0 ? this.drawTextEx('習得者: ' + ($gameVariables.value(12) > 0 ? '\\C[18]\\N[\\V[12]]\\C[0]' : 'なし'), r.x, r.y, r.width) : '';

    このスクリプトは、
    変数ID 0012 項目描画用 アクターID の値が 、
    -1 以下 の場合は、何も表示しない。
    0 の時は、習得者: なし と表示。
    1 以上の時は、習得者: 該当アクターの名前 と表示。
    という内容になります。

    $gameVariables.value(12) の 12 の部分は、
    2. のコモンイベントで、アクターIDを代入した変数の番号に置き換えてください。

以上で、おそらく希望に近い表記ができるのではないかと思います。

ご確認ください。
ねこやなぎ
記事: 7
登録日時: 2024年5月02日(木) 04:13

Re: スキル習得アイテムの習得アクター名取得について

投稿記事by ねこやなぎ » 2024年5月04日(土) 16:11

返信ありがとうございます。

ただいま外出中にて試すことが出来ませんが、帰宅し次第ご教授いただいた内容を実践してみます。
ねこやなぎ
記事: 7
登録日時: 2024年5月02日(木) 04:13

Re: スキル習得アイテムの習得アクター名取得について

投稿記事by ねこやなぎ » 2024年5月04日(土) 23:21

ただ今教えていただいた内容で実行したところ、求めていた表示が出来ることを確認できました、本当にありがとうございます。

また決定イベントも同様に選択時に格納された変数からメタ情報を取得することで色々な処理を作ることが出来ました、ツクールの変数には単純な数値型以外も入れられるのですね…勉強になりました。

項目描画スクリプトで枝番内に更に他のプロパティを格納して一文で値を取得することは不可能だったという認識でよいのでしょうか…?
ecf5DTTzl6h6lJj02
記事: 468
登録日時: 2018年12月23日(日) 13:55

Re: スキル習得アイテムの習得アクター名取得について

投稿記事by ecf5DTTzl6h6lJj02 » 2024年5月05日(日) 01:46

こんばんは。
ねこやなぎ さんが書きました:項目描画スクリプトで枝番内に更に他のプロパティを格納して一文で値を取得することは不可能だったという認識でよいのでしょうか…?

ちょっと、言わんとしていることが、きちんと把握できてませんが、
項目描画スクリプトだけで、習得者の名前を表示することが、不可能だったわけではないです。

実際、
提示していただいたスクリプトの赤字部分は、
赤字部分が文字列として成立していない、
スクリプト上で、MVの制御文字を記述する際には、\ を重ねなければいけない、
という部分を直し、

コード: 全て選択

`\\N[\\V[${item.meta.skill_no}]]`

とするだけでも表示できたかもしれません。

ただ、今回の質問内容では、
スキル習得用のアイテム(習得者の表示が必要なもの)しか並ばないのか、
それ以外のアイテムも並ぶのかが判別できず、
それ以外のアイテムも並んで大丈夫なように項目描画スクリプトを書くと、
内容が理解し辛くなりそう(現状でも読みやすくはないのにさらに酷いことになる)だったので、
コモンイベントを使う形にしました。
ねこやなぎ
記事: 7
登録日時: 2024年5月02日(木) 04:13

Re: スキル習得アイテムの習得アクター名取得について

投稿記事by ねこやなぎ » 2024年5月05日(日) 02:44

ecf5DTTzl6h6lJj02 さんが書きました:こんばんは。

スクリプト上で、MVの制御文字を記述する際には、\ を重ねなければいけない、
という部分を直し、

コード: 全て選択

`\\N[\\V[${item.meta.skill_no}]]`

とするだけでも表示できたかもしれません。


\を重ねなければならない、という部分が理解できていませんでした
それだけでなくさらなる改善を含めた手法を教えていただきありがとうございます。

“MV:質問” へ戻る