2006.04.08 05:55

아이템도감 질문좀...

조회 수 167 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
#アイテム図鑑
#
#アイテム図鑑ですが、汎用性を持たせようと色々やってしまった結果
#ちょっと、複雑になってしまったかも知れません…
#
#●設定方法
#・基本的な使い方
#  普通に使うだけなら、このままコピペで大丈夫です(多分)
#  アイテムに「図鑑登録無効」属性をつけていると
#  図鑑に登録されなくなります。
#
#・武器、防具、道具を細かく分類する方法
#  まず、 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




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

List of Articles
번호 제목 글쓴이 날짜 조회 수
8827 저번 글들과, 이전 글에 대해 묻고 싶습니다. idtptkd 2005.05.17 1315
8826 이전 작가들은 어떻게 되는 건가요? 아렉스 2005.05.17 1092
8825 이전 작가들은 어떻게 되는 건가요? 영원전설 2005.05.18 1152
8824 프루티룹스 질문... 신승일 2005.05.18 1473
8823 창작글만 있는데 감상문 같은 건 쓸수 없나요? 다르칸 2005.05.18 994
8822 창작글만 있는데 감상문 같은 건 쓸수 없나요? 아렉스 2005.05.18 1032
8821 창작글만 있는데 감상문 같은 건 쓸수 없나요? 천무 2005.05.18 821
8820 창작글만 있는데 감상문 같은 건 쓸수 없나요? 『水』신교 2005.05.18 869
8819 rpg만들기 2000에서 신규프로젝트가 만들어지지 않아요;; 밀크마스터 2005.05.18 1166
8818 rpg만들기 2000에서 신규프로젝트가 만들어지지 않아요;; 나랑놀자 2005.05.18 1111
8817 rpg만들기 2000에서 신규프로젝트가 만들어지지 않아요;; 셉티찡 2005.05.18 1170
8816 릴레이 소설 말인데요... 외로운갈매기 2005.05.18 675
8815 이전의 창작글 게시판의 글은 어케되나요? 천무 2005.05.18 471
8814 이전의 창작글 게시판의 글은 어케되나요? Sir_아사히 2005.05.19 563
8813 윈도우 98에서는 rpgxp안돌아가요 ? 바람을 가르는 자 2005.05.19 767
8812 윈도우 98에서는 rpgxp안돌아가요 ? 미칼렌 2005.05.19 927
8811 패치 요청... Norid 2005.05.19 454
8810 rpg만들기 2000에서 신규프로젝트가 만들어지지 않아요;; black-angel 2005.05.19 1147
8809 [RPG XP] 게임 테스트 오류. 살려주세요// Norid 2005.05.19 939
8808 릴레이소설 사래신장전 완결했는데요.. 적랑 2005.05.20 648
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 442 Next
/ 442


[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)