MOG Menu Itigo (MOG_Scene_Menu) é um script desenvolvido pelo Moghunter que adiciona um com movimento e layout utilizando pictures num jogo ou projeto do RPG Maker XP.
Para utilizar, dê uma olhadinha na demo que está disponível para download, que já vem com as pictures e o script.
Para instalar, basta instalar o código abaixo acima do Main e adicionar as figuras na pasta Pictures
do seu projeto (veja na Demo como faz direitinho):
#_______________________________________________________________________________ # MOG Scene Menu Itigo V1.2 #_______________________________________________________________________________ # By Moghunter #_______________________________________________________________________________ if true # True = Enable / False = Disable (Script) module MOG #Transition Time. MNTT = 30 #Transition Type (Name) MNTP = "006-Stripe02" end $mogscript = {} if $mogscript == nil $mogscript["menu_itigo"] = true ############## # Game_Actor # ############## class Game_Actor < Game_Battler def now_exp return @exp - @exp_list[@level] end def next_exp return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0 end end ############### # Window_Base # ############### class Window_Base < Window def nada face = RPG::Cache.picture("") end def drw_face(actor,x,y) face = RPG::Cache.picture(actor.name + "_fc") rescue nada cw = face.width ch = face.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x , y - ch, face, src_rect) end def draw_maphp3(actor, x, y) back = RPG::Cache.picture("BAR0") cw = back.width ch = back.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 65, y - ch + 30, back, src_rect) meter = RPG::Cache.picture("HP_Bar") cw = meter.width * actor.hp / actor.maxhp ch = meter.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 65, y - ch + 30, meter, src_rect) text = RPG::Cache.picture("HP_Tx") cw = text.width ch = text.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 35, y - ch + 30, text, src_rect) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(x + 81, y - 1, 48, 32, actor.hp.to_s, 2) self.contents.font.color = Color.new(255,255,255,255) self.contents.draw_text(x + 80, y - 2, 48, 32, actor.hp.to_s, 2) end def draw_mapsp3(actor, x, y) back = RPG::Cache.picture("BAR0") cw = back.width ch = back.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 65, y - ch + 30, back, src_rect) meter = RPG::Cache.picture("SP_Bar") cw = meter.width * actor.sp / actor.maxsp ch = meter.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 65, y - ch + 30, meter, src_rect) text = RPG::Cache.picture("SP_Tx") cw = text.width ch = text.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 35, y - ch + 30, text, src_rect) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(x + 81, y - 1, 48, 32, actor.sp.to_s, 2) self.contents.font.color = Color.new(255,255,255,255) self.contents.draw_text(x + 80, y - 2, 48, 32, actor.sp.to_s, 2) end def draw_mexp2(actor, x, y) bitmap2 = RPG::Cache.picture("Exp_Back") cw = bitmap2.width ch = bitmap2.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 60 , y - ch + 30, bitmap2, src_rect) if actor.next_exp != 0 rate = actor.now_exp.to_f / actor.next_exp else rate = 1 end bitmap = RPG::Cache.picture("Exp_Meter") if actor.level < 99 cw = bitmap.width * rate else cw = bitmap.width end ch = bitmap.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 60 , y - ch + 30, bitmap, src_rect) exp_tx = RPG::Cache.picture("Exp_tx") cw = exp_tx.width ch = exp_tx.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 55 , y - ch + 30, exp_tx, src_rect) lv_tx = RPG::Cache.picture("LV_tx") cw = lv_tx.width ch = lv_tx.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 125 , y - ch + 35, lv_tx, src_rect) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(x + 161, y + 7, 24, 32, actor.level.to_s, 1) self.contents.font.color = Color.new(255,255,255,255) self.contents.draw_text(x + 160, y + 6, 24, 32, actor.level.to_s, 1) end def draw_actor_state2(actor, x, y, width = 120) text = make_battler_state_text(actor, width, true) self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color self.contents.draw_text(x, y, width, 32, text,1) end end ###################### # Window_MenuStatus2 # ###################### class Window_MenuStatus2 < Window_Selectable def initialize super(0, 0, 415, 280) self.contents = Bitmap.new(width - 32, height - 32) refresh self.active = false self.opacity = 0 self.index = -1 end def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 20 y = i * 62 actor = $game_party.actors[i] self.contents.font.name = "Georgia" drw_face(actor,x,y + 50) draw_maphp3(actor,x + 40, y - 5) draw_mapsp3(actor,x + 40, y + 20 ) draw_mexp2(actor,x + 140, y + 15 ) draw_actor_state2(actor ,x + 220, y - 5) end end def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(5, @index * 62, self.width - 32, 50) end end end ################ # Window_Gold2 # ################ class Window_Gold2 < Window_Base def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) refresh end def refresh self.contents.clear cx = contents.text_size($data_system.words.gold).width self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2) end end #################### # Window_PlayTime2 # #################### class Window_PlayTime2 < Window_Base def initialize super(0, 0, 160, 96) self.contents = Bitmap.new(width - 32, height - 32) refresh end def refresh self.contents.clear @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.font.color = normal_color self.contents.draw_text(4, 32, 120, 32, text, 2) end def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end ################# # Window_Steps2 # ################# class Window_Steps2 < Window_Base def initialize super(0, 0, 160, 96) self.contents = Bitmap.new(width - 32, height - 32) refresh end def refresh self.contents.clear self.contents.font.color = normal_color self.contents.draw_text(4, 32, 120, 32, $game_party.steps.to_s, 2) end end ############## # Scene_Menu # ############## class Scene_Menu def initialize(menu_index = 0) @menu_index = menu_index end def main s1 = "" s2 = "" s3 = "" s4 = "" s5 = "" s6 = "" @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6]) @command_window.index = @menu_index 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.visible = false @command_window.x = -640 @mnlay = Sprite.new @mnlay.bitmap = RPG::Cache.picture("Mn_lay") @mnlay.z = 10 @mnback = Plane.new @mnback.bitmap = RPG::Cache.picture("Mn_back") @mnback.blend_type = 0 @mnback.z = 5 @mnback2 = Plane.new @mnback2.bitmap = RPG::Cache.picture("Mn_back") @mnback2.blend_type = 0 @mnback2.z = 5 @mnback2.opacity = 60 @mnsel = Sprite.new @mnsel.bitmap = RPG::Cache.picture("Mn_Sel") @mnsel.z = 20 @mnsel.x = 0 @mnsel.y = 110 @mnop = 150 if $game_system.save_disabled @command_window.disable_item(4) end @playtime_window = Window_PlayTime2.new @playtime_window.x = 30 @playtime_window.y = 375 @playtime_window.opacity = 0 @playtime_window.z = 15 @steps_window = Window_Steps2.new @steps_window.x = 230 @steps_window.y = 375 @steps_window.opacity = 0 @steps_window.z = 15 @gold_window = Window_Gold2.new @gold_window.x = 455 @gold_window.y = 405 @gold_window.opacity = 0 @gold_window.z = 15 @status_window = Window_MenuStatus2.new @status_window.x = 195 @status_window.y = 110 @status_window.opacity = 0 @status_window.z = 15 Graphics.transition(MOG::MNTT, "Graphics/Transitions/" + MOG::MNTP) loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @command_window.dispose @playtime_window.dispose @steps_window.dispose @gold_window.dispose @status_window.dispose @mnlay.dispose @mnback.dispose @mnback2.dispose @mnsel.dispose Graphics.update end def update @command_window.update @playtime_window.update @steps_window.update @gold_window.update @status_window.update @mnback.oy += 1 @mnback.ox += 1 @mnback2.oy += 1 @mnback2.ox -= 1 @mnop += 5 if @command_window.active == true @mnsel.bitmap = RPG::Cache.picture("Mn_Sel") else @mnsel.bitmap = RPG::Cache.picture("Mn_Sel_off") @mnsel.zoom_x = 1 @mnsel.opacity = 255 end if @mnop >= 255 @mnop = 120 end if @command_window.active update_command return end if @status_window.active update_status return end end def update_command if @mnsel.zoom_x <= 1.6 @mnsel.zoom_x += 0.03 @mnsel.opacity -= 10 elsif @mnsel.zoom_x > 1.6 @mnsel.zoom_x = 1.0 @mnsel.opacity = 255 end case @command_window.index when 0 @mnsel.x = 0 @mnsel.y = 110 when 1 @mnsel.x = 25 @mnsel.y = 155 when 2 @mnsel.x = 40 @mnsel.y = 197 when 3 @mnsel.x = 45 @mnsel.y = 242 when 4 @mnsel.x = 25 @mnsel.y = 285 when 5 @mnsel.x = 0 @mnsel.y = 325 end if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) if $game_party.actors.size == 0 and @command_window.index < 4 $game_system.se_play($data_system.buzzer_se) return end case @command_window.index when 0 $game_system.se_play($data_system.decision_se) $scene = Scene_Item.new when 1 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 2 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 3 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 when 4 if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Save.new when 5 $game_system.se_play($data_system.decision_se) $scene = Scene_End.new end return end end def update_status if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @status_window.active = false @status_window.index = -1 return end if Input.trigger?(Input::C) case @command_window.index when 1 if $game_party.actors[@status_window.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $scene = Scene_Skill.new(@status_window.index) when 2 $game_system.se_play($data_system.decision_se) $scene = Scene_Equip.new(@status_window.index) when 3 $game_system.se_play($data_system.decision_se) $scene = Scene_Status.new(@status_window.index) end return end end end end
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!