Hi,
(First my mothertongue is german pls excuse my mistakes )
I´m new in RPGMakerXP an not really good in scripting. I found a very cool ringmenu and want it for my game. But the problem is
1. After a fight I can´t open my menu (When I start the game there are no mistakes) and it comes a window with the sentence : " Script 'ringmenu' line 352: RGSSError occurd disposed bitmap."
2. There are a button in it names "questlog" I don´t need it so how I get it out of the menu?
here is it:
(First my mothertongue is german pls excuse my mistakes )
I´m new in RPGMakerXP an not really good in scripting. I found a very cool ringmenu and want it for my game. But the problem is
1. After a fight I can´t open my menu (When I start the game there are no mistakes) and it comes a window with the sentence : " Script 'ringmenu' line 352: RGSSError occurd disposed bitmap."
2. There are a button in it names "questlog" I don´t need it so how I get it out of the menu?
here is it:
Code:
------------------------------------------------------------------------------
# Â 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]="Calibri" # Font Type
  $location_text[1]=24 # Font Size
  $location_text[2]=0 # Location Title Color
  $location_text[4]=0 # Map Name Color
  $location_text[3]="Location:" # Text
  $gold_text[0]="Calibri" # Font Type
  $gold_text[1]=20 # 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="001-Blue01" # Location Windowskin
  $window_gold_skin="001-Blue01" # Gold Windowskin
  @window_position[0]=0 # X Axis Position
  @window_position[1]=0 # Location Y Axis Position
  @window_position[2]=384 # Gold Y Axis Position
  $window_size[0]=160 # Length
  $window_size[1]=96 # Height
  $ring_menu_text[0]="Calibri" # Font Type
  $ring_menu_text[7]=0 # Font Color
  $ring_menu_text[8]=20 # 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]="Questlog"
  $ring_menu_text[6]="Save"
  $ring_menu_text[7]="Quit"
  @chara_select[0]=408 # X Axis Position
  @chara_select[1]=0 # Y Axis Position
  $chara_select[0]="Calibri" # Font Type
  $chara_select[1]=0 # Font Color
  $chara_select[5]=24 # Font Size
  $chara_select[2]=255 # Border Opacity
  $chara_select[3]=130 # Background Opacity
  $chara_select[4]="001-Blue01" # Windowskin
 end
#------------------------------------------------------------------------------
# Â Main
#------------------------------------------------------------------------------
 def main
  @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 = $game_player.screen_x - 15
  py = $game_player.screen_y - 24
  @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(5)
  end
  @status_window = Window_RingMenuStatus.new
  @status_window.x = @chara_select[0]
  @status_window.y = @chara_select[1]
  @status_window.z = 200
  @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_gold.dispose
  @command_window.dispose
  @status_window.dispose
 end
#------------------------------------------------------------------------------
# Â Update
#------------------------------------------------------------------------------
 def 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
   $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
   if $game_system.save_disabled
    $game_system.se_play($data_system.buzzer_se)
    return
   end
   $game_system.se_play($data_system.decision_se)
   $scene = Scene_Save.new
  when 6
   $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)
  when 4
   $game_system.se_play($data_system.decision_se)
   $scene = Scene_Questlog.new
   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_QUESTLOG = RPG::Cache.icon("039-Item08")
 ICON_SAVE  = RPG::Cache.icon("038-Item07")
 ICON_EXIT  = RPG::Cache.icon("046-Skill03")
 ICON_DISABLE= RPG::Cache.icon("")
 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[5]
  s6 = $ring_menu_text[6]
  s7 = $ring_menu_text[7]
  @commands = [ s1, s2, s3, s4, s5, s6, s7 ]
  @item_max = 7
  @index = 0
  @items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_QUESTLOG, ICON_SAVE, ICON_EXIT ]
  @disabled = [ false, 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
  elsif mode == MODE_MOVEL
   @index += 1
   @index = 0 if @index >= @items.size
  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
Â
#------------------------------------------------------------------------------
# Â 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(4, 0, 120, 32, $gold_text[4])
  self.contents.font.color = text_color($gold_text[3])
  self.contents.draw_text(4, 32, 120, 32, $game_party.gold.to_s, 2)
 end
end