조회 수 2641 추천 수 5 댓글 10
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
Extra Form




http://cafe.daum.net/rpgmake2003verhttp://f44.aaa.livedoor.jp/~ytomy/#http://f44.aaa.livedoor.jp/~ytomy/제공
#도움말 탑재 및 한글번역:ケロロ 님의 ツク-ル    닉네임 주소: http://nioting.com/
#                                  하람(RPGツク-ル)      닉네임 주소: http://cafe.daum.net/rpgmake2003ver
#보관소를 부르려면 , 이벤트 커멘드 「스크립트」로
#          call_depository
#를 실행합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆보관소 - KGC_Depository◆
#_/----------------------------------------------------------------------------
#_/ 아이템이나 소지금을 맡길 수가 있는 가게를 작성합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ 커스터마이즈 항목 ★
#==============================================================================

module KGC
  # ◆조작 윈도우의 커멘드명
  DEPOSITORY_COMMAND = [
    "돈을 맡기는",       # 돈을 맡기는
    "돈을 인출하는",     # 돈을 인출하는
    "아이템을 맡기는",   # 아이템을 맡기는
    "아이템을 꺼내는"  # 아이템을 꺼내는
  ]
  # ◆조작 윈도우의 헬프
  DEPOSITORY_HELP = [
    "돈을 맡깁니다. ",               # 돈을 맡기는
    "맡긴 돈을 인출합니다. ",     # 돈을 인출하는
    "아이템을 맡깁니다. ",           # 아이템을 맡기는
    "맡긴 아이템을 꺼냅니다. "  # 아이템을 꺼내는
  ]

  # ◆금액 지정의 자리수
  DEPOSITORY_GOLD_DIGITS = 8

  # ◆골드를 맡길 때의 메세지(헬프 윈도우)
  DEPOSIT_GOLD = "맡기는 금액을 입력해 주세요. "
  # ◆골드를 꺼낼 때의 메세지(헬프 윈도우)
  WDEPOSIT_GOLD = "꺼내는 금액을 입력해 주세요. "
  # ◆아이템을 맡길 때의 메세지(개수 윈도우)
  DEPOSIT_ITEM = "몇개 맡깁니까? "
  # ◆아이템을 꺼낼 때의 메세지(개수 윈도우)
  WDEPOSIT_ITEM = "몇개 꺼냅니까? "
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["Depository"] = true

#--------------------------------------------------------------------------
# ● 보관소 호출
#--------------------------------------------------------------------------
def call_depository
  # 플레이어의 자세를 교정
  $game_player.straighten
  # 보관소 화면으로 전환하고
  $scene = Scene_Depository.new
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Party
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  alias initialize_KGC_Depository initialize
  def initialize
    # 원의 처리를 실행
    initialize_KGC_Depository

    @deposit_gold = 0
    @deposit_item, @deposit_weapon, @deposit_armor = [], [], []
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 금취득
  #--------------------------------------------------------------------------
  def deposit_gold
    @deposit_gold = 0 if @deposit_gold == nil
    return @deposit_gold
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 금증가
  #     number : 증가량
  #--------------------------------------------------------------------------
  def gain_deposit_gold(number)
    @deposit_gold = 0 if @deposit_gold == nil
    @deposit_gold += number
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 금감소
  #     number : 감소량
  #--------------------------------------------------------------------------
  def lose_deposit_gold(number)
    self.gain_deposit_gold(-number)
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 아이템 취득
  #     id : ID
  #--------------------------------------------------------------------------
  def deposit_item_number(id)
    @deposit_item = [] if @deposit_item == nil
    return @deposit_item[id] != nil ? @deposit_item[id] : 0
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 아이템 증가
  #     id     : ID
  #     number : 개수
  #--------------------------------------------------------------------------
  def gain_deposit_item(id, number)
    @deposit_item = [] if @deposit_item == nil
    @deposit_item[id] = 0 if @deposit_item[id] == nil
    @deposit_item[id] += number
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 아이템 감소
  #     id     : ID
  #     number : 개수
  #--------------------------------------------------------------------------
  def lose_deposit_item(id, number)
    self.gain_deposit_item(id, -number)
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 무기 취득
  #     id : ID
  #--------------------------------------------------------------------------
  def deposit_weapon_number(id)
    @deposit_weapon = [] if @deposit_weapon == nil
    return @deposit_weapon[id] != nil ? @deposit_weapon[id] : 0
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 무기 증가
  #     id     : ID
  #     number : 개수
  #--------------------------------------------------------------------------
  def gain_deposit_weapon(id, number)
    @deposit_weapon = [] if @deposit_weapon == nil
    @deposit_weapon[id] = 0 if @deposit_weapon[id] == nil
    @deposit_weapon[id] += number
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 무기 감소
  #     id     : ID
  #     number : 개수
  #--------------------------------------------------------------------------
  def lose_deposit_weapon(id, number)
    self.gain_deposit_weapon(id, -number)
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 방어용 기구 취득
  #     id : ID
  #--------------------------------------------------------------------------
  def deposit_armor_number(id)
    @deposit_armor = [] if @deposit_armor == nil
    return @deposit_armor[id] != nil ? @deposit_armor[id] : 0
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 방어용 기구 증가
  #     id     : ID
  #     number : 개수
  #--------------------------------------------------------------------------
  def gain_deposit_armor(id, number)
    @deposit_armor = [] if @deposit_armor == nil
    @deposit_armor[id] = 0 if @deposit_armor[id] == nil
    @deposit_armor[id] += number
  end
  #--------------------------------------------------------------------------
  # ● 맡긴 방어용 기구 감소
  #     id     : ID
  #     number : 개수
  #--------------------------------------------------------------------------
  def lose_deposit_armor(id, number)
    self.gain_deposit_armor(id, -number)
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_DepositoryCommand
#------------------------------------------------------------------------------
#  보관소 화면에서 , 조작을 선택하는 윈도우입니다.
#==============================================================================

class Window_DepositoryCommand < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 640, 64)
    self.y = 128 if $imported["HelpExtension"]
    self.contents = Bitmap.new(width - 32, height - 32)
    # 커멘드 일람을 작성
    @commands = KGC::DEPOSITORY_COMMAND
    @item_max = @commands.size
    @column_max = @commands.size
    @item_width = (width - 32) / @commands.size
    self.back_opacity = 160
    self.index = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #--------------------------------------------------------------------------
  def refresh
    for i in 0...@commands.size
      rect = Rect.new(@item_width * i, 0, @item_width, 32)
      self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
      self.contents.font.color = system_color
      self.contents.draw_text(rect, @commands[i], 1)
    end
  end
  #--------------------------------------------------------------------------
  # ● 커서의 구형 갱신
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if index != -1
      self.cursor_rect.set(@item_width * index, 0, @item_width, 32)
    end
  end
  #--------------------------------------------------------------------------
  # ● 헬프 텍스트 갱신
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(KGC::DEPOSITORY_HELP[self.index])
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_DepositoryGold
#------------------------------------------------------------------------------
#  보관소 화면에서 , 금액을 입력하는 윈도우입니다.
#==============================================================================

class Window_DepositoryGold < Window_Base
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  def initialize
    super(0, 128, 640, 352)
    if $imported["HelpExtension"]
      self.y = 192
      self.height = 288
    end
    @digits_max = KGC::DEPOSITORY_GOLD_DIGITS
    # 숫자의 폭으로부터 커서의 폭을 계산 (0~9 는 등폭과 가정)
    dummy_bitmap = Bitmap.new(32, 32)
    @cursor_width = dummy_bitmap.text_size("0").width + 8
    dummy_bitmap.dispose
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = 160
    self.active = false
    self.visible = false
    @cursor_position = 0
    @max = 0
    @price = 0
    @index = 0
  end
  #--------------------------------------------------------------------------
  # ● 입력된 금액의 취득
  #--------------------------------------------------------------------------
  def price
    return @price
  end
  #--------------------------------------------------------------------------
  # ● 금액의 설정
  #     np : 새로운 금액
  #--------------------------------------------------------------------------
  def price=(np)
    @price = [[np, 0].max, @max].min
    redraw_price
  end
  #--------------------------------------------------------------------------
  # ● 리셋트
  #     type : 형식
  #--------------------------------------------------------------------------
  def reset(type)
    @price = 0
    @index = @digits_max - 1
    refresh(type)
  end
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #     type : 형식
  #--------------------------------------------------------------------------
  def refresh(type)
    # 금액을 묘화
    self.contents.clear
    domination = $data_system.words.gold
    cx = contents.text_size(domination).width
    @cursor_position = 332 - cx - @cursor_width * @digits_max
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, 608, 32, "소지금")
    self.contents.draw_text(0, 64, 608, 32, "예금잔고")
    if type == 0
      self.contents.draw_text(0, 128, 608, 32, "맡기는 금액")
      @max = $game_party.gold
    else
      self.contents.draw_text(0, 128, 608, 32, "꺼내는 금액")
      @max = [10 ** @digits_max - $game_party.gold - 1, $game_party.deposit_gold].min
    end
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 32, 326 - cx, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(332 - cx, 32, cx, 32, domination, 2)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 96, 326 - cx, 32, $game_party.deposit_gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(332 - cx, 96, cx, 32, domination, 2)
    redraw_price
  end
  #--------------------------------------------------------------------------
  # ● 금액재 묘화
  #--------------------------------------------------------------------------
  def redraw_price
    domination = $data_system.words.gold
    cx = contents.text_size(domination).width
    self.contents.fill_rect(0, 160, 608, 32, Color.new(0, 0, 0, 0))
    self.contents.font.color = normal_color
    text = sprintf("%0#{@digits_max}d", self.price)
    for i in 0...text.length
      x = @cursor_position + (i - 1) * @cursor_width
      self.contents.draw_text(x, 160, 32, 32, text[i, 1], 2)
    end
    self.contents.font.color = system_color
    self.contents.draw_text(332 - cx, 160, cx, 32, domination, 2)
  end
  #--------------------------------------------------------------------------
  # ● 커서의 구형 갱신
  #--------------------------------------------------------------------------
  def update_cursor_rect
    x = @cursor_position + @index * @cursor_width
    self.cursor_rect.set(x, 160, @cursor_width, 32)
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    super
    return unless self.active
    # 방향 버튼 위나 아래가 밀렸을 경우
    if Input.repeat?(Input::UP) || Input.repeat?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      # 현재의 위의 숫자를 취득해 , 일단 0 으로 하는
      place = 10 ** (@digits_max - 1 - @index)
      n = self.price / place % 10
      self.price -= n * place
      # 위라면 +1, 아래라면 -1
      n = (n + 1) % 10 if Input.repeat?(Input::UP)
      n = (n + 9) % 10 if Input.repeat?(Input::DOWN)
      # 현재의 위의 숫자를 재설정
      self.price += n * place
    end
    # 커서 오른쪽
    if Input.repeat?(Input::RIGHT)
      if @digits_max >= 2
        $game_system.se_play($data_system.cursor_se)
        @index = (@index + 1) % @digits_max
      end
    end
    # 커서왼쪽
    if Input.repeat?(Input::LEFT)
      if @digits_max >= 2
        $game_system.se_play($data_system.cursor_se)
        @index = (@index + @digits_max - 1) % @digits_max
      end
    end
    update_cursor_rect
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_DepositoryItem
#------------------------------------------------------------------------------
#  보관소 화면에서 , 맡긴 아이템의 일람을 표시하는 윈도우입니다.
#==============================================================================

class Window_DepositoryItem < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  def initialize
    super(0, 128, 640, 352)
    if $imported["HelpExtension"]
      self.y = 192
      self.height = 288
    end
    self.back_opacity = 160
    self.active = false
    self.visible = false
    @column_max = 2
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● 아이템의 취득
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #     type : 형식
  #--------------------------------------------------------------------------
  def refresh(type)
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    self.index = 0
    # 아이템·무기·방어용 기구를 추가
    if type == 0
      for i in 1...$data_items.size
        if $game_party.item_number(i) > 0
          @data.push($data_items[i])
        end
      end
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0
          @data.push($data_weapons[i])
        end
      end
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0
          @data.push($data_armors[i])
        end
      end
    else
      for i in 1...$data_items.size
        if $game_party.deposit_item_number(i) > 0
          @data.push($data_items[i])
        end
      end
      for i in 1...$data_weapons.size
        if $game_party.deposit_weapon_number(i) > 0
          @data.push($data_weapons[i])
        end
      end
      for i in 1...$data_armors.size
        if $game_party.deposit_armor_number(i) > 0
          @data.push($data_armors[i])
        end
      end

    end
    # 항목수가 0 나오지 않으면 비트 맵을 작성해 , 전 항목을 묘화
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i, type)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 항목의 묘화
  #     index : 항목 번호
  #     type  : 형식
  #--------------------------------------------------------------------------
  def draw_item(index, type)
    item = @data[index]
    case item
    when RPG::Item
      number = type == 0 ? $game_party.item_number(item.id) :
        $game_party.deposit_item_number(item.id)
    when RPG::Weapon
      number = type == 0 ? $game_party.weapon_number(item.id) :
        $game_party.deposit_weapon_number(item.id)
    when RPG::Armor
      number = type == 0 ? $game_party.armor_number(item.id) :
        $game_party.deposit_armor_number(item.id)
    end
    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))
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # ● 헬프 텍스트 갱신
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Window_DepositoryNumber
#------------------------------------------------------------------------------
#  보관소로 사용하는 , 수치 입력용의 윈도우입니다.
#==============================================================================

class Window_DepositoryNumber < Window_Base
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  def initialize
    @digits_max, @number = 2, 0
    # 숫자의 폭으로부터 커서의 폭을 계산 (0~9 는 등폭과 가정)
    dummy_bitmap = Bitmap.new(32, 32)
    @cursor_width = dummy_bitmap.text_size("0").width + 8
    dummy_bitmap.dispose
    @default_size = @cursor_width * @digits_max + 32
    super(0, 0, @default_size, 128)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.z = 1000
    self.back_opacity = 160
    self.active = false
    self.visible = false
    @index = 0
    @item = nil
    refresh
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # ● 아이템의 설정
  #     item : 아이템
  #--------------------------------------------------------------------------
  def item=(item)
    @item = item
  end
  #--------------------------------------------------------------------------
  # ● 수치의 취득
  #--------------------------------------------------------------------------
  def number
    return @number
  end
  #--------------------------------------------------------------------------
  # ● 수치의 설정
  #     number : 새로운 수치
  #--------------------------------------------------------------------------
  def number=(number)
    @number = [[number, 0].max, @max].min
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 커서의 구형 갱신
  #--------------------------------------------------------------------------
  def update_cursor_rect
    self.cursor_rect.set(@index * @cursor_width, 32, @cursor_width, 32)
  end
  #--------------------------------------------------------------------------
  # ● 리셋트
  #--------------------------------------------------------------------------
  def reset(type)
    @number = 0
    @index = @digits_max - 1
    if type == 0
      case @item
      when RPG::Item
        @max = $game_party.item_number(@item.id)
        dep = $game_party.deposit_item_number(@item.id)
      when RPG::Weapon
        @max = $game_party.weapon_number(@item.id)
        dep = $game_party.deposit_weapon_number(@item.id)
      when RPG::Armor
        @max = $game_party.armor_number(@item.id)
        dep = $game_party.deposit_armor_number(@item.id)
      end
      # 맡기고 있는 개수를 묘화
      self.contents.fill_rect(0, 64, width - 32, 32, Color.new(0, 0, 0, 0))
      self.contents.font.color = system_color
      self.contents.draw_text(0, 64, width - 32, 32, "맡기고 있는 수:#{dep}")
    else
      case @item
      when RPG::Item
        @max = [$game_party.deposit_item_number(@item.id),
          10 ** @digits_max - $game_party.item_number(@item.id) - 1].min
        having = $game_party.item_number(@item.id)
      when RPG::Weapon
        @max = [$game_party.deposit_weapon_number(@item.id),
          10 ** @digits_max - $game_party.weapon_number(@item.id) - 1].min
        having = $game_party.weapon_number(@item.id)
      when RPG::Armor
        @max = [$game_party.deposit_armor_number(@item.id),
          10 ** @digits_max - $game_party.armor_number(@item.id) - 1].min
        having = $game_party.armor_number(@item.id)
      end
      # 소지수를 묘화
      self.contents.fill_rect(0, 64, width - 32, 32, Color.new(0, 0, 0, 0))
      self.contents.font.color = system_color
      self.contents.draw_text(0, 64, width - 32, 32, "소지수:#{having}")
    end
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #--------------------------------------------------------------------------
  def refresh
    self.contents.fill_rect(0, 32, width - 32, 32, Color.new(0, 0, 0, 0))
    self.contents.font.color = normal_color
    s = sprintf("%0*d", @digits_max, @number)
    for i in 0...@digits_max
      self.contents.draw_text(i * @cursor_width + 4, 32, 32, 32, s[i,1])
    end
  end
  #--------------------------------------------------------------------------
  # ● 캐릭터 라인 설정
  #     string : 설정 캐릭터 라인
  #--------------------------------------------------------------------------
  def set_text(string = " ")
    self.resize(self.contents.text_size(string).width + 40)
    self.contents.fill_rect(0, 0, width - 32, 32, Color.new(0, 0, 0, 0))
    self.contents.font.color = normal_color
    self.contents.draw_text(0, 0, width - 32, 32, string, 1)
    refresh
    centering
  end
  #--------------------------------------------------------------------------
  # ● 사이즈 변경
  #     nw : 새로운 폭
  #--------------------------------------------------------------------------
  def resize(nw)
    self.width = nw
    buf = self.contents.dup
    self.contents.dispose
    self.contents = Bitmap.new(nw - 32, 96)
    self.contents.blt(0, 0, buf, buf.rect)
    buf.dispose
  end
  #--------------------------------------------------------------------------
  # ● 중앙 이동
  #--------------------------------------------------------------------------
  def centering
    self.x = 320 - self.width / 2
    self.y = 240 - self.height / 2
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    super
    return unless self.active
    # 방향 버튼 위나 아래가 밀렸을 경우
    if Input.repeat?(Input::UP) || Input.repeat?(Input::DOWN)
      $game_system.se_play($data_system.cursor_se)
      # 현재의 위의 숫자를 취득해 , 일단 0 으로 하는
      place = 10 ** (@digits_max - 1 - @index)
      n = self.number / place % 10
      self.number -= n * place
      # 위라면 +1, 아래라면 -1
      n = (n + 1) % 10 if Input.repeat?(Input::UP)
      n = (n + 9) % 10 if Input.repeat?(Input::DOWN)
      # 현재의 위의 숫자를 재설정
      self.number += n * place
      refresh
    end
    # 커서 오른쪽
    if Input.repeat?(Input::RIGHT)
      if @digits_max >= 2
        $game_system.se_play($data_system.cursor_se)
        @index = (@index + 1) % @digits_max
      end
    end
    # 커서왼쪽
    if Input.repeat?(Input::LEFT)
      if @digits_max >= 2
        $game_system.se_play($data_system.cursor_se)
        @index = (@index + @digits_max - 1) % @digits_max
      end
    end
    update_cursor_rect
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Depository
#------------------------------------------------------------------------------
#  보관소 화면의 처리를 실시하는 클래스입니다.
#==============================================================================

class Scene_Depository
  #--------------------------------------------------------------------------
  # ● 메인 처리
  #--------------------------------------------------------------------------
  def main
    # 스프라이트 세트 작성
    @spriteset = Spriteset_Map.new
    # 각종 윈도우를 작성
    if $imported["HelpExtension"]
      @dummy_window = Window_Base.new(0, 192, 640, 288)
      @help_window = Window_HelpExtension.new
    else
      @dummy_window = Window_Base.new(0, 128, 640, 352)
      @help_window = Window_Help.new
    end
    @dummy_window.back_opacity = 160
    @help_window.back_opacity = 160
    @command_window = Window_DepositoryCommand.new
    @gold_window = Window_DepositoryGold.new
    @item_window = Window_DepositoryItem.new
    @number_window = Window_DepositoryNumber.new
    # 헬프 윈도우를 관련짓고
    @command_window.help_window = @help_window
    @item_window.help_window = @help_window
    # 트란지션 실행
    Graphics.transition
    # 메인 루프
    loop do
      # 게임 화면을 갱신
      Graphics.update
      # 입력 정보를 갱신
      Input.update
      # 프레임 갱신
      update
      # 화면이 바뀌면(자) 루프를 중단
      if $scene != self
        break
      end
    end
    # 트란지션 준비
    Graphics.freeze
    # 해방
    @spriteset.dispose
    @dummy_window.dispose
    @help_window.dispose
    @command_window.dispose
    @gold_window.dispose
    @item_window.dispose
    @number_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    # 윈도우를 갱신
    @dummy_window.update
    @help_window.update
    @command_window.update
    @gold_window.update
    @item_window.update
    @number_window.update
    # 커멘드 윈도우가 액티브의 경우: update_command 를 부르는
    if @command_window.active
      update_command
      return
    end
    # 골드 윈도우가 액티브의 경우: update_gold 를 부르는
    if @gold_window.active
      update_gold
      return
    end
    # 아이템 윈도우가 액티브의 경우: update_item 를 부르는
    if @item_window.active
      update_item
      return
    end
    # 개수 윈도우가 액티브의 경우: update_number 를 부르는
    if @number_window.active
      update_number
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신 (커멘드 윈도우가 액티브의 경우)
  #--------------------------------------------------------------------------
  def update_command
    # B 버튼이 밀렸을 경우
    if Input.trigger?(Input::B)
      # 캔슬 SE 을 연주
      $game_system.se_play($data_system.cancel_se)
      # 맵 화면으로 전환하고
      $scene = Scene_Map.new
      return
    end
    # C 버튼이 밀렸을 경우
    if Input.trigger?(Input::C)
      # 결정 SE 을 연주
      $game_system.se_play($data_system.decision_se)
      # 커서 위치에서 분기
      case @command_window.index
      when 0
        # 골드 윈도우로 전환하고
        @gold_window.active = true
        @gold_window.visible = true
        @gold_window.reset(0)
        @help_window.set_text(KGC::DEPOSIT_GOLD)
      when 1
        # 골드 윈도우로 전환하고
        @gold_window.active = true
        @gold_window.visible = true
        @gold_window.reset(1)
        @help_window.set_text(KGC::WDEPOSIT_GOLD)
      when 2
        # 아이템 윈도우로 전환하고
        @item_window.active = true
        @item_window.visible = true
        @item_window.refresh(0)
      when 3
        # 아이템 윈도우로 전환하고
        @item_window.active = true
        @item_window.visible = true
        @item_window.refresh(1)
      end
      @command_window.active = false
      # 더미 윈도우 소거
      @dummy_window.visible = false
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신 (골드 윈도우가 액티브의 경우)
  #--------------------------------------------------------------------------
  def update_gold
    # B 버튼이 밀렸을 경우
    if Input.trigger?(Input::B)
      # 캔슬 SE 을 연주
      $game_system.se_play($data_system.cancel_se)
      # 커멘드 윈도우로 전환하고
      @command_window.active = true
      @gold_window.active = false
      @gold_window.visible = false
      @dummy_window.visible = true
      return
    end
    # C 버튼이 밀렸을 경우
    if Input.trigger?(Input::C)
      # 입력한 금액을 취득
      price = @gold_window.price
      # 금액이 0 의 경우
      if price == 0
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 커멘드 윈도우로 전환하고
        @command_window.active = true
        @gold_window.active = false
        @gold_window.visible = false
        @dummy_window.visible = true
        return
      end
      # 숍 SE 을 연주
      $game_system.se_play($data_system.shop_se)
      # 커서 위치에서 분기
      case @command_window.index
      when 0  # 맡기는
        $game_party.lose_gold(price)
        $game_party.gain_deposit_gold(price)
      when 1  # 꺼내는
        $game_party.gain_gold(price)
        $game_party.lose_deposit_gold(price)
      end
      # 골드 윈도우를 리셋트
      @gold_window.reset(@command_window.index)
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신 (아이템 윈도우가 액티브의 경우)
  #--------------------------------------------------------------------------
  def update_item
    # B 버튼이 밀렸을 경우
    if Input.trigger?(Input::B)
      # 캔슬 SE 을 연주
      $game_system.se_play($data_system.cancel_se)
      # 커멘드 윈도우로 전환하고
      @command_window.active = true
      @item_window.active = false
      @item_window.visible = false
      @dummy_window.visible = true
      return
    end
    # C 버튼이 밀렸을 경우
    if Input.trigger?(Input::C)
      # 선택 아이템을 취득
      @item = @item_window.item
      # 공난의 경우
      if @item == nil
        # 버저 SE 를 연주
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 개수 윈도우의 아이템을 설정
      @number_window.item = @item
      # 결정 SE 을 연주
      $game_system.se_play($data_system.decision_se)
      # 커서 위치에서 분기
      case @command_window.index
      when 2  # 맡기는
        @number_window.set_text(KGC::DEPOSIT_ITEM)
      when 3  # 꺼내는
        @number_window.set_text(KGC::WDEPOSIT_ITEM)
      end
      # 개수 윈도우를 리셋트
      @number_window.reset(@command_window.index - 2)
      # 개수 윈도우로 전환하고
      @item_window.active = false
      @number_window.active = true
      @number_window.visible = true
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신 (개수 윈도우가 액티브의 경우)
  #--------------------------------------------------------------------------
  def update_number
    # B 버튼이 밀렸을 경우
    if Input.trigger?(Input::B)
      # 캔슬 SE 을 연주
      $game_system.se_play($data_system.cancel_se)
      # 아이템 윈도우로 전환하고
      @item_window.active = true
      @number_window.active = false
      @number_window.visible = false
      return
    end
    # C 버튼이 밀렸을 경우
    if Input.trigger?(Input::C)
      # 결정 SE 을 연주
      $game_system.se_play($data_system.decision_se)
      number = @number_window.number
      # 커서 위치에서 분기
      case @command_window.index
      when 2  # 맡기는
        case @item
        when RPG::Item
          $game_party.lose_item(@item.id, number)
          $game_party.gain_deposit_item(@item.id, number)
        when RPG::Weapon
          $game_party.lose_weapon(@item.id, number)
          $game_party.gain_deposit_weapon(@item.id, number)
        when RPG::Armor
          $game_party.lose_armor(@item.id, number)
          $game_party.gain_deposit_armor(@item.id, number)
        end
      when 3  # 꺼내는
        case @item
        when RPG::Item
          $game_party.gain_item(@item.id, number)
          $game_party.lose_deposit_item(@item.id, number)
        when RPG::Weapon
          $game_party.gain_weapon(@item.id, number)
          $game_party.lose_deposit_weapon(@item.id, number)
        when RPG::Armor
          $game_party.gain_armor(@item.id, number)
          $game_party.lose_deposit_armor(@item.id, number)
        end
      end
      # 아이템 윈도우를 리프레쉬
      @item_window.refresh(@command_window.index - 2)
      # 아이템 윈도우로 전환하고
      @item_window.active = true
      @number_window.active = false
      @number_window.visible = false
      return
    end
  end
end

  • ?
    RPG대가 2005.12.13 23:49
    여쭤볼것이... 일본에서 건너온건가요?
  • ?
    쩌우2 2005.12.30 17:45
    저기요 다 읽다가는 머리가 ...
  • ?
    공솔 2006.01.18 09:56
    KGC 마스터 스크립트 가 없으면 실행이 안됩니다. 무조건 오류납니다.
  • ?
    qlqjemf11 2007.06.19 19:12
    아이템 맡길때 갯수가 늘어나는 버그있다..
  • ?
    김세훈 2008.02.19 16:08
    이거 어디에다가 집어넣어야 하나요?
    또한 아이템 보관소는 어디에??
  • ?
    김세훈 2008.03.08 10:20
    저 KGC 마스터 스크립트는 어디서 구해야 하나요?
  • profile
    은하계 2010.09.25 00:08

    KGC마스터스크립트 없어도 정상실행됩니다~

  • ?
    오호홋 2011.02.12 13:30
    와~감사해요
  • ?
    레시라무 2011.05.25 21:34
    와 감사합니다.
  • ?
    레시라무 2011.05.25 21:35
    굿

List of Articles
분류 제목 글쓴이 날짜 조회 수 추천 수
긴급상황 발생시 연락처 안내 독도2005 2012.11.28 2811 0
니오팅 이용 규칙 (2013.01.05 3차 개정) 7 file 소녀쿤 2012.01.15 16562 0
여러분의 의견을 받습니다. 20 file 니오팅 2010.01.29 4830 2
공지사항 일본어 스크립트를 번역하기 좋은 번역사이트 두곳입니다 ruby 2010.01.09 21568 0
공지사항 스크립트 게시판 관리자' ruby ' 입니다 ruby 2010.01.09 20536 0
공지사항 일본 스크립트/소스 공유 포럼 4 니오티 2010.01.05 21985 0
기타 게이지바 스크립트!! 최고!! 12 file 코아 코스튬 2011.08.08 3851 0
기타 이름입력 스크립트 2 닉네임이없습니다 2011.07.16 2126 0
기타 중복일것 같은데;; [한글 이름 입력] 1 꼬마쟁이 2011.01.05 4433 0
기타 상태창표시 스크립투 Ver 6.0 4 file 코아 코스튬 2010.09.21 2341 2
기타 3d 스크립트 (적용시 바로 실행가능&암호걸림) 15 file kjs 2010.06.04 3712 0
기타 Staff Roll 4 file 허걱 2010.03.04 2137 0
기타 게임 화면에 좌표 띄우기 5 file windshy 2010.01.25 1703 1
기타 디버깅 화면 재 구성 1 루시아스 2010.01.05 1738 0
기타 일어 스크립트 한글화 방법 안내 3 니오티 2007.02.01 2501 4
기타 어떤님이 부탁하신 온라인 같은 hud입니다 16 file 루비 2007.10.19 2554 2
기타 더욱더 간편하게! 에메스엔의 귀차니즘 탈출! 4 샤이닉 2007.02.20 2325 2
기타 몬스터 도감 6 니오티 2007.02.01 2821 3
기타 돈맡기기 시스템 8 히카루 2007.01.31 2918 2
기타 한글입력기 16 file 히카루 2007.01.31 3417 1
기타 레벨과 능력치 9999까지 만들기 5 windshy 2007.01.31 2118 0
기타 아이템 보관소 스크립트 (KGC펌) 10 file ケロロ 님의 ツク-ル 2005.12.11 2641 5
Board Pagination Prev 1 Next
/ 1

Copyright ⓒ Nioting All Rights Reserved. (since 1999)   개인정보취급방침