MaKi’s Ring Menu [RMXP]
MaKi's Ring Menu é um script que troca o menu padrão de um projeto do RPG Maker XP por um com ícones em volta do herói, o circulando. Dá um aspecto bem diferente ao jogo e pode ser customizado e traduzido.
MaKi’s Ring Menu é um script feito por MaKi e editado por Dubealex que modifica o menu padrão do RPG Maker XP, por um que coloca ícones em volta do herói, o circulando. Por isso o nome Ring, que significa “Anel” em inglês). Além disto, ele também abre uma janela que mostra o nome do mapa onde o herói está.
Dá um aspecto bem diferente pro seu jogo/projeto e pode ser customizado e traduzido. Para isto, procure a seção: # ¦ Ring Menu Customization Section: (By Dubealex)
e veja os parâmetros e linhas que podem ser alteradas.
Também é de fácil instalação, bastando inserir um novo script acima do “Main” e copiar e colar o seguinte código:
#=================================================== # ヲ 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 #-------------------------------------------------------------------------- # ?・オブジェクト?炎匀サ # menu_index : コマンドのカ?[ソル?炎勛ハ置 #-------------------------------------------------------------------------- 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]="Localização:" # 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]="Habilidades" # Skills Menu Text $ring_menu_text[3]="Equipamento" # Equip Menu Text $ring_menu_text[4]="Status" # Stats Menu Text $ring_menu_text[5]="Salvar" # Save Menu Text $ring_menu_text[6]="Sair" # 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 #-------------------------------------------------------------------------- # ?・・イン?・? #-------------------------------------------------------------------------- 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 # スプライトセットを?・ャ @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 # パ?[ティ?l?狽ェ 0 ?lの?・・ if $game_party.actors.size == 0 # アイテム?Aスキル?A装備?Aステ?[タスを無効化 @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 = @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 # トランジション実?s Graphics.transition # ・インル?[プ loop do # ゲ?[ム画面を?X?V Graphics.update # 入力?﨣・X?V Input.update # フレ?[ム?X?V update # 画面が?リり替わったらル?[プを中断 if $scene != self break end end # トランジション?備 Graphics.freeze # スプライトセットを解放 @spriteset.dispose # ウィンドウを解放 if @show_location_window==true @window_location.dispose end @command_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # ?・フレ?[ム?X?V #-------------------------------------------------------------------------- def update # ウィンドウを?X?V if @show_location_window==true @window_location.update end @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 #-------------------------------------------------------------------------- # ?・フレ?[ム?X?V (コマンドウィンドウがアクティブの?・・ #-------------------------------------------------------------------------- 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) # パ?[ティ?l?狽ェ 0 ?lで?Aセ?[ブ?Aゲ?[ム?I了以外のコマンドの?・・ 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 # ゲ?[ム?I了 # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # ゲ?[ム?I了画面に?リり替え $scene = Scene_End.new end return end # アニ・?[ション中ならカ?[ソルの?・?を?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 #-------------------------------------------------------------------------- # ?・フレ?[ム?X?V (ステ?[タスウィンドウがアクティブの?・・ #-------------------------------------------------------------------------- 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 # スキル # このアクタ?[の?s動?ァ限が 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 #=================================================== # ? CLASS Scene_Menu Ends #=================================================== #=================================================== # ? CLASS Window_RingMenu Begins #=================================================== 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" 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 = $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 #-------------------------------------------------------------------------- # ?・フレ?[ム?X?V #-------------------------------------------------------------------------- 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[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 #-------------------------------------------------------------------------- # ?・?炎匀サアニ・?[ションの?備 #-------------------------------------------------------------------------- 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 #=================================================== # ? CLASS Window_RingMenu Ends #=================================================== #=================================================== # ? CLASS Window_RingMenuStatus Begins #=================================================== class Window_RingMenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ?・オブジェクト?炎匀サ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ?・リフレッシュ #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # ?・カ?[ソルの矩形?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 #===================================================
Mais RMXP
Informações adicionais
- Categoria: Programação XP
- Tags: Custom Menu System, RPG Maker XP
- Adicionado por: LichKing
- Acessos: 142
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!
Você pode se interessar também por
Você pode acompanhar os comentários desse post através do feed RSS 2.0.
Deixe um comentário
Você pode criticar, elogiar, corrigir, complementar, reportar links quebrados (o que é muito importante) etc. Você pode até xingar a gente de palavrão se quiser, mas como não queremos ofender as crianças que nos visitam (e evitar choradeira dos frescos de plantão) não aprovaremos comentários com palavras chulas e/ou de baixo calão. Também não aprovaremos spam ou conteúdos ofensivos a outras partes. O seu link só será aprovado se for de algum site que esteja funcionando e não seja spam nem enganação. Dados pessoais não serão publicados. O conteúdo dos comentários é de inteira responsabilidade de seus autores.