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
.
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.
#============================================================================== # ** 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
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 acompanhar os comentários desse post através do feed RSS 2.0.
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.