ページ 11

ランダムにアイテム(武器、防具)を入手設定スクリプト

Posted: 2016年3月11日(金) 09:11
by オシブ
ランダムにアイテム類を入手する宝箱などの設定を補助するスクリプトです。
抽選した結果は指定変数に代入され、そのままアイテムを入手させることもできます。


画像
画像
画像
画像
※改造した状態での再配布はクレジット表記をしてくれればOKです。
※また他サイトなどに改造の相談や質問するために引用転載することはOKです。

画像
画像

【使い方】
・イベントスクリプトに、用途に合わせて記述するだけ。

【使用例】
スクリプト記述的には、アイテム、武器、防具を分けていますが、ごっちゃに出る宝箱を作ることも可能です。
こんな感じにコモンイベントに記述します。あとはコモンイベントを宝箱イベントから呼び出せばOK!

キャプチャ.JPG
キャプチャ.JPG (34.4 KiB) 閲覧数: 5895 回


(ちなみに、メッセージウインドウにアイテム名を表示するのは、ひきも記さんのところのメッセージ制御文字拡張がお勧めです。)


【ダウンロード】

コード: 全て選択

#==============================================================================
# ■ RGSS3 くじ引きスクリプト by オシブ
#------------------------------------------------------------------------------
#  ランダムにアイテムや武器、防具を入手するときの
#   出現アイテムと確率の設定を簡単に設定します。
#==============================================================================
=begin

【使用方法】

イベントスクリプトに記入するだけです。
後ろの括弧には、そのままアイテムを入手するかを書きます。
(true、または省略するとそのまま入手します)

アイテムなら item_randam(true or false)
武器なら weapon_randam(true or false)
防具なら armor_randam(true or false)


【解説】

簡単に言うと、このスクリプトはデータIDの番号が書かれた紙を
指定枚数、くじ箱に入れてくじ引きをするというものです。
[番号, 枚数]って感じで記述します。

枚数が多ければ多いほど、くじ引きをしたとき
その番号の紙は引かれる確率が高くなります。

=end

module Oxib_Item_Box

  #結果を受け取る変数
  BOX_VARIABLES = 1 #ここで指定した変数に結果が代入されます。
 
  # [アイテムID, 確率]
  # 確率は数値が高ければ高いほど、相対的に手に入りやすくなります。
 
  ITEMS = [[1,100],[2,50],[3,5],[4,30],[5,30],[6,25],
  [7,12],[8,25],[9,1],[10,5],[12,3],[13,3],[14,3],[15,1],[16,3]]

  WEAPONS = [[1,100],[2,60],[3,30]]

  ARMORS = [[1,48],[2,24],[3,12],[4,6],[5,3],[6,1]]
 
end


#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● アイテムをランダムに入手
  #--------------------------------------------------------------------------
  def item_randam(get = true)
    item = []
    for i in Oxib_Item_Box::ITEMS
      item += [i[0]]*i[1]
    end
    #p "くじ箱の総数: " + item.size.to_s + "枚"
    item_id = item.sample
    $game_variables[Oxib_Item_Box::BOX_VARIABLES] = item_id
    $game_party.gain_item($data_items[item_id], 1) if get
  end
  #--------------------------------------------------------------------------
  # ● 武器をランダムに入手
  #--------------------------------------------------------------------------
  def weapon_randam(get = true)
    item = []
    for i in Oxib_Item_Box::WEAPONS
      item += [i[0]]*i[1]
    end
    #p "くじ箱の総数: " + item.size.to_s + "枚"
    item_id = item.sample
    $game_variables[Oxib_Item_Box::BOX_VARIABLES] = item_id
    $game_party.gain_item($data_weapons[item_id], 1) if get

  end
  #--------------------------------------------------------------------------
  # ● 防具をランダムに入手
  #--------------------------------------------------------------------------
  def armor_randam(get = true)
    item = []
    for i in Oxib_Item_Box::ARMORS
      item += [i[0]]*i[1]
    end
    #p "くじ箱の総数: " + item.size.to_s + "枚"
    item_id = item.sample
    $game_variables[Oxib_Item_Box::BOX_VARIABLES] = item_id
    $game_party.gain_item($data_armors[item_id], 1) if get
  end
end

Re: ランダムにアイテム(武器、防具)を入手設定スクリプト

Posted: 2016年3月12日(土) 08:59
by オシブ
昨日アップしたばかりですが、違うバージョンも作ってみたので、合っているほうを使ってみてください :)
このバージョンは、アイテム、武器、防具など分けて、設定するのではなく、リストごとに設定をするものです。
リストは無限に増やすことができます。
また、新しくメソッドを書いたので、前バージョンと併用することも可能です。
クレジットは前バージョンと同じです。

【ダウンロード】

コード: 全て選択

#==============================================================================
# ■ RGSS3 くじ引きスクリプト ver 2.0   by オシブ
#------------------------------------------------------------------------------
#  ランダムにアイテムや武器、防具を入手するときの
#   出現アイテムと確率の設定を簡単に設定します。
#==============================================================================
=begin

【使用方法】
イベントスクリプトに randam_box(n) と記入するだけです。
n には、自分が設定したリスト番号を入れます。

その他の設定として、そのままアイテムを入手する場合は
randam_box(n, get, category, value) と
さらに後ろに設定を追加することで出来ます。

get は、アイテムを入手するかどうかです。true を入れてください。
category には、アイテム(:i)、武器(:w)、防具(:a) のどれかを入れてください。
value は何個手に入れるかを指定することができます。整数を入れてください。

【使用例】
randam_box(1, true, :i, 3)
こうやって書くと、リスト1番の中から引いた番号IDのアイテムを
3個、手に入れます。


【解説】

簡単に言うと、このスクリプトはデータIDの番号が書かれた紙を
指定枚数、くじ箱に入れてくじ引きをするというものです。
[番号, 枚数]って感じで記述します。

枚数が多ければ多いほど、くじ引きをしたとき
その番号の紙は引かれる確率が高くなります。

=end

module Oxib_Item_Box

  #結果を受け取る変数
  BOX_VARIABLES_EX = 1 #ここで指定した変数に結果が代入されます。
 
  # リスト番号 => [[アイテムID, 確率],[アイテムID, 確率],]
  # 確率は数値が高ければ高いほど、相対的に手に入りやすくなります。
  # リスト番号はいくらでも増やせます。

  ITEM_LIST = {
 
  1 => [[1,100],[2,50],[3,5],[4,30],[5,30],[6,25],
  [7,12],[8,25],[9,1],[10,5],[12,3],[13,3],[14,3],[15,1],[16,3]],
 
  2 => [[1,100],[2,50]],
 
  3 => [[10,5],[12,3]], #後ろの , は消さないでください。
 
  } #消さないでください。
 
end


#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● アイテムをランダムに入手
  #--------------------------------------------------------------------------
  def randam_box(key, get = false, category = 0, value = 1)
    item = []
    for i in Oxib_Item_Box::ITEM_LIST[key]
      item += [i[0]]*i[1]
    end
    #p "くじ箱の総数: " + item.size.to_s + "枚"
    item_id = item.sample   
    $game_variables[Oxib_Item_Box::BOX_VARIABLES_EX] = item_id
    return if get == false || category == 0
    case category
    when :i
      $game_party.gain_item($data_items[item_id], value)
    when :w
      $game_party.gain_item($data_weapons[item_id], value)
    when :a
      $game_party.gain_item($data_armors[item_id], value)
    else
      msgbox "くじ引きスクリプトのカテゴリー設定を間違えています"
    end
  end
end



※randam_boxの引数の設定を間違えていたので、修正しました。