Menu sauvegarde par MOGHUNTER
Lun 9 Sep 2013 - 19:24
Menu Sauvegarde
Auteur : Moghunter
Graphismes : Red Rusty Raven
Version du script : V. 1.0
Principe du script : Il réagence votre menu de sauvegarde pour faire quelque chose de plus sympa à la vue.
Instructions : Copiez le script et collez le au dessus de "MAIN". Les images "Win_File", "Lay_File" et "MN_BK" sont à mettre dans le dossier "picture". Les ressources sont à la fin de ce topic.
Screens :
- Voir l'image:
- Voir l'image:
Script :
- Voir le script:
- Code:
#_________________________________________________
# MOG_Scene File Ayumi V1.0
#_________________________________________________
# By Moghunter
#_________________________________________________
module MOG
#Temps de transition
MSVT = 30
#Type de transition
MSVTT = "006-Stripe02"
end
###############
# Window_Base #
###############
class Window_Base < Window
def drw_win_file(x,y)
dwf = RPG::Cache.picture("Win_File")
cw = dwf.width
ch = dwf.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, dwf, src_rect)
end
def nada
face = RPG::Cache.picture("Egan_Fm")
end
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
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
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
############
# Game_Map #
############
class Game_Map
def map_name
@mapinfo = load_data("Data/MapInfos.rxdata") if @mapinfo == nil
return @mapinfo[@map_id].name
end
end
###################
# Window_SaveFile #
###################
class Window_SaveFile < Window_Base
attr_reader :filename
attr_reader :selected
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 = "Sauvegarde#{@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
def refresh
self.contents.clear
self.contents.font.name = "Trajan Pro"
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
def selected=(selected)
@selected = selected
end
end
##############
# Scene_File #
##############
class Scene_File
def initialize(help_text)
@help_text = help_text
end
def main
@mnback = Plane.new
@mnback.bitmap = RPG::Cache.picture("MN_BK")
@mnback.z = 1
@mnlay = Sprite.new
@mnlay.bitmap = RPG::Cache.picture("Lay_File.PNG")
@mnlay.z = 2
@help_window = Window_Help.new
@help_window.set_text(@help_text)
@help_window.opacity = 0
@savefile_windows = []
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
Graphics.transition(MOG::MSVT, "Graphics/Transitions/" + MOG::MSVTT)
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
for i in 0..50
@mnback.ox += 1
@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
@mnlay.dispose
for i in @savefile_windows
i.dispose
end
end
def update
@mnback.ox += 1
@win_opac += 3
@win_move_time += 1
if @win_opac > 254
@win_opac = 150
end
if @win_move_time > 60
@win_dire += 1
@win_move_time = 0
end
if @win_dire > 1
@win_dire = 0
end
if @win_dire == 0
@win_move += 1
else
@win_move -= 1
end
if @file_index == 0
@savefile_windows[0].z = 2
@savefile_windows[1].z = 1
@savefile_windows[2].z = 0
@savefile_windows[0].x = @win_move
@savefile_windows[1].x = 0
@savefile_windows[1].x= 0
@savefile_windows[2].x = 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].z = 1
@savefile_windows[1].z = 2
@savefile_windows[2].z = 1
@savefile_windows[0].x = 0
@savefile_windows[1].x = @win_move
@savefile_windows[2].x = 0
@savefile_windows[0].contents_opacity = 130
@savefile_windows[1].contents_opacity = @win_opac
@savefile_windows[2].contents_opacity = 130
else
@savefile_windows[0].z = 0
@savefile_windows[1].z = 1
@savefile_windows[2].z = 2
@savefile_windows[0].x = 0
@savefile_windows[1].x = 0
@savefile_windows[2].x = @win_move
@savefile_windows[0].contents_opacity = 130
@savefile_windows[1].contents_opacity = 130
@savefile_windows[2].contents_opacity = @win_opac
end
@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
def make_filename(file_index)
return "Sauvegarde#{file_index + 1}.rxdata"
end
end
Ressources :
Toutes les ressources nécessaires sont dans le fichier suivant. Décompressez le zip pour y avoir accès. Il y a des fichiers en .PSD entièrement personnalisables pour les possesseurs de Photoshop (toute version) et SAI (il me semble qu'on peut ouvrir les PSD avec). Pour ceux ayant d'autres logiciels, j'ai mis des .PNG assemblables facilement. Une notice est fournie avec le tout.
Toutes les ressources nécessaires sont dans le fichier suivant. Décompressez le zip pour y avoir accès. Il y a des fichiers en .PSD entièrement personnalisables pour les possesseurs de Photoshop (toute version) et SAI (il me semble qu'on peut ouvrir les PSD avec). Pour ceux ayant d'autres logiciels, j'ai mis des .PNG assemblables facilement. Une notice est fournie avec le tout.
- HeavenStaffeux retraité
- Nombre de messages : 2441
Age : 23
Localisation : Alpes-Maritimes VIRILITÉ OLALA
Distinction : Aucune
Date d'inscription : 18/10/2012
Re: Menu sauvegarde par MOGHUNTER
Lun 9 Sep 2013 - 20:28
Dommage que je n'utilise pas XP, les images sont vraiment très belles (:
Merci du partage Raven ^^
N.B => Tu as mis le script dans le forum "Combats" c'normal ?
Heav'n
Merci du partage Raven ^^
N.B => Tu as mis le script dans le forum "Combats" c'normal ?
Heav'n
Re: Menu sauvegarde par MOGHUNTER
Lun 9 Sep 2013 - 20:43
Non c'est pas normal. Je lag tellement que j'ai du mal à cliquer sur les bons liens. x)
Merci pour le compliment sinon !
Merci pour le compliment sinon !
- Elisa'Staffeux retraité
- Nombre de messages : 2924
Age : 26
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' ]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]
Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009
Re: Menu sauvegarde par MOGHUNTER
Lun 9 Sep 2013 - 21:52
Je déplace, +5 points de participation !
Re: Menu sauvegarde par MOGHUNTER
Mer 11 Sep 2013 - 23:38
Pareil que Heaven, dommage que je n'utilise pas RMXP, néanmoins, même si je l'utiliserais, je suis sur un projet pokémon, donc inutil pour moi, mais utile pour d'autre personne..
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum