MOG Scene Equip Asuka V1.5
Publicado em 3 de julho de 2014.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.
Screenshot
Utilização
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.
Código
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
Download e ficha técnica
- Download (clique com o botão esquerdo do mouse ou toque no link)
- Desenvolvedor, publisher e/ou distribuidor: Moghunter
- SO: Windows 98/98SE/Me/2000/XP/Vista/7
- Tamanho: 591KB (pacote de instalação e/ou espaço em disco)
- Licença: Grátis
- Categoria: Programação XP
- Tag: RPG Maker XP
- Adicionado por: LichKing
- Acessos: 46
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!