MOG Scene File Ayumi V1.2 [Reinvisioned Version]
MOG Scene File Ayumi é um script de menu com movimento e layout que utiliza pictures desenvolvido pelo Moghunter para ser utilizado em algum jogo ou projeto do RPG Maker XP.
MOG Scene File Ayumi é um script de menu com movimento e layout que utiliza pictures desenvolvido pelo Moghunter para ser utilizado em algum jogo ou projeto do RPG Maker XP.
Ao contrário de vários outros sistemas de menus, o foreground, background e praticamente todos os detalhes dos menus são criados com figuras salvas na pasta GraphicsPictures
.
Screenshot
Características em relação a outras versões
- Uma configuração mais elaborada com todas definições comentadas.
- Nomes de arquivo para os gráficos do menu são salvos na seção de configuração e não presos ao código.
- Outras classes existentes por padrão são reusadas, ao invés de criadas novas, possibilitando maior compatibilidade com outros scripts.
Utilização
Para nomear as Faces dos personagens, renomeie os arquivos da seguinte forma: Aluxes_FC3.png
.
Ou seja, coloque o nome do personagem mais o sufixo _FC3 (o que apresentará a Face do personagem ID1.).
Convém baixar a demo para pegar as pictures e entender melhor o funcionamento do script.
Código
#============================================================================== # ** MOG Scene File Ayumi V1.2 # By Moghunter # http://www.atelier-rgss.com #------------------------------------------------------------------------------ # ** Reinvisioned version # # This variant has retooled the MOG module by adding more configurables for # the user. No longer are the graphics hardwired into the code but are now # able to be altered in the revised configuration serction. # # Also, a few redundant modules have been deleted for compatability with # other systems. Please note that this system 'does' rewrite the save file # structure, so systems that append to the save file may need to be edited # for use with this script. #============================================================================== module MOG # BASIC MENU CONFIGURATION # File Graphics Used FILE_LAYOUT = "Layout-File" # File Menu Graphics FILE_BACKGROUND = "Back-Other" # Animated background graphic FILE_STATUS = "Status-File" # File Window Graphic FACE_LARGE = "_Fl" # Suffix for large face graphics # File Effects FILE_MOVE_FX = false # If savefile moves side-to-side FILE_OPACITY_FX = false # If savefile changes opacity # Menu FILE_FX = 0 # Back FX (0=Moving/ 1=Still/ 2=Map) FILE_TRAN_TIME = 20 # Transition Time FILE_TRAN_TYPE = "004-Blind04" # Transition Type (Name) # Font Used FILE_FONT = "Georgia" # Font used in file menu end # Mogscript global $mogscript = {} if $mogscript == nil $mogscript["menu_ayumi"] = true #============================================================================== # ** Game_Map #------------------------------------------------------------------------------ # This class handles the map. It includes scrolling and passable determining # functions. Refer to "$game_map" for the instance of this class. #============================================================================== class Game_Map #-------------------------------------------------------------------------- # * Get Map Name #-------------------------------------------------------------------------- def map_name @mapinfo = load_data("Data/MapInfos.rxdata") if @mapinfo == nil return @mapinfo[@map_id].name end end #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # This class is for all in-game windows. #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Draw File Window # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def drw_win_file(x, y) dwf = RPG::Cache.picture(MOG::FILE_STATUS) cw = dwf.width ch = dwf.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x , y - ch, dwf, src_rect) end #-------------------------------------------------------------------------- # * Draw Empty Face #-------------------------------------------------------------------------- def nada face = RPG::Cache.picture("") end #-------------------------------------------------------------------------- # * Draw Face #3 (Larger face) # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def draw_heroface3(actor, x, y) face = RPG::Cache.picture(actor.name + MOG::FACE_LARGE) 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 Actor Level #6 # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def draw_actor_level6(actor, x, y) self.contents.font.color = Color.new(0, 0, 0, 255) self.contents.draw_text(x + 1, y + 1, 32, 32, "Lv") self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, "Lv") self.contents.font.color = Color.new(0, 0, 0, 255) self.contents.draw_text(x + 17, y + 1, 24, 32, actor.level.to_s, 2) self.contents.font.color = Color.new(255, 255, 255, 255) self.contents.draw_text(x + 16, y, 24, 32, actor.level.to_s, 2) end #-------------------------------------------------------------------------- # * Draw Actor Name #6 # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def draw_actor_name6(actor, x, y) self.contents.font.color = Color.new(0, 0, 0, 255) self.contents.draw_text(x + 1, y + 1, 100, 32, actor.name, 1) self.contents.font.color = normal_color self.contents.draw_text(x, y, 100, 32, actor.name, 1) end end #============================================================================== # ** Window_SaveFile #------------------------------------------------------------------------------ # This window displays save files on the save and load screens. #============================================================================== class Window_SaveFile < Window_Base #-------------------------------------------------------------------------- # * Object Initialization # file_index : save file index (0-3) # filename : file name #-------------------------------------------------------------------------- def initialize(file_index, filename) super(0, 64 + file_index * 138, 640, 240) self.contents = Bitmap.new(width - 32, height - 32) self.opacity = 0 @file_index = file_index @filename = "Save#{@file_index + 1}.rxdata" @time_stamp = Time.at(0) @file_exist = FileTest.exist?(@filename) if @file_exist file = File.open(@filename, "r") @time_stamp = file.mtime @characters = Marshal.load(file) @frame_count = Marshal.load(file) @game_system = Marshal.load(file) @game_switches = Marshal.load(file) @game_variables = Marshal.load(file) @game_self_switches = Marshal.load(file) @game_screen = Marshal.load(file) @game_actors = Marshal.load(file) @game_party = Marshal.load(file) @game_troop = Marshal.load(file) @game_map = Marshal.load(file) @total_sec = @frame_count / Graphics.frame_rate file.close end @wiref = 0 refresh @selected = false end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.name = MOG::FILE_FONT drw_win_file(0,190) name = "#{@file_index + 1}" self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(161, 41, 600, 32, name) self.contents.font.color = Color.new(255,255,255,255) self.contents.draw_text(160, 40, 600, 32, name) @name_width = contents.text_size(name).width if @file_exist for i in 0...@characters.size bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1]) cw = bitmap.rect.width / 4 ch = bitmap.rect.height / 4 src_rect = Rect.new(cw * @wiref + 1 , 0, cw, ch) x = 300 - @characters.size + i * 64 - cw / 4 self.contents.blt(x - 10, 150 - ch, bitmap, src_rect) x = 116 actors = @game_party.actors for i in 0...[actors.size, 4].min x = i * 60 actor = actors[i] self.contents.font.size = 20 draw_actor_level6(actor, x + 280, 140) actor = actors[0] draw_heroface3(actor,160,180) draw_actor_name6(actor, 160, 155) self.contents.font.size = 22 end end hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 time_string = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(5, 41, 450, 32, time_string, 2) self.contents.draw_text(41 , 141, 120 , 32, @game_map.map_name.to_s) self.contents.font.color = Color.new(255,255,255,255) self.contents.draw_text(40 , 140, 120 , 32, @game_map.map_name.to_s) self.contents.draw_text(4, 40, 450, 32, time_string, 2) end end #-------------------------------------------------------------------------- # * Set Selected # selected : new selected (true = selected, false = unselected) #-------------------------------------------------------------------------- def selected=(selected) @selected = selected end end #============================================================================== # ** Scene_Save #------------------------------------------------------------------------------ # This class performs save screen processing. #============================================================================== class Scene_Save < Scene_File #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- alias mog_init initialize def initialize mog_init $mog_scene_filesave_flag = 1 end end #============================================================================== # ** Scene_File #------------------------------------------------------------------------------ # This is a superclass for the save screen and load screen. #============================================================================== class Scene_File #-------------------------------------------------------------------------- # * Main Processing #-------------------------------------------------------------------------- def main if $mog_scene_filesave_flag != 1 @mnback = Plane.new @mnback.bitmap = RPG::Cache.picture(MOG::FILE_BACKGROUND) @mnback.z = 1 else if MOG::FILE_FX == 0 @mnback = Plane.new @mnback.bitmap = RPG::Cache.picture(MOG::FILE_BACKGROUND) @mnback.z = 1 elsif MOG::FILE_FX == 1 @mnback = Plane.new @mnback.bitmap = RPG::Cache.picture(MOG::FILE_BACKGROUND) @mnback.z = 1 else @spriteset = Spriteset_Map.new end end @mnlay = Sprite.new @mnlay.bitmap = RPG::Cache.picture(MOG::FILE_LAYOUT) @mnlay.z = 2 @help_window = Window_Help.new @help_window.set_text(@help_text) @help_window.opacity = 0 @savefile_windows = [] @cursor_displace = 0 for i in 0..2 @savefile_windows.push(Window_SaveFile.new(i, make_filename(i))) end @savefile_windows[0] @file_index = $game_temp.last_file_index @savefile_windows[@file_index].selected = true @savefile_windows[0].y = 40 @savefile_windows[1].y = 140 @savefile_windows[2].y = 240 @win_move_time = 0 @win_move = 0 @win_dire = 0 @win_opac = 255 @win1_y = 0 @win2_y = 0 @win3_y = 0 unless MOG::FILE_FX == 2 Graphics.transition(MOG::FILE_TRAN_TIME, "Graphics/Transitions/" + MOG::FILE_TRAN_TYPE) else Graphics.transition end loop do Graphics.update Input.update update if $scene != self break end end for i in 0..50 @mnback.ox += 1 if MOG::FILE_FX == 0 @savefile_windows[0].x += 10 @savefile_windows[1].x -= 10 @savefile_windows[2].x += 10 for i in @savefile_windows i.contents_opacity -= 5 end Graphics.update end Graphics.freeze @help_window.dispose @mnback.dispose if MOG::FILE_FX == 0 @mnback.dispose if MOG::FILE_FX == 1 @mnback.dispose if MOG::FILE_FX == 2 && $mog_scene_filesave_flag != 1 @spriteset.dispose if MOG::FILE_FX == 2 && $mog_scene_filesave_flag == 1 $mog_scene_filesave_flag = 0 @mnlay.dispose for i in @savefile_windows ; i.dispose ; end end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update @mnback.ox += 1 if MOG::FILE_FX == 0 if MOG::FILE_OPACITY_FX @win_opac += 3 @win_opac = 150 if @win_opac > 254 else @win_opac = 255 end @win_move_time += 1 if @win_move_time > 60 @win_dire += 1 @win_move_time = 0 end @win_dire = 0 if @win_dire > 1 if @win_dire == 0 @win_move += 1 else @win_move -= 1 end # Update File Windows update_window_z update_moving_window if MOG::FILE_MOVE_FX update_window_opacity @help_window.update for i in @savefile_windows ; i.update ; end if Input.trigger?(Input::C) on_decision(make_filename(@file_index)) $game_temp.last_file_index = @file_index return end if Input.trigger?(Input::B) on_cancel return end if Input.repeat?(Input::DOWN) if Input.trigger?(Input::DOWN) or @file_index < 3 $game_system.se_play($data_system.cursor_se) @savefile_windows[@file_index].selected = false @file_index = (@file_index + 1) % 3 @savefile_windows[@file_index].selected = true return end end if Input.repeat?(Input::UP) if Input.trigger?(Input::UP) or @file_index > 0 $game_system.se_play($data_system.cursor_se) @savefile_windows[@file_index].selected = false @file_index = (@file_index - 1) % 3 @savefile_windows[@file_index].selected = true return end end end #-------------------------------------------------------------------------- # * Frame Update (Reposition File Window) #-------------------------------------------------------------------------- def update_window_z if @file_index == 0 @savefile_windows[0].z = 2 @savefile_windows[1].z = 1 @savefile_windows[2].z = 0 elsif @file_index == 1 @savefile_windows[0].z = 1 @savefile_windows[1].z = 2 @savefile_windows[2].z = 1 else @savefile_windows[0].z = 0 @savefile_windows[1].z = 1 @savefile_windows[2].z = 2 end end #-------------------------------------------------------------------------- # * Frame Update (Moving File Window) #-------------------------------------------------------------------------- def update_moving_window if @file_index == 0 @savefile_windows[0].x = @win_move @savefile_windows[1].x = 0 @savefile_windows[1].x = 0 @savefile_windows[2].x = 0 elsif @file_index == 1 @savefile_windows[0].x = 0 @savefile_windows[1].x = @win_move @savefile_windows[2].x = 0 else @savefile_windows[0].x = 0 @savefile_windows[1].x = 0 @savefile_windows[2].x = @win_move end end #-------------------------------------------------------------------------- # * Frame Update (File Window Opacity) #-------------------------------------------------------------------------- def update_window_opacity if @file_index == 0 @savefile_windows[0].contents_opacity = @win_opac @savefile_windows[1].contents_opacity = 130 @savefile_windows[2].contents_opacity = 130 elsif @file_index == 1 @savefile_windows[0].contents_opacity = 130 @savefile_windows[1].contents_opacity = @win_opac @savefile_windows[2].contents_opacity = 130 else @savefile_windows[0].contents_opacity = 130 @savefile_windows[1].contents_opacity = 130 @savefile_windows[2].contents_opacity = @win_opac end end end
Mais RMXP
- Tela de título avançada no RPG Maker XP
- MOG Scene End Screen Sakura V2.2
- MOG MPW Icon v1.0
- Squad Based Action Battle System
- MOG Scene Name Iris V1.3
- Porta Com Cristais [RPG Maker XP]
- Resources Wizard Fix
- MOG Enemy Level System V1.1
- Entendendo o duncionamento de um script [RGSS]
- Aumentando o tamanho dos ícones [RGSS]
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/10
- Tamanho: 1,39 MB (pacote de instalação e/ou espaço em disco)
- Licença: Grátis
- Categoria: Programação XP
- Tags: Em revisão, RPG Maker XP
- Adicionado por: LichKing
- Acessos: 111
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.