Main Menu
  • Welcome to The RPG Maker Resource Kit.

Modified Ring Menu System

Started by Demon X, November 24, 2006, 02:23:10 AM

0 Members and 1 Guest are viewing this topic.

Demon X

This is a modified version of Dubealex's Ring Menu System:

#------------------------------------------------------------------------------
#  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

coolkid25344

Its brilliant, except I cant get the exit option to work, am I doing something wrong?
Legacy: The Gatekeeper- Demo 2.0 Now Avaliable

Demon X

No you aren't, I made a very tiny mistake, so tiny I didn't even notice it  :lol:

#------------------------------------------------------------------------------
#  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

ixis

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.

Demon X

Thank you, also give credit to the creators of the original script!


The Legend of Zelda Fanclub

BPKS0

Quote from: ixis on November 26, 2006, 11:00:50 PM
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

  #--------------------------------------------------------------------------
  # *  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
    $scene = Scene_Menu.new(5)
to     $scene = Scene_Menu.new(4)


ixis

Thanks, I'll try adding that later tonight.