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
endMais RMXP
Download e ficha técnica
- Download (clique com o botão esquerdo do mouse ou toque no link)
- Desenvolvedor, publisher e/ou distribuidor: Moghunter
- Sistema(s): 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: 127
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
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, incluindo, mas não limitando-se a telefones, não serão publicados. O conteúdo dos comentários é de inteira responsabilidade de seus autores. Você pode acompanhar os comentários desse post através do feed RSS 2.0.
