Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Adding Ultimate Quest Scene to Ring Menu

Batman

Sponsor

Hey all! I'm having trouble adding the Ultimate Quest Scene script to this particular Ring Menu script:
Code:
#===================================================

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

#

# [email=alex@dubealex.com]alex@dubealex.com[/email]

#===================================================

 

 

#===================================================

# ? 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="001-Blue01"            # 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]="001-Blue01"  # 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("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("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

#--------------------------------------------------------------------------

# ?? ?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 anybody could help me out or do this for me, it would be greatly appreciated!
 
First, you need to edit this part to add menu command:
Code:
 

#===================================================

# ? 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("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("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

#--------------------------------------------------------------------------

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

 
Then, add conditional branch at Scene_Menu::update_command to process newly added command.

However, I personally prefer making a ring menu with SephirothSpawn's rewritten Ring menu command, because it can be used like normal command window, thus making and customizing menu command easier.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top