【解決済】(VXAce) Lvアップで装備スロットを増やすスクリプト

アバター
HAL
記事: 10
登録日時: 2017年1月24日(火) 13:30

【解決済】(VXAce) Lvアップで装備スロットを増やすスクリプト

投稿記事by HAL » 2018年1月31日(水) 23:26

いつもお世話になっております。
標題の通り、Lvアップで装備スロットが増えるVXaceのスクリプトを探しています。

各職業のレベル帯ごとに、装備タイプidの配列を渡す形にしたいのですが、
どなたか作成していただける方、または実現可能なスクリプトをご存じの方はいらっしゃいませんでしょうか…?

----------------------------
◆現状及び経緯について
----------------------------
もともとはサンプルプロジェクト「ベスティオールの冒険者」の「アクセサリ複数装備」をもとに
力技で下記のようなスクリプトをねじ込んでいました。

コード: 全て選択

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 装備スロットの配列を取得
  #--------------------------------------------------------------------------
  def equip_slots
    if class_id == 1
      return [0,1,2,3,3,3,3,4,4,4,4] if level >= 55
      return [0,1,2,3,3,3,3,3,4,4] if level >= 40
      return [0,1,2,3,3,3,3,4,4] if level >= 30
      return [0,1,2,3,3,3,4,4] if level >= 20
      return [0,1,2,3,3,3,4] if level >= 10
      return [0,1,2,3,3,4]
    elsif class_id == 2
      return [0,1,2,3,4,4,4,4,4,4] if level >= 40
      return [0,1,2,3,4,4,4,4,4] if level >= 30
      return [0,1,2,3,4,4,4,4] if level >= 20
      return [0,1,2,3,4,4,4] if level >= 10
      return [0,1,2,3,4,4]
    else
      return [0,1,2,3,3,4,4]
    end
  end


しかしこれだと、レベルアップ後に装備変更しようとした際、
画像のようなエラーが出てしまいます。
er.png
er.png (6.88 KiB) 閲覧数: 490 回


新しい装備タイプを追加するスクリプト(へぷたなすくろーるさんの装備タイプ拡張)をお借りして
下記のようにダミーとして入れておけばエラーは出ませんでしたが、
そうすると装備やステータス欄にダミー項目が表示されてしまうことになります。

コード: 全て選択

#5はダミー用
      return [0,1,2,3,3,3,3,4,4,4,4] if level >= 55
      return [0,1,2,3,3,3,3,3,5,4,4] if level >= 40
      return [0,1,2,3,3,3,3,5,5,4,4] if level >= 30
      return [0,1,2,3,3,3,5,5,5,4,4] if level >= 20
      return [0,1,2,3,3,3,5,5,5,5,4] if level >= 10
      return [0,1,2,3,3,5,5,5,5,5,4]
 

特定の装備タイプを装備・ステータス画面で描画しないようにできれば…
と思いましたが、自分ではどうにもできませんでした。

----------------------------
◆念のための備考
----------------------------
C Winterさまの装備画面拡張をお借りしています。
また、若干ですが自分でも表示をいじっています。
sample.jpg
sample.jpg (56.8 KiB) 閲覧数: 490 回

ただし、先述の力技スクリプトのみ新規プロジェクトに入れても
同じエラーが出たため、競合ではないと思います。
----------------------------

ここまで目を通してくださった方がいらっしゃいましたら、お時間頂きありがとうございます。
お手数かとは思いますが、もし可能でしたらお力添えいただけますと幸いです。
よろしくお願いいたします。
最後に編集したユーザー HAL on 2018年2月02日(金) 00:28 [ 編集 1 回目 ]

faida
記事: 203
登録日時: 2015年12月17日(木) 16:44

Re: (VXAce) Lvアップで装備スロットを増やすスクリプト

投稿記事by faida » 2018年2月01日(木) 00:51

こんばんは。

まず、エラーの原因から説明します。
元々アクターの装備は「@equips」という配列に格納していますが、この格納の仕方が少々面倒で、
@equipsの中にGame_BaseItemというオブジェクトがあり、それを使って装備を出し入れしています。
で、@equipsの中身は初期化時のみ更新されます。

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 装備品の初期化
  #     equips : 初期装備の配列
  #--------------------------------------------------------------------------
  def init_equips(equips)
    @equips = Array.new(equip_slots.size) { Game_BaseItem.new } # ここ
    (省略)
    refresh
  end
これはいわば、クローゼットに入れるハンガーの数が最初に決まっているようなものであり、
新しい服を入れようとしても対応するハンガーが無いのでエラーが出ます。

つまり対処法は、ゲーム中にハンガーを増やす処理を入れればいい、というわけです。

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 装備できない装備品を外す
  #     item_gain : 外した装備品をパーティに戻す
  #--------------------------------------------------------------------------
  alias fai_exeqsl_release_unequippable_items release_unequippable_items
  def release_unequippable_items(item_gain = true)
    equip_slots.size.times {|i|
      @equips[i] = Game_BaseItem.new if !@equips[i]
    }
    fai_exeqsl_release_unequippable_items(item_gain = true)
  end
何か特別なことをしなければ多分この処理で事足りると思います。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
アバター
HAL
記事: 10
登録日時: 2017年1月24日(火) 13:30

Re: (VXAce) Lvアップで装備スロットを増やすスクリプト

投稿記事by HAL » 2018年2月02日(金) 00:27

faidaさん、こんばんは。
投稿に目を留めて頂き、また、こんなに早くお返事いただきましてありがとうございます。

書いていただいたスクリプトを導入したところ、レベルアップの後でもエラーが発生しなくなりました。
前回に続いて今回も助けていただいて、本当にありがとうございます…!!

エラーの原因についても、分かりやすく例えてくださったので、とてもイメージしやすかったです。
@equipsが初期化時以外に更新されないということを全く考えていなかったのですが、
そもそも「格納する服を増やす」という仕様が通常で備わってない以上、
ハンガーの数をいちいち点検する必要がないのですね。(見事に脳筋スクリプトのしわ寄せが…!)


この度は貴重なお時間を割いてご助力くださいまして、本当にありがとうございました。
前回書いていただいたスクリプトも重宝しております!
ご厚意に重ねてお礼を申し上げます。

“VX / Ace:スクリプト素材のリクエスト” へ戻る