MOG Menu Skill Nami é outro script de menu com movimento e layout que utiliza pictures, desenvolvido pelo Moghunter, jogo ou projeto do RPG Maker XP.
Como nos outros scripts de menu dele que adicionamos aqui, baixe a demo para ver e aprender o funcionamento e baixar as pictures necessárias para você rodar o script.
#_______________________________________________________________________________ # MOG_Scene_Skill V2.3 #_______________________________________________________________________________ # By Moghunter # http://www.atelier-rgss.com #_______________________________________________________________________________ module MOG #Transition Time. MSK_TT = 10 #Transition Type(Name). MSK_TTT = "004-Blind04" end #=============================================================================== # Game_Actor #=============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # Now_Exp #-------------------------------------------------------------------------- def now_exp return @exp - @exp_list[@level] end #-------------------------------------------------------------------------- # Next Exp #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # Nada #-------------------------------------------------------------------------- def nada face = RPG::Cache.picture("") end #-------------------------------------------------------------------------- # Drw_Face #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # Drw_Lay #-------------------------------------------------------------------------- def draw_lay(x,y) lay = RPG::Cache.picture("MSK_Status") cw = lay.width ch = lay.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x , y - ch, lay, src_rect) end #-------------------------------------------------------------------------- # Nada #-------------------------------------------------------------------------- def nada face = RPG::Cache.picture("") end #-------------------------------------------------------------------------- # Draw Heroface3 #-------------------------------------------------------------------------- def draw_heroface3(actor,x,y) face = RPG::Cache.picture(actor.name + "_fc3") 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 #-------------------------------------------------------------------------- # Draw_Maphp3 #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # Draw_Mapsp3 #-------------------------------------------------------------------------- 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 #-------------------------------------------------------------------------- # Draw_Maphp4 #-------------------------------------------------------------------------- def draw_maphp4(actor, x, y) back = RPG::Cache.picture("BAR") 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_Bar2") 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) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(x + 66, y - 1, 100, 32, actor.hp.to_s + "/" + actor.maxhp.to_s, 1) self.contents.font.color = Color.new(250,255,255,255) self.contents.draw_text(x + 65, y - 2, 100, 32, actor.hp.to_s + "/" + actor.maxhp.to_s, 1) end #-------------------------------------------------------------------------- # Draw_Mapsp4 #-------------------------------------------------------------------------- def draw_mapsp4(actor, x, y) back = RPG::Cache.picture("BAR") 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_Bar2") 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) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(x + 66, y - 1, 100, 32, actor.sp.to_s + "/" + actor.maxsp.to_s, 1) self.contents.font.color = Color.new(250,255,255,255) self.contents.draw_text(x + 65, y - 2, 100, 32, actor.sp.to_s + "/" + actor.maxsp.to_s, 1) end #-------------------------------------------------------------------------- # Draw_Mexp4 #-------------------------------------------------------------------------- def draw_mexp4(actor, x, y) actor = $game_party.actors[0] 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) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(x + 55, y + 1, 84, 32, "Exp",0) self.contents.font.color = Color.new(255,255,255,255) self.contents.draw_text(x + 54, y, 84, 32, "Exp",0) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(x + 190, y - 125, 60, 32,"LV " + actor.level.to_s, 1) self.contents.font.color = Color.new(255,255,255,255) self.contents.draw_text(x + 191, y - 124, 60, 32,"LV " + actor.level.to_s, 1) end #-------------------------------------------------------------------------- # Draw_Mexp_it #-------------------------------------------------------------------------- def draw_mexp_it(actor, x, y) 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 + 60 , y - ch + 32, lv_tx, src_rect) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(x + 101, y + 5, 24, 32, actor.level.to_s, 1) self.contents.font.color = Color.new(255,255,255,255) self.contents.draw_text(x + 100, y + 4, 24, 32, actor.level.to_s, 1) end #-------------------------------------------------------------------------- # Draw_draw_actor_state_it #-------------------------------------------------------------------------- def draw_actor_state_it(actor, x, y, width = 80) 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_Target_face #=============================================================================== class Window_Target_face < Window_Selectable #-------------------------------------------------------------------------- # Initialize #-------------------------------------------------------------------------- def initialize super(0, 130, 280, 300) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = "Georgia" self.z += 10 @item_max = $game_party.actors.size refresh end #-------------------------------------------------------------------------- # Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...$game_party.actors.size x = 4 y = i * 65 actor = $game_party.actors[i] drw_face(actor,x,y + 55) if $mog_rgss_TP_System != nil draw_actor_tp(actor, x + 168, y + 27 ,4) else draw_mexp_it(actor, x + 110, y + 25 ) end draw_actor_state_it(actor, x + 165, y ) draw_maphp3(actor, x + 20, y + 0) draw_mapsp3(actor, x + 20, y + 32) end end #-------------------------------------------------------------------------- # Update_cursor_rect #-------------------------------------------------------------------------- def update_cursor_rect if @index <= -2 self.cursor_rect.set(0, (@index + 10) * 65, self.width - 32, 60) elsif @index == -1 self.cursor_rect.set(0, 0, self.width - 32, @item_max * 64 ) else self.cursor_rect.set(0, @index * 65, self.width - 32, 60) end end end #=============================================================================== # Window_SkillStatus2 #=============================================================================== class Window_SkillStatus2 < Window_Base #-------------------------------------------------------------------------- # Initialize #-------------------------------------------------------------------------- def initialize(actor) super(350, 75, 290, 340) self.contents = Bitmap.new(width - 32, height - 32) @actor = actor self.opacity = 0 self.contents.font.name = "Georgia" refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh self.contents.clear draw_lay(0,300) draw_heroface3(@actor,50,140) draw_actor_name(@actor, 15, 10) draw_actor_state(@actor, 120, 140) draw_mexp4(@actor, -30, 135) draw_maphp4(@actor, 5, 195) draw_mapsp4(@actor, 5, 240) if $mog_rgss_TP_System != nil draw_actor_tp(@actor, 40, 265,1) end end end #=============================================================================== # Window_Skill2 #=============================================================================== class Window_Skill2 < Window_Selectable #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(actor) super(0, 95, 335, 290) @actor = actor @column_max = 1 refresh self.index = 0 end #-------------------------------------------------------------------------- # skill #-------------------------------------------------------------------------- def skill return @data[self.index] end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 0...@actor.skills.size skill = $data_skills[@actor.skills[i]] if skill != nil @data.push(skill) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max draw_item(i) end end end #-------------------------------------------------------------------------- # draw_item #-------------------------------------------------------------------------- def draw_item(index) skill = @data[index] if @actor.skill_can_use?(skill.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end self.contents.font.name = "Georgia" x = index % 1 * (288) y = index / 1 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(skill.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0) self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2) if $mog_rgss_TP_System != nil tp_cost = MOG::TP_COST[skill.id] if tp_cost != nil self.contents.font.color = Color.new(50,250,150,255) self.contents.draw_text(x + 170, y, 48, 32, MOG::TP_NAME, 2) else self.contents.font.color = Color.new(200,200,0,255) self.contents.draw_text(x + 170, y, 48, 32, $data_system.words.sp, 2) end else self.contents.font.color = Color.new(200,200,0,255) self.contents.draw_text(x + 170, y, 48, 32, $data_system.words.sp, 2) end end #-------------------------------------------------------------------------- # Update_Help #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.skill == nil ? "" : self.skill.description) end end #=============================================================================== # Scene Skill #=============================================================================== class Scene_Skill #-------------------------------------------------------------------------- # Initialize #-------------------------------------------------------------------------- def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index end #-------------------------------------------------------------------------- # Main #-------------------------------------------------------------------------- def main @actor = $game_party.actors[@actor_index] @msk_lay = Sprite.new @msk_lay.bitmap = RPG::Cache.picture("MSK_Lay") @msk_lay.z = 100 @msk_back1 = Plane.new @msk_back1.bitmap = RPG::Cache.picture("MN_BK") @msk_back1.z = 10 @help_window = Window_Help.new @help_window.y = 500 @status_window = Window_SkillStatus2.new(@actor) @status_window.z = 110 @status_window.x = 640 @skill_window = Window_Skill2.new(@actor) @skill_window.help_window = @help_window @skill_window.help_window.y = 500 @target_window = Window_Target_face.new @target_window.x = 640 @target_window.y = 100 @target_window.opacity = 0 @target_window.visible = false @target_window.active = false @skill_window.opacity = 0 @help_window.opacity = 0 @slide = true Graphics.transition(MOG::MSK_TT, "Graphics/Transitions/" + MOG::MSK_TTT) loop do Graphics.update Input.update update if $scene != self break end end for i in 0..10 @status_window.x += 25 @status_window.x += 25 @target_window.x += 25 @target_window.contents_opacity -= 25 @skill_window.x -= 30 @skill_window.contents_opacity -= 25 @msk_lay.zoom_x += 0.1 @msk_lay.opacity -= 25 @help_window.y += 15 Graphics.update end Graphics.freeze @help_window.dispose @status_window.dispose @skill_window.dispose @target_window.dispose @msk_lay.dispose @msk_back1.dispose end #-------------------------------------------------------------------------- # Update #-------------------------------------------------------------------------- def update if @target_window.active == true @target_window.visible = true if @target_window.x > 340 @target_window.x -= 20 elsif @target_window.x <= 340 @target_window.x = 340 end else if @target_window.x < 640 @target_window.x += 20 elsif @target_window.x >= 640 @target_window.x = 640 @target_window.visible = false end end if @slide == true @status_window.visible = true if @status_window.x > 350 @status_window.x -= 20 elsif @status_window.x <= 350 @status_window.x = 350 end else if @status_window.x < 640 @status_window.x += 20 elsif @status_window.x >= 640 @status_window.x = 640 @status_window.visible = false end end @help_window.update @status_window.update @skill_window.update @target_window.update @msk_back1.ox += 1 @msk_back1.oy += 1 if @skill_window.help_window.y > 425 @skill_window.help_window.y -= 10 elsif @skill_window.help_window.y <= 425 @skill_window.help_window.y = 425 end if @skill_window.active update_skill return end if @target_window.active update_target return end end #-------------------------------------------------------------------------- # Update Skill #-------------------------------------------------------------------------- def update_skill if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN) @help_window.y = 500 end if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(1) return end if Input.trigger?(Input::C) @skill = @skill_window.skill if @skill == nil or not @actor.skill_can_use?(@skill.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @skill.scope >= 3 @skill_window.active = false @target_window.active = true @slide = false if @skill.scope == 4 || @skill.scope == 6 @target_window.index = -1 elsif @skill.scope == 7 @target_window.index = @actor_index - 10 else @target_window.index = 0 end else if @skill.common_event_id > 0 $game_temp.common_event_id = @skill.common_event_id $game_system.se_play(@skill.menu_se) @actor.sp -= @skill.sp_cost @status_window.refresh @skill_window.refresh @target_window.refresh $scene = Scene_Map.new return end end return end if Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT) $game_system.se_play($data_system.cursor_se) @actor_index += 1 @actor_index %= $game_party.actors.size $scene = Scene_Skill.new(@actor_index) return end if Input.trigger?(Input::L) or Input.trigger?(Input::LEFT) $game_system.se_play($data_system.cursor_se) @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size $scene = Scene_Skill.new(@actor_index) return end end #-------------------------------------------------------------------------- # Update_Target #-------------------------------------------------------------------------- def update_target if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @skill_window.active = true @target_window.active = false @slide = true return end if Input.trigger?(Input::C) unless @actor.skill_can_use?(@skill.id) $game_system.se_play($data_system.buzzer_se) return end if @target_window.index == -1 used = false for i in $game_party.actors used |= i.skill_effect(@actor, @skill) end end if @target_window.index <= -2 target = $game_party.actors[@target_window.index + 10] used = target.skill_effect(@actor, @skill) end if @target_window.index >= 0 target = $game_party.actors[@target_window.index] used = target.skill_effect(@actor, @skill) end if used $game_system.se_play(@skill.menu_se) @actor.sp -= @skill.sp_cost @status_window.refresh @skill_window.refresh @target_window.refresh if $game_party.all_dead? $scene = Scene_Gameover.new return end if @skill.common_event_id > 0 $game_temp.common_event_id = @skill.common_event_id $scene = Scene_Map.new return end end unless used $game_system.se_play($data_system.buzzer_se) end return end end end $mog_rgss_MOG_Scene_Skill = true
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!