| 
	   
	    | 
		    
			  | Spellcaster ->   RE: Rpg Maker Xp Q&A   (7/27/2005 11:17:05) |  
			  | 
 quote:
 ORIGINAL:  Xyiphis Dragonmaster
 
 k I'll go get links and bestary right now
 Edit:I got the ring menu I'll find the other
 
 
 quote:
 Code
 
 #==============================================================================
 # ■ Window_RingMenu
 #==============================================================================
 #==============================================================================
 # Edited by SiR_VaIlHoR
 #==============================================================================
 class Window_RingMenu < Window_Base
 #--------------------------------------------------------------------------
 # ○ クラス定数
 #--------------------------------------------------------------------------
 STARTUP_FRAMES = 20 # 初期アニメーションのフレーム数
 MOVING_FRAMES = 5   # リングを回した時のフレーム数
 RING_R = 64         # リングの半径
 ICON_ITEM   = RPG::Cache.icon("034-Item03") # 「アイテム」メニューのアイコン
 ICON_SKILL  = RPG::Cache.icon("044-Skill01") # 「スキル」メニューのアイコン
 ICON_EQUIP  = RPG::Cache.icon("001-Weapon01") # 「装備」メニューのアイコン
 ICON_STATUS = RPG::Cache.icon("050-Skill07") # 「ステータス」メニューのアイコン
 ICON_SAVE   = RPG::Cache.icon("038-Item07") # 「セーブ」メニューのアイコン
 ICON_EXIT   = RPG::Cache.icon("046-Skill03") # 「終了」メニューのアイコン
 ICON_DISABLE= RPG::Cache.icon("") # 使用禁止項目に付くアイコン
 SE_STARTUP = "056-Right02" # メニューを開いたときに鳴らすSE
 MODE_START = 1 # スタートアップアニメーション
 MODE_WAIT  = 2 # 待機
 MODE_MOVER = 3 # 時計回り回転アニメーション
 MODE_MOVEL = 4 # 反時計回り回転アニメーション
 #--------------------------------------------------------------------------
 # ○ アクセサ
 #--------------------------------------------------------------------------
 attr_accessor :index
 #--------------------------------------------------------------------------
 # ● オブジェクト初期化
 #--------------------------------------------------------------------------
 def initialize( center_x, center_y )
 super(0, 0, 640, 480)
 self.contents = Bitmap.new(width-32, height-32)
 self.contents.font.name = "Arial"
 self.opacity = 0
 self.back_opacity = 0
 s1 = "Objet"
 s2 = "Comp騁ence"
 s3 = "Equiper"
 s4 = "Etat"
 s5 = "Sauvegarder"
 s6 = "Quitter"
 @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
 #--------------------------------------------------------------------------
 # ● フレーム更新
 #--------------------------------------------------------------------------
 def update
 super
 refresh
 end
 #--------------------------------------------------------------------------
 # ● 画面再描画
 #--------------------------------------------------------------------------
 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
 #--------------------------------------------------------------------------
 # ○ 画面再描画(初期化時)
 #--------------------------------------------------------------------------
 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=反時計回り 1=時計回り
 #--------------------------------------------------------------------------
 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.to_s
 rect = Rect.new(0, 0, @items.width, @items.height)
 if @index == i
 self.contents.blt( x, y, @items, rect )
 if @disabled[@index]
 self.contents.blt( x, y, ICON_DISABLE, rect )
 end
 else
 self.contents.blt( x, y, @items, 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
 #--------------------------------------------------------------------------
 # ○ 初期化アニメーションの準備
 #--------------------------------------------------------------------------
 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
 #--------------------------------------------------------------------------
 # ○ 回転アニメーションの準備
 #--------------------------------------------------------------------------
 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
 #--------------------------------------------------------------------------
 # ○ アニメーション中かどうか
 #--------------------------------------------------------------------------
 def animation?
 return @mode != MODE_WAIT
 end
 end
 #==============================================================================
 # ■ Window_MenuStatus
 #------------------------------------------------------------------------------
 #  メニュー画面でパーティメンバーのステータスを表示するウィンドウです。
 #==============================================================================
 
 class Window_RingMenuStatus < Window_Selectable
 #--------------------------------------------------------------------------
 # ● オブジェクト初期化
 #--------------------------------------------------------------------------
 def initialize
 super(204, 64, 232, 352)
 self.contents = Bitmap.new(width - 32, height - 32)
 refresh
 self.active = false
 self.index = -1
 end
 #--------------------------------------------------------------------------
 # ● リフレッシュ
 #--------------------------------------------------------------------------
 def refresh
 self.contents.clear
 self.contents.font.name = "Arial"
 @item_max = $game_party.actors.size
 for i in 0...$game_party.actors.size
 x = 80
 y = 80 * i
 actor = $game_party.actors
 draw_actor_graphic(actor, x - 40, y + 80)
 draw_actor_name(actor, x, y + 24)
 end
 end
 #--------------------------------------------------------------------------
 # ● カーソルの矩形更新
 #--------------------------------------------------------------------------
 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
 #==============================================================================
 # #■ Scene_RingMenu
 # ■ Scene_Menu
 #------------------------------------------------------------------------------
 #  メニュー画面の処理を行うクラスです。
 #==============================================================================
 
 #class Scene_RingMenu
 class Scene_Menu
 #--------------------------------------------------------------------------
 # ● オブジェクト初期化
 #     menu_index : コマンドのカーソル初期位置
 #--------------------------------------------------------------------------
 def initialize(menu_index = 0)
 @menu_index = menu_index
 end
 #--------------------------------------------------------------------------
 # ● メイン処理
 #--------------------------------------------------------------------------
 def main
 # スプライトセットを作成
 @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
 # パーティ人数が 0 人の場合
 if $game_party.actors.size == 0
 # アイテム、スキル、装備、ステータスを無効化
 @command_window.disable_item(0)
 @command_window.disable_item(1)
 @command_window.disable_item(2)
 @command_window.disable_item(3)
 end
 @command_window.z = 100
 # セーブ禁止の場合
 if $game_system.save_disabled
 # セーブを無効にする
 @command_window.disable_item(4)
 end
 # ステータスウィンドウを作成
 @status_window = Window_RingMenuStatus.new
 @status_window.x = 160
 @status_window.y = 0
 @status_window.z = 200
 @status_window.visible = false
 # トランジション実行
 Graphics.transition
 # メインループ
 loop do
 # ゲーム画面を更新
 Graphics.update
 # 入力情報を更新
 Input.update
 # フレーム更新
 update
 # 画面が切り替わったらループを中断
 if $scene != self
 break
 end
 end
 # トランジション準備
 Graphics.freeze
 # スプライトセットを解放
 @spriteset.dispose
 # ウィンドウを解放
 @command_window.dispose
 @status_window.dispose
 end
 #--------------------------------------------------------------------------
 # ● フレーム更新
 #--------------------------------------------------------------------------
 def update
 # ウィンドウを更新
 @command_window.update
 @status_window.update
 # コマンドウィンドウがアクティブの場合: update_command を呼ぶ
 if @command_window.active
 update_command
 return
 end
 # ステータスウィンドウがアクティブの場合: update_status を呼ぶ
 if @status_window.active
 update_status
 return
 end
 end
 #--------------------------------------------------------------------------
 # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
 #--------------------------------------------------------------------------
 def update_command
 # B ボタンが押された場合
 if Input.trigger?(Input::B)
 # キャンセル SE を演奏
 $game_system.se_play($data_system.cancel_se)
 # マップ画面に切り替え
 $scene = Scene_Map.new
 return
 end
 # C ボタンが押された場合
 if Input.trigger?(Input::C)
 # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合
 if $game_party.actors.size == 0 and @command_window.index < 4
 # ブザー SE を演奏
 $game_system.se_play($data_system.buzzer_se)
 return
 end
 # コマンドウィンドウのカーソル位置で分岐
 case @command_window.index
 when 0  # アイテム
 # 決定  SE を演奏
 $game_system.se_play($data_system.decision_se)
 # アイテム画面に切り替え
 $scene = Scene_Item.new
 when 1  # スキル
 # 決定 SE を演奏
 $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  # 装備
 # 決定 SE を演奏
 $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  # ステータス
 # 決定 SE を演奏
 $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  # セーブ
 # セーブ禁止の場合
 if $game_system.save_disabled
 # ブザー SE を演奏
 $game_system.se_play($data_system.buzzer_se)
 return
 end
 # 決定 SE を演奏
 $game_system.se_play($data_system.decision_se)
 # セーブ画面に切り替え
 $scene = Scene_Save.new
 when 5  # ゲーム終了
 # 決定 SE を演奏
 $game_system.se_play($data_system.decision_se)
 # ゲーム終了画面に切り替え
 $scene = Scene_End.new
 end
 return
 end
 # アニメーション中ならカーソルの処理を行わない
 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_status
 # B ボタンが押された場合
 if Input.trigger?(Input::B)
 # キャンセル SE を演奏
 $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
 # C ボタンが押された場合
 if Input.trigger?(Input::C)
 # コマンドウィンドウのカーソル位置で分岐
 case @command_window.index
 when 1  # スキル
 # このアクターの行動制限が 2 以上の場合
 if $game_party.actors[@status_window.index].restriction >= 2
 # ブザー SE を演奏
 $game_system.se_play($data_system.buzzer_se)
 return
 end
 # 決定 SE を演奏
 $game_system.se_play($data_system.decision_se)
 # スキル画面に切り替え
 $scene = Scene_Skill.new(@status_window.index)
 when 2  # 装備
 # 決定 SE を演奏
 $game_system.se_play($data_system.decision_se)
 # 装備画面に切り替え
 $scene = Scene_Equip.new(@status_window.index)
 when 3  # ステータス
 # 決定 SE を演奏
 $game_system.se_play($data_system.decision_se)
 # ステータス画面に切り替え
 $scene = Scene_Status.new(@status_window.index)
 end
 return
 end
 end
 end
 
 
 
 where do i put this in the script
 
 |   
	          | 
 |  |  |