RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Modified Ring Menu System

0 Members and 1 Guest are viewing this topic.

***
Rep:
Level 88
What a waste of paper...
This is a modified version of Dubealex's Ring Menu System:

Code: [Select]
#------------------------------------------------------------------------------
#  Ring_Menu
#------------------------------------------------------------------------------
#  By:  XRXS, Dubealex, and Hypershadow180
#------------------------------------------------------------------------------
class Scene_Menu
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize(menu_index = 0)
   @menu_index = menu_index
   $location_text=[]
   $gold_text=[]
   $window_size=[]
   $ring_menu_text=[]
   $chara_select=[]
   @window_opacity=[]
   @chara_select=[]
   @window_position=[]
   $location_text[0]="Tahoma" # Font Type
   $location_text[1]=16 # Font Size
   $location_text[2]=0 # Location Title Color
   $location_text[4]=0 # Map Name Color
   $location_text[3]="Location:" # Text
   $gold_text[0]="Tahoma" # Font Type
   $gold_text[1]=16 # Font Size
   $gold_text[2]=0 # Gold Title Color
   $gold_text[3]=0 # Gold Color
   $gold_text[4]="Gold" # Text
   @window_opacity[0]=255 # Border Opacity
   @window_opacity[1]=130 # Background Opacity
   $window_location_skin=$data_system.windowskin_name # Location Windowskin
   $window_gold_skin=$data_system.windowskin_name # Gold Windowskin
   @window_position[0]=0 # X Axis Position
   @window_position[1]=0 # Location Y Axis Position
   @window_position[2]=480-64 # Gold Y Axis Position
   $window_size[0]=640 # Length
   $window_size[1]=64 # Height
   $ring_menu_text[0]="Tahoma" # Font Type
   $ring_menu_text[7]=0 # Font Color
   $ring_menu_text[8]=16 # Font Size
   $ring_menu_text[1]="Items"
   $ring_menu_text[2]="Skills"
   $ring_menu_text[3]="Equip"
   $ring_menu_text[4]="Stats"
   $ring_menu_text[5]="Save"
   $ring_menu_text[6]="Quit"
   $ring_menu_text[9]="Map"
   @chara_select[0]=408 # X Axis Position
   @chara_select[1]=0 # Y Axis Position
   $chara_select[0]="Tahoma" # Font Type
   $chara_select[1]=0 # Font Color
   $chara_select[5]=12 # Font Size
   $chara_select[2]=255 # Border Opacity
   $chara_select[3]=130 # Background Opacity
   $chara_select[4]=$data_system.windowskin_name # Windowskin
 end
#------------------------------------------------------------------------------
#  Main
#------------------------------------------------------------------------------
 def main
   @window_location = Window_Location.new
   @window_location.x = @window_position[0]
   @window_location.y = @window_position[1]
   @window_location.opacity = @window_opacity[0]
   @window_location.back_opacity = @window_opacity[1]
   @window_gold = Window_MenuGold.new
   @window_gold.x = @window_position[0]
   @window_gold.y = @window_position[2]
   @window_gold.opacity = @window_opacity[0]
   @window_gold.back_opacity = @window_opacity[1]
   @spriteset = Spriteset_Map.new
   px = 320
   py = 240
   @command_window = Window_RingMenu.new(px,py)
   @command_window.index = @menu_index
   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.x = @chara_select[0]
   @status_window.y = @chara_select[1]
   @status_window.z = 400
   @status_window.opacity=$chara_select[2]
   @status_window.back_opacity=$chara_select[3]
   @status_window.visible = false
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @spriteset.dispose
   @window_location.dispose
   @window_gold.dispose
   @command_window.dispose
   @status_window.dispose
 end
#------------------------------------------------------------------------------
#  Update
#------------------------------------------------------------------------------
 def update
   @window_location.update
   @window_gold.update
   @command_window.update
   @status_window.update
   if @command_window.active
     update_command
     return
   end
   if @status_window.active
     update_status
     return
   end
 end
#------------------------------------------------------------------------------
#  Update Comman
#------------------------------------------------------------------------------
 def update_command
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Map.new
     return
   end
   if Input.trigger?(Input::C)
     if $game_party.actors.size == 0 and @command_window.index < 4
       $game_system.se_play($data_system.buzzer_se)
       return
     end
   case @command_window.index
   when 0
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_Item.new
   when 1
     $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
     $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
     $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 5
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_End.new
   end
   return
 end
 return if @command_window.animation?
   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)
     return
   end
   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)
     return
   end
 end
#------------------------------------------------------------------------------
#  Update Status
#------------------------------------------------------------------------------
 def update_status
   if Input.trigger?(Input::B)
     $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
   if Input.trigger?(Input::C)
   case @command_window.index
   when 1
     if $game_party.actors[@status_window.index].restriction >= 2
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_Skill.new(@status_window.index)
   when 2
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_Equip.new(@status_window.index)
   when 3
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_Status.new(@status_window.index)
     end
     return
   end
 end
end
#------------------------------------------------------------------------------
#  Window_RingMenu
#------------------------------------------------------------------------------
class Window_RingMenu < Window_Base
 STARTUP_FRAMES = 20
 MOVING_FRAMES = 5 
 RING_R = 64       
 ICON_ITEM   = RPG::Cache.icon("034-Item03")
 ICON_SKILL  = RPG::Cache.icon("044-Skill01")
 ICON_EQUIP  = RPG::Cache.icon("001-Weapon01")
 ICON_STATUS = RPG::Cache.icon("050-Skill07")
 ICON_SAVE   = RPG::Cache.icon("047-Skill04")
 ICON_EXIT   = RPG::Cache.icon("046-Skill03")
 ICON_DISABLE= RPG::Cache.icon("")
 ICOM_MAP    = RPG::Cache.icon("038-Item07")
 SE_STARTUP = "056-Right02"
 MODE_START = 1
 MODE_WAIT  = 2
 MODE_MOVER = 3
 MODE_MOVEL = 4
 attr_accessor :index
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize( center_x, center_y )
   super(0, 0, 640, 480)
   self.contents = Bitmap.new(width-32, height-32)
   self.contents.font.name = $ring_menu_text[0]
   self.contents.font.color = text_color($ring_menu_text[7])
   self.contents.font.size = $ring_menu_text[8]
   self.opacity = 0
   self.back_opacity = 0
   s1 = $ring_menu_text[1]
   s2 = $ring_menu_text[2]
   s3 = $ring_menu_text[3]
   s4 = $ring_menu_text[4]
   s5 = $ring_menu_text[6]
   @commands = [ s1, s2, s3, s4, s5]
   @item_max = 5
   @index = 0
   @items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_EXIT ]
   @disabled = [ false, false, false, false, false, false ]
   @cx = center_x - 16
   @cy = center_y - 16
   setup_move_start
   refresh
 end
#------------------------------------------------------------------------------
#  Update
#------------------------------------------------------------------------------
 def update
   super
   refresh
 end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
 def refresh
   self.contents.clear
   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
   rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
   self.contents.draw_text(rect, @commands[@index],1)
 end
#------------------------------------------------------------------------------
#  Refresh Start
#------------------------------------------------------------------------------
 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
#------------------------------------------------------------------------------
#  Refresh Wait
#------------------------------------------------------------------------------
 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
#------------------------------------------------------------------------------
#  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
     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
 #------------------------------------------------------------------------------
#  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 Start
#------------------------------------------------------------------------------
 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
#------------------------------------------------------------------------------
#  Setup Move Move
#------------------------------------------------------------------------------
 def setup_move_move(mode)
   if mode == MODE_MOVER
     @index -= 1
     @index = @items.size - 1 if @index < 0
     @mode = MODE_START
   elsif mode == MODE_MOVEL
     @index += 1
     @index = 0 if @index >= @items.size
     @mode = MODE_START
   else
     return
   end
   @mode = mode
   @steps = MOVING_FRAMES
 end
#------------------------------------------------------------------------------
#  Animation
#------------------------------------------------------------------------------
 def animation?
   return @mode != MODE_WAIT
 end
end
#------------------------------------------------------------------------------
#  Window_RingMenuStatus
#------------------------------------------------------------------------------
class Window_RingMenuStatus < Window_Selectable
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize
   super(204, 64, 232, 352)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.size = $chara_select[5]
   refresh
   self.active = false
   self.index = -1
 end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.windowskin = RPG::Cache.windowskin($chara_select[4])
   self.contents.font.name = $chara_select[0]
   self.contents.font.color = text_color($chara_select[1])
   @item_max = $game_party.actors.size
   for i in 0...$game_party.actors.size
     x = 80
     y = 80 * i
     actor = $game_party.actors[i]
     draw_actor_graphic(actor, x - 60, y + 65)
     draw_actor_name(actor, x, y + 2)
     draw_actor_hp(actor, x - 40, y + 26)
     draw_actor_sp(actor, x - 40, y + 50)
   end
 end
#------------------------------------------------------------------------------
#  Update Cursor Rect
#------------------------------------------------------------------------------
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
   else
     self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
   end
 end
end
#------------------------------------------------------------------------------
#  Game_Map
#------------------------------------------------------------------------------
class Game_Map
#------------------------------------------------------------------------------
#  Name
#------------------------------------------------------------------------------
 def name
   $map_infos[@map_id]
 end
end
#------------------------------------------------------------------------------
#  Scene_Title
#------------------------------------------------------------------------------
class Scene_Title
 $map_infos = load_data("Data/MapInfos.rxdata")
 for key in $map_infos.keys
   $map_infos[key] = $map_infos[key].name
 end
end
#------------------------------------------------------------------------------
#  Window_Location
#------------------------------------------------------------------------------
class Window_Location < Window_Base
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize
   super(0, 0, $window_size[0], $window_size[1])
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $location_text[0]
   self.contents.font.size = $location_text[1]
   refresh
 end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.windowskin = RPG::Cache.windowskin($window_location_skin)
   self.contents.font.color = text_color($location_text[2])
   self.contents.draw_text(0, 0, 640, 16, $location_text[3])
   self.contents.font.color = text_color($location_text[4])
   self.contents.draw_text(4, 16, 640, 16, $game_map.name)
 end
end
#------------------------------------------------------------------------------
#  Window_MenuGold
#------------------------------------------------------------------------------
class Window_MenuGold < Window_Base
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize
   super(0, 0, $window_size[0], $window_size[1])
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $gold_text[0]
   self.contents.font.size = $gold_text[1]
   refresh
 end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.windowskin = RPG::Cache.windowskin($window_gold_skin)
   self.contents.font.color = text_color($gold_text[2])
   self.contents.draw_text(0, 0, 640, 16, $gold_text[4])
   self.contents.font.color = text_color($gold_text[3])
   self.contents.draw_text(4, 16, 640, 16, $game_party.gold.to_s)
 end
end

I have hard-coded out the save option, so you can have a game that relies only on savepoints, plus the Location windows actually works properly without squashing the text!  :)


The Legend of Zelda Fanclub

***
Banned
Rep:
Level 88
The Hated One
Its brilliant, except I cant get the exit option to work, am I doing something wrong?
Legacy: The Gatekeeper- Demo 2.0 Now Avaliable

***
Rep:
Level 88
What a waste of paper...
No you aren't, I made a very tiny mistake, so tiny I didn't even notice it  :lol:

Code: [Select]
#------------------------------------------------------------------------------
#  Ring_Menu
#------------------------------------------------------------------------------
#  By:  XRXS, Dubealex, and Hypershadow180
#------------------------------------------------------------------------------
class Scene_Menu
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize(menu_index = 0)
   @menu_index = menu_index
   $location_text=[]
   $gold_text=[]
   $window_size=[]
   $ring_menu_text=[]
   $chara_select=[]
   @window_opacity=[]
   @chara_select=[]
   @window_position=[]
   $location_text[0]="Tahoma" # Font Type
   $location_text[1]=16 # Font Size
   $location_text[2]=0 # Location Title Color
   $location_text[4]=0 # Map Name Color
   $location_text[3]="Location:" # Text
   $gold_text[0]="Tahoma" # Font Type
   $gold_text[1]=16 # Font Size
   $gold_text[2]=0 # Gold Title Color
   $gold_text[3]=0 # Gold Color
   $gold_text[4]="Gold" # Text
   @window_opacity[0]=255 # Border Opacity
   @window_opacity[1]=130 # Background Opacity
   $window_location_skin=$data_system.windowskin_name # Location Windowskin
   $window_gold_skin=$data_system.windowskin_name # Gold Windowskin
   @window_position[0]=0 # X Axis Position
   @window_position[1]=0 # Location Y Axis Position
   @window_position[2]=480-64 # Gold Y Axis Position
   $window_size[0]=640 # Length
   $window_size[1]=64 # Height
   $ring_menu_text[0]="Tahoma" # Font Type
   $ring_menu_text[7]=0 # Font Color
   $ring_menu_text[8]=16 # Font Size
   $ring_menu_text[1]="Items"
   $ring_menu_text[2]="Skills"
   $ring_menu_text[3]="Equip"
   $ring_menu_text[4]="Stats"
   $ring_menu_text[5]="Save"
   $ring_menu_text[6]="Quit"
   $ring_menu_text[9]="Map"
   @chara_select[0]=408 # X Axis Position
   @chara_select[1]=0 # Y Axis Position
   $chara_select[0]="Tahoma" # Font Type
   $chara_select[1]=0 # Font Color
   $chara_select[5]=12 # Font Size
   $chara_select[2]=255 # Border Opacity
   $chara_select[3]=130 # Background Opacity
   $chara_select[4]=$data_system.windowskin_name # Windowskin
 end
#------------------------------------------------------------------------------
#  Main
#------------------------------------------------------------------------------
 def main
   @window_location = Window_Location.new
   @window_location.x = @window_position[0]
   @window_location.y = @window_position[1]
   @window_location.opacity = @window_opacity[0]
   @window_location.back_opacity = @window_opacity[1]
   @window_gold = Window_MenuGold.new
   @window_gold.x = @window_position[0]
   @window_gold.y = @window_position[2]
   @window_gold.opacity = @window_opacity[0]
   @window_gold.back_opacity = @window_opacity[1]
   @spriteset = Spriteset_Map.new
   px = 320
   py = 240
   @command_window = Window_RingMenu.new(px,py)
   @command_window.index = @menu_index
   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.x = @chara_select[0]
   @status_window.y = @chara_select[1]
   @status_window.z = 400
   @status_window.opacity=$chara_select[2]
   @status_window.back_opacity=$chara_select[3]
   @status_window.visible = false
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @spriteset.dispose
   @window_location.dispose
   @window_gold.dispose
   @command_window.dispose
   @status_window.dispose
 end
#------------------------------------------------------------------------------
#  Update
#------------------------------------------------------------------------------
 def update
   @window_location.update
   @window_gold.update
   @command_window.update
   @status_window.update
   if @command_window.active
     update_command
     return
   end
   if @status_window.active
     update_status
     return
   end
 end
#------------------------------------------------------------------------------
#  Update Comman
#------------------------------------------------------------------------------
 def update_command
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Map.new
     return
   end
   if Input.trigger?(Input::C)
     if $game_party.actors.size == 0 and @command_window.index < 4
       $game_system.se_play($data_system.buzzer_se)
       return
     end
   case @command_window.index
   when 0
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_Item.new
   when 1
     $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
     $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
     $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 #Oops! This was a 5 before!
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_End.new
   end
   return
 end
 return if @command_window.animation?
   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)
     return
   end
   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)
     return
   end
 end
#------------------------------------------------------------------------------
#  Update Status
#------------------------------------------------------------------------------
 def update_status
   if Input.trigger?(Input::B)
     $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
   if Input.trigger?(Input::C)
   case @command_window.index
   when 1
     if $game_party.actors[@status_window.index].restriction >= 2
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_Skill.new(@status_window.index)
   when 2
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_Equip.new(@status_window.index)
   when 3
     $game_system.se_play($data_system.decision_se)
     $scene = Scene_Status.new(@status_window.index)
     end
     return
   end
 end
end
#------------------------------------------------------------------------------
#  Window_RingMenu
#------------------------------------------------------------------------------
class Window_RingMenu < Window_Base
 STARTUP_FRAMES = 20
 MOVING_FRAMES = 5 
 RING_R = 64       
 ICON_ITEM   = RPG::Cache.icon("034-Item03")
 ICON_SKILL  = RPG::Cache.icon("044-Skill01")
 ICON_EQUIP  = RPG::Cache.icon("001-Weapon01")
 ICON_STATUS = RPG::Cache.icon("050-Skill07")
 ICON_SAVE   = RPG::Cache.icon("047-Skill04")
 ICON_EXIT   = RPG::Cache.icon("046-Skill03")
 ICON_DISABLE= RPG::Cache.icon("")
 ICOM_MAP    = RPG::Cache.icon("038-Item07")
 SE_STARTUP = "056-Right02"
 MODE_START = 1
 MODE_WAIT  = 2
 MODE_MOVER = 3
 MODE_MOVEL = 4
 attr_accessor :index
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize( center_x, center_y )
   super(0, 0, 640, 480)
   self.contents = Bitmap.new(width-32, height-32)
   self.contents.font.name = $ring_menu_text[0]
   self.contents.font.color = text_color($ring_menu_text[7])
   self.contents.font.size = $ring_menu_text[8]
   self.opacity = 0
   self.back_opacity = 0
   s1 = $ring_menu_text[1]
   s2 = $ring_menu_text[2]
   s3 = $ring_menu_text[3]
   s4 = $ring_menu_text[4]
   s5 = $ring_menu_text[6]
   @commands = [ s1, s2, s3, s4, s5]
   @item_max = 5
   @index = 0
   @items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_EXIT ]
   @disabled = [ false, false, false, false, false, false ]
   @cx = center_x - 16
   @cy = center_y - 16
   setup_move_start
   refresh
 end
#------------------------------------------------------------------------------
#  Update
#------------------------------------------------------------------------------
 def update
   super
   refresh
 end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
 def refresh
   self.contents.clear
   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
   rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
   self.contents.draw_text(rect, @commands[@index],1)
 end
#------------------------------------------------------------------------------
#  Refresh Start
#------------------------------------------------------------------------------
 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
#------------------------------------------------------------------------------
#  Refresh Wait
#------------------------------------------------------------------------------
 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
#------------------------------------------------------------------------------
#  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
     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
 #------------------------------------------------------------------------------
#  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 Start
#------------------------------------------------------------------------------
 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
#------------------------------------------------------------------------------
#  Setup Move Move
#------------------------------------------------------------------------------
 def setup_move_move(mode)
   if mode == MODE_MOVER
     @index -= 1
     @index = @items.size - 1 if @index < 0
     @mode = MODE_START
   elsif mode == MODE_MOVEL
     @index += 1
     @index = 0 if @index >= @items.size
     @mode = MODE_START
   else
     return
   end
   @mode = mode
   @steps = MOVING_FRAMES
 end
#------------------------------------------------------------------------------
#  Animation
#------------------------------------------------------------------------------
 def animation?
   return @mode != MODE_WAIT
 end
end
#------------------------------------------------------------------------------
#  Window_RingMenuStatus
#------------------------------------------------------------------------------
class Window_RingMenuStatus < Window_Selectable
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize
   super(204, 64, 232, 352)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.size = $chara_select[5]
   refresh
   self.active = false
   self.index = -1
 end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.windowskin = RPG::Cache.windowskin($chara_select[4])
   self.contents.font.name = $chara_select[0]
   self.contents.font.color = text_color($chara_select[1])
   @item_max = $game_party.actors.size
   for i in 0...$game_party.actors.size
     x = 80
     y = 80 * i
     actor = $game_party.actors[i]
     draw_actor_graphic(actor, x - 60, y + 65)
     draw_actor_name(actor, x, y + 2)
     draw_actor_hp(actor, x - 40, y + 26)
     draw_actor_sp(actor, x - 40, y + 50)
   end
 end
#------------------------------------------------------------------------------
#  Update Cursor Rect
#------------------------------------------------------------------------------
 def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
   else
     self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
   end
 end
end
#------------------------------------------------------------------------------
#  Game_Map
#------------------------------------------------------------------------------
class Game_Map
#------------------------------------------------------------------------------
#  Name
#------------------------------------------------------------------------------
 def name
   $map_infos[@map_id]
 end
end
#------------------------------------------------------------------------------
#  Scene_Title
#------------------------------------------------------------------------------
class Scene_Title
 $map_infos = load_data("Data/MapInfos.rxdata")
 for key in $map_infos.keys
   $map_infos[key] = $map_infos[key].name
 end
end
#------------------------------------------------------------------------------
#  Window_Location
#------------------------------------------------------------------------------
class Window_Location < Window_Base
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize
   super(0, 0, $window_size[0], $window_size[1])
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $location_text[0]
   self.contents.font.size = $location_text[1]
   refresh
 end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.windowskin = RPG::Cache.windowskin($window_location_skin)
   self.contents.font.color = text_color($location_text[2])
   self.contents.draw_text(0, 0, 640, 16, $location_text[3])
   self.contents.font.color = text_color($location_text[4])
   self.contents.draw_text(4, 16, 640, 16, $game_map.name)
 end
end
#------------------------------------------------------------------------------
#  Window_MenuGold
#------------------------------------------------------------------------------
class Window_MenuGold < Window_Base
#------------------------------------------------------------------------------
#  Initialize
#------------------------------------------------------------------------------
 def initialize
   super(0, 0, $window_size[0], $window_size[1])
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $gold_text[0]
   self.contents.font.size = $gold_text[1]
   refresh
 end
#------------------------------------------------------------------------------
#  Refresh
#------------------------------------------------------------------------------
 def refresh
   self.contents.clear
   self.windowskin = RPG::Cache.windowskin($window_gold_skin)
   self.contents.font.color = text_color($gold_text[2])
   self.contents.draw_text(0, 0, 640, 16, $gold_text[4])
   self.contents.font.color = text_color($gold_text[3])
   self.contents.draw_text(4, 16, 640, 16, $game_party.gold.to_s)
 end
end

Here is the new code, all because of one number!

Oh, and could you please please PLEASE give me credit in your game? This took me literally hours to get working properly!


The Legend of Zelda Fanclub

**
Rep: +0/-0Level 88
Evil Overlord and Rock God
Hey, Demon X, just noticed in yer script if I try to quit the game and then change my mind the error, "Script 'Ring System' line 283: TypeError occured. cannot convert nil into String" I'm looking into yer script to see what's up but... You'd probably have a better idea (especially since I know hardly any ruby at all.)

EDIT: Other than that yer script is pretty cool. My congrats to you and yer buddies.

***
Rep:
Level 88
What a waste of paper...
Thank you, also give credit to the creators of the original script!


The Legend of Zelda Fanclub

***
Rep:
Level 90
Hey, Demon X, just noticed in yer script if I try to quit the game and then change my mind the error, "Script 'Ring System' line 283: TypeError occured. cannot convert nil into String" I'm looking into yer script to see what's up but... You'd probably have a better idea (especially since I know hardly any ruby at all.)

EDIT: Other than that yer script is pretty cool. My congrats to you and yer buddies.

go into scene_end and look for the part

Code: [Select]
  #--------------------------------------------------------------------------
  # *  Process When Choosing [Cancel] Command
  #--------------------------------------------------------------------------
  def command_cancel
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Switch to menu screen
    $scene = Scene_Menu.new(5)
  end
end

change
Code: [Select]
    $scene = Scene_Menu.new(5)
to
Code: [Select]
    $scene = Scene_Menu.new(4)


**
Rep: +0/-0Level 88
Evil Overlord and Rock God
Thanks, I'll try adding that later tonight.