아이템도감 질문좀...

by 짱돌z posted Apr 08, 2006
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
#アイテム図鑑
#
#アイテム図鑑ですが、汎用性を持たせようと色々やってしまった結果
#ちょっと、複雑になってしまったかも知れません…
#
#●設定方法
#・基本的な使い方
#  普通に使うだけなら、このままコピペで大丈夫です(多分)
#  アイテムに「図鑑登録無効」属性をつけていると
#  図鑑に登録されなくなります。
#
#・武器、防具、道具を細かく分類する方法
#  まず、 Data_ItemBook の initialize で設定している
#  @item_kind_name      :道具の表示名
#  @weapon_kind_name    :武器の表示名
#  @armor_kind_name     :防具の表示名
#  を、書き換えてください。
#  具体的には、@item_kind_name = ["貴重品", "回復薬", "戦闘用", "その他"]
#  みたいな感じで書き換えればOKです。(武器、防具も同様です。)
#  これは、実際に画面に表示される分類名です。
#  最低1つは設定しておかなければいけません。
#
#  次に、そのすぐ下にある @kind_row を設定します。
#  これは、分類名が表示されるリストの並び順です。
#  先程設定した分類名を自分が並べたい順番に書いていってください。
#  @kind_row = ["武器",
#               "防具",
#               "回復薬",
#               "戦闘用",
#               "その他",
#               "貴重品"]
#  こんな感じです。
#  このとき、名前を間違えないように気をつけてください
#  名前で色々判別してたりするので、間違ってしまうと正常に動きません(多分)
#
#  最後に、更に下にある
#  @item_kind_element_name     :道具の分類判定用属性名
#  @weapon_kind_element_name   :武器の分類判定用属性名
#  @armor_kind_element_name    :防具の分類判定用属性名
#  を書き換えます。
#  これは、分類を判別するため使う属性の名前です。
#  これを、最初に設定した分類名に対応するように設定してください。
#  最初に
#  @item_kind_name = ["貴重品", "回復薬", "戦闘用", "その他"]
#  こう、設定したとしたら
#  @item_kind_element_name = ["貴重", "回復", "戦闘", "その他"]
#  こんな感じです。
#  そして、実際にデータベースで設定した名前で属性を作り
#  アイテムに付与してください。
#  ちなみに、ここに何も設定しないと属性とか関係なく
#  全てのアイテムが判定されるようになります。(初期設定)
#  
#  下に、適当な設定例を載せておきます(テストプレイ時に使用したものです)
#
#    @item_kind_name = ["だいじなもの", "ふつうなもの"]
#    @weapon_kind_name = ["武器"]
#    @armor_kind_name = ["盾", "鎧", "その他"]
#    @kind_row = ["だいじなもの",
#                 "武器",
#                 "盾",
#                 "鎧",
#                 "その他",
#                 "ふつうなもの"]
#    @item_kind_element_name = ["貴重品", "普通道具"]
#    @weapon_kind_element_name = []
#    @armor_kind_element_name = ["盾", "鎧", "その他"]
#
#ちなみに、アイテムの詳細画面は
#要・自力でカスタマイズです。
#別にそのままでも使えなくはないと思いますが
#いろいろ不便な事があるかもしれません。
#
#説明長いですね…

class Data_ItemBook
  attr_reader :item_kind_name
  attr_reader :weapon_kind_name
  attr_reader :armor_kind_name
  attr_reader :kind_row
  attr_reader :item_id_data
  attr_reader :weapon_id_data
  attr_reader :armor_id_data
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    
    # ↓以下、設定用のいろいろ
    @item_kind_name = ["도구"]
    @weapon_kind_name = ["무기"]
    @armor_kind_name = ["방어구"]
    @kind_row = ["도구",
                 "무기",
                 "방어구"]
    @item_kind_element_name = []
    @weapon_kind_element_name = []
    @armor_kind_element_name = []
    # ↑ココまで
    
    @item_id_data = item_book_id_set
    @weapon_id_data = weapon_book_id_set
    @armor_id_data = armor_book_id_set
  end
  #--------------------------------------------------------------------------
  # ● 指定された種類表示名の情報を返す
  #--------------------------------------------------------------------------
  def kind_search(name)
    if @item_kind_name.include?(name)
      return [0, @item_kind_name.index(name)]
    elsif @weapon_kind_name.include?(name)
      return [1, @weapon_kind_name.index(name)]
    elsif @armor_kind_name.include?(name)
      return [2, @armor_kind_name.index(name)]
    end
  end
  #--------------------------------------------------------------------------
  # ● 図鑑用登録無視属性取得
  #--------------------------------------------------------------------------
  def no_add_element
    no_add = 0
    # 登録無視の属性IDを取得
    for i in 1...$data_system.elements.size
      if $data_system.elements[i] =~ /図鑑登録無効/
        no_add = i
        break
      end
    end
    return no_add
  end
  
  #--------------------------------------------------------------------------
  # ● 指定された属性名のIDを返す
  #--------------------------------------------------------------------------
  def element_search(element_name)
    for i in 1...$data_items.size
      if $data_system.elements[i] =~ /^#{element_name}/
        return i
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 図鑑用アイテムID設定
  #--------------------------------------------------------------------------
  def item_book_id_set
    data = []
    no_add = no_add_element
    if @item_kind_element_name.size == 0
      data[0] = [0]
      for i in 1...$data_items.size
        item = $data_items[i]
        next if item.name == ""
        next if item.element_set.include?(no_add)
        data[0].push(item.id)
      end
    else
      for i in 0...@item_kind_element_name.size
        data[i] = [0]
        element_id = element_search(@item_kind_element_name[i])
        for j in 1...$data_items.size
          item = $data_items[j]
          next if item.name == ""
          next if item.element_set.include?(no_add)
          if item.element_set.include?(element_id)
            data[i].push(item.id)
          end
        end
      end
    end
    return data
  end
  #--------------------------------------------------------------------------
  # ● 図鑑用武器ID設定
  #--------------------------------------------------------------------------
  def weapon_book_id_set
    data = []
    no_add = no_add_element
    if @weapon_kind_element_name.size == 0
      data[0] = [0]
      for i in 1...$data_weapons.size
        item = $data_weapons[i]
        next if item.name == ""
        next if item.element_set.include?(no_add)
        data[0].push(item.id)
      end
    else
      for i in 0...@weapon_kind_element_name.size
        data[i] = [0]
        element_id = element_search(@weapon_kind_element_name[i])
        for j in 1...$data_weapons.size
          item = $data_weapons[j]
          next if item.name == ""
          next if item.element_set.include?(no_add)
          if item.element_set.include?(element_id)
            data[i].push(item.id)
          end
        end
      end
    end
    return data
  end
  #--------------------------------------------------------------------------
  # ● 図鑑用防具ID設定
  #--------------------------------------------------------------------------
  def armor_book_id_set
    data = []
    no_add = no_add_element
    if @armor_kind_element_name.size == 0
      data[0] = [0]
      for i in 1...$data_armors.size
        item = $data_armors[i]
        next if item.name == ""
        next if item.guard_element_set.include?(no_add)
        data[0].push(item.id)
      end
    else
      for i in 0...@armor_kind_element_name.size
        data[i] = [0]
        element_id = element_search(@armor_kind_element_name[i])
        for j in 1...$data_armors.size
          item = $data_armors[j]
          next if item.name == ""
          next if item.guard_element_set.include?(no_add)
          if item.guard_element_set.include?(element_id)
            data[i].push(item.id)
          end
        end
      end
    end
    return data
  end
end

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 基本属性表示
  #--------------------------------------------------------------------------
  def draw_attack_element(x, y, element_set)
    elem_temp = []
    for i in element_set
      elem = $data_system.elements[i]
      elem_temp.push("화") if elem == "화"
      elem_temp.push("빙") if elem == "빙"
      elem_temp.push("뇌") if elem == "뇌"
      elem_temp.push("수") if elem == "수"
      elem_temp.push("지") if elem == "지"
      elem_temp.push("풍") if elem == "풍"
      elem_temp.push("성") if elem == "성"
      elem_temp.push("암") if elem == "암"
      elem_temp.push("악") if elem == "악"
      elem_temp.push("염") if elem == "염"
      elem_temp.push("독") if elem == "독"
      elem_temp.push("무") if elem == "무"
      elem_temp.push("평도") if elem == "평도"
      elem_temp.push("대검") if elem == "대검"
      elem_temp.push("세검") if elem == "세검"
      elem_temp.push("단검") if elem == "단검"
      elem_temp.push("단도") if elem == "단도"
      elem_temp.push("지팡이") if elem == "지팡이"
      elem_temp.push("둔기") if elem == "둔기"
    end
    if elem_temp.size == 0
      self.contents.draw_text(x, y, 64, 32, "없음")
      return
    end
    ox = 0
    for name in elem_temp
      cx = self.contents.text_size(name).width
      self.contents.draw_text(x+ox, y, cx, 32, name)
      ox += cx+8
    end
  end
  #--------------------------------------------------------------------------
  # ● 武器属性表示
  #--------------------------------------------------------------------------
  def draw_attack_wp_element(x, y, element_set)
    elem_temp = []
    for i in element_set
      elem = $data_system.elements[i]
      elem_temp.push("베기") if elem == "베기"
      elem_temp.push("타격") if elem == "타격"
      elem_temp.push("찌르기") if elem == "찌르기"
      elem_temp.push("평도") if elem == "평도"
      elem_temp.push("대검") if elem == "대검"
      elem_temp.push("세검") if elem == "세검"
      elem_temp.push("단검") if elem == "단검"
      elem_temp.push("단도") if elem == "단도"
      elem_temp.push("지팡이") if elem == "지팡이"
      elem_temp.push("둔기") if elem == "둔기"
      end
    if elem_temp.size == 0
      self.contents.draw_text(x, y, 64, 32, "없음")
      return
    end
    ox = 0
    for name in elem_temp
      cx = self.contents.text_size(name).width
      self.contents.draw_text(x+ox, y, cx, 32, name)
      ox += cx+8
    end
  end
  #--------------------------------------------------------------------------
  # ● 特攻属性表示
  #--------------------------------------------------------------------------
  def draw_attack_weak_element(x, y, element_set)
    elem_temp = []
    for i in element_set
      elem = $data_system.elements[i]
      elem_temp.push("不死") if elem == "対 不死"
      elem_temp.push("蛇")   if elem == "対 蛇"
      elem_temp.push("水棲") if elem == "対 水棲"
      elem_temp.push("獣")   if elem == "対 獣"
      elem_temp.push("鬼")   if elem == "対 鬼"
      elem_temp.push("鳥")   if elem == "対 鳥"
      elem_temp.push("悪魔") if elem == "対 悪魔"
      elem_temp.push("天使") if elem == "対 天使"
    end
    if elem_temp.size == 0
      self.contents.draw_text(x, y, 64, 32, "없음")
      return
    end
    ox = 0
    for name in elem_temp
      cx = self.contents.text_size(name).width
      self.contents.draw_text(x+ox, y, cx, 32, name)
      ox += cx+8
    end
  end
  #--------------------------------------------------------------------------
  # ● ステート付与表示
  #--------------------------------------------------------------------------
  def draw_attack_add_state(x, y, plus_state_set)
    state_temp = []
    for i in plus_state_set
      state = $data_states[i]
      state_temp.push(state.name) if state.name != ""
    end
    if state_temp.size == 0
      self.contents.draw_text(x, y, 64, 32, "없음")
      return
    end
    ox = 0
    oy = 0
    for name in state_temp
      cx = self.contents.text_size(name).width
      if ox + cx + 4 >= self.contents.width - 128
        ox = 0
        oy += 1
      end
      self.contents.draw_text(x+ox, y+oy*32, cx, 32, name)
      ox += cx+8
    end
  end
  #--------------------------------------------------------------------------
  # ● 効果範囲を返す
  #--------------------------------------------------------------------------
  def draw_scope(scope)
    case scope
    when 0
      return "없음"
    when 1
      return "敵単体"
    when 2
      return "敵全体"
    when 3
      return "味方単体"
    when 4
      return "味方全体"
    when 5
      return "味方単体"
    when 6
      return "味方全体"
    when 7
      return "使用者"
    end
  end
end

class Game_Temp
  attr_accessor :item_book_data
  alias temp_item_book_data_initialize initialize
  def initialize
    temp_item_book_data_initialize
    @item_book_data = Data_ItemBook.new
  end
end

class Game_Party
  attr_accessor :item_count               # 入手アイテム情報(図鑑用)
  attr_accessor :weapon_count             # 入手武器情報(図鑑用)
  attr_accessor :armor_count              # 入手防具情報(図鑑用)
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias item_book_info_initialize initialize
  def initialize
    item_book_info_initialize
    @item_count = {}
    @weapon_count = {}
    @armor_count = {}
  end
  alias item_book_gain_item gain_item
  def gain_item(item_id, n)
    add_item_count(item_id, 0) if n > 0
    item_book_gain_item(item_id, n)
  end
  alias item_book_gain_weapon gain_weapon
  def gain_weapon(item_id, n)
    add_weapon_count(item_id, 0) if n > 0
    item_book_gain_weapon(item_id, n)
  end
  alias item_book_gain_armor gain_armor
  def gain_armor(item_id, n)
    add_armor_count(item_id, 0) if n > 0
    item_book_gain_armor(item_id, n)
  end
  
  #--------------------------------------------------------------------------
  # ● アイテムの獲得情報の追加(図鑑用)
  #     0:無獲得 1:獲得済
  #--------------------------------------------------------------------------
  def add_item_count(item_id, type = 0)
    if type == -1
      @item_count[item_id] = 0
    else
      @item_count[item_id] = 1
    end
  end
  #--------------------------------------------------------------------------
  # ● 武器の獲得情報の追加(図鑑用)
  #     0:無獲得 1:獲得済
  #--------------------------------------------------------------------------
  def add_weapon_count(weapon_id, type = 0)
    if type == -1
      @weapon_count[weapon_id] = 0
    else
      @weapon_count[weapon_id] = 1
    end
  end
  #--------------------------------------------------------------------------
  # ● 防具の獲得情報の追加(図鑑用)
  #     0:無獲得 1:獲得済
  #--------------------------------------------------------------------------
  def add_armor_count(armor_id, type = 0)
    if type == -1
      @armor_count[armor_id] = 0
    else
      @armor_count[armor_id] = 1
    end
  end
end


class Window_ItemBook < Window_Selectable
  attr_reader   :data
  attr_reader   :item_kind
  attr_reader   :item_index
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(index=0)
    super(0, 64, 640, 416)
    @column_max = 2
    @book_data = $game_temp.item_book_data
    @data = data_set(index)
    @data.shift
    #@data.sort!
    @item_max = @data.size
    @item_kind = index
    self.index = 0
    #refresh
  end
  def new_data_set(index)
    @data = data_set(index)
    @data.shift
    #@data.sort!
    @item_max = @data.size
  end
  #--------------------------------------------------------------------------
  # ● 入手データを取得
  #--------------------------------------------------------------------------
  def data_set(index)
    kind_row_data = @book_data.kind_search(@book_data.kind_row[index])
    @item_kind = kind_row_data[0]
    @item_index = kind_row_data[1]
    data = []
    case @item_kind
    when 0
      data = @book_data.item_id_data[@item_index].dup
    when 1
      data = @book_data.weapon_id_data[@item_index].dup
    when 2
      data = @book_data.armor_id_data[@item_index].dup
    end
    return data
  end
  #--------------------------------------------------------------------------
  # ● 表示許可取得
  #--------------------------------------------------------------------------
  def show?(kind, id)
    case kind
    when 0
      if $game_party.item_count[id] == 0 or $game_party.item_count[id] == nil
        return false
      else
        return true
      end
    when 1
      if $game_party.weapon_count[id] == 0 or $game_party.weapon_count[id] == nil
        return false
      else
        return true
      end
    when 2
      if $game_party.armor_count[id] == 0 or $game_party.armor_count[id] == nil
        return false
      else
        return true
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテム取得
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    #項目数が 0 でなければビットマップを作成し、全項目を描画
    return if @item_max == 0
    self.contents = Bitmap.new(width - 32, row_max * 32)
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #     index : 項目番号
  #--------------------------------------------------------------------------
  def draw_item(index)
    case @item_kind
    when 0
      item = $data_items[@data[index]]
      id = @book_data.item_id_data[@item_index].index(item.id)
    when 1
      item = $data_weapons[@data[index]]
      id = @book_data.weapon_id_data[@item_index].index(item.id)
    when 2
      item = $data_armors[@data[index]]
      id = @book_data.armor_id_data[@item_index].index(item.id)
    end
    return if item == nil
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 32, 32, id.to_s)
    if show?(@item_kind, item.id)
      bitmap = RPG::Cache.icon(item.icon_name)
      opacity = 255
      self.contents.blt(x+48, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
      self.contents.draw_text(x+48 + 28, y, 212, 32, item.name, 0)
    else
      self.contents.draw_text(x+48 + 28, y, 212, 32, "-----", 0)
      return
    end
  end
end


class Window_ItemBook_Info < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0+64+64, 640, 480-64-64)
    @book_data = $game_temp.item_book_data
    self.contents = Bitmap.new(width - 32, height - 32)
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh(item_id, item_kind, item_index)
    self.contents.clear
    self.contents.font.size = 22
    case item_kind
    when 0
      draw_item_info(item_id, item_index)
    when 1
      draw_weapon_info(item_id, item_index)
    when 2
      draw_armor_info(item_id, item_index)
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテム描画
  #--------------------------------------------------------------------------
  def draw_item_info(item_id, item_index)
    item = $data_items[item_id]
    rect = Rect.new(4, 0, 160, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = 255
    self.contents.blt(4+48, 0 + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.font.color = normal_color
    id = @book_data.item_id_data[item_index].index(item.id)
    self.contents.draw_text(4, 0, 32, 32, id.to_s)
    self.contents.draw_text(4+48 + 28, 0, 212, 32, item.name, 0)
    self.contents.draw_text(640-128-88-4, 0, 88, 32, item.price.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(640-128, 0, 128, 32, $data_system.words.gold, 0)
    self.contents.font.color = normal_color
    @help_window.set_text(item.description)
  end
  #--------------------------------------------------------------------------
  # ● 武器描画
  #--------------------------------------------------------------------------
  def draw_weapon_info(item_id, item_index)
    item = $data_weapons[item_id]
    rect = Rect.new(4, 0, 160, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = 255
    self.contents.blt(4+48, 0 + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.font.color = normal_color
    id = @book_data.weapon_id_data[item_index].index(item.id)
    self.contents.draw_text(4, 0, 32, 32, id.to_s)
    self.contents.draw_text(4+48 + 28, 0, 212, 32, item.name, 0)
    self.contents.draw_text(640-128-88-4, 0, 88, 32, item.price.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(640-128, 0, 128, 32, $data_system.words.gold, 0)
    self.contents.font.color = text_color(2)
    self.contents.draw_text(4, 32, 48, 32, "ATK", 0)
    self.contents.font.color = text_color(4)
    self.contents.draw_text(4+128, 32, 48, 32, "DEF", 0)
    self.contents.font.color = text_color(6)
    self.contents.draw_text(4+256, 32, 48, 32, "MDF", 0)
    self.contents.font.color = normal_color
    self.contents.draw_text(4+48, 32, 48, 32, item.atk.to_s, 2)
    self.contents.draw_text(4+48+128, 32, 48, 32, item.pdef.to_s, 2)
    self.contents.draw_text(4+48+256, 32, 48, 32, item.mdef.to_s, 2)
    
    self.contents.font.color = system_color
    self.contents.draw_text(4, 64, 48, 32, "STR", 0)
    self.contents.draw_text(4+128, 64, 48, 32, "DEX", 0)
    self.contents.draw_text(4+256, 64, 48, 32, "SPD", 0)
    self.contents.draw_text(4+384, 64, 48, 32, "MAT", 0)
    self.contents.font.color = normal_color
    self.contents.draw_text(4+48, 64, 48, 32, item.str_plus.to_s, 2)
    self.contents.draw_text(4+48+128, 64, 48, 32, item.dex_plus.to_s, 2)
    self.contents.draw_text(4+48+256, 64, 48, 32, item.agi_plus.to_s, 2)
    self.contents.draw_text(4+48+384, 64, 48, 32, item.int_plus.to_s, 2)
    
    self.contents.font.color = system_color
    self.contents.draw_text(4, 96, 96, 32, "基本属性")
    self.contents.draw_text(4, 128, 96, 32, "特攻属性")
    self.contents.draw_text(4, 160, 96, 32, "付与ステート")
    #self.contents.draw_text(4, 128, 96, 32, "武器属性")
    self.contents.font.color = normal_color
    draw_attack_element(4+96+16, 96, item.element_set)
    draw_attack_weak_element(4+96+16, 128, item.element_set)
    draw_attack_add_state(4+96+16, 160, item.plus_state_set)
    #draw_attack_wp_element(4+96+16, 128, item.element_set)
    
    @help_window.set_text(item.description)
  end
  #--------------------------------------------------------------------------
  # ● 防具描画
  #--------------------------------------------------------------------------
  def draw_armor_info(item_id, item_index)
    item = $data_armors[item_id]
    rect = Rect.new(4, 0, 160, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = 255
    self.contents.blt(4+48, 0 + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.font.color = normal_color
    id = @book_data.armor_id_data[item_index].index(item.id)
    self.contents.draw_text(4, 0, 32, 32, id.to_s)
    self.contents.draw_text(4+48 + 28, 0, 212, 32, item.name, 0)
    self.contents.draw_text(640-128-88-4, 0, 88, 32, item.price.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(640-128, 0, 128, 32, $data_system.words.gold, 0)
    self.contents.font.color = text_color(4)
    self.contents.draw_text(4, 32, 48, 32, "DEF", 0)
    self.contents.font.color = text_color(6)
    self.contents.draw_text(4+128, 32, 48, 32, "MDF", 0)
    self.contents.font.color = system_color
    self.contents.draw_text(4+256, 32, 48, 32, "回避", 0)
    self.contents.font.color = normal_color
    self.contents.draw_text(4+48, 32, 48, 32, item.pdef.to_s, 2)
    self.contents.draw_text(4+48+128, 32, 48, 32, item.mdef.to_s, 2)
    self.contents.draw_text(4+48+256, 32, 48, 32, item.eva.to_s, 2)
    
    self.contents.font.color = system_color
    self.contents.draw_text(4, 64, 48, 32, "STR", 0)
    self.contents.draw_text(4+128, 64, 48, 32, "DEX", 0)
    self.contents.draw_text(4+256, 64, 48, 32, "SPD", 0)
    self.contents.draw_text(4+384, 64, 48, 32, "MAT", 0)
    self.contents.font.color = normal_color
    self.contents.draw_text(4+48, 64, 48, 32, item.str_plus.to_s, 2)
    self.contents.draw_text(4+48+128, 64, 48, 32, item.dex_plus.to_s, 2)
    self.contents.draw_text(4+48+256, 64, 48, 32, item.agi_plus.to_s, 2)
    self.contents.draw_text(4+48+384, 64, 48, 32, item.int_plus.to_s, 2)
    
    self.contents.font.color = system_color
    self.contents.draw_text(4, 96, 96, 32, "基本耐性")
    self.contents.draw_text(4, 128, 96, 32, "特攻耐性")
    self.contents.draw_text(4, 160, 96, 32, "防御ステート")
    #self.contents.draw_text(4, 128, 96, 32, "武器耐性")
    self.contents.font.color = normal_color
    draw_attack_element(4+96+16, 96, item.guard_element_set)
    draw_attack_weak_element(4+96+16, 128, item.guard_element_set)
    draw_attack_add_state(4+96+16, 160, item.guard_state_set)
    #draw_attack_wp_element(4+96+16, 128, item.guard_element_set)
    
    @help_window.set_text(item.description)
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    #ダミー
  end
end


class Scene_ItemBook
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    # ウィンドウを作成
    @title_window = Window_Base.new(0, 0, 640, 64)
    @title_window.contents = Bitmap.new(640 - 32, 64 - 32)
    @title_window.contents.draw_text(4, 0, 320, 32, "아이템 도감", 0)
    @main_window = Window_ItemBook.new
    @main_window.active = false
    @help_window = Window_Help.new
    @help_window.z = 110
    @help_window.y = 64
    @help_window.visible = false
    command = $game_temp.item_book_data.kind_row
    @kind_window = Window_Command.new(160, command)
    @kind_window.z = 110
    @kind_window.x = 320 - @kind_window.width / 2
    @kind_window.y = 240 - @kind_window.height / 2
    @kind_window.active = true
    # インフォウィンドウを作成 (不可視・非アクティブに設定)
    @info_window = Window_ItemBook_Info.new
    @info_window.z = 110
    @info_window.visible = false
    @info_window.active = false
    # ヘルプウィンドウを関連付け
    @info_window.help_window = @help_window
    @visible_index = 0
    @now_kind = nil
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @title_window.dispose
    @help_window.dispose
    @main_window.dispose
    @kind_window.dispose
    @info_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ウィンドウを更新
    #@help_window.update
    @main_window.update
    @kind_window.update
    @info_window.update
    if @info_window.active
      update_info
      return
    end
    # メインウィンドウがアクティブの場合: update_target を呼ぶ
    if @main_window.active
      update_main
      return
    end
    # 種類ウィンドウがアクティブの場合: update_kind を呼ぶ
    if @kind_window.active
      update_kind
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (種類ウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_kind
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      if @now_kind != @kind_window.index
        @main_window.new_data_set(@kind_window.index)
        @main_window.refresh
        subtitle = $game_temp.item_book_data.kind_row[@kind_window.index]
        title = "아이템 도감:"+subtitle
        @now_kind = @kind_window.index
        @title_window.contents.clear
        @title_window.contents = Bitmap.new(640 - 32, 64 - 32)
        @title_window.contents.draw_text(4, 0, 320, 32, title, 0)
      end
      @kind_window.active = false
      @kind_window.visible = false
      @main_window.active = true
      return
    end
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_main
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      @main_window.active = false
      @kind_window.active = true
      @kind_window.visible = true
      @main_window.index = 0
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      if @main_window.item == nil or
         @main_window.show?(@main_window.item_kind, @main_window.item) == false
        # ブザー SE を演奏
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      @main_window.active = false
      @info_window.active = true
      @info_window.visible = true
      @visible_index = @main_window.index
      @info_window.refresh(@main_window.item, @main_window.item_kind, @main_window.item_index)
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (インフォウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  def update_info
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      @main_window.active = true
      @info_window.active = false
      @info_window.visible = false
      @help_window.visible = false
      return
    end
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      return
    end
    if Input.trigger?(Input::L)
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      loop_end = false
      while loop_end == false
        if @visible_index != 0
          @visible_index -= 1
        else
          @visible_index = @main_window.data.size - 1
        end
        loop_end = true if @main_window.show?(@main_window.item_kind,@main_window.data[@visible_index])
      end
      id = @main_window.data[@visible_index]
      @info_window.refresh(id, @main_window.item_kind, @main_window.item_index)
      return
    end
    if Input.trigger?(Input::R)
      # 決定 SE を演奏
      $game_system.se_play($data_system.decision_se)
      loop_end = false
      while loop_end == false
        if @visible_index != @main_window.data.size - 1
          @visible_index += 1
        else
         @visible_index = 0
        end
        loop_end = true if @main_window.show?(@main_window.item_kind,@main_window.data[@visible_index])
      end
      id = @main_window.data[@visible_index]
      @info_window.refresh(id, @main_window.item_kind, @main_window.item_index)
      return
    end
  end
end




여기보면 제가 해석해서 읽은건아니지만 해석한걸보니 등록거부속성취득 이런게있더군요;;
● 図鑑用登録無視属性取得 이부분이요;;
그런데 이걸 아이템에 어떻게 등록시키는지 모르겠습니다;;
아이템중에 일부아이템만 등록시키고싶습니다;;
그리고 다른질문인데요;; 도감을 완성하고나면 이벤트가 발생하게못하나요?
머 자동이든 엔피시에게 말을걸어서든 어떻게든지요;;
답변좀 부탁드려요^^

Articles

1 2 3 4 5 6 7 8 9 10