#============================================================================== # ○ランダムアイテム入手 Ver1.00 # for RGSS2 # 西瓜 / Space not far # http://muspell.raindrop.jp/ # アイテムや武器防具のランダム入手を簡単に行うことができます。 #============================================================================== # イベントコマンドの「スクリプト」に # snf_randomget(アイテムの種別, 入手アイテムIDの配列, 入手数) # という形式で記述してください。 # アイテムの種別は 0 => アイテム、1 => 武器、2 => 防具 となっています。 # なお、各項目は省略することも可能です。 # 省略した場合、 # アイテムの種類 => ランダム(rand(2)) # 入手アイテムIDの配列 => 1..999 # 入手数 => 1 # となります。 # デフォルトの設定では、空白名(全角スペースが入っている場合は別)のアイテムと # メモ欄に<ランダムアイテム例外>とあるアイテムは無視されます。 =begin ■設定例 knd = 2 arr = 1..10 sze = 3 snf_randomget(knd, arr, sze)  → ID1〜10番の防具のうち一種をランダムに三個入手 snf_randomget(1, [2, 5, 8])  → ID2、5、8の武器のうち一種をランダムに入手 snf_randomget  → アイテム・武器・防具の中からランダムに入手 ■雛形 ここから knd = 0 # 種別(0=>アイテム、1=>武器、2=>防具) arr = 1..999 # ランダムアイテムIDの配列 sze = 1 # 入手数 snf_randomget(knd, arr, sze) ここまでをイベントコマンドのスクリプトに貼り付け、 用途に合わせて各数値を設定して使うと見た目わかりやすい可能性があります。 =end module SNF RANDOMITEM_EXCEPETITE = true # true => メモで設定した例外アイテムを候補から除外 # false => 例外アイテムのみ候補に入れる RANDOMITEM_NONAMESKIP = true # 空白名のアイテムの処理を飛ばすか否か?(true/false) RANDOMITEM_SUBSTITUTENAME = true # 指定したIDの変数にアイテム名を代入するか否か?(true/false) RANDOMITEM_NAME_ID = 99 # アイテム名を代入する変数のID # メッセージに\v[ID]でアイテム名を表示することが出来ます。 end class Game_Interpreter SNF_RANDOMITEM_EXCEPTION = "<ランダムアイテム例外>" def snf_randomget(kind = rand(3), array= 1..999, sze = 1) items = [] randomlist = [] # 配列初期化 for i in array case kind when 0 # アイテム items.push($data_items[i]) when 1 # 武器 items.push($data_weapons[i]) when 2 # 防具 items.push($data_armors[i]) end end for item in items.compact next if item.name == "" and SNF::RANDOMITEM_NONAMESKIP # 空白アイテムはスキップ if SNF::RANDOMITEM_EXCEPETITE # 例外アイテムの処理 next if item.note.include?(SNF_RANDOMITEM_EXCEPTION) else next unless item.note.include?(SNF_RANDOMITEM_EXCEPTION) end randomlist.push(item) end return if randomlist.size == 0 # 候補が一つもない場合終了 getitem = randomlist[rand(randomlist.size)] # ランダム選出 $game_variables[SNF::RANDOMITEM_NAME_ID] = getitem.name if SNF::RANDOMITEM_SUBSTITUTENAME $game_party.gain_item(getitem, sze) end end