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.
Ring Menu: Add and Fix

0 Members and 1 Guest are viewing this topic.

**
Rep: +0/-0Level 67
RMRK AzumDude
I found this script that makes the menu a ring of icons. I have two things that I would like to be fixed and added.

Code: [Select]
#===================================================
# ¦ Ring Menu - Show Player Location - Release #1 (Enhanced By Dubealex)
#===================================================
# For more infos and update, visit:
# asylum.dubealex.com
#
# Original Ring Menu by: ?? (From XRXS)
# Original Edit and Fix by: Maki
# Show Player Location Version by: Dubealex
#
# You can customize this script at line #35 - Have fun !!
# If you want to show more stuff, its easy to do, you can try to ask in the forum.
#
# alex@dubealex.com
#===================================================


#===================================================
# ? CLASS Scene_Menu Begins
#===================================================

class Scene_Menu
#--------------------------------------------------------------------------
# ?? ?I?u?W?F?N?g??????
#     menu_index : ?R?}???h??J?[?\????????u
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
  @menu_index = menu_index
  $location_text=[]
  $window_size=[]
  $ring_menu_text=[]
  $chara_select=[]
  @window_opacity=[]
  @chara_select=[]
  @window_position=[]

   #--------------------------------------------------------------------------------------------------
   # ¦ Ring Menu Customization Section: (By Dubealex)
   #--------------------------------------------------------------------------------------------------
   # Those variables defines how the script will act.
   # Simply change the value by those you want.
   # Remember that changing the font size has its limitation due to text space allocation.
   #
   # ? TEXT SETTINGS FOR SHOW PLAYER LOCATION WINDOW:
   $location_text[0]="Tahoma"      # Font Type
   $location_text[1]=22                # Font Size
   $location_text[2]=6                  # Location Title Color
   $location_text[4]=0                  # Map Name Color
   $location_text[3]="Location:"     # Customize the "Location" Title Text

   # ? SHOW LOCATION WINDOW SETTINS:
   @show_location_window=true                       #Set to false to not use it !
   @window_opacity[0]=255                             # Border Opacity
   @window_opacity[1]=130                             # Background Opacity
   $window_location_skin="55"            # Window Skin
   @window_position[0]=20                             # X Axis Position
   @window_position[1]=20                             # Y Axis Position
   $window_size[0]=160                                  # Lengh
   $window_size[1]=96                                    # Heigh

   # ?  TEXT SETTINGS FOR INSIDE THE RING MENU:
   $ring_menu_text[0]="Tahoma"      # Font Type
   $ring_menu_text[7]=0                  # Font Color
   $ring_menu_text[8]=22                # Font Size
   $ring_menu_text[1]="Items"         # Items Menu Text
   $ring_menu_text[2]="Skills"          # Skills Menu Text
   $ring_menu_text[3]="Equip"         # Equip Menu Text
   $ring_menu_text[4]="Stats"          # Stats Menu Text
   $ring_menu_text[5]="Save"          # Save Menu Text
   $ring_menu_text[6]="Quit"           # Quit Menu Text

   # ?  CHARACTER SELECTION WINDOW SETTINGS :
   @chara_select[0]=400               # 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]=22                  # Font Size
   $chara_select[2]=255               # Window Border Opacity
   $chara_select[3]=130               # Window Background Opacity
   $chara_select[4]="55"  # Window Skin to use
  #--------------------------------------------------------------------------------------------------

end
#--------------------------------------------------------------------------
# ?? ???C?????
#--------------------------------------------------------------------------
def main

  # Show Player Location Feature:
  if @show_location_window==true   
  @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]
     end
  #End of Show Player Location

  # ?X?v???C?g?Z?b?g???? ?
  @spriteset = Spriteset_Map.new
  # ?R?}???h?E?B???h?E???? ?
  px = $game_player.screen_x - 15
  py = $game_player.screen_y - 24
  @command_window = Window_RingMenu.new(px,py)
  @command_window.index = @menu_index
  # ?p?[?e?B l ??? 0  l??????
  if $game_party.actors.size == 0
    # ?A?C?e???A?X?L???A?????A?X?e?[?^?X????????
    @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
  # ?Z?[?u??~??????
  if $game_system.save_disabled
    # ?Z?[?u???????????
    @command_window.disable_item(4)
  end
  # ?X?e?[?^?X?E?B???h?E???? ?
  @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
  # ?g?????W?V???????s
  Graphics.transition
  # ???C?????[?v
  loop do
    # ?Q?[????????X V
    Graphics.update
    # ???????????X V
    Input.update
    # ?t???[???X V
    update
    # ????? ????????????[?v?????f
    if $scene != self
      break
    end
  end
  # ?g?????W?V????????
  Graphics.freeze
  # ?X?v???C?g?Z?b?g??????
  @spriteset.dispose
  # ?E?B???h?E??????
  if @show_location_window==true
  @window_location.dispose
  end
  @command_window.dispose
  @status_window.dispose
end
#--------------------------------------------------------------------------
# ?? ?t???[???X V
#--------------------------------------------------------------------------
def update
  # ?E?B???h?E???X V
  if @show_location_window==true
  @window_location.update
  end
  @command_window.update
  @status_window.update
  # ?R?}???h?E?B???h?E???A?N?e?B?u??????: update_command ?????
  if @command_window.active
    update_command
    return
  end
  # ?X?e?[?^?X?E?B???h?E???A?N?e?B?u??????: update_status ?????
  if @status_window.active
    update_status
    return
  end
end
#--------------------------------------------------------------------------
# ?? ?t???[???X V (?R?}???h?E?B???h?E???A?N?e?B?u??????)
#--------------------------------------------------------------------------
def update_command
  # B ?{?^??????????????
  if Input.trigger?(Input::B)
    # ?L?????Z?? SE ?????t
    $game_system.se_play($data_system.cancel_se)
    # ?}?b?v????? ?????
    $scene = Scene_Map.new
    return
  end
  # C ?{?^??????????????
  if Input.trigger?(Input::C)
    # ?p?[?e?B l ??? 0  l???A?Z?[?u?A?Q?[???I????O??R?}???h??????
    if $game_party.actors.size == 0 and @command_window.index < 4
      # ?u?U?[ SE ?????t
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # ?R?}???h?E?B???h?E??J?[?\????u?????
    case @command_window.index
    when 0  # ?A?C?e??
      # ????  SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ?A?C?e??????? ?????
      $scene = Scene_Item.new
    when 1  # ?X?L??
      # ???? SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ?X?e?[?^?X?E?B???h?E???A?N?e?B?u?????
      @command_window.active = false
      @status_window.active = true
      @status_window.visible = true
      @status_window.index = 0
    when 2  # ????
      # ???? SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ?X?e?[?^?X?E?B???h?E???A?N?e?B?u?????
      @command_window.active = false
      @status_window.active = true
      @status_window.visible = true
      @status_window.index = 0
    when 3  # ?X?e?[?^?X
      # ???? SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ?X?e?[?^?X?E?B???h?E???A?N?e?B?u?????
      @command_window.active = false
      @status_window.active = true
      @status_window.visible = true
      @status_window.index = 0
    when 4  # ?Z?[?u
      # ?Z?[?u??~??????
      if $game_system.save_disabled
        # ?u?U?[ SE ?????t
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # ???? SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ?Z?[?u????? ?????
      $scene = Scene_Save.new
    when 5  # ?Q?[???I??
      # ???? SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ?Q?[???I??????? ?????
      $scene = Scene_End.new
    end
    return
  end
  # ?A?j???[?V??????????J?[?\??????? ???s?????
  return if @command_window.animation?
  # ??or?? ?{?^??????????????
  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
  # ??or?? ?{?^??????????????
  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
#--------------------------------------------------------------------------
# ?? ?t???[???X V (?X?e?[?^?X?E?B???h?E???A?N?e?B?u??????)
#--------------------------------------------------------------------------
def update_status
  # B ?{?^??????????????
  if Input.trigger?(Input::B)
    # ?L?????Z?? SE ?????t
    $game_system.se_play($data_system.cancel_se)
    # ?R?}???h?E?B???h?E???A?N?e?B?u?????
    @command_window.active = true
    @status_window.active = false
    @status_window.visible = false
    @status_window.index = -1
    return
  end
  # C ?{?^??????????????
  if Input.trigger?(Input::C)
    # ?R?}???h?E?B???h?E??J?[?\????u?????
    case @command_window.index
    when 1  # ?X?L??
      # ????A?N?^?[???s?? ????? 2 ??????????
      if $game_party.actors[@status_window.index].restriction >= 2
        # ?u?U?[ SE ?????t
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # ???? SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ?X?L??????? ?????
      $scene = Scene_Skill.new(@status_window.index)
    when 2  # ????
      # ???? SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ????????? ?????
      $scene = Scene_Equip.new(@status_window.index)
    when 3  # ?X?e?[?^?X
      # ???? SE ?????t
      $game_system.se_play($data_system.decision_se)
      # ?X?e?[?^?X????? ?????
      $scene = Scene_Status.new(@status_window.index)
    end
    return
  end
end
end

#===================================================
# ? CLASS Scene_Menu Ends
#===================================================


#===================================================
# ? CLASS Window_RingMenu  Begins
#===================================================
class Window_RingMenu < Window_Base
#--------------------------------------------------------------------------
# ?? ?N???X?? ?
#--------------------------------------------------------------------------
STARTUP_FRAMES = 20
MOVING_FRAMES = 5 
RING_R = 64       
ICON_ITEM   = RPG::Cache.icon("icon-item")
ICON_SKILL  = RPG::Cache.icon("icon-skill")
ICON_EQUIP  = RPG::Cache.icon("icon-equip")
ICON_STATUS = RPG::Cache.icon("icon-status")
ICON_SAVE   = RPG::Cache.icon("icon-save")
ICON_EXIT   = RPG::Cache.icon("icon-exit")
ICON_DISABLE= RPG::Cache.icon("")
SE_STARTUP = "056-Right02"
MODE_START = 1
MODE_WAIT  = 2
MODE_MOVER = 3
MODE_MOVEL = 4
#--------------------------------------------------------------------------
# ?? ?A?N?Z?T
#--------------------------------------------------------------------------
attr_accessor :index
#--------------------------------------------------------------------------
# ?? ?I?u?W?F?N?g??????
#--------------------------------------------------------------------------
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]
  @commands = [ s1, s2, s3, s4, s5, s6 ]
  @item_max = 6
  @index = 0
  @items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_SAVE, ICON_EXIT ]
  @disabled = [ false, false, false, false, false, false ]
  @cx = center_x - 16
  @cy = center_y - 16
  setup_move_start
  refresh
end
#--------------------------------------------------------------------------
# ?? ?t???[???X V
#--------------------------------------------------------------------------
def update
  super
  refresh
end
#--------------------------------------------------------------------------
# ?? ??????`??
#--------------------------------------------------------------------------
def refresh
  self.contents.clear
  # ?A?C?R?????`??
  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
  # ?A?N?e?B?u??R?}???h???\??
  rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
  self.contents.draw_text(rect, @commands[@index],1)
end
#--------------------------------------------------------------------------
# ?? ??????`??(????????)
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ?? ??????`??(??@??)
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ?? ??????`??(???]??)
#  mode : 0=?????v???? 1=???v????
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ?? ?????`??
#     x :
#     y :
#     i : ???????
#--------------------------------------------------------------------------
def draw_item(x, y, i)
  #p "x=" + x.to_s + " y=" + y.to_s + " i=" + @items[i].to_s
  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
#--------------------------------------------------------------------------
# ?? ??????????????
#     index : ???????
#--------------------------------------------------------------------------
def disable_item(index)
  @disabled[index] = true
end
#--------------------------------------------------------------------------
# ?? ???????A?j???[?V??????????
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ?? ???]?A?j???[?V??????????
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ?? ?A?j???[?V?????????????
#--------------------------------------------------------------------------
def animation?
  return @mode != MODE_WAIT
end
end

#===================================================
# ? CLASS Window_RingMenu Ends
#===================================================


#===================================================
# ? CLASS Window_RingMenuStatus Begins
#===================================================

class Window_RingMenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# ?? ?I?u?W?F?N?g??????
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# ?? ???t???b?V??
#--------------------------------------------------------------------------
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 - 40, y + 80)
    draw_actor_name(actor, x, y + 24)
  end
end
#--------------------------------------------------------------------------
# ?? ?J?[?\??????`?X V
#--------------------------------------------------------------------------
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
#===================================================
# ? CLASS Window_RingMenuStatus Ends
#===================================================


#===================================================
# ? CLASS Game_Map Additional Code Begins
#===================================================
class Game_Map

#Dubealex Addition (from XRXS) to show Map Name on screen
def name
  $map_infos[@map_id]
end
end

#===================================================
# ? CLASS Game_Map Additional Code Ends
#===================================================


#===================================================
# ? CLASS Scene_Title Additional Code Begins
#===================================================
class Scene_Title

#Dubealex Addition (from XRXS) to show Map Name on screen
  $map_infos = load_data("Data/MapInfos.rxdata")
  for key in $map_infos.keys
    $map_infos[key] = $map_infos[key].name
  end
end

#===================================================
# ? CLASS Scene_Title Additional Code Ends
#===================================================


#===================================================
# ? CLASS Window_Location Begins
#===================================================

class Window_Location < Window_Base

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

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(4, 0, 120, 32, $location_text[3])
self.contents.font.color = text_color($location_text[4])
self.contents.draw_text(4, 32, 120, 32, $game_map.name, 2)
end
end
#===================================================
# ? CLASS Window_Location Ends
#===================================================

#===================================================
# ? Ring Menu - Show Player Location R1 - Ends
#===================================================

if you check it yourself, you might find that you can't see how much gold you got, that I would like to be fixed.
and now to something else i would like to add, how do i add another icon there in the menu, i've tried but totally failed (not scripting kinda guy :P). Please someone, atleast fix so I can see my gold. If you do, please use the whole script, edit it, and then post it.