| Dernières réponses | | | | Ce menu permet de remplacer l'ancien menu par un menu en anneau tournant au dessu de la tete Creer un nouveau script et nommé le Ring_Menu. Collez ce script a droite Code : #============================================================================== # Â�¡ Window_RingMenu #============================================================================== #============================================================================== # Edited by MakirouAru #============================================================================== class Window_RingMenu < Window_Base #-------------------------------------------------------------------------- # Â�› ƒNƒ‰ƒX’èÂ�” #-------------------------------------------------------------------------- STARTUP_FRAMES = 20 # Â�‰ŠúƒAƒjƒÂ�Â�[ƒVƒ‡ƒ“‚̃tƒŒÂ�[ƒ€Â�” MOVING_FRAMES = 5 # ƒŠƒ“ƒO‚ð‰ñ‚µ‚½Žž‚̃tƒŒÂ�[ƒ€Â�” RING_R = 64 # ƒŠƒ“ƒO‚Ì”¼Œa ICON_ITEM = RPG::Cache.icon("034-Item03") # Â�uƒAƒCƒeƒ€Â�vƒÂ�ƒjƒ…Â�[‚̃AƒCƒRƒ“ ICON_SKILL = RPG::Cache.icon("044-Skill01") # Â�uƒXƒLƒ‹Â�vƒÂ�ƒjƒ…Â�[‚̃AƒCƒRƒ“ ICON_EQUIP = RPG::Cache.icon("001-Weapon01") # Â�u‘•”õÂ�vƒÂ�ƒjƒ…Â�[‚̃AƒCƒRƒ“ ICON_STATUS = RPG::Cache.icon("050-Skill07") # Â�uƒXƒeÂ�[ƒ^ƒXÂ�vƒÂ�ƒjƒ…Â�[‚̃AƒCƒRƒ“ ICON_SAVE = RPG::Cache.icon("038-Item07") # Â�uƒZÂ�[ƒuÂ�vƒÂ�ƒjƒ…Â�[‚̃AƒCƒRƒ“ ICON_EXIT = RPG::Cache.icon("046-Skill03") # Â�uÂ�I—¹Â�vƒÂ�ƒjƒ…Â�[‚̃AƒCƒRƒ“ ICON_DISABLE= RPG::Cache.icon("") # ÂŽg—p‹ÖŽ~Â�€–ڂÉ•t‚ƒAƒCƒRƒ“ SE_STARTUP = "056-Right02" # ƒÂ�ƒjƒ…Â�[‚ðŠJ‚¢‚½‚Æ‚«‚É–‚炷SE MODE_START = 1 # ƒXƒ^Â�[ƒgƒAƒbƒvƒAƒjƒÂ�Â�[ƒVƒ‡ƒ“ MODE_WAIT = 2 # ‘ҋ@ MODE_MOVER = 3 # ŽžŒv‰ñ‚è‰ñ“]ƒAƒjƒÂ�Â�[ƒVƒ‡ƒ“ MODE_MOVEL = 4 # ”½ŽžŒv‰ñ‚è‰ñ“]ƒAƒjƒÂ�Â�[ƒVƒ‡ƒ“ #-------------------------------------------------------------------------- # Â�› ƒ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 = "Arial" self.opacity = 0 self.back_opacity = 0 s1 = "Items" s2 = "Skills" s3 = "Equip" s4 = "Stats" s5 = "Save" s6 = "Quit" @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 #============================================================================== # Â�¡ Window_MenuStatus #------------------------------------------------------------------------------ # Â�@ƒÂ�ƒjƒ…Â�[‰æ–ʂŃpÂ�[ƒeƒBƒÂ�ƒ“ƒoÂ�[‚̃XƒeÂ�[ƒ^ƒX‚ð•ަ‚·‚éƒEƒBƒ“ƒhƒE‚Å‚·Â�B #============================================================================== 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) refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # Â�œ ƒŠƒtƒŒÂƒbƒVƒ… #-------------------------------------------------------------------------- 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[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 #============================================================================== # #Â�¡ Scene_RingMenu # Â�¡ Scene_Menu #------------------------------------------------------------------------------ # Â�@ƒÂ�ƒjƒ…Â�[‰æ–ʂÌÂ�ˆ—Â�‚ðÂ�s‚¤ƒNƒ‰ƒX‚Å‚·Â�B #============================================================================== #class Scene_RingMenu class Scene_Menu #-------------------------------------------------------------------------- # Â�œ ƒIƒuƒWƒFƒNƒgÂ�‰Šú‰» # menu_index : ƒRƒ}ƒ“ƒh‚̃JÂ�[ƒƒ‹Â�‰ŠúˆÊ’u #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end #-------------------------------------------------------------------------- # Â�œ ƒÂ�ƒCƒ“Â�ˆ—Â� #-------------------------------------------------------------------------- def main # ƒ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 = 160 @status_window.y = 0 @status_window.z = 200 @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‚ð‰ð•ú @command_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # Â�œ ƒtƒŒÂ�[ƒ€Â�XÂ�V #-------------------------------------------------------------------------- def update # ƒEƒBƒ“ƒhƒE‚ðÂ�XÂ�V @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 |
|
|