MOG Scene Equip Asuka é um script de Scene Equip com layout em pictures e movimento, desenvolvido pelo Moghunter, para ser usado em algum jogo ou projeto do RPG Maker XP.
Para dar nome as imagens dos personagens, renomeie os arquivos das figuras da seguinte forma: Aluxes_FC2.png
.
Ou seja, coloque o nome do personagem mais o sufixo _FC2. Caso você não tiver essa imagem o script automaticamente vai colocar a imagem do battler padrão.
Baixe a demo que já possui todas as imagens exemplos e o script, fica mais fácil para entender como funciona e tal.
O código abaixo vai acima do Main, no editor de scripts do seu projeto:
#_______________________________________________________________________________ # MOG_Scene_Equip V1.7 #_______________________________________________________________________________ # By Moghunter # http://www.atelier-rgss.com #_______________________________________________________________________________ module MOG #Transition Time. MSEQPT= 10 #Transition Type. MSEQPTT= "004-Blind04" # Set Maximum (STR,DEX,AGL,INT) MST_ST = 999 # Set Maximum (ATK,PDEF,MDEF) MST_STE = 999 end #=============================================================================== # Window_Base #=============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # nada2 #-------------------------------------------------------------------------- def nada2(actor) face = RPG::Cache.battler(actor.battler_name, actor.battler_hue) end #-------------------------------------------------------------------------- # draw_heroface2 #-------------------------------------------------------------------------- def draw_heroface2(actor,x,y) face = RPG::Cache.picture(actor.name + "_fc2") rescue nada2(actor) cw = face.width ch = face.height src_rect = Rect.new(0, 0, cw, ch) if face == RPG::Cache.battler(actor.battler_name, actor.battler_hue) self.contents.blt(x + 40 , y - ch - 240, face, src_rect) else self.contents.blt(x , y - ch, face, src_rect) end end #-------------------------------------------------------------------------- # drw_eqpup #-------------------------------------------------------------------------- def drw_eqpup(x,y,type) case type when 0 est = RPG::Cache.icon("ST_EQU") when 1 est = RPG::Cache.icon("ST_UP") when 2 est = RPG::Cache.icon("ST_DOWN") end cw = est.width ch = est.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x , y - ch, est, src_rect) end #-------------------------------------------------------------------------- # drw_equist #-------------------------------------------------------------------------- def drw_equist(x,y) equist = RPG::Cache.picture("Equip_St") cw = equist.width ch = equist.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x , y - ch, equist, src_rect) end #-------------------------------------------------------------------------- # draw_actor_parameter2 #-------------------------------------------------------------------------- def draw_actor_parameter2(actor, x, y, type) back = RPG::Cache.picture("STBAR_Back") cw = back.width ch = back.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 50 , y - ch + 20, back, src_rect) meter = RPG::Cache.picture("STBAR.png") case type when 0 parameter_value = actor.atk cw = meter.width * actor.atk / MOG::MST_STE when 1 parameter_value = actor.pdef cw = meter.width * actor.pdef / MOG::MST_STE when 2 parameter_value = actor.mdef cw = meter.width * actor.mdef / MOG::MST_STE when 3 parameter_value = actor.str cw = meter.width * actor.str / MOG::MST_ST when 4 parameter_value = actor.dex cw = meter.width * actor.dex / MOG::MST_ST when 5 parameter_value = actor.agi cw = meter.width * actor.agi / MOG::MST_ST when 6 parameter_value = actor.int cw = meter.width * actor.int / MOG::MST_ST end self.contents.font.color = normal_color self.contents.draw_text(x + 120, y - 2, 36, 32, parameter_value.to_s, 2) ch = meter.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x + 50 , y - ch + 20, meter, src_rect) end #-------------------------------------------------------------------------- # draw_actor_parameter2 #-------------------------------------------------------------------------- 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 end #=============================================================================== # Window_EquipLeft #=============================================================================== class Window_EquipLeft < Window_Base #-------------------------------------------------------------------------- # Initialize #-------------------------------------------------------------------------- def initialize(actor) super(0, 64, 272, 446) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 self.contents.font.name = "Georgia" @actor = actor refresh end #-------------------------------------------------------------------------- # Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear draw_heroface2(@actor, 20, 460) drw_equist(0,390) draw_actor_name(@actor, 4, 0) draw_actor_level(@actor, 4, 32) draw_actor_parameter2(@actor, 10, 164 , 0) draw_actor_parameter2(@actor, 10, 196 , 1) draw_actor_parameter2(@actor, 10, 228 , 2) draw_actor_parameter2(@actor, 10, 260 , 3) draw_actor_parameter2(@actor, 10, 292 , 4) draw_actor_parameter2(@actor, 10, 324 , 5) draw_actor_parameter2(@actor, 10, 356 , 6) if @new_atk != nil self.contents.font.color = system_color if @new_atk < @actor.atk drw_eqpup(170,190,2) self.contents.font.color = Color.new(255,50,50,255) elsif @new_atk > @actor.atk drw_eqpup(170,190,1) self.contents.font.color = Color.new(50,250,150,255) else drw_eqpup(170,190,0) self.contents.font.color = Color.new(255,255,255,255) end self.contents.draw_text(190, 162, 36, 32, @new_atk.to_s, 2) end if @new_pdef != nil if @new_pdef < @actor.pdef drw_eqpup(170,226,2) self.contents.font.color = Color.new(255,50,50,255) elsif @new_pdef > @actor.pdef drw_eqpup(170,226,1) self.contents.font.color = Color.new(50,250,150,255) else drw_eqpup(170,226,0) self.contents.font.color = Color.new(255,255,255,255) end self.contents.draw_text(190, 194, 36, 32, @new_pdef.to_s, 2) end if @new_mdef != nil if @new_mdef < @actor.mdef drw_eqpup(170,258,2) self.contents.font.color = Color.new(255,50,50,255) elsif @new_mdef > @actor.mdef drw_eqpup(170,258,1) self.contents.font.color = Color.new(50,250,150,255) else drw_eqpup(170,258,0) self.contents.font.color = Color.new(255,255,255,255) end self.contents.draw_text(190, 226, 36, 32, @new_mdef.to_s, 2) end if @new_str != nil if @new_str < @actor.str drw_eqpup(170,290,2) self.contents.font.color = Color.new(255,50,50,255) elsif @new_str > @actor.str drw_eqpup(170,290,1) self.contents.font.color = Color.new(50,250,150,255) else drw_eqpup(170,290,0) self.contents.font.color = Color.new(255,255,255,255) end self.contents.draw_text(190, 258, 36, 32, @new_str.to_s, 2) end if @new_dex != nil if @new_dex < @actor.dex drw_eqpup(170,322,2) self.contents.font.color = Color.new(255,50,50,255) elsif @new_dex > @actor.dex drw_eqpup(170,322,1) self.contents.font.color = Color.new(50,250,150,255) else drw_eqpup(170,322,0) self.contents.font.color = Color.new(255,255,255,255) end self.contents.draw_text(190, 290, 36, 32, @new_dex.to_s, 2) end if @new_agi != nil if @new_agi < @actor.agi drw_eqpup(170,354,2) self.contents.font.color = Color.new(255,50,50,255) elsif @new_agi > @actor.agi drw_eqpup(170,354,1) self.contents.font.color = Color.new(50,250,150,255) else drw_eqpup(170,354,0) self.contents.font.color = Color.new(255,255,255,255) end self.contents.draw_text(190, 322, 36, 32, @new_agi.to_s, 2) end if @new_int != nil if @new_int < @actor.int drw_eqpup(170,386,2) self.contents.font.color = Color.new(255,50,50,255) elsif @new_int > @actor.int drw_eqpup(170,386,1) self.contents.font.color = Color.new(50,250,150,255) else drw_eqpup(170,386,0) self.contents.font.color = Color.new(255,255,255,255) end self.contents.draw_text(190, 354, 36, 32, @new_int.to_s, 2) end end #-------------------------------------------------------------------------- # Set_new_parameters #-------------------------------------------------------------------------- def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, new_agi, new_int) if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or @new_str != new_str or @new_dex != new_dex or @new_agl != new_agi or @new_int != new_int @new_atk = new_atk @new_pdef = new_pdef @new_mdef = new_mdef @new_str = new_str @new_dex = new_dex @new_agi = new_agi @new_int = new_int refresh end end end #=============================================================================== # Window_EquipRight #=============================================================================== class Window_EquipRight < Window_Selectable #-------------------------------------------------------------------------- # Initialize #-------------------------------------------------------------------------- def initialize(actor) super(272, 64, 368, 192) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 self.contents.font.name = "Georgia" @actor = actor refresh self.index = 0 end #-------------------------------------------------------------------------- # Item #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- # Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @data = [] @data.push($data_weapons[@actor.weapon_id]) @data.push($data_armors[@actor.armor1_id]) @data.push($data_armors[@actor.armor2_id]) @data.push($data_armors[@actor.armor3_id]) @data.push($data_armors[@actor.armor4_id]) @item_max = @data.size self.contents.font.color = system_color draw_item_name(@data[0], 92, 32 * 0) draw_item_name(@data[1], 92, 32 * 1) draw_item_name(@data[2], 92, 32 * 2) draw_item_name(@data[3], 92, 32 * 3) draw_item_name(@data[4], 92, 32 * 4) end #-------------------------------------------------------------------------- # Update_Help #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end #=============================================================================== # Window_EquipItem #=============================================================================== class Window_EquipItem < Window_Selectable #-------------------------------------------------------------------------- # Initialize #-------------------------------------------------------------------------- def initialize(actor, equip_type) super(272, 256, 368, 224) self.opacity = 0 @actor = actor @equip_type = equip_type @column_max = 1 refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # Item #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- # Refresh #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] if @equip_type == 0 weapon_set = $data_classes[@actor.class_id].weapon_set for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) @data.push($data_weapons[i]) end end end if @equip_type != 0 armor_set = $data_classes[@actor.class_id].armor_set for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 and armor_set.include?(i) if $data_armors[i].kind == @equip_type-1 @data.push($data_armors[i]) end end end end @data.push(nil) @item_max = @data.size self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max-1 draw_item(i) end end #-------------------------------------------------------------------------- # Draw_Item #-------------------------------------------------------------------------- def draw_item(index) self.contents.font.name = "Georgia" item = @data[index] x = 4 + index % 1 * (288 + 32) y = index / 1 * 32 case item when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #-------------------------------------------------------------------------- # Update Help #-------------------------------------------------------------------------- def update_help @help_window.set_text(self.item == nil ? "" : self.item.description) end end #=============================================================================== # Scene_Equip #=============================================================================== class Scene_Equip #-------------------------------------------------------------------------- # Initialize #-------------------------------------------------------------------------- def initialize(actor_index = 0, equip_index = 0) @actor_index = actor_index @equip_index = equip_index end #-------------------------------------------------------------------------- # Main #-------------------------------------------------------------------------- def main @mnback = Plane.new @mnback.bitmap = RPG::Cache.picture("MN_BK") @mnback.z = 1 @mnlay = Sprite.new @mnlay.bitmap = RPG::Cache.picture("Equip_Lay") @mnlay.z = 2 @actor = $game_party.actors[@actor_index] @help_window = Window_Help.new @help_window.opacity = 0 @help_window.x = -300 @help_window.contents_opacity = 0 @left_window = Window_EquipLeft.new(@actor) @left_window.x = -300 @left_window.contents_opacity = 0 @right_window = Window_EquipRight.new(@actor) @item_window1 = Window_EquipItem.new(@actor, 0) @item_window2 = Window_EquipItem.new(@actor, 1) @item_window3 = Window_EquipItem.new(@actor, 2) @item_window4 = Window_EquipItem.new(@actor, 3) @item_window5 = Window_EquipItem.new(@actor, 4) @item_window1.x = 640 @item_window2.x = 640 @item_window3.x = 640 @item_window4.x = 640 @item_window5.x = 640 @right_window.help_window = @help_window @item_window1.help_window = @help_window @item_window2.help_window = @help_window @item_window3.help_window = @help_window @item_window4.help_window = @help_window @item_window5.help_window = @help_window @right_window.index = @equip_index @right_window.x = 640 refresh Graphics.transition(MOG::MSEQPT, "Graphics/Transitions/" + MOG::MSEQPTT) loop do Graphics.update Input.update update if $scene != self break end end for i in 0..10 @left_window.x -= 25 @left_window.contents_opacity -= 15 @item_window.x += 30 @item_window.contents_opacity -= 20 @right_window.x += 30 @right_window.contents_opacity -= 20 Graphics.update end Graphics.freeze @help_window.dispose @left_window.dispose @right_window.dispose @item_window1.dispose @item_window2.dispose @item_window3.dispose @item_window4.dispose @item_window5.dispose @mnback.dispose @mnlay.dispose end #-------------------------------------------------------------------------- # Refresh #-------------------------------------------------------------------------- def refresh @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) @item_window4.visible = (@right_window.index == 3) @item_window5.visible = (@right_window.index == 4) item1 = @right_window.item case @right_window.index when 0 @item_window = @item_window1 when 1 @item_window = @item_window2 when 2 @item_window = @item_window3 when 3 @item_window = @item_window4 when 4 @item_window = @item_window5 end if @right_window.active @left_window.set_new_parameters(nil, nil, nil,nil, nil, nil,nil) end if @item_window.active item2 = @item_window.item last_hp = @actor.hp last_sp = @actor.sp @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id) new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef new_str = @actor.str new_dex = @actor.dex new_agi = @actor.agi new_int = @actor.int @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id) @actor.hp = last_hp @actor.sp = last_sp @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,new_agi,new_int) end end #-------------------------------------------------------------------------- # Update #-------------------------------------------------------------------------- def update if @right_window.x > 272 @right_window.x -= 30 elsif @right_window.x <= 272 @right_window.x = 272 end if @item_window.x > 272 @item_window.x -= 30 elsif @item_window.x <= 272 @item_window.x = 272 end if @item_window.active == false if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN) @item_window.x = 640 end end if @left_window.x < 0 @left_window.x += 25 @left_window.contents_opacity += 15 elsif @left_window.x >= 0 @left_window.x = 0 @left_window.contents_opacity = 255 end if @help_window.x < 0 @help_window.x += 25 @help_window.contents_opacity += 15 elsif @help_window.x >= 0 @help_window.x = 0 @help_window.contents_opacity = 255 end @mnback.ox += 1 @left_window.update @right_window.update @item_window.update if Input.trigger?(Input::B) or Input.trigger?(Input::C) or Input.trigger?(Input.dir4) or Input.trigger?(Input::L) or Input.trigger?(Input::R) or Input.press?(Input.dir4) @help_window.x = -300 @help_window.contents_opacity = 0 refresh end if @right_window.active update_right return end if @item_window.active update_item return end end #-------------------------------------------------------------------------- # Update Right #-------------------------------------------------------------------------- def update_right if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(2) return end if Input.trigger?(Input::C) if @actor.equip_fix?(@right_window.index) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) @right_window.active = false @item_window.active = true @item_window.index = 0 refresh return end if Input.trigger?(Input::R) $game_system.se_play($data_system.cursor_se) @actor_index += 1 @actor_index %= $game_party.actors.size $scene = Scene_Equip.new(@actor_index, @right_window.index) return end if Input.trigger?(Input::L) $game_system.se_play($data_system.cursor_se) @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size $scene = Scene_Equip.new(@actor_index, @right_window.index) return end end #-------------------------------------------------------------------------- # Update Item #-------------------------------------------------------------------------- def update_item if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @right_window.active = true @item_window.active = false @item_window.index = -1 refresh return end if Input.trigger?(Input::C) $game_system.se_play($data_system.equip_se) item = @item_window.item @actor.equip(@right_window.index, item == nil ? 0 : item.id) @right_window.active = true @item_window.active = false @item_window.index = -1 @right_window.refresh @item_window.refresh refresh return end end end $mog_rgss_Scene_Equip = 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!