【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
https://plugin.fungamemake.com/archives/23762
上記のトリアコンタン様カスタムメニュー作成プラグインでアクターの装備を選択肢にしたいと考えています。
アクター一覧のウインドウを作ってアクターを選ぶ事は出来るんですがその選んだアクターの装備一覧がウインドウに出てきません。
「一覧取得スクリプト」の項目で
>this._actor.equips(); // メインメニューで選択したアクターの装備品
もしくは
>$gameParty.members()[v(1)].weapons(); // 変数[1]のPTメンバーの装備武器
というのがあるのですが上のメインメニューで選択したアクターというのがアクター一覧で選択したアクターにならず下の変数メンバーの方も[v(1)]の1を該当する変数に変えても反映されず…
一覧取得スクリプトの項目のヘルプに「詳細ウインドウ識別子を指定した場合は無効」とあるのでここの設定をミスってるのかとも思いますがコレは一覧ウインドウIDという項目の事かと思いそこは設定無しにしてあるんですが…
どなたかお知恵をお貸し下さい……。
上記のトリアコンタン様カスタムメニュー作成プラグインでアクターの装備を選択肢にしたいと考えています。
アクター一覧のウインドウを作ってアクターを選ぶ事は出来るんですがその選んだアクターの装備一覧がウインドウに出てきません。
「一覧取得スクリプト」の項目で
>this._actor.equips(); // メインメニューで選択したアクターの装備品
もしくは
>$gameParty.members()[v(1)].weapons(); // 変数[1]のPTメンバーの装備武器
というのがあるのですが上のメインメニューで選択したアクターというのがアクター一覧で選択したアクターにならず下の変数メンバーの方も[v(1)]の1を該当する変数に変えても反映されず…
一覧取得スクリプトの項目のヘルプに「詳細ウインドウ識別子を指定した場合は無効」とあるのでここの設定をミスってるのかとも思いますがコレは一覧ウインドウIDという項目の事かと思いそこは設定無しにしてあるんですが…
どなたかお知恵をお貸し下さい……。
最後に編集したユーザー けいのすけ [ 2022年11月21日(月) 21:40 ], 累計 1 回
Re: トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
viewtopic.php?t=12700
上記のトピックを参考にさせて頂き希望が叶いました。
ありがとうございました。
参考までに以下は実際のスクリプトです。
一覧取得スクリプトに↓を入れる
$gameParty.members()[$gameVariables.value(1)].armors(); // パーティ変数(1)番目のアクターの装備防具
項目描写スクリプトに↓を入れる
this.drawItemName(item, r.x, r.y, r.width); // アイテムやスキルの名称
この項目描写スクリプトってのを設定しないとダメだったようです。
上記のトピックを参考にさせて頂き希望が叶いました。
ありがとうございました。
参考までに以下は実際のスクリプトです。
一覧取得スクリプトに↓を入れる
$gameParty.members()[$gameVariables.value(1)].armors(); // パーティ変数(1)番目のアクターの装備防具
項目描写スクリプトに↓を入れる
this.drawItemName(item, r.x, r.y, r.width); // アイテムやスキルの名称
この項目描写スクリプトってのを設定しないとダメだったようです。
Re: 【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
ところで一つ疑問が出たんですが
一覧表示される項目で装備品全体>equips();の時は装備なしのスロット分の空きスペースも表示されてるんですが種類別の時、今回の例だと>armors();の時は空きスロットを無視して防具だけ一覧に並べる感じで、これだと選択時のindexと装備スロットIDが一致しなくなってしまいますね。
防具だけの一覧で且つ空きスロットも考慮した配置(>equips();の時のような)にする事は出来ませんでしょうか?
ご存知の方いらっしゃいましたら教えて下さい。
一覧表示される項目で装備品全体>equips();の時は装備なしのスロット分の空きスペースも表示されてるんですが種類別の時、今回の例だと>armors();の時は空きスロットを無視して防具だけ一覧に並べる感じで、これだと選択時のindexと装備スロットIDが一致しなくなってしまいますね。
防具だけの一覧で且つ空きスロットも考慮した配置(>equips();の時のような)にする事は出来ませんでしょうか?
ご存知の方いらっしゃいましたら教えて下さい。
-
- 記事: 752
- 登録日時: 2018年12月23日(日) 13:55
Re: 【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
こんにちは。
選択時のIndexと装備スロットIDの一致を気にする必要性はないと思います。
インデックス格納変数の下に、選択項目格納変数という項目があるはずです。 ここで、変数を指定すると、その変数に、選択した装備品のデータ(オブジェクト)が格納されます。
これを使って、選択した装備品が、一致するか条件分岐すれば良いです。
例えば、選択項目格納変数を 0008 番に設定して、防具ID 0011 番のアイテムが選択されたかで条件分岐する場合、
装備品選択のカスタムメニューを呼び出した後に、条件分岐のスクリプトで、
と書けば分岐できるはずです。
装備品を選択して、選択した装備品によって処理を分岐させたいという場合、けいのすけ さんが書きました:ところで一つ疑問が出たんですが
一覧表示される項目で装備品全体>equips();の時は装備なしのスロット分の空きスペースも表示されてるんですが種類別の時、今回の例だと>armors();の時は空きスロットを無視して防具だけ一覧に並べる感じで、これだと選択時のindexと装備スロットIDが一致しなくなってしまいますね。
防具だけの一覧で且つ空きスロットも考慮した配置(>equips();の時のような)にする事は出来ませんでしょうか?
ご存知の方いらっしゃいましたら教えて下さい。
選択時のIndexと装備スロットIDの一致を気にする必要性はないと思います。
インデックス格納変数の下に、選択項目格納変数という項目があるはずです。 ここで、変数を指定すると、その変数に、選択した装備品のデータ(オブジェクト)が格納されます。
これを使って、選択した装備品が、一致するか条件分岐すれば良いです。
例えば、選択項目格納変数を 0008 番に設定して、防具ID 0011 番のアイテムが選択されたかで条件分岐する場合、
装備品選択のカスタムメニューを呼び出した後に、条件分岐のスクリプトで、
コード: 全て選択
$gameVariables.value(8) === $dataArmors[11]
Re: 【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
ecf5DTTzl6h6lJj02さんありがとうございます。
ただ、選択肢の後に
$gameActors.actor(アクターID).changeEquipById(装備タイプ, 装備品)
のようにして該当装備の変更を行いたいので装備スロットIDが欲しいんですよね…。
ただ、選択肢の後に
$gameActors.actor(アクターID).changeEquipById(装備タイプ, 装備品)
のようにして該当装備の変更を行いたいので装備スロットIDが欲しいんですよね…。
-
- 記事: 752
- 登録日時: 2018年12月23日(日) 13:55
Re: 【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
changeEquipById(装備タイプ, アイテムID) を使って装備品を変更するの場合、けいのすけ さんが書きました:ecf5DTTzl6h6lJj02さんありがとうございます。
ただ、選択肢の後に
$gameActors.actor(アクターID).changeEquipById(装備タイプ, 装備品)
のようにして該当装備の変更を行いたいので装備スロットIDが欲しいんですよね…。
必要なのは装備スロットIDではなく装備タイプです。
変更するときは、変更するアイテムから装備タイプを引っ張ってくればいいだけのはずで、
例えば、防具ID 0046 番のアイテムと変更する場合には、
コード: 全て選択
changeEquipedById($dataArmors[46].etypeId, 46)
選択したアイテムの装備スロットが変更するアイテムの装備スロットと一致するかを判断したいのだという場合でも、その装備スロットに装備できる装備タイプが決まっている関係上、
変更する装備品と、選択した装備品の装備タイプが一致しているかを判断すればよく、
例えば、選択項目核の変数 が 0008番、 変更するのが防具ID 0046 番だとした場合は、
コード: 全て選択
$gameVariables.value(8).etypeId === $dataArmors[46].etypeId
ここまでの、質問の内容からだと、『装備スロットIDを必要とはしない』という結論に至りますが、
具体的に、どういったイベントの流れで、装備品の変更を行いたいのでしょう。
それによっては、装備品スロットIDが必要なのか否かの判断が変わってきます。
Re: 【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
度々ご返信いただきありがとうございます。
理解が足りずすみません。
現状Ruたん様の同じ名前の装備タイプなら同じものを装備できるように - Torigoya_SameEquipType.jsを利用させて頂いてまして同じ装備タイプのアイテムを複数装備したいと考えてます。
https://plugin.fungamemake.com/archives/27487
装備タイプとしては
武器
道具
道具
道具
道具
道具
…
という感じで武器以外のアイテムは全て同じ装備タイプですがスロットの位置は決まっていない状態です。
ちなみに素人考えで装備スロットIDが分からなくても該当アクターの装備品を全て変数に取得してから条件分岐で先に選択した装備を見つけられるかな?と思い(カスタムメニュー作成スクリプトの)選択項目格納変数の値からアクターIDを調べようと試したんですが…
選択項目格納変数の値がアイテムの時は
$gameVariables.value(1).name
とか
$gameVariables.value(1).id
でIDや名称を取得できたんですが選択項目格納変数の値がアクターの時にIDが取得できませんでした。
アクターのデータは取得方法が違うんでしょうか……
追記
アクターIDは $gameVariables.value(1).actorId() で取得できました。
理解が足りずすみません。
現状Ruたん様の同じ名前の装備タイプなら同じものを装備できるように - Torigoya_SameEquipType.jsを利用させて頂いてまして同じ装備タイプのアイテムを複数装備したいと考えてます。
https://plugin.fungamemake.com/archives/27487
装備タイプとしては
武器
道具
道具
道具
道具
道具
…
という感じで武器以外のアイテムは全て同じ装備タイプですがスロットの位置は決まっていない状態です。
ちなみに素人考えで装備スロットIDが分からなくても該当アクターの装備品を全て変数に取得してから条件分岐で先に選択した装備を見つけられるかな?と思い(カスタムメニュー作成スクリプトの)選択項目格納変数の値からアクターIDを調べようと試したんですが…
選択項目格納変数の値がアイテムの時は
$gameVariables.value(1).name
とか
$gameVariables.value(1).id
でIDや名称を取得できたんですが選択項目格納変数の値がアクターの時にIDが取得できませんでした。
アクターのデータは取得方法が違うんでしょうか……
追記
アクターIDは $gameVariables.value(1).actorId() で取得できました。
最後に編集したユーザー けいのすけ [ 2022年11月23日(水) 15:39 ], 累計 1 回
Re: 【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
追記ですみません。ちょっとつまづいた箇所の質問です。
教えて頂いたコードのchangeEquipedById($dataArmors[46].etypeId, 46)
changeEquiped の「ed」って必要ですか?
$gameActors.actor(アクターID).changeEquipById(装備タイプ, 装備品)
のコードだとEquipedではなくてEquipなんですが…
教えて頂いたコードのchangeEquipedById($dataArmors[46].etypeId, 46)
changeEquiped の「ed」って必要ですか?
$gameActors.actor(アクターID).changeEquipById(装備タイプ, 装備品)
のコードだとEquipedではなくてEquipなんですが…
-
- 記事: 752
- 登録日時: 2018年12月23日(日) 13:55
Re: 【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
失礼しました。けいのすけ さんが書きました:追記ですみません。ちょっとつまづいた箇所の質問です。
教えて頂いたコードのchangeEquipedById($dataArmors[46].etypeId, 46)
changeEquiped の「ed」って必要ですか?
$gameActors.actor(アクターID).changeEquipById(装備タイプ, 装備品)
のコードだとEquipedではなくてEquipなんですが…
ご指摘の通り、 changeEquipById が正しいです。
ただ今回の場合、装備スロットIDが必要だとわかりましたので、こちらではなく、
changeEquip(装備スロットID, 装備品) のメソッドで装備変更することになりますが。
確かに、この場合だと、装備スロットIDが必要になりそうですね。けいのすけ さんが書きました: 現状Ruたん様の同じ名前の装備タイプなら同じものを装備できるように - Torigoya_SameEquipType.jsを利用させて頂いてまして同じ装備タイプのアイテムを複数装備したいと考えてます。
装備タイプとしては
武器
道具
道具
道具
道具
道具
…
という感じで武器以外のアイテムは全て同じ装備タイプですがスロットの位置は決まっていない状態です。
また、空欄に装備することも考えて空欄を表示する必要もあります。
一覧取得スクリプトの内容を
コード: 全て選択
$gameParty.members()[$gameVariables.value(1)].equips().filter((equip, index) => index > 0);
武器以外の装備スロットの内容が空欄含めて列挙されるはずです。
ただ、カスタムメニュー作成プラグインに不具合があるようで、
空欄の項目を描画したり、選択したりする際に、エラーが出てしまうので、
JavaScriptを編集できるソフト(メモ帳やテキストエディタでもできますがお勧めはVisualStudioCode)を使用して、
プラグインに以下の変更を加えてください。
(元のファイルのバックアップはしっかりとっておいてください)
- 2018行目あたりにあるisCommandItem というメソッドの定義の中の
を
コード: 全て選択
return item.Text;
に変更してください。コード: 全て選択
return item ? item.Text : undefined;
- 1971行目あたりにある playOkSound というメソッドの定義の中の
をコード: 全て選択
if (item.OkSound) {
に変更してください。コード: 全て選択
if (item && item.OkSound) {
(PlayOkSoundメソッドの定義は2つありますが、1971行目あたりから始まるほうです)
キャンセルした場合、インデックス格納変数に -1 が入るということにご注意ください。
アクターのデータには、データベース上のアクターのデータを扱うものと、ちなみに素人考えで装備スロットIDが分からなくても該当アクターの装備品を全て変数に取得してから条件分岐で先に選択した装備を見つけられるかな?と思い(カスタムメニュー作成スクリプトの)選択項目格納変数の値からアクターIDを調べようと試したんですが…
選択項目格納変数の値がアイテムの時は
$gameVariables.value(1).name
とか
$gameVariables.value(1).id
でIDや名称を取得できたんですが選択項目格納変数の値がアクターの時にIDが取得できませんでした。
アクターのデータは取得方法が違うんでしょうか……
ゲーム内でのアクターの状態を扱うものの2種類があり、
選択項目格変数に入ってくるものは、後者です。
前者の場合は、上記のスクリプトで取得できますが、
後者の場合、アクター名は
コード: 全て選択
name()
コード: 全て選択
actorId()
(こうじゃないやり方もありますが、プログラムの作法的に、こうしたほうが良いです)
最後に編集したユーザー ecf5DTTzl6h6lJj02 [ 2022年11月23日(水) 19:36 ], 累計 1 回
Re: 【解決済み】トリアコンタン様カスタムメニュー作成で装備の選択肢を作りたい
いろいろ詳しく教えて頂いてありがとうございます!
四苦八苦してますが少しづつ形になってきました。
最終的にはドラクエみたいにアクター一人一人が道具を個別に持てて使ったり装備したり出来るようにしたいと考えてます。
お力添え本当にありがとうございます!
四苦八苦してますが少しづつ形になってきました。
最終的にはドラクエみたいにアクター一人一人が道具を個別に持てて使ったり装備したり出来るようにしたいと考えてます。
お力添え本当にありがとうございます!