XP 스크립트

http://www.dubealex.com/asylum/index.php?showtopic=4702
  문자 그대로 링 메뉴의 명령항목과 아이콘등을 비교적 쉽게 바꿀 수 있도록 하는 것입니다.  링 메뉴 전체가 아니라 class Window_RingMenu부분만 수정한 것입니다.


#==============================================================================
# Window_RingMenu
#-----------------------------------------------------------------
#  Created By SephirothSpawn (10.29.05)
#    Last Updated: (11.11.05)
#==============================================================================

#==============================================================================
# Class Window Ring Menu
#==============================================================================
class Window_RingMenu < Window_Base
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :index
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(commands, icons, radius = 64, center_x = nil, center_y = nil, width = 640, height = 480)
    # Sets Up Window
    super(0, 0, width, height)
    # Sets Center Coordinates to player Center by Default
    center_x = $game_player.screen_x - 30 if center_x == nil
    center_y = $game_player.screen_y - 48 if center_y == nil
    self.contents = Bitmap.new(width-32, height-32)
    # Select Font Type, Size and Color
    self.contents.font.name = "Arial"
    self.contents.font.size = 22
    self.contents.font.color = Color.new(255, 255, 255, 255)
    # Sets up Window Border and Window Background Opacity
    self.opacity, self.back_opacity = 0, 0
    # Sets Up Commands & Icons
    @commands = commands
    @item_max = commands.size
    @index = 0
    @items = icons
    # Sets Up Radius
    @radius = radius
    # Sets Up Disabled Items
    @disabled = Array.new(@item_max, false)
    # Sets Up Center of Ring
    @cx = center_x
    @cy = center_y
    # Disabled Icon
    @icon_disable = RPG::Cache.icon("")
    # Frame Setup
    @startup_frames = 20
    @moving_frames = 5
    setup_move_start
    refresh
  end
  #--------------------------------------------------------------------------
  # * Setup Move Start
  #--------------------------------------------------------------------------
  def setup_move_start
    @mode = 1
    @steps = @startup_frames
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    case @mode
      when 1; refresh_start
      when 2; refresh_wait
      when 3; refresh_move(1)
      when 4; refresh_move(0)
    end
    rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
    self.contents.draw_text(rect, @commands[@index], 1)
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    super
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh Start
  #--------------------------------------------------------------------------
  def refresh_start
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / @startup_frames
    r = @radius - 1.0 * @radius * @steps / @startup_frames
    for i in 0...@item_max
      j = i - @index + 1
      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 = 2
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh Wait
  #--------------------------------------------------------------------------
  def refresh_wait
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @index + 1
      x = @cx + ( @radius * Math.sin( d * j ) ).to_i
      y = @cy - ( @radius * Math.cos( d * j ) ).to_i
      draw_item(x, y, i)
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh Move
  #--------------------------------------------------------------------------
  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 + 1
      d = d1 * j + d2 * @steps
      x = @cx + ( @radius * Math.sin( d ) ).to_i
      y = @cy - ( @radius * Math.cos( d ) ).to_i
      draw_item(x, y, i)
    end
    @steps -= 1
    if @steps < 1
      @mode = 2
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(x, y, i)
    rect = Rect.new(0, 0, @items[i].width, @items[i].height)
    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
  #--------------------------------------------------------------------------
  # * Disable Item
  #--------------------------------------------------------------------------
  def disable_item(index)
    @disabled[index] = true
  end
  #--------------------------------------------------------------------------
  # * Setup Move Move
  #--------------------------------------------------------------------------
  def setup_move_move(mode)
    if mode == 3
      @index -= 1
      @index = @items.size - 1 if @index < 0
    elsif mode == 4
      @index += 1
      @index = 0 if @index >= @items.size
    else
      return
    end
    @mode = mode
    @steps = @moving_frames
  end
  #--------------------------------------------------------------------------
  # * Animation
  #--------------------------------------------------------------------------
  def animation?
    return @mode != 2
  end
end


Scene_Menu에서 호출할 때:
blah = Window_RingMenu.new(commands, icons, radius, center_x, center_y, width, height)

호출 예제:
    # Window Commands
    commands = [ "Item", "Skill", "Equip", "Status", "Save", "Quit" ]
    # Window Icons
    icons = [ RPG::Cache.icon("034-Item03"), RPG::Cache.icon("044-Skill01"),
                  RPG::Cache.icon("001-Weapon01"), RPG::Cache.icon("050-Skill07"),
                  RPG::Cache.icon("038-Item07"), RPG::Cache.icon("046-Skill03")]
    @command_window = Window_RingMenu.new(commands, icons,128)

Who's 백호

?

이상혁입니다.

http://elab.kr


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6188
88 메뉴 화살표 모양 셀렉트 커서 사용 2 백호 2009.02.22 2118
87 메뉴 혹시있나해서-_-.. 대화창에 테두리치기 스크립트 7 백호 2009.02.22 2595
86 메뉴 플레이 시간 윈도우 개조 file 백호 2009.02.21 1331
85 메뉴 파이널 판타지 7 스타일 메뉴 7 아방스 2009.01.12 3238
84 메뉴 콤보 스크립트 백호 2009.02.22 1399
83 메뉴 제가추천하는 메뉴스크립트 11 file 백호 2009.02.22 5299
82 메뉴 제가 쓰는 메뉴 14 file 백호 2009.02.21 2319
81 메뉴 제가 쓰고있는 메뉴 13 file 백호 2009.02.21 3030
80 메뉴 자작 커스텀 메뉴(데모 첨부) 3 백호 2009.02.22 2348
79 메뉴 자작 메뉴 스크립트들(L's Simple CMS and menu scenes) (SDK 호환?) 10 Alkaid 2010.09.02 3459
78 메뉴 자세항 개인 상태화면 8 아방스 2009.01.12 2361
77 메뉴 자세한 캐릭터 정보표시 스크립트 버전2 5 아방스 2009.01.12 2329
76 메뉴 온라인메뉴처럼!! 메이플 메뉴처럼!! 변신~스크립트 33 WMN 2008.03.17 6823
75 메뉴 스테이터스 화면에 넥스트 표시 1 file 백호 2009.02.21 1759
74 메뉴 스테이터스 화면 from Harts Horn 2 백호 2009.02.22 1571
73 메뉴 스테이터스 일람 스크립트 file 백호 2009.02.21 1330
72 메뉴 스탯올리기 시스템 (액알가능) 27 file 백호 2009.02.22 3406
71 메뉴 수정, 추가 링메뉴 10 file 백호 2009.02.22 2913
70 메뉴 새로운 메뉴 시스템 을 한글화 및 약간 개조 3 file 백호 2009.02.21 2203
69 메뉴 새로운 메뉴 15 file 또라에몽 2010.07.17 5306
Board Pagination Prev 1 2 3 4 5 Next
/ 5