【解決】【VXace】総アイテム数を変数に代入する方法など

wan1313
記事: 15
登録日時: 2021年11月19日(金) 17:38

【解決】【VXace】総アイテム数を変数に代入する方法など

投稿記事by wan1313 » 2022年7月06日(水) 19:04

いつもお世話になっています。
表題についてなのですが

分かりづらい表現で申し訳ないのですが
総アイテム数というのは
ポーションが5つということではなく
ポーション/薬草/宝石→3つ
というようにアイテムリストの総数の事です。

総アイテム数を変数に入れる場合のスクリプトの記載が分かる方はいらっしゃるでしょうか。

理由は、
アイテムリストがいっぱいになり、アイテムが持てない状態になった時に
「これ以上持てない」というメッセージを表示したい為です。
なので変数に総アイテム数を代入し、
条件分岐で20以上だったらメッセージ表示…というイベントを作ろうとしているのですが、
総アイテム数を取得する方法が分かりませんでした。

当方スクリプトに疎くて申し訳ないのですが
もし分かる方がいらっしゃいましたら教えて頂ければ幸いです。
最後に編集したユーザー wan1313 on 2022年7月07日(木) 00:17 [ 編集 1 回目 ]

名無し蛙
記事: 304
登録日時: 2015年11月23日(月) 02:46

Re: 【VXace】総アイテム数を変数に代入する方法など

投稿記事by 名無し蛙 » 2022年7月06日(水) 21:33

コード: 全て選択

# 所持アイテム種類の合計
$game_variables[1] = $game_party.items.size
# 装備品含む全所持アイテム種類の合計
$game_variables[2] = $game_party.all_items.size
# 装備品含む全所持アイテムの個数合計
$game_variables[3] =
$game_party.all_items.inject(0){|sum, item|
  sum + $game_party.item_number(item)
}

こんな感じですか
DEDEN
記事: 58
登録日時: 2018年8月25日(土) 15:06

Re: 【VXace】総アイテム数を変数に代入する方法など

投稿記事by DEDEN » 2022年7月06日(水) 21:45

wan1313 様
名無し蛙 様
私もスクリプトを作ってしまいました
自動で格納するように作っていた結果時間が掛かってしまい回答が被ってしまいましたね…
申し訳ありません

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 設定項目
  #--------------------------------------------------------------------------
  ITEM_SIZE_VARIABLES   = 1 #アイテムの所持している種類数を格納する変数ID
  WEAPON_SIZE_VARIABLES = 2 #武器の所持している種類数を格納する変数ID
  ARMOR_SIZE_VARIABLES  = 3 #防具の所持している種類数を格納する変数ID
  #--------------------------------------------------------------------------
  # ● 現在の所持種類数を格納
  #--------------------------------------------------------------------------
  def item_size_storage
    item_size = $game_party.instance_variable_get(:@items).size
    weapon_size = $game_party.instance_variable_get(:@weapons).size
    armor_size = $game_party.instance_variable_get(:@armors).size
    $game_variables[ITEM_SIZE_VARIABLES] = item_size
    $game_variables[WEAPON_SIZE_VARIABLES] = weapon_size
    $game_variables[ARMOR_SIZE_VARIABLES] = armor_size
  end
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● アイテムの増減
  #--------------------------------------------------------------------------
  alias command_126_deden command_126
  def command_126
    command_126_deden
    item_size_storage
  end
  #--------------------------------------------------------------------------
  # ● 武器の増減
  #--------------------------------------------------------------------------
  alias command_127_deden command_127
  def command_127
    command_127_deden
    item_size_storage
  end
  #--------------------------------------------------------------------------
  # ● 防具の増減
  #--------------------------------------------------------------------------
  alias command_128_deden command_128
  def command_128
    command_128_deden
    item_size_storage
  end
end
module BattleManager
  #--------------------------------------------------------------------------
  # ● ドロップアイテムの獲得と表示
  #--------------------------------------------------------------------------
  def self.gain_drop_items
    $game_troop.make_drop_items.each do |item|
      $game_party.gain_item(item, 1)
      item_size_storage
      $game_message.add(sprintf(Vocab::ObtainItem, item.name))
    end
    wait_for_message
  end
end
wan1313
記事: 15
登録日時: 2021年11月19日(金) 17:38

Re: 【VXace】総アイテム数を変数に代入する方法など

投稿記事by wan1313 » 2022年7月07日(木) 00:17

>>名無し蛙様
こちらのスクリプトを入れてみた所、アイテム総数の数値が変数に代入されていました!
色々弄ってみても上手くいかなかったので助かりました…ありがとうございます!

>>DEDEN様
スクリプトを作っていただきありがとうございます!
こちらの入れている他のスクリプトとの競合かと思うのですがエラーが出てしまっていました…
作っていただいたのにすみません…。


【補足】
アイテムの中から「大事なもの」を引いた数を出したかったので
yahoo知恵袋の下記の回答を参考にさせて頂き
https://detail.chiebukuro.yahoo.co.jp/q ... 1197578751

$game_variables[1] = $game_party.items.select{|i| !i.key_item?}.size

と記載したところ大事なものを除いたアイテムの総数を代入することが出来ました。

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

“VX / Ace:質問” へ戻る