Sujet : Ring menu v.1 | | Posté le 10-07-2006 à 16:54:14
| 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 #-------------------------------------------------------------------------- # NX’è” #-------------------------------------------------------------------------- STARTUP_FRAMES = 20 # úAj[V“ÌtŒ[” MOVING_FRAMES = 5 # “Oðñµ½ÌtŒ[” RING_R = 64 # “OÌ”¼Œa ICON_ITEM = RPG::Cache.icon("034-Item03" # uACevj…[ÌACR“ ICON_SKILL = RPG::Cache.icon("044-Skill01" # uXLvj…[ÌACR“ ICON_EQUIP = RPG::Cache.icon("001-Weapon01" # u‘•”õvj…[ÌACR“ ICON_STATUS = RPG::Cache.icon("050-Skill07" # uXe[^Xvj…[ÌACR“ ICON_SAVE = RPG::Cache.icon("038-Item07" # uZ[uvj…[ÌACR“ ICON_EXIT = RPG::Cache.icon("046-Skill03" # uI—¹vj…[ÌACR“ ICON_DISABLE= RPG::Cache.icon("" # g—pÖ~&ndashÚÉ•tACR“ SE_STARTUP = "056-Right02" # j…[ðJ¢½Æ«É&ndashÂç·SE MODE_START = 1 # X^[gAbvAj[V“ MODE_WAIT = 2 # ‘Ò@ MODE_MOVER = 3 # Œvñèñ“]Aj[V“ MODE_MOVEL = 4 # ”½Œvñèñ“]Aj[V“ #-------------------------------------------------------------------------- # ANZT #-------------------------------------------------------------------------- attr_accessor :index #-------------------------------------------------------------------------- # œ IuWFNgú» #-------------------------------------------------------------------------- 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Œ[XV #-------------------------------------------------------------------------- def update super refresh end #-------------------------------------------------------------------------- # œ æ&ndashÊÄ•`æ #-------------------------------------------------------------------------- def refresh self.contents.clear # ACR“ð•`æ 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 # ANeBuÈR}“h&ndash¼•¦ rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32) self.contents.draw_text(rect, @commands[@index],1) end #-------------------------------------------------------------------------- # æ&ndashÊÄ•`æ(ú») #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # æ&ndashÊÄ•`æ(‘Ò@) #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # æ&ndashÊÄ•`æ(ñ“]) # 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 #-------------------------------------------------------------------------- # œ &ndashÚÌ•`æ # x : # y : # i : &ndashÚ”Ô #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # œ &ndashÚð&ndash³ŒøÉ·é # index : &ndashÚ”Ô #-------------------------------------------------------------------------- def disable_item(index) @disabled[index] = true end #-------------------------------------------------------------------------- # ú»Aj[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 #-------------------------------------------------------------------------- # ñ“]Aj[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 #-------------------------------------------------------------------------- # Aj[V“’©Ç¤© #-------------------------------------------------------------------------- def animation? return @mode != MODE_WAIT end end #============================================================================== # ¡ Window_MenuStatus #------------------------------------------------------------------------------ # @j…[æ&ndashÊÅp[eB“o[ÌXe[^X𕦷éEB“hEÅ·B #============================================================================== class Window_RingMenuStatus < Window_Selectable #-------------------------------------------------------------------------- # œ IuWFNgú» #-------------------------------------------------------------------------- def initialize super(204, 64, 232, 352) self.contents = Bitmap.new(width - 32, height - 32) refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # œ tŒbV… #-------------------------------------------------------------------------- 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[ÌéŒ`XV #-------------------------------------------------------------------------- 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…[æ&ndashÊÌ—ðs¤NXÅ·B #============================================================================== #class Scene_RingMenu class Scene_Menu #-------------------------------------------------------------------------- # œ IuWFNgú» # menu_index : R}“hÌJ[úÊ’u #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end #-------------------------------------------------------------------------- # œ C“— #-------------------------------------------------------------------------- def main # XvCgZbgðì¬ @spriteset = Spriteset_Map.new # R}“hEB“hEðì¬ 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[eBl”ª 0 lÌê if $game_party.actors.size == 0 # ACeAXLA‘•”õAXe[^Xð&ndash³Œø» @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ð&ndash³ŒøÉ·é @command_window.disable_item(4) end # Xe[^XEB“hEðì¬ @status_window = Window_RingMenuStatus.new @status_window.x = 160 @status_window.y = 0 @status_window.z = 200 @status_window.visible = false # g“WV“Às Graphics.transition # C“[v loop do # Q[æ&ndashÊðXV Graphics.update # “ü—Íî•ñðXV Input.update # tŒ[XV update # æ&ndashʪØè‘ÖíÁ½ç[vð’’f if $scene != self break end end # g“WV“”õ Graphics.freeze # XvCgZbgðð•ú @spriteset.dispose # EB“hEðð•ú @command_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # œ tŒ[XV #-------------------------------------------------------------------------- def update # EB“hEðXV @command_window.update @status_window.update # R}“hEB“hEªANeBuÌê: update_command ðŒÄÔ if @command_window.active update_command return end # Xe[^XEB“hEªANeBuÌê: update_status ðŒÄÔ if @status_window.active update_status return end end #-------------------------------------------------------------------------- # œ tŒ[XV (R}“hEB“hEªANeBuÌê) #-------------------------------------------------------------------------- def update_command # B {^“ª³ê½ê if Input.trigger?(Input::B) # L“Z SE ð‘t $game_system.se_play($data_system.cancel_se) # }bvæ&ndashÊÉØè‘Ö¦ $scene = Scene_Map.new return end # C {^“ª³ê½ê if Input.trigger?(Input::C) # p[eBl”ª 0 lÅAZ[uAQ[I—¹ÈOÌR}“hÌê if $game_party.actors.size == 0 and @command_window.index < 4 # uU[ SE ð‘t $game_system.se_play($data_system.buzzer_se) return end # R}“hEB“hEÌJ[Ê’uÅ•ªò case @command_window.index when 0 # ACe # Œ’è SE ð‘t $game_system.se_play($data_system.decision_se) # ACeæ&ndashÊÉØè‘Ö¦ $scene = Scene_Item.new when 1 # XL # Œ’è SE ð‘t $game_system.se_play($data_system.decision_se) # Xe[^XEB“hEðANeBuÉ·é @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) # Xe[^XEB“hEðANeBuÉ·é @command_window.active = false @status_window.active = true @status_window.visible = true @status_window.index = 0 when 3 # Xe[^X # Œ’è SE ð‘t $game_system.se_play($data_system.decision_se) # Xe[^XEB“hEðANeBuÉ·é @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 # uU[ SE ð‘t $game_system.se_play($data_system.buzzer_se) return end # Œ’è SE ð‘t $game_system.se_play($data_system.decision_se) # Z[uæ&ndashÊÉØè‘Ö¦ $scene = Scene_Save.new when 5 # Q[I—¹ # Œ’è SE ð‘t $game_system.se_play($data_system.decision_se) # Q[I—¹æ&ndashÊÉØè‘Ö¦ $scene = Scene_End.new end return end # Aj[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Œ[XV (Xe[^XEB“hEªANeBuÌê) #-------------------------------------------------------------------------- def update_status # B {^“ª³ê½ê if Input.trigger?(Input::B) # L“Z SE ð‘t $game_system.se_play($data_system.cancel_se) # R}“hEB“hEðANeBuÉ·é @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}“hEB“hEÌJ[Ê’uÅ•ªò case @command_window.index when 1 # XL # ±ÌAN^[Ìs“®§ŒÀª 2 ÈãÌê if $game_party.actors[@status_window.index].restriction >= 2 # uU[ SE ð‘t $game_system.se_play($data_system.buzzer_se) return end # Œ’è SE ð‘t $game_system.se_play($data_system.decision_se) # XLæ&ndashÊÉØè‘Ö¦ $scene = Scene_Skill.new(@status_window.index) when 2 # ‘•”õ # Œ’è SE ð‘t $game_system.se_play($data_system.decision_se) # ‘•”õæ&ndashÊÉØè‘Ö¦ $scene = Scene_Equip.new(@status_window.index) when 3 # Xe[^X # Œ’è SE ð‘t $game_system.se_play($data_system.decision_se) # Xe[^Xæ&ndashÊÉØè‘Ö¦ $scene = Scene_Status.new(@status_window.index) end return end end end |
| | Posté le 10-07-2006 à 17:01:13
| |
|
|
|