Partagez
Aller en bas
Nohansen
Nohansen
Membre

Nombre de messages : 150
Age : 23
Localisation : A l'isthme est de la France ;p
Distinction : aucune
Date d'inscription : 30/07/2009

Problème avec le Script de Sauvergarde Neo_Save_System ! Empty Problème avec le Script de Sauvergarde Neo_Save_System !

le Dim 23 Mai 2010 - 0:07
Bonsoir à tous,

j'ai un problème avec ce script :

Spoiler:
#===============================================================
# ● [VX] ◦ Neo Save System with Unlimited save slots ◦ □
#--------------------------------------------------------------
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Released on: 04/05/2008
# ◦ Version: 1.0
#--------------------------------------------------------------
# ◦ Credit: - Andreas21 and Cybersam for Screenshot script
# - Traduction du module Wora_NSS : Blockade
# - RPG Revolution for hosted screenshot DLL file.
#--------------------------------------------------------------
# ◦ Requirement: screenshot.dll by Andreas21.
# You can download it from:
# http://www.rpgrevolution.com/users/woratana/DLL_file/
# Put it in project folder. (folder that has Game.exe)
#--------------------------------------------------------------
# ◦ Features:
# - Slot de sauvegardes illimités, vous pouvez choisir le nombre de slots.
# - Vous pouvez integrer une image de fond.
# - Choisisez le nom des sauvegardes, le dossier ou seront stocké vos fichiers de sauvegardes
# - Choisisez les informations que vous vouler afficher
# - Texte des titres d'information éditables
# - Inclus Screenshot de la map actuelle, possibilité de choisir l'extension du fichier image.
# - Enlevez le texte que vous ne voulez pas du nom des maps (e.g. tags pour script spécial)
# - Choissiez les maps que vous ne voulez pasque leurs nom apparaissent
# - Inclus confirmation de sauvegarde
#=================================================================

module Wora_NSS
#==========================================================================
# * START NEO SAVE SYSTEM - SETUP
#--------------------------------------------------------------------------
NSS_WINDOW_OPACITY = 255 # Opacitée de TOUTES les fenêtres (De 0 à 255)
# Vous pouvez la mettre a 0, si vous voulez utliser une image de fond
NSS_IMAGE_BG = "" # Image de fond, a placer dans le dossier "picture" mettre le nom de l'image a la place des "".
# Si vous ne voulez pas d'image de fond, mettez ""
NSS_IMAGE_BG_OPACITY = 255 # Opacité de l'image de fond

MAX_SAVE_SLOT = 20 # Nombre maximum de Slot.
SLOT_NAME = 'Slot {id}'
# Nom des slots ( Montrés dans le menu de sauvegarde) Utilisez {id} pour l'ID du slot
SAVE_FILE_NAME = 'Saveslot{id}.rvdata'
# Nom du fichier de sauvegarde ( dans votre dossier du jeu)
# Utilisez {id} pour l'ID du slot
SAVE_PATH = ""
# Chemin d'accés pour le dossier, ou sont stocké les fichiers de sauvegardes,
# ( 'Save/' pour qu'ils soient stocké dans un dossier nommné Save qui se trouve a la racine de votre jeu ( Ou se trouve le game.exe)
# Mettez "" pour l'emplacement d'origine

SAVED_SLOT_ICON = 133 # Numéro de l'icone pour une partie sauveagrdée
EMPTY_SLOT_ICON = 141 # Numéro de l'icone pour un slot vide

IMAGE_FILETYPE = '.png' # IType de l'image pour le screenshot sauvegardé
# '.bmp', ou '.jpg', ou '.png'

EMPTY_SLOT_TEXT = 'Pas de données' # Texte quand le slot est vide

# Remplacer true par false pour desactiver

DRAW_GOLD = true # Afficher l'argent
DRAW_PLAYTIME = true # Afficher le temps de jeu
DRAW_LOCATION = true # Affichier la localisation
DRAW_FACE = true # Affichier le faceset des heros
DRAW_LEVEL = true # Afficher le level des heros
DRAW_NAME = true # Afficher le nom des heros

PLAYTIME_TEXT = 'Temps de jeu: '
GOLD_TEXT = 'Argent : '
LOCATION_TEXT = 'Localisation : '
LV_TEXT = 'Niv. '

MAP_NAME_TEXT_SUB = %w{}
# Texte que vous voulez enlever du nom de la map,
# e.g. %w{[LN] [DA]} enléve '[LN]' et '[DA]' du nom de la map
MAP_NO_NAME_LIST = [] # ID of Map that will not show map name, e.g. [1,2,3]
MAP_NO_NAME_NAME = '??????????' # What you will use to call map in no name list

MAP_BORDER = Color.new(0,0,0,200) # Couleur de la bordure du Screenshoot de la Map(Rouge,Vert,Bleu,Opacité)
FACE_BORDER = Color.new(0,0,0,200) # Face border color

## SAVE CONFIRMATION WINDOW ##
SFC_Text_Confirm = 'Comfirmer la sauvegarde' #Texte pour confirmer la sauvegarde
SFC_Text_Cancel = 'Annuler' # Texte pour annuler le remplacement de la ssauvegarde
SFC_Window_Width = 270 # Taille de la fenêtre de comfirmation
SFC_Window_X_Offset = 0 # Position horrizontale de la fenêtre de confirmation ( 0 au milieu)
SFC_Window_Y_Offset = 0 # Position verticale de la fenêtre de confirmation ( 0 au milieu)
#----------------------------------------------------------------------
# END NEO SAVE SYSTEM - SETUP
#=========================================================================

#-------------------------------------------------------------
# Screenshot V2 by Andreas21 and Cybersam
#-------------------------------------------------------------
@screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
module_function
def self.shot(file_name)
case IMAGE_FILETYPE
when '.bmp'; typid = 0
when '.jpg'; typid = 1
when '.png'; typid = 2
end
# Get Screenshot
filename = file_name + IMAGE_FILETYPE
@screen.call(0, 0, Graphics.width, Graphics.height, filename, self.handel,
typid)
end
def self.handel
game_name = "\0" * 256
@readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
return @findwindow.call('RGSS Player',game_name)
end
end

class Scene_File < Scene_Base
include Wora_NSS
attr_reader :window_slotdetail
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
if NSS_IMAGE_BG != ''
@bg = Sprite.new
@bg.bitmap = Cache.picture(NSS_IMAGE_BG)
@bg.opacity = NSS_IMAGE_BG_OPACITY
end
@help_window = Window_Help.new
command = []
(1..MAX_SAVE_SLOT).each do |i|
command << SLOT_NAME.clone.gsub!(/\{ID\}/i) { i.to_s }
end
@window_slotdetail = Window_NSS_SlotDetail.new
@window_slotlist = Window_SlotList.new(160, command)
@window_slotlist.y = @help_window.height
@window_slotlist.height = Graphics.height - @help_window.height
@help_window.opacity = NSS_WINDOW_OPACITY
@window_slotdetail.opacity = @window_slotlist.opacity = NSS_WINDOW_OPACITY

# Create Folder for Save file
if SAVE_PATH != ''
Dir.mkdir(SAVE_PATH) if !FileTest.directory?(SAVE_PATH)
end
if @saving
@index = $game_temp.last_file_index
@help_window.set_text(Vocab::SaveMessage)
else
@index = self.latest_file_index
@help_window.set_text(Vocab::LoadMessage)
(1..MAX_SAVE_SLOT).each do |i|
@window_slotlist.draw_item(i-1, false) if !@window_slotdetail.file_exist?(i)
end
end
@window_slotlist.index = @index
# Draw Information
@last_slot_index = @window_slotlist.index
@window_slotdetail.draw_data(@last_slot_index + 1)
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
unless @bg.nil?
@bg.bitmap.dispose
@bg.dispose
end
@window_slotlist.dispose
@window_slotdetail.dispose
@help_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if !@confirm_window.nil?
@confirm_window.update
if Input.trigger?(Input::C)
if @confirm_window.index == 0
determine_savefile
@confirm_window.dispose
@confirm_window = nil
else
Sound.play_cancel
@confirm_window.dispose
@confirm_window = nil
end
elsif Input.trigger?(Input::B)
Sound.play_cancel
@confirm_window.dispose
@confirm_window = nil
end
else
update_menu_background
@window_slotlist.update
if @window_slotlist.index != @last_slot_index
@last_slot_index = @window_slotlist.index
@window_slotdetail.draw_data(@last_slot_index + 1)
end
@help_window.update
update_savefile_selection
end
end
#--------------------------------------------------------------------------
# * Update Save File Selection
#--------------------------------------------------------------------------
def update_savefile_selection
if Input.trigger?(Input::C)
if @saving and @window_slotdetail.file_exist?(@last_slot_index + 1)
Sound.play_decision
text1 = SFC_Text_Confirm
text2 = SFC_Text_Cancel
@confirm_window = Window_Command.new(SFC_Window_Width,[text1,text2])
@confirm_window.x = ((544 - @confirm_window.width) / 2) + SFC_Window_X_Offset
@confirm_window.y = ((416 - @confirm_window.height) / 2) + SFC_Window_Y_Offset
else
determine_savefile
end
elsif Input.trigger?(Input::B)
Sound.play_cancel
return_scene
end
end
#--------------------------------------------------------------------------
# * Execute Save
#--------------------------------------------------------------------------
def do_save
File.rename(SAVE_PATH + 'temp' + IMAGE_FILETYPE,
make_filename(@last_slot_index).gsub(/\..*$/){ '_ss' } + IMAGE_FILETYPE)
file = File.open(make_filename(@last_slot_index), "wb")
write_save_data(file)
file.close
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Execute Load
#--------------------------------------------------------------------------
def do_load
file = File.open(make_filename(@last_slot_index), "rb")
read_save_data(file)
file.close
$scene = Scene_Map.new
RPG::BGM.fade(1500)
Graphics.fadeout(60)
Graphics.wait(40)
@last_bgm.play
@last_bgs.play
end
#--------------------------------------------------------------------------
# * Confirm Save File
#--------------------------------------------------------------------------
def determine_savefile
if @saving
Sound.play_save
do_save
else
if @window_slotdetail.file_exist?(@last_slot_index + 1)
Sound.play_load
do_load
else
Sound.play_buzzer
return
end
end
$game_temp.last_file_index = @last_slot_index
end
#--------------------------------------------------------------------------
# * Create Filename
# file_index : save file index (0-3)
#--------------------------------------------------------------------------
def make_filename(file_index)
return SAVE_PATH + SAVE_FILE_NAME.gsub(/\{ID\}/i) { (file_index + 1).to_s }
end
#--------------------------------------------------------------------------
# * Select File With Newest Timestamp
#--------------------------------------------------------------------------
def latest_file_index
latest_index = 0
latest_time = Time.at(0)
(1..MAX_SAVE_SLOT).each do |i|
file_name = make_filename(i - 1)
next if !@window_slotdetail.file_exist?(i)
file_time = File.mtime(file_name)
if file_time > latest_time
latest_time = file_time
latest_index = i - 1
end
end
return latest_index
end
end

class Window_SlotList < Window_Command
#--------------------------------------------------------------------------
# * Draw Item
#--------------------------------------------------------------------------
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
icon_index = 0
self.contents.clear_rect(rect)
if $scene.window_slotdetail.file_exist?(index + 1)
icon_index = Wora_NSS::SAVED_SLOT_ICON
else
icon_index = Wora_NSS::EMPTY_SLOT_ICON
end
if !icon_index.nil?
rect.x -= 4
draw_icon(icon_index, rect.x, rect.y, enabled) # Draw Icon
rect.x += 26
rect.width -= 20
end
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, @commands[index])
end

def cursor_down(wrap = false)
if @index < @item_max - 1 or wrap
@index = (@index + 1) % @item_max
end
end

def cursor_up(wrap = false)
if @index > 0 or wrap
@index = (@index - 1 + @item_max) % @item_max
end
end
end

class Window_NSS_SlotDetail < Window_Base
include Wora_NSS
def initialize
super(160, 56, 384, 360)
@data = []
@exist_list = []
@bitmap_list = {}
@map_name = []
end

def draw_data(slot_id)
contents.clear # 352, 328
load_save_data(slot_id) if @data[slot_id].nil?
if @exist_list[slot_id]
save_data = @data[slot_id]
# DRAW SCREENSHOT~
contents.fill_rect(0,30,352,160, MAP_BORDER)
if save_data['ss']
bitmap = get_bitmap(save_data['ss_path'])
rect = Rect.new((Graphics.width-348)/2,(Graphics.height-156)/2,348,156)
contents.blt(2,32,bitmap,rect)
end
if DRAW_GOLD
# DRAW GOLD
gold_textsize = contents.text_size(save_data['gamepar'].gold).width
goldt_textsize = contents.text_size(GOLD_TEXT).width
contents.font.color = system_color
contents.draw_text(0, 0, goldt_textsize, WLH, GOLD_TEXT)
contents.draw_text(goldt_textsize + gold_textsize,0,200,WLH, Vocab::gold)
contents.font.color = normal_color
contents.draw_text(goldt_textsize, 0, gold_textsize, WLH, save_data['gamepar'].gold)
end
if DRAW_PLAYTIME
# DRAW PLAYTIME
hour = save_data['total_sec'] / 60 / 60
min = save_data['total_sec'] / 60 % 60
sec = save_data['total_sec'] % 60
time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
pt_textsize = contents.text_size(PLAYTIME_TEXT).width
ts_textsize = contents.text_size(time_string).width
contents.font.color = system_color
contents.draw_text(contents.width - ts_textsize - pt_textsize, 0,
pt_textsize, WLH, PLAYTIME_TEXT)
contents.font.color = normal_color
contents.draw_text(0, 0, contents.width, WLH, time_string, 2)
end
if DRAW_LOCATION
# DRAW LOCATION
lc_textsize = contents.text_size(LOCATION_TEXT).width
mn_textsize = contents.text_size(save_data['map_name']).width
contents.font.color = system_color
contents.draw_text(0, 190, contents.width,
WLH, LOCATION_TEXT)
contents.font.color = normal_color
contents.draw_text(lc_textsize, 190, contents.width, WLH,
save_data['map_name'])
end
# DRAW FACE & Level & Name
save_data['gamepar'].members.each_index do |i|
actor = save_data['gamepar'].members[i]
face_x_base = (i*80) + (i*Cool
face_y_base = 216
lvn_y_plus = 10
lv_textsize = contents.text_size(actor.level).width
lvt_textsize = contents.text_size(LV_TEXT).width
if DRAW_FACE
# Draw Face
contents.fill_rect(face_x_base, face_y_base, 84, 84, FACE_BORDER)
draw_face(actor.face_name, actor.face_index, face_x_base + 2,
face_y_base + 2, 80)
end
if DRAW_LEVEL
# Draw Level
contents.font.color = system_color
contents.draw_text(face_x_base + 2 + 80 - lv_textsize - lvt_textsize,
face_y_base + 2 + 80 - WLH + lvn_y_plus, lvt_textsize, WLH, LV_TEXT)
contents.font.color = normal_color
contents.draw_text(face_x_base + 2 + 80 - lv_textsize,
face_y_base + 2 + 80 - WLH + lvn_y_plus, lv_textsize, WLH, actor.level)
end
if DRAW_NAME
# Draw Name
contents.draw_text(face_x_base, face_y_base + 2 + 80 + lvn_y_plus - 6, 84,
WLH, actor.name, 1)
end
end
else
contents.draw_text(0,0, contents.width, contents.height - WLH, EMPTY_SLOT_TEXT, 1)
end
end

def load_save_data(slot_id)
file_name = make_filename(slot_id)
if file_exist?(slot_id) or FileTest.exist?(file_name)
@exist_list[slot_id] = true
@data[slot_id] = {}
# Start load data
file = File.open(file_name, "r")
@data[slot_id]['time'] = file.mtime
@data[slot_id]['char'] = Marshal.load(file)
@data[slot_id]['frame'] = Marshal.load(file)
@data[slot_id]['last_bgm'] = Marshal.load(file)
@data[slot_id]['last_bgs'] = Marshal.load(file)
@data[slot_id]['gamesys'] = Marshal.load(file)
@data[slot_id]['gamemes'] = Marshal.load(file)
@data[slot_id]['gameswi'] = Marshal.load(file)
@data[slot_id]['gamevar'] = Marshal.load(file)
@data[slot_id]['gameselfvar'] = Marshal.load(file)
@data[slot_id]['gameactor'] = Marshal.load(file)
@data[slot_id]['gamepar'] = Marshal.load(file)
@data[slot_id]['gametro'] = Marshal.load(file)
@data[slot_id]['gamemap'] = Marshal.load(file)
@data[slot_id]['total_sec'] = @data[slot_id]['frame'] / Graphics.frame_rate
@data[slot_id]['ss_path'] = file_name.gsub(/\..*$/){'_ss'} + IMAGE_FILETYPE
@data[slot_id]['ss'] = FileTest.exist?(@data[slot_id]['ss_path'])
@data[slot_id]['map_name'] = get_mapname(@data[slot_id]['gamemap'].map_id)
file.close
else
@exist_list[slot_id] = false
@data[slot_id] = -1
end
end

def make_filename(file_index)
return SAVE_PATH + SAVE_FILE_NAME.gsub(/\{ID\}/i) { (file_index).to_s }
end

def file_exist?(slot_id)
return @exist_list[slot_id] if !@exist_list[slot_id].nil?
@exist_list[slot_id] = FileTest.exist?(make_filename(slot_id))
return @exist_list[slot_id]
end

def get_mapname(map_id)
if @map_data.nil?
@map_data = load_data("Data/MapInfos.rvdata")
end
if @map_name[map_id].nil?
if MAP_NO_NAME_LIST.include?(map_id)
@map_name[map_id] = MAP_NO_NAME_NAME
else
@map_name[map_id] = @map_data[map_id].name
MAP_NAME_TEXT_SUB.each_index do |i|
@map_name[map_id].sub!(MAP_NAME_TEXT_SUB[i], '')
end
end
end
return @map_name[map_id]
end

def get_bitmap(path)
if !@bitmap_list.include?(path)
@bitmap_list[path] = Bitmap.new(path)
end
return @bitmap_list[path]
end

def dispose
@bitmap_list.each {|i| i[1].dispose }
super
end
end

class Scene_Title < Scene_Base
def check_continue
file_name = Wora_NSS::SAVE_PATH + Wora_NSS::SAVE_FILE_NAME.gsub(/\{ID\}/i) { '*' }
@continue_enabled = (Dir.glob(file_name).size > 0)
end
end

class Scene_Map < Scene_Base
alias wora_nss_scemap_ter terminate
def terminate
Wora_NSS.shot(Wora_NSS::SAVE_PATH + 'temp')
wora_nss_scemap_ter
end
end
#======================================================================
# END - NEO SAVE SYSTEM by Woratana
#======================================================================

Je peux sauvegarder mais quand je veux charger ça me dit :

script 'Scene_File' line 231 : TypeError occured.

cannot convert RPG::BGM into Integrer

Voila se qu'il se trouve à cette ligne :

Graphics.frame_count = Marshal.load(file)

J'ai un peu bidouiller, mais rien y fait, donc je m'en remet à vous (phrase réccurente de mes problèmes je sais...) amis makers !

Merci d'avance, makez avec amour, gloire et beauté Very Happy !
Skillo
Skillo
Staffeux retraité

Nombre de messages : 526
Age : 30
Localisation : Rennes
Distinction : J'aime ce gars :P
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' Very Happy]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008

Problème avec le Script de Sauvergarde Neo_Save_System ! Empty Re: Problème avec le Script de Sauvergarde Neo_Save_System !

le Dim 23 Mai 2010 - 0:38
Quand tu essaye de charger c'est une sauvegarde que tu as faite avant de mettre le script? si c'est le cas l'erreur est normal et dans ce il suffit juste que tu en fasse une nouvelle et celle ci tu pourras la charger
Nohansen
Nohansen
Membre

Nombre de messages : 150
Age : 23
Localisation : A l'isthme est de la France ;p
Distinction : aucune
Date d'inscription : 30/07/2009

Problème avec le Script de Sauvergarde Neo_Save_System ! Empty Re: Problème avec le Script de Sauvergarde Neo_Save_System !

le Dim 23 Mai 2010 - 0:44
Non, c'est une sauvegarde faite avec le script.
Coco'
Coco'
Staffeux retraité

Nombre de messages : 6577
Age : 25
Localisation : Nord/Douai
Distinction : EL DICTATOR COCO'
Coco-Dieu en puissance

Problème avec le Script de Sauvergarde Neo_Save_System ! Magikarpe Grand gourou suppléant de la secte des MAGIKARP
Leader charismatique des 2beStaffieux

N°1 du forum
Président, vice-présidents et membres honoraires de la cour suprême du forum
Président de l'association des grosses distinctions CMB
Date d'inscription : 02/07/2008
http://www.rpgmakervx-fr.com

Problème avec le Script de Sauvergarde Neo_Save_System ! Empty Re: Problème avec le Script de Sauvergarde Neo_Save_System !

le Lun 28 Juin 2010 - 13:09
Dudu'
Dudu'
Staffeux retraité

Nombre de messages : 2060
Age : 28
Distinction : Apprenti KGB-boy en avenir
[Coco' Smile]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009

Problème avec le Script de Sauvergarde Neo_Save_System ! Empty Re: Problème avec le Script de Sauvergarde Neo_Save_System !

le Lun 6 Sep 2010 - 18:51
Contenu sponsorisé

Problème avec le Script de Sauvergarde Neo_Save_System ! Empty Re: Problème avec le Script de Sauvergarde Neo_Save_System !

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum