【解決済み】「装備しますか?」という機能はスクリプトで作れますか?

ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

【解決済み】「装備しますか?」という機能はスクリプトで作れますか?

投稿記事by ジャングル » 2018年12月30日(日) 16:09

ドラクエは武器防具購入後に「装備しますか?」という選択肢が出ると思いますが、
その機能をツクールのスクリプトで作れますか?

購入後に毎回それを装備する必要があるので、ちょっと面倒に感じます。
イベントコマンドではなく、スクリプトで汎用的に使えるものを作りたいです。

JavaScriptの使用に問題はありませんがツクール初心者です。
どのオブジェクトにどういうプロパティがあるのかよく分かりません。

次の方法を考えました<防具屋の場合>
①購入前に、全ての防具の数をグローバルオブジェクトの配列に保存していく。
②購入後に、もう一度別の配列にそれを保存。
③それらを比較して数が異なる防具があった場合、
装備できるキャラを抽出して、選択肢として表示させたい。

③の「装備できるキャラを抽出して」というところで行き詰っています。
$gameActors $gamePartyなどのオブジェクトの、どのプロパティを見ればいいですか?

※デベロッパーツールでオブジェクトを見ていますが、
プロパティの数が多くて苦労しています。

分かる方がおられましたら宜しくお願いします。


あと、rpg_windows.jsなどの中で、購入された防具が分かる箇所があれば教えてほしいです。
(全防具の数を配列に保存する必要がなくなるので)
前にそれを見たときに「買われた瞬間」の処理があった気がしますが。
最後に編集したユーザー ジャングル on 2019年1月03日(木) 10:57 [ 編集 1 回目 ]

アバター
ツミオ
記事: 83
登録日時: 2017年4月02日(日) 13:46
連絡を取る:

Re: 「装備しますか?」という機能はスクリプトで作れますか?

投稿記事by ツミオ » 2018年12月30日(日) 20:21

こんばんは。

その武器あるいは防具が装備できるかどうかは、Game_BattlerBaseクラスのcanEquipメソッドが使用可能だと思われます。
例えば以下のような感じで使用します。

コード: 全て選択

function hogehoge() {
    const boughtList = [$dataArmors[1], $dataWeapons[2]];
    const result = boughtList.map(item => {
        return {actors: $gameParty.allMembers().filter(actor => actor.canEquip(item)), equip:item};
    });

    console.log(result);
}


上記のコードで
result.actors:パーティーに加入しているアクターで、対象の武器あるいは防具を使用できるアクターのリスト
result.equip:対象の武器あるいは防具
を得ることができます。
また、boughtListは「それらを比較して数が異なる防具があった場合」で得られた「異なる防具のリスト(購入した防具のリスト)」に置き換えて使用することを想定しています。

購入された装備はScene_ShopクラスのdoBuyメソッドでわかる気がします。
【Twitter】https://twitter.com/TsumioNtGame/
【GitHub】https://github.com/Tsumio/rmmv-plugins

有償の依頼も募集中。
今まで有償で制作したものは実績をご覧ください。
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

Re: 「装備しますか?」という機能はスクリプトで作れますか?

投稿記事by ジャングル » 2018年12月30日(日) 21:24

ツミオ様、回答ありがとうございます。

Game_BattlerBaseクラスのcanEquipですか。
確かに $gamePartyの__proto__を辿っていったらありました。
ありがとうございます。

明日、低レベルな処理をしようとしていました・・・。
$dataClasses[n].traits[] を走査して、防具タイプ装備(code:52)のdataIdと購入品が一致するかを調べて、
更にその職業のキャラを洗い出そうとしてました。

コードを使わせてもらいます。


Scene_ShopのdoBuyメソッドも確かにありました。
this._item にきちんと入ってますね。

助かりました。
ありがとうございました。
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

Re: 「装備しますか?」という機能はスクリプトで作れますか?

投稿記事by ジャングル » 2018年12月31日(月) 19:56

とりあえず出来ました。

doBuyメソッド内で、買った物と装備できるキャラを配列に追加していき、
Scene_Mapのupdateで、買い物後であればそれを装備するシーンに飛ぶようにしました。

選択肢やそれを選んだ後の装備機能なども問題なく動作しています。

装備するシーンの背景が真っ黒になってしまい困りましたが、
SceneManagerのsnapForBackgroundでマップをスナップしてそれを背景画像に使用していることを知り、
それらを継承して、メニュー画面などと同様にブラーの掛かったマップ画像を背景に表示させられました。

シーンの作成方法や選択肢のあるウィンドウの追加方法などはツミオ様のページを参考にさせて頂きました。
http://ntgame.wpblog.jp/2017/05/25/post-485/

大変助かりました。
ありがとうございました。
ジャングル
記事: 108
登録日時: 2018年12月30日(日) 14:51
お住まい: 自動販売機

Re: 【解決済み】「装備しますか?」という機能はスクリプトで作れますか?

投稿記事by ジャングル » 2019年1月06日(日) 10:54

Scene_Baseにterminateメソッドを見つけたので、
Scene_Mapでいちいちチェックせずにそれに書いてみます。

あと、お名前を間違えてました。
失礼しました。

ありがとうございました。

“MV:質問” へ戻る