XP 스크립트

# ▼▲▼ XRXS_MP 6. 링 메뉴 도입 ver.1.2 ▼▲▼
# by 가즈키

#==============================================================================
# □ 커스터마이즈 포인트
#==============================================================================
class Window_RingMenu < Window_Base
  STARTUP_FRAMES =  20 # 초기 애니메이션의 프레임수
  MOVING_FRAMES  =   5 # 링을 돌렸을 때의 프레임수
  RING_R         =  64 # 링의 반경
  SE_STARTUP  = "056-Right02" # 메뉴를 열었을 때에 울리는SE
  ICON_ITEM   = RPG::Cache.icon("아이템")   # 「 아이템 」메뉴의 아이콘
  ICON_SKILL  = RPG::Cache.icon("스킬")  # 「스킬 」메뉴의 아이콘
  ICON_EQUIP  = RPG::Cache.icon("목도") # 「  장비  」메뉴의 아이콘
  ICON_STATUS = RPG::Cache.icon("스테이터스")  # 「스테이터스」메뉴의 아이콘
  ICON_SAVE   = RPG::Cache.icon("세이브")   # 「세이브 」메뉴의 아이콘
  ICON_EXIT   = RPG::Cache.icon("046-Skill03")  # 「  종료  」메뉴의 아이콘
  ICON_DISABLE= RPG::Cache.icon("")             # 사용 금지 항목을 뒤따르는 아이콘
  BACKGROUND_COLOR = Color.new(0xcc,0x99,0x33,0x3f)
end
###############################################################################
# 링 메뉴 도입 스크립트 Ver. 1.2
#                 writen by 가즈키
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# ▽도입
#   0. 먼저 XRXL 2. 비트 맵/아이콘 묘사 를 넣어 두어 주세요.
#   1. 이 스크립트를Main섹션 위에 만든 새로운 섹션에 카피하는
#   2. Window_RingMenu의 상부에 있는 7개의 것 RPG::Cache.icon("") 의 "" 의 안에
#       오른쪽의 설명에 써 있는 커멘드용의 아이콘명을 쓴다.
#       (맨 밑의 사용 금지는 선택할 수 없는 메뉴에 거듭하는 아이콘입니다.
#        이런 건이 좋을지도→ φ )
#   3. 아이콘 설정의 바로 아래에 있는 SE_STARTUP = "" 것 "" 의 안에 메뉴를
#       열었을 때에 울리고 싶은 것SE의 이름을 쓴다.
# ▽스크립트 접하는 사람에게
#   우선 움직이는 것을 목표로 만든 것이므로(뜻 낮은 w ), 좌표의 조정등이 불완전합니다.
#   보다 정확하게 엑터의 화면 좌표를 취득하는 처리를 추가하거나 엑터 일람의 위치를
#   바꾸거나 문자 표시등 등을 조정하면 좋은 느낌으로 완성될 생각이 듭니다.
###############################################################################

#==============================================================================
# ■ Window_RingMenu
#==============================================================================
class Window_RingMenu < Window_Base
  #--------------------------------------------------------------------------
  # ○ 클래스 정수
  #--------------------------------------------------------------------------
  MODE_START = 1 # 스타트 업 애니메이션
  MODE_WAIT  = 2 # 대기
  MODE_MOVER = 3 # 시계회전 회전 애니메이션
  MODE_MOVEL = 4 # 반 시계회전 회전 애니메이션
  #--------------------------------------------------------------------------
  # ○ 악 세사
  #--------------------------------------------------------------------------
  attr_accessor :index
  attr_reader :commands
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  def initialize( center_x, center_y )
    super(-16, -16, 640+32, 480+32)
    self.contents = Bitmap.new(width-32, height-32)
    self.opacity = 0
    self.back_opacity = 0
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "스테이터스"
    s5 = "세이브"
    s6 = "게임 종료"
    @commands = [ s1, s2, s3, s4, s5, s6 ]
    @item_max = 6
    @index = 0
    @items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_SAVE, ICON_EXIT ]
    @disabled = [ false, false, false, false, false, false ]
    @cx = center_x
    @cy = center_y
    setup_move_start
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    super
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 화면재 묘화
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # 배경 묘화
    if BACKGROUND_COLOR.alpha > 0
      self.contents.fill_rect(0,0,640,480,BACKGROUND_COLOR)
    end
    # 아이콘을 묘화
    case @mode
    when MODE_START
      refresh_start
    when MODE_WAIT
      refresh_wait
    when MODE_MOVER
      refresh_move(1)
    when MODE_MOVEL
      refresh_move(0)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 화면재 묘화(초기화시)
  #--------------------------------------------------------------------------
  def refresh_start
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / STARTUP_FRAMES
    r = RING_R - 1.0 * RING_R * @steps / STARTUP_FRAMES
    for i in 0...@item_max
      j = i - @index
      d = d1 * j + d2 * @steps
      x = @cx + ( r * Math.sin( d ) ).to_i
      y = @cy - ( r * Math.cos( d ) ).to_i
      draw_item(x, y, i)
    end
    @steps -= 1
    if @steps < 1
      @mode = MODE_WAIT
    end
  end
  #--------------------------------------------------------------------------
  # ○ 화면재 묘화(대기시)
  #--------------------------------------------------------------------------
  def refresh_wait
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @index
      x = @cx + ( RING_R * Math.sin( d * j ) ).to_i
      y = @cy - ( RING_R * Math.cos( d * j ) ).to_i
      draw_item(x, y, i)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 화면재 묘화(회전시)
  #  mode : 0=반 시계회전 1=시계회전
  #--------------------------------------------------------------------------
  def refresh_move( mode )
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / MOVING_FRAMES
    d2 *= -1 if mode != 0
    for i in 0...@item_max
      j = i - @index
      d = d1 * j + d2 * @steps
      x = @cx + ( RING_R * Math.sin( d ) ).to_i
      y = @cy - ( RING_R * Math.cos( d ) ).to_i
      draw_item(x, y, i)
    end
    @steps -= 1
    if @steps < 1
      @mode = MODE_WAIT
    end
  end
  #--------------------------------------------------------------------------
  # ● 항목의 묘화
  #     x :
  #     y :
  #     i : 항목 번호
  #--------------------------------------------------------------------------
  def draw_item(x, y, i)
    rect = Rect.new(0, 0, @items[i].width, @items[i].height)
    x -= rect.width/2
    y -= rect.height/2
    if @index == i
      self.contents.blt( x, y, @items[i], rect )
      if @disabled[@index]
        self.contents.blt( x, y, ICON_DISABLE, rect )
      end
    else
      self.contents.blt( x, y, @items[i], rect, 128 )
      if @disabled[@index]
        self.contents.blt( x, y, ICON_DISABLE, rect, 128 )
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 항목을 무효로 하는
  #     index : 항목 번호
  #--------------------------------------------------------------------------
  def disable_item(index)
    @disabled[index] = true
  end
  #--------------------------------------------------------------------------
  # ○ 초기화 애니메이션의 준비
  #--------------------------------------------------------------------------
  def setup_move_start
    @mode = MODE_START
    @steps = STARTUP_FRAMES
    if  SE_STARTUP != nil and SE_STARTUP != ""
      Audio.se_play("Audio/SE/" + SE_STARTUP, 80, 100)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 회전 애니메이션의 준비
  #--------------------------------------------------------------------------
  def setup_move_move(mode)
    if mode == MODE_MOVER
      @index -= 1
      @index = @items.size - 1 if @index < 0
    elsif mode == MODE_MOVEL
      @index += 1
      @index = 0 if @index >= @items.size
    else
      return
    end
    @mode = mode
    @steps = MOVING_FRAMES
  end
  #--------------------------------------------------------------------------
  # ○ 애니메이션중인지 어떤지
  #--------------------------------------------------------------------------
  def animation?
    return @mode != MODE_WAIT
  end
end
#==============================================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------------
#  메뉴 화면에서 파티 멤버의 스테이터스를 표시하는 윈도우입니다.
#==============================================================================

class Window_RingMenuStatus < Window_Selectable
  attr_reader :max_index
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  def initialize
    @max_index = $game_party.actors.size - 1
    h = 32 * (@max_index + 1) + 32
    h = 416 if h > 416
    x = 0
    x = 456 if $game_player.screen_x < 200 + Window_RingMenu::RING_R
    super(x, 64, 184, h)
    self.contents = Bitmap.new(width - 32, $game_party.actors.size * 32)
    refresh
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      x = 32
      y = 32 * i
      actor = $game_party.actors[i]
      self.contents.draw_facesquare(actor.character_name, actor.character_hue,
                                    4, y + 4 )
      draw_actor_name(actor, x, y)
    end
  end
end
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
#  메뉴 화면의 처리를 실시하는 클래스입니다.
#==============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #     menu_index : 커멘드의 커서 초기 위치
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # ● 메인 처리
  #--------------------------------------------------------------------------
  def main
    # 스프라이트 세트를 작성
    @spriteset = Spriteset_Map.new
    # 커멘드 윈도우를 작성
    bmp = RPG::Cache.character($game_party.actors[0].character_name, 0)
    px = $game_player.screen_x
    py = $game_player.screen_y - bmp.rect.height / 4 / 2
    @command_window = Window_RingMenu.new(px,py)
    @command_window.index = @menu_index
    # 파티 인원수가 0 사람의 경우
    if $game_party.actors.size == 0
      # 아이템 , 스킬 , 장비 , 스테이터스를 무효화
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    @command_window.z = 100
    # 세이브 금지의 경우
    if $game_system.save_disabled
      # 세이브를 무효로 하는
      @command_window.disable_item(4)
    end
    # 스테이터스 윈도우를 작성
    @status_window = Window_RingMenuStatus.new
    @status_window.z = 200
    @status_window.visible = false
    # 헬프 윈도우를 작성
    @help_window = Window_Help.new
    @help_window.set_text(@command_window.commands[@command_window.index],1)
    # 트란지션 실행
    Graphics.transition
    # 메인 루프
    loop do
      # 게임 화면을 갱신
      Graphics.update
      # 입력 정보를 갱신
      Input.update
      # 프레임 갱신
      update
      # 화면이 바뀌면(자) 루프를 중단
      if $scene != self
        break
      end
    end
    # 트란지션 준비
    Graphics.freeze
    # 스프라이트 세트를 해방
    @spriteset.dispose
    # 윈도우를 해방
    @command_window.dispose
    @status_window.dispose
    @help_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    # 윈도우를 갱신
    @command_window.update
    @status_window.update
    @help_window.update
    # 커멘드 윈도우가 액티브의 경우: update_command 를 부르는
    if @command_window.active
      update_command
      return
    end
    # 스테이터스 윈도우가 액티브의 경우: update_status 를 부르는
    if @status_window.active
      update_status
      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)
      # 파티 인원수가 0 사람으로 , 세이브 , 게임 종료 이외의 커멘드의 경우
      if $game_party.actors.size == 0 and @command_window.index < 4
        # 버저 SE 를 연주
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 커멘드 윈도우의 커서 위치에서 분기
      case @command_window.index
      when 0  # 아이템
        # 결정  SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 아이템 화면으로 전환하고
        $scene = Scene_Item.new
      when 1  # 스킬
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 하는
        @command_window.active = false
        @status_window.active = true
        @status_window.visible = true
        @status_window.index = 0
      when 2  # 장비
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 하는
        @command_window.active = false
        @status_window.active = true
        @status_window.visible = true
        @status_window.index = 0
      when 3  # 스테이터스
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 하는
        @command_window.active = false
        @status_window.active = true
        @status_window.visible = true
        @status_window.index = 0
      when 4  # 세이브
        # 세이브 금지의 경우
        if $game_system.save_disabled
          # 버저 SE 를 연주
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 세이브 화면으로 전환하고
        $scene = Scene_Save.new
      when 5  # 게임 종료
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 게임 종료 화면으로 전환하고
        $scene = Scene_End.new
      end
      return
    end
    # 애니메이션중이라면 커서의 처리를 실시하지 않는
    return if @command_window.animation?
    # ↑or← 버튼이 밀렸을 경우
    if Input.press?(Input::UP) or  Input.press?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      @command_window.setup_move_move(Window_RingMenu::MODE_MOVEL)
      @help_window.set_text(@command_window.commands[@command_window.index],1)
      return
    end
    # ↓or→ 버튼이 밀렸을 경우
    if Input.press?(Input::DOWN) or  Input.press?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      @command_window.setup_move_move(Window_RingMenu::MODE_MOVER)
      @help_window.set_text(@command_window.commands[@command_window.index],1)
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신 (스테이터스 윈도우가 액티브의 경우)
  #--------------------------------------------------------------------------
  def update_status
    # B 버튼이 밀렸을 경우
    if Input.trigger?(Input::B)
      # 캔슬 SE 을 연주
      $game_system.se_play($data_system.cancel_se)
      # 커멘드 윈도우를 액티브하게 하는
      @command_window.active = true
      @status_window.active = false
      @status_window.visible = false
      @status_window.index = -1
      return
    end
    # C 버튼이 밀렸을 경우
    if Input.trigger?(Input::C)
      # 커멘드 윈도우의 커서 위치에서 분기
      case @command_window.index
      when 1  # 스킬
        # 이 엑터의 행동 제한이 2 이상의 경우
        if $game_party.actors[@status_window.index].restriction >= 2
          # 버저 SE 를 연주
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 스킬 화면으로 전환하고
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # 장비
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 장비 화면으로 전환하고
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # 스테이터스
        # 결정 SE 을 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 화면으로 전환하고
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end
#==============================================================================
# ◇ 외부 라이브러리
#==============================================================================
class Bitmap
# ▼▲▼ XRXL 1. 라인·도형 묘사 ▼▲▼
  #--------------------------------------------------------------------------
  # ● 라인 묘화 by 앵아 재흙
  #--------------------------------------------------------------------------
  def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
    # 묘사 거리의 계산. 큰에 직각시의 길이.
    distance = (start_x - end_x).abs + (start_y - end_y).abs
    # 묘사 개시
    if end_color == start_color
      for i in 1..distance
        x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
        y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
        if width == 1
          self.set_pixel(x, y, start_color)
        else
          self.fill_rect(x, y, width, width, start_color)
        end
      end
    else
      for i in 1..distance
        x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
        y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
        r = start_color.red   * (distance-i)/distance + end_color.red   * i/distance
        g = start_color.green * (distance-i)/distance + end_color.green * i/distance
        b = start_color.blue  * (distance-i)/distance + end_color.blue  * i/distance
        a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
        if width == 1
          self.set_pixel(x, y, Color.new(r, g, b, a))
        else
          self.fill_rect(x, y, width, width, Color.new(r, g, b, a))
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 다각형의 묘화(전부 칠해 없음) by 가즈키
  #    peaks    : 정점 좌표의 배열 [[x1,y1],[x2,y2],[x3,y3], ... ]
  #    color    : 선의 색
  #    width    : 선의 폭
  #--------------------------------------------------------------------------
  def draw_polygon(peaks, color, width = 1)
    # 변(=정점)의 개수분 만큼 옆을 그리는
    for i in 0 ... (peaks.size - 1)
      # 정점끼리를 선으로 묶는
      draw_line( peaks[i][0], peaks[i][1], peaks[i+1][0], peaks[i+1][1], color, width )
    end
    # 마지막 정점과 최초의 정점을 묶는
    draw_line( peaks[peaks.size - 1][0], peaks[peaks.size - 1][1], peaks[0][0], peaks[0][1], color, width )
  end
# ▼▲▼ XRXL 2. 비트 맵/아이콘 묘사 ▼▲▼
  #--------------------------------------------------------------------------
  # ● 안&범위의 묘화 by 앵아 재흙
  #     character_name : 묘사에 이용하는 캐릭터 그래픽
  #     character_hue  : 묘사의 색조
  #     x       : 묘화처 X 좌표
  #     y       : 묘화처 Y 좌표
  #--------------------------------------------------------------------------
  def draw_facesquare(character_name, character_hue, x, y, size = 24)
    bitmap = RPG::Cache.character(character_name, character_hue)
    src_rect = Rect.new((bitmap.width/4 - size)/2, 0, size, size)
    self.blt(x, y, bitmap, src_rect)
    self.draw_polygon([[x,y],[x+size,y],[x+size,y+size],[x,y+size]], Color.new(255,255,255,128))
  end
end
잘 쓰세요

Comment '9'
  • ?
    제로런치 2008.09.27 21:36
    =========  <- 이게 좀 길이가 너무 긴 모양입니다.... 다음 줄로 걸쳐지네요. 오류가 떠버립니다 =ㅁ=;

    스크립트들을 읽어보니 =이 초록색이 아닌 파란색으로 된게 많네요. 죄다 오류가 날 듯 싶습니다.
    ... 아니 지금 보니 = 말고도 - 이라든지... 오류 낼 소지가 있는 것들이 더 있군요.
  • ?
    21thcentuary 2008.09.29 21:18
    오...
  • ?
    케나이슬라이드 2008.11.19 14:12
    앞쪽줄에서 있는 아이콘으 이름들을 존재하는 것으로 바꿔야 됩니다
  • ?
    rpgxp배우미 2010.02.21 11:13

  • ?
    누군가 2010.05.12 20:33

    계속 업글이 되네...

  • ?
    축하합니다. 누군가님은 65포인... 2010.05.12 20:33
    축하합니다. 누군가님은 65포인트에 당첨되셨습니다
  • ?
    매운맛 2010.08.01 15:18

    잘쓰겠습니다

  • ?
    아비터 2011.01.30 15:15

    감사합니다! ㅎ.ㅎ

    잘쓰겠습니다~

  • ?
    한꼬꼬마 2011.03.01 16:17

    감사합니다~


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
1021 키입력 한글입력스크립트 16 file 아방스 2007.11.09 11823
1020 온라인 채팅 가능 온라인 스크립트 배포 107 file 아방스 2009.01.03 10680
1019 온라인 RPG 만들기 xp 온라인 스크립트 33 아방스 2007.11.09 9592
1018 맵/타일 [유니크급] RPG XP 게임을 3D화로 보자! Neo Mode7 script / 52 file 쉴더 2009.02.28 9440
1017 온라인 온라인 스크립트 Unis Net RMXP 공식 배포! 25 file 뮤바보 2011.12.25 9400
1016 온라인 광넷[ 광땡 온라인 + 넷플레이 ] 62 - 하늘 - 2009.08.02 9003
1015 전투 [액알]neo_a-rpg_module_1[1][1].2 스크립트 83 file 은빛바람 2009.10.03 8298
1014 이름입력 대화창에 얼굴, 이름 띄우기 37 킬라롯 2008.11.09 7496
1013 온라인 넷플레이1.7.0+abs5.5+한챗 49 쀍뛝쒧 2009.01.24 7286
1012 메뉴 메이플스토리처럼 메뉴를^^ 57 file 딸기님 2010.07.13 7139
1011 메시지 대화창에 얼굴 그래픽 띠우기 73 아방스 2007.11.09 7117
1010 스킬 ABP액알 v1.2 스킬추가, 버그수정판 36 file 백호 2009.02.22 6919
1009 전투 [신기술 체험] 강회된 횡스크롤 액알 13 file 백호 2009.02.22 6841
1008 메뉴 온라인메뉴처럼!! 메이플 메뉴처럼!! 변신~스크립트 33 WMN 2008.03.17 6815
1007 그래픽 화면을 부드럽게 해주는스크립트[ 아주 유용] 56 file - 하늘 - 2009.08.05 6561
1006 온라인 Mr.Metring NPE 1.0 [RPG XP 온라인 스크립트] 35 아방스 2009.01.07 6535
1005 이름입력 케릭터 위에 또는 NPC 위에 이름 뛰우기 [헬악이님 제공] 49 file 아방스 2007.11.09 6405
1004 액터 시트르산의 XP용 감정 말풍선 표시 스크립트 37 file 시트르산 2011.01.25 6110
1003 HUD 주인공,NPC이름 머리 나타내기 49 file 송긔 2010.11.28 6060
1002 전투 액알 스크립트 24 백호 2009.02.22 6013
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52