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 6153
88 메뉴 1-Scene CMS 1.03 by LegACy@rmxp.org (SDK호환) file 백호 2009.02.22 871
» 메뉴 Customizable Ring Menu by SephirothSpawn 백호 2009.02.22 884
86 메뉴 1-Scene CMS 1.1 by LegACy@rmxp.org (SDK호환) file 백호 2009.02.22 953
85 메뉴 Event Spawner 1 file 백호 2009.02.22 979
84 메뉴 SG_Artifact Colors by sandgolem (SDK 호환) 1 백호 2009.02.22 1003
83 메뉴 링메뉴+음악도입스크립트 백호 2009.02.21 1051
82 메뉴 SG_Hide zero SP cost by sandgolem (SDK호환) 백호 2009.02.22 1064
81 메뉴 FF7 Menu version 3 by AcedentProne (SDK 호환) file 백호 2009.02.22 1116
80 메뉴 메뉴에서 실제시간 보기 2 백호 2009.02.21 1124
79 메뉴 Materia System 2 file 백호 2009.02.22 1222
78 메뉴 CogWheel Plug'n'Play Menu Bar by DerVVulfman@rmxp.org 2 백호 2009.02.22 1222
77 메뉴 L's Simple Custom Menu #1 R2 (SDK 2.x 필요) Alkaid 2013.01.18 1227
76 메뉴 Advanced Command Windows by Tsunokiette file 백호 2009.02.22 1307
75 메뉴 플레이 시간 윈도우 개조 file 백호 2009.02.21 1328
74 메뉴 스테이터스 일람 스크립트 file 백호 2009.02.21 1328
73 메뉴 Ring menu edit for SDK2 (Original by Hypershadow180) file Alkaid 2010.09.08 1374
72 메뉴 링메뉴 스크립트 file 백호 2009.02.21 1391
71 메뉴 콤보 스크립트 백호 2009.02.22 1399
70 메뉴 링메뉴에 돈(G)표시하기 백호 2009.02.21 1415
69 메뉴 Leidy's Ring Command Window 1.2 by DerVVulfman Alkaid 2012.09.09 1430
Board Pagination Prev 1 2 3 4 5 Next
/ 5