Chaos Project

RPG Maker => RPG Maker Scripts => Script Troubleshooting => Topic started by: Landith on February 04, 2009, 09:49:18 pm

Title: Ring Menu (Combining End menu with it)
Post by: Landith on February 04, 2009, 09:49:18 pm
Okay, here is the problem. I have it animated and everything but if I try to go straight to it from the menu it animates the Teleport menu instead(which I also put into the menu), the index is right and all it just won't work, I have to go to the teleport menu first before going to exit. Also, when I'm in the end window and I press down it goes up and if I press up it goes down :<_<:

I've tried all I could but it just won't work... Even tested it in a new project and still the same thing...
If someone could fix it for me or tell me how to do it (which I want because I'm trying to learn how to script) I would greatly appreciate it :)

Script: ShowHide

#==============================================================================
# Teleportation
# Author: Shdwlink1993
# Version: 1.0
# Type: Game Addon
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Teleport Date 1.0: 2/1/2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

class Game_System
 
  attr_accessor :teleport_disabled
 
  alias teleinit initialize
  def initialize
    teleinit
    @teleport_disabled = false
  end
 
end


class Game_Player
 
  attr_reader :known_locs
 
  alias teleinit initialize
  def initialize
    teleinit
    @known_locs = []
    @backup_locs = []
  end
 
  def add_here(name, desc = '')
    return add_location(name, $game_map.map_id, @x, @y, @direction, desc)
  end
 
  def add_location(name, map, x, y, face, desc = '')
    unless @known_locs == []
      @known_locs.each_index {|i| return if name == @known_locs[i][0] }
    end
    @known_locs.push([name, map, x, y, face, desc])
  end
 
  def remove_location(name)
    @known_locs.each_index {|i|
      if name == @known_locs[i][0]
        @known_locs.delete(@known_locs[i])
        return
      end}
  end
 
  def backup_locations
    @backup_locs = @known_locs
    @known_locs = []
  end
 
  def restore_locations
    @known_locs & @backup_locs
    @backup_locs = []
  end
 
end


class Window_Teleport < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(145, 0, 350, 200)
    @column_max = 2
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Get Item
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    $game_player.known_locs.each {|t| @data.push(t) }
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      @item_max.times {|i| draw_item(i) }
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(x + 4, y, 212, 32, item[0], 0)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.item == nil ? '' : self.item[5])
  end
end

#==============================================================================
# ■ Window_Gold
# by Reno-s--Joker
#------------------------------------------------------------------------------
#  Shows the amount of gold in the menu.
#  Minor aesthetic modifications made for new menu.
#==============================================================================
class Window_Gold < Window_Base
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 148, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # ● Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    cx = contents.text_size($data_system.words.gold).width
    self.contents.font.color = normal_color
    self.contents.blt(4, 4, RPG::Cache.icon(RM_CFG::Gold_Icon), Rect.new(0, 0, 24, 24), 255)
    self.contents.draw_text(4, 0, 100-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(104-cx, 0, cx, 32, $data_system.words.gold, 2)
  end
end
#==============================================================================
# ■ End Window_Gold
#==============================================================================

#==============================================================================
# ■ Window_PlayTime
# by Reno-s--Joker
#------------------------------------------------------------------------------
#  Shows the amount of time spent playing.
#  Minor aesthetic modifications made for new menu.
#==============================================================================
class Window_PlayTime < Window_Base
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 148, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # ● Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.draw_text(4, 0, 100, 32, text, 2)
  end
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------
  def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
      refresh
    end
  end
end
#==============================================================================
# ■ End Window_PlayTime
#==============================================================================

#==============================================================================
# ■ Window_Steps
# by Reno-s--Joker
#------------------------------------------------------------------------------
# Also includes map name (location)
# Replaces the one which comes with the Ring Menu entirely.
# New addition - encounter steps in v 1.1
#==============================================================================
class Window_Steps < Window_Base
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 148, 128)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # ● Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(0, 0, 124, 32, "Planet -", 0)
    self.contents.font.color = normal_color
    self.contents.font.size = 24
    self.contents.draw_text(16, 20, 124, 32, "Taken Out", 0)
    # Another thing can be added at y=32 e.g. No. of Kills
    # (from Blizzard's Tons of Addons)
    self.contents.font.color = system_color
    self.contents.font.size = 28
    self.contents.blt(4, 70, RPG::Cache.icon(RM_CFG::Map_Icon), Rect.new(0, 0, 24, 24), 160)
    map_name = $game_map.name.tr("/*","")
    # Just ignore that thing I said before in the other demo... ^^;
    self.contents.draw_text(8, 64, 124, 32, map_name.to_s)
  end
end
#==============================================================================
# ■ End Window_Steps
#==============================================================================

#==============================================================================
# ■ Window_Status
# by Reno-s--Joker
#==============================================================================
#  This window displays full status specs on the status screen.
#==============================================================================
class Window_Status < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 480, 320)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Draws the actor's battler behind the info
    draw_actor_picture(@actor, 360, 300)
    # Actor's name
    self.contents.font.size = 32
    draw_actor_name(@actor, 0, 0)
    self.contents.font.size = 20
    # Main stats section
    draw_actor_class(@actor, 0, 24)
    draw_actor_level(@actor, 0, 56)
    draw_actor_state(@actor, 68, 56)
    draw_actor_hp(@actor, 0, 82, 172)
    draw_actor_sp(@actor, 0, 106, 172)
    # Actor parameter section
    draw_actor_parameter(@actor, 0, 132, 0)
    draw_actor_parameter(@actor, 0, 150, 1)
    draw_actor_parameter(@actor, 0, 168, 2)
    draw_actor_parameter(@actor, 0, 186, 3)
    draw_actor_parameter(@actor, 0, 204, 4)
    draw_actor_parameter(@actor, 0, 222, 5)
    draw_actor_parameter(@actor, 0, 240, 6)
    # EXP section
    self.contents.font.color = system_color
    self.contents.draw_text(240, 56, 150, 32, "Total Exp: ")
    tx = contents.text_size("Total Exp: ").width
    draw_actor_exp(@actor, 240, 80)
    self.contents.font.color = normal_color
    self.contents.draw_text(tx + 244, 56, 76, 32, @actor.exp_s, 2)
    # Equipment Section
    self.contents.font.color = system_color
    self.contents.draw_text(240, 120, 88, 32, "Equipment: ")
    draw_item_name($data_weapons[@actor.weapon_id], 240, 148)
    draw_item_name($data_armors[@actor.armor1_id], 240, 172)
    draw_item_name($data_armors[@actor.armor2_id], 240, 196)
    draw_item_name($data_armors[@actor.armor3_id], 240, 220)
    draw_item_name($data_armors[@actor.armor4_id], 240, 246)
  end
  #--------------------------------------------------------------------------
  # ● Defines the drawing processes
  #--------------------------------------------------------------------------
  def draw_actor_picture(actor, x, y)
    bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
    x2 = bitmap.width
    y2 = bitmap.height
    x3 = x2 / 2
    src_rect = Rect.new(0, 0, x2, y2)
    self.contents.blt(x - x3, y - y2, bitmap, src_rect)
  end
  def draw_actor_name(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 448, 32, actor.name, 1)
  end
  def draw_actor_class(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 448, 32, actor.class_name, 1)
  end
  #--------------------------------------------------------------------------
  # ● Other stuff which needs to be there although I dunno why... XD
  #--------------------------------------------------------------------------
  def update_actor(actor)
    @actor = actor
    refresh
  end
  def dummy
    self.contents.font.color = system_color
    self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
    self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
    self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
    self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
    self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
    draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
    draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
    draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
    draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
    draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
  end
end
#==============================================================================
# ■ End Window_Status
#==============================================================================

#===============================================================================
# ■ Ring Menu Modification by Reno-s--Joker v 1.1
#===============================================================================
# This is a simple aesthetic modification to this awesome Ring Menu I found.
# It makes a small change to the actor selection window, making it available
# at all times instead of popping up on the side of the screen when it's needed.
# It also integrates the location window into the player select window, and I
# have added an animated status window.
# Note that this mod reduces the area of the screen where the ring menu looks
# good/is visible. You can remove the show player location function to counter
# this.
#
# This updated version features a suggestion by Starrodkirby86 for the addon
# windows to be moved to the top or bottom of the screen according to the
# player's position.
# It also includes a request by Kagutsuchi for the encounter chance to appear
# in the menu and some other minor script modifications.
#
# I've also included an experimental version of the ring menu for the title
# screen.
#
# If you have any issues with my modification, please report them at
# chaos-project.org
# Original script authors see below.
#===============================================================================
# ■ Ring Menu - Show Player Location - Release #1 (Edited By Dubealex)
#===============================================================================
# For more infos and update, visit:
# rmxp.dubealex.com [OR] X-RPG V2 Forum
#
# 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, just ask, and I will release
# new version of this edited script !
#
# alex@dubealex.com
#===============================================================================

#===============================================================================
# ▼ CLASS Scene_Menu Begins
#===============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
#     menu_index : ƒRƒ}ƒ"ƒh,̃J[ƒ\ƒ‹‰ŠúˆÊ'u
#     I modified it to get rid of unnecessary config variables
#--------------------------------------------------------------------------
def initialize(menu_index = 0, actor_index = 0)
   @menu_index = menu_index
   @actor_index = actor_index # New addition for new window
   $ring_menu_text=[]
   $chara_select=[]
   @window_opacity=[]
   
#-------------------------------------------------------------------------------
# ■ 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.
#
# This section has been modified to remove some unused variables
   
# ▼ SHOW LOCATION WINDOW SETTINS:
    @window_opacity[0]=200                             # Border Opacity
    @window_opacity[1]=32                             # Background Opacity
   
# ▼  TEXT SETTINGS FOR INSIDE THE RING MENU:
    $ring_menu_text[0]="Monotype Corsiva"      # Font Type
    $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]="Teleport"
    $ring_menu_text[6]="Quit"           # Quit Menu Text
    $ring_menu_text[7]=6                  # Font Color
    $ring_menu_text[8]=32                # Font Size
   
# ▼  CHARACTER SELECTION WINDOW SETTINGS :
    $chara_select[0]="Tahoma"       # Font Type
    $chara_select[1]=6                   # Font Color
    $chara_select[5]=28                  # 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
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------
def main
   @actor = $game_party.actors[@actor_index]
   # Setup for all the new windows
   @playtime_window = Window_PlayTime.new
      @playtime_window.x = 492
      @playtime_window.opacity = @window_opacity[0]
      @playtime_window.back_opacity = @window_opacity[1]
    @steps_window = Window_Steps.new
      @steps_window.x = 0
      @steps_window.opacity = @window_opacity[0]
      @steps_window.back_opacity = @window_opacity[1]
    @gold_window = Window_Gold.new
      @gold_window.x = 492
      @gold_window.opacity = @window_opacity[0]
      @gold_window.back_opacity = @window_opacity[1]
    @status_window = Window_Status.new(@actor)
      @status_window.active = false
      @status_window.x = 80
      @status_window.z = 1999
      @status_window.opacity = @window_opacity[0]
      @status_window.back_opacity = @window_opacity[1]
    # Make help window, item window
    @item_window = Window_Teleport.new
    # Associate help window
    @item_window.y = -200
    @item_window.z = 2001
    @item_window.opacity = @window_opacity[0]
    @item_window.back_opacity = @window_opacity[1]
   # End Window
      e1 = "Title"
      e2 = "End Game"
      e3 = "Cancel"
      @end_window = Window_Command.new(192, [e1, e2, e3])
      @end_window.x = 320 - @end_window.width / 2
      @end_window.y = 240
      @end_window.active = false
      @end_window.opacity = @window_opacity[0]
      @end_window.back_opacity = @window_opacity[1]
   @spriteset = Spriteset_Map.new
   # ƒRƒ}ƒ"ƒhƒEƒBƒ"ƒhƒE,ðì¬
   
   # This section by Dubealex makes the menu appear centred around the actor.
   if $game_player.screen_x >= 360
     px = $game_player.screen_x - 100
   elsif $game_player.screen_x <= 100
     px = $game_player.screen_x + 100
   else
     px = $game_player.screen_x - 15
   end
   if $game_player.screen_y >= 400
     py = $game_player.screen_y - 100
   elsif $game_player.screen_y <= 100
     py = $game_player.screen_y + 100
   else
     py = $game_player.screen_y - 24
   end
   @command_window = Window_RingMenu.new(px,py)
   
   @command_window.index = @menu_index
   # ƒp[ƒeƒBl",ª 0 l,̏ꍇ
    # If number of party members is 0
      if $game_party.actors.size == 0
        # Disable items, skills, equipment, status and save
        @command_window.disable_item(0)
        @command_window.disable_item(1)
        @command_window.disable_item(2)
        @command_window.disable_item(3)
        @command_window.disable_item(4)
      end
   @command_window.z = 100
    # If save is forbidden
      if $game_system.save_disabled
        # Disable save
        @command_window.disable_item(4)
      end
   # ƒXƒe[ƒ^ƒXƒEƒBƒ"ƒhƒE,ðì¬
   @party_window = Window_RingMenuParty.new
   @party_window.x = 148
   @party_window.z = 200
   @party_window.height = 128
   @party_window.opacity=255
   @party_window.back_opacity=255
   @party_window.visible = true
   @party_window.active = false
   
#--------------------------------------------------------------------------
# This new section was suggested by Starrodkirby86 - Thanks! ;)
# It determines where to move the addon menu windows according to the player's
# position - to the top or to the bottom of the screen.
#--------------------------------------------------------------------------   
    if $game_player.screen_y < 352
     @playtime_window.y = 352
     @steps_window.y = 352
     @gold_window.y = 416
     @status_window.y = -320
     @party_window.y = 352
     @item_window.y = -200
     @end_window.y = -192
    elsif $game_player.screen_y >= 352
     @playtime_window.y = 0
     @steps_window.y = 0
     @gold_window.y = 64
     @status_window.y = 800
     @party_window.y = 0
     @item_window.y = 480
     @end_window.y = 480
    end
   
   # ƒ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,ð‰ð•ú
   @playtime_window.dispose
   @steps_window.dispose
   @gold_window.dispose
   @status_window.dispose
   @command_window.dispose
   @party_window.dispose
   @item_window.dispose
   @end_window.dispose
end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV
#--------------------------------------------------------------------------
def update
   # ƒEƒBƒ"ƒhƒE,ðXV
   @playtime_window.update
   @steps_window.update
   @gold_window.update
   @status_window.update
   @command_window.update
   @item_window.update
   @end_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_party ,ðŒÄ,Ô
   if @party_window.active
     @party_window.update
     update_party
     return
   end
   if @status_window.active
     if $game_player.screen_y < 352
       if @status_window.y < 16
         @status_window.y += 16 # This animates the window
       end
     elsif $game_player.screen_y >= 352
       if @status_window.y > 144
         @status_window.y -= 16 # This animates the window
       end
     end
      update_playerstatus
      return
    end
  if @item_window.active
    if $game_player.screen_y < 352
      if @item_window.y <= 270
        @item_window.y += 10 # This animates the windw
      end
    elsif $game_player.screen_y >= 352
      if @item_window.y > 0
        @item_window.y -= 10 # This animates the window
      end
    end
    @party_window.visible = false
    update_tele
    return
  end
  if @end_window.active
    if $game_player.screen_y < 352
      if @end_window.y <= 347
        @end_window.y += 10
      end
    elsif $game_player.screen_y >= 352
      if @end_window.y > 0
        @end_window.y -= 10
      end
    end
    @party_window.visible = false
    @end_window.visible = true
    update_end
    return
  end
end
 
  def update_playerstatus
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      if $game_player.screen_y < 352
        @status_window.y = -320
      else
        @status_window.y = 800
      end
      @status_window.active = false
      @party_window.active = true
    end
  end
#--------------------------------------------------------------------------
  # * Frame Update (when command window is active)
  #--------------------------------------------------------------------------
  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  # item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to item screen
        $scene = Scene_Item.new
    when 1  # skill
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @party_window.active = true
        @party_window.visible = true
        @party_window.index = 0
    when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @party_window.active = true
        @party_window.visible = true
        @party_window.index = 0
    when 3 # Status selected
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @party_window.active = true
        @party_window.visible = true
        @party_window.index = 0
    when 4 # Teleport selected
        $game_system.se_play($data_system.decision_se)
        @command_window.active = false
        @item_window.active = true
        @item_window.visible = true
        @item_window.index = 0
    when 5  # end game
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to end game screen
        @command_window.active = false
        @end_window.active = true
    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
def update_tele
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      @item_window.active = false
      if $game_player.screen_y < 352
        if @item_window.y <= 480
          @item_window.y += 10 # This animates the windw
        end
      @item_window.visible = false
      @party_window.visible = true
      @command_window.active = true
      elsif $game_player.screen_y >= 352
        if @item_window.y > -200
          @item_window.y -= 10 # This animates the window
        end
      @item_window.visible = false
      @party_window.visible = true
      @command_window.active = true
      end
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get currently selected data on the item window
      @item = @item_window.item
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      $game_temp.player_transferring = true
      # Set player move destination
      $game_temp.player_new_map_id = @item[1]
      $game_temp.player_new_x = @item[2]
      $game_temp.player_new_y = @item[3]
      $game_temp.player_new_direction = @item[4]
      $scene = Scene_Map.new
      return
    end
  end
  def update_end
    # Update command window
    @end_window.update
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      @end_window.active = false
      @end_window.visible = false
      @command_window.active = true
      @party_window.visible = true
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @end_window.index
      when 0  # to title
         # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Fade out BGM, BGS, and ME
        Audio.bgm_fade(800)
        Audio.bgs_fade(800)
        Audio.me_fade(800)
        # Switch to title screen
        $scene = Scene_Title.new
      when 1  # shutdown
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Fade out BGM, BGS, and ME
        Audio.bgm_fade(800)
        Audio.bgs_fade(800)
        Audio.me_fade(800)
        # Shutdown
        $scene = nil
      when 2  # quit
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to menu screen
        @end_window.active = false
        @end_window.visible = false
        @command_window.active = true
        @party_window.visible = true
      end
      return
    end
  end
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒXƒe[ƒ^ƒXƒEƒBƒ"ƒhƒE,ªƒAƒNƒeƒBƒu,̏ꍇ)
#--------------------------------------------------------------------------
def update_party
   # 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
     @party_window.active = false
     @party_window.index = -1
     return
   end
   # C ƒ{ƒ^ƒ",ª‰Ÿ,³,ê,½ê‡
  if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 1  # skill
        # If this actor's action limit is 2 or more
        if $game_party.actors[@party_window.index].restriction >= 2
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to skill screen
        $scene = Scene_Skill.new(@party_window.index)
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to equipment screen
        $scene = Scene_Equip.new(@party_window.index)
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to status screen
        @actor = $game_party.actors[@party_window.index]
        @status_window.update_actor(@actor)
        @status_window.active = true
        @party_window.active = false
      end
      return
    end
end
end
#===============================================================================
# ▲ CLASS Scene_Menu Ends
#===============================================================================

#===============================================================================
# ▼ CLASS Window_RingMenu Begins
# This is mostly the original ring menu script and was not created by me.
# Therefore I have left the (unreadble) comments untouched.
# Some minor modifcations have been made to accomodate extra menu entries.
#===============================================================================
class Window_RingMenu < Window_Base
#--------------------------------------------------------------------------
# › ƒNƒ‰ƒX'è"
#--------------------------------------------------------------------------
STARTUP_FRAMES = 20
MOVING_FRAMES = 5   
RING_R = 64     
ICON_ITEM    = RPG::Cache.icon(RM_CFG::Item_Icon)
ICON_SKILL   = RPG::Cache.icon(RM_CFG::Skill_Icon)
ICON_EQUIP   = RPG::Cache.icon(RM_CFG::Equip_Icon)
ICON_STATUS  = RPG::Cache.icon(RM_CFG::Status_Icon)
ICON_SAVE    = RPG::Cache.icon(RM_CFG::Save_Icon)
ICON_EXIT    = RPG::Cache.icon(RM_CFG::Exit_Icon)
ICON_DISABLE = RPG::Cache.icon(RM_CFG::Disabled_Icon)
SE_STARTUP = RM_CFG::Openmenu_Se
MODE_START = 1
MODE_WAIT  = 2
MODE_MOVEL = 3
MODE_MOVER = 4
#--------------------------------------------------------------------------
# › ƒAƒNƒZƒT
#--------------------------------------------------------------------------
attr_accessor :index
#--------------------------------------------------------------------------
# The stuff in the section below can be accomodated for new menu entries
#--------------------------------------------------------------------------
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]
   # I changed this to prevent glitches when modifying the number of menu items
   @item_max = @commands.size
   @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_menu_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_menu_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_menu_item(x, y, i)
   end
   @steps -= 1
   if @steps < 1
     @mode = MODE_WAIT
   end
end
#--------------------------------------------------------------------------
# œ €-Ú,Ì•`‰æ
#     x :
#     y :
#     i : €-Ú"ԍ†
#--------------------------------------------------------------------------
def draw_menu_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_RingMenuParty Begins
#===============================================================================

class Window_RingMenuParty < Window_Selectable
#--------------------------------------------------------------------------
# Sets up the new actor selection window
#--------------------------------------------------------------------------
def initialize
   super(0, 0, 344, 128)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.size = 20
   refresh
   self.active = false
   self.index = -1
end
#--------------------------------------------------------------------------
# Draws the party's actors and their info into the window
#--------------------------------------------------------------------------
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 = 86 * i
     y = 0
     actor = $game_party.actors[i]
     draw_actor_graphic(actor, x+24, y+48)
     draw_actor_name(actor, x-8, y+32+14)
     draw_actor_level(actor, x, y + 48+14)
   end
end
#--------------------------------------------------------------------------
# Defines the drawing processes
#--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 64, 32, actor.name, 1)
  end
  def draw_actor_level(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, "Lvl")
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 24, y, 24, 32, actor.level.to_s, 2)
  end
#--------------------------------------------------------------------------
# Updates the selection rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
   if @index < 0 or @index > $game_party.actors.size - 1
     self.cursor_rect.empty
     return
   elsif @index >= 0 and @index <= $game_party.actors.size - 1
     self.cursor_rect.set((@index * 86)-7, 0, 64, 96)
   end
end
#--------------------------------------------------------------------------
# Moves the cursor rectangle and prevents it from going off the screen
#--------------------------------------------------------------------------
def update
   if @index >= 0 and @index <= $game_party.actors.size - 1
     if Input.repeat?(Input::RIGHT)
          $game_system.se_play($data_system.cursor_se)
          @index += 1
     end
     if Input.repeat?(Input::LEFT)
          $game_system.se_play($data_system.cursor_se)
          @index -= 1
     end
     update_cursor_rect
   elsif @index < 0
     @index = $game_party.actors.size - 1
   elsif @index > $game_party.actors.size - 1
     @index = 0
   else
     self.cursor_rect.empty
     return
   end
end
end
#===============================================================================
# ▲ CLASS Window_RingMenuParty Ends
#===============================================================================

#===============================================================================
# ▼ CLASS Game_Map Additional Code Begins
#===============================================================================
class Game_Map
#Dubealex Addition (from XRXS) to show Map Name on screen
# This is also necessary for the new Window_Steps
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
# This is also necessary for the new Window_Steps
   $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
#===============================================================================

#===============================================================================
# ▲ Ring Menu Script Ends
#===============================================================================


Please do not extract the teleport menu from the menu... It was made by shdwlink1993 and if you want it go to his thread.

Edit:
Just realized that you can't test it out if I have some of the stuff I have in there so I took some of it out so you can test it.