- SlameMembre
- Nombre de messages : 32
Distinction : aucune
Date d'inscription : 17/11/2014
[résolu]Problème sauvegarde (lié à un script)
Jeu 4 Déc 2014 - 23:48
Bonjour, bonsoir,
Je viens solliciter votre aide car j'ai un léger problème.
Voilà, j'ai trouvé un script (qui à la base est pour RPG MAKER VX), je l'ai mis sur mon projet (sous RPG MAKER VX ACE). Ce script a pour but d'afficher en jeu les équipements portés (directement sur le personnage). Au niveau rendu en jeu/config tout marche bien sauf que... Il m'est IMPOSSIBLE de lancer une sauvegarde en jeu...
J'ai cherché sur internet mais aucune solution... Ce script (voir ci-dessous) est-il adaptable à la version ACE ? Si oui, que faut-il faire ?
- Code:
=begin
Script d'affichage des équipements sur le Joueur
Auteur: wilkyo
Idée de Rotsak
Version: 1.0
Description:
Affiche sur le héros les équipements dont il est équipé.
N'affiche que ceux qui sont mis dans la Base de Données comme "Affichable"
Utilisation:
Pour ce faire, il faut mettre ce commentaire sur la page de l'objet:
CharaName = image_de_l_equipement
Si c'est une image simple (avec $), ça suffit.
Sinon, il faut ajouter:
CharaIndex = index_de_l_equipement
(entre 0 et 7 inclus)
Changements:
- V 1.0: Script fonctionnel pour le premier héros de l'équipe, sur la map.
=end
module Wilkyo
# Priorités d'affichage. Plus le nombre est grand, plus il sera au dessus des autres.
# Plus le nombre est petit, plus il sera caché par les autres
# Bouclier, Casque, Armure, Accessoire
PRIORITE = [4, 3, 1, 2]#[4, 2, 1, 3]
end
#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
# This sprite is used to display characters. It observes a instance of the
# Game_Character class and automatically changes sprite conditions.
#==============================================================================
class Sprite_Player < Sprite_Character
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :armors
attr_reader :armors_charsets
attr_reader :armors_sprites
attr_accessor :need_refresh_armors
#--------------------------------------------------------------------------
# * Object Initialization
# viewport : viewport
# character : character (Game_Character)
#--------------------------------------------------------------------------
def initialize(viewport, character = nil)
@need_refresh_armors = false
@armors = $game_party.members[0].armors if $game_party.members.size > 0
@armors_charsets = []
@armors_sprites = []
for i in 0 .. @armors.size-1
@armors_sprites.push(::Sprite.new(viewport))
@armors_charsets.push(nil)
end
super(viewport, character)
end
def re_initialize
# Nettoyage des anciens
for i in 0 .. @armors.size-1
@armors_sprites[i].dispose
end
@armors_charsets = []
@armors_sprites = []
for i in 0 .. @armors.size-1
@armors_sprites.push(::Sprite.new(viewport))
if @armors[i] == nil or @armors[i].chara_name == nil
@armors_charsets.push(nil)
else
@armors_charsets.push([@armors[i].chara_name, @armors[i].chara_index, 0, 0])
@armors_sprites[i].bitmap = Cache.character(@armors_charsets[i][0])
@need_refresh_armors = true
end
end
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
for i in 0..@armors_sprites.size-1
@armors_sprites[i].dispose
end
super
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
@armors = $game_party.members[0].armors if $game_party.members.size > 0
update_bitmap_armors
update_src_rect_armors
end
#--------------------------------------------------------------------------
# * Update Transfer Origin Bitmap
#--------------------------------------------------------------------------
def update_bitmap_armors
re_initialize if @need_refresh_armors
for i in 0..@armors.size-1
# Si aucun équipement alors qu'il y en avait un
if (@armors[i] == nil and @armors_charsets[i] != nil) or
(@armors_charsets[i] != nil and @armors[i] != nil and @armors_charsets[i][0] != @armors[i].chara_name)
re_initialize
end
# S'il n'y a pas d'équipement ou s'il n'y a pas d'image pour l'équipement
next if @armors[i] == nil or @armors[i].chara_name == nil or @armors[i].chara_name == nil
# S'il n'y a pas de nom ou si le nom est différent
if @armors_charsets[i] == nil or @need_refresh_armors
if @armors_sprites[i] != nil
@armors_sprites[i].dispose
@armors_sprites[i] = ::Sprite.new(viewport)
end
@armors_charsets[i] = [@armors[i].chara_name, @armors[i].chara_index, 0, 0]
@armors_sprites[i].bitmap = Cache.character(@armors_charsets[i][0])
bitm = @armors_sprites[i].bitmap
sign = @armors_charsets[i][0][/^[\!\$]./]
if sign != nil and sign.include?('$')
@armors_charsets[i][2] = bitm.width / 3
@armors_charsets[i][3] = bitm.height / 4
else
@armors_charsets[i][2] = bitm.width / 12
@armors_charsets[i][3] = bitm.height / 8
end
@armors_sprites[i].ox = @armors_charsets[i][2] / 2
@armors_sprites[i].oy = @armors_charsets[i][3]
end
end
@need_refresh_armors = false
end
#--------------------------------------------------------------------------
# * Update Transfer Origin Rectangle
#--------------------------------------------------------------------------
def update_src_rect_armors
for i in 0..@armors.size
next if @armors[i] == nil or @armors_charsets[i] == nil
if @tile_id == 0
index = @armors_charsets[i][1]
pattern = @character.pattern < 3 ? @character.pattern : 1
sx = (index % 4 * 3 + pattern) * @armors_charsets[i][2]
sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @armors_charsets[i][3]
@armors_sprites[i].src_rect.set(sx, sy, @armors_charsets[i][2], @armors_charsets[i][3])
@armors_sprites[i].x = self.x
@armors_sprites[i].y = self.y
@armors_sprites[i].z = self.z + Wilkyo::PRIORITE[i]
end
end
end
end
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# * Change Party Member
#--------------------------------------------------------------------------
alias command_129_armors command_129
def command_129
command_129_armors
$game_party.sprite.need_refresh_armors = true
end
end
module RPG
#==============================================================================
# ** BaseItem
#------------------------------------------------------------------------------
# Superclass of Skill, Item, Weapon, and Armor.
#==============================================================================
class BaseItem
def chara_name
self.note.each_line { |line|
return line.gsub('CharaName = ', '').chomp if line.include?('CharaName = ')
}
return nil
end
def chara_index
self.note.each_line { |line|
return line.gsub('CharaIndex = ', '').chomp.to_i if line.include?('CharaIndex = ')
}
return 0
end
end
end
#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
# This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# * Create Character Sprite
#--------------------------------------------------------------------------
def create_characters
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
@character_sprites.push(sprite)
end
for vehicle in $game_map.vehicles
sprite = Sprite_Character.new(@viewport1, vehicle)
@character_sprites.push(sprite)
end
sp = Sprite_Player.new(@viewport1, $game_player)
$game_party.sprite = sp
@character_sprites.push(sp)
end
end
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# This class handles the party. It includes information on amount of gold
# and items. The instance of this class is referenced by $game_party.
#==============================================================================
class Game_Party < Game_Unit
attr_accessor :sprite
end
Merci d'avance et bonne journée/soirée !
- vincent26Membre
- Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010
Re: [résolu]Problème sauvegarde (lié à un script)
Ven 5 Déc 2014 - 15:16
Tient je l'avais fait ya un petit moment je ne sait pas si il contient des bug :
https://onedrive.live.com/redir?resid=923E0755996810EA!4487&authkey=!AAIz0bRTyNiIR34&ithint=file%2cexe
https://onedrive.live.com/redir?resid=923E0755996810EA!4487&authkey=!AAIz0bRTyNiIR34&ithint=file%2cexe
- SlameMembre
- Nombre de messages : 32
Distinction : aucune
Date d'inscription : 17/11/2014
Re: [résolu]Problème sauvegarde (lié à un script)
Ven 5 Déc 2014 - 18:10
Salut Vincent26, merci de ta réponse tout d'abord.
La sauvegarde marche en effet, cependant mon personnage ne s'affiche pas en jeu. :/
La sauvegarde marche en effet, cependant mon personnage ne s'affiche pas en jeu. :/
- Narak1Membre
- Nombre de messages : 130
Age : 32
Distinction : aucune
Date d'inscription : 09/11/2014
Re: [résolu]Problème sauvegarde (lié à un script)
Ven 5 Déc 2014 - 21:18
Le langage employer dans VX et ACE n'est pas le même, les script ne sont pas compatible
- SlameMembre
- Nombre de messages : 32
Distinction : aucune
Date d'inscription : 17/11/2014
Re: [résolu]Problème sauvegarde (lié à un script)
Sam 6 Déc 2014 - 18:18
Je m'en doute, mais comme il y avait seulement le problème de sauvegarde je pensais peut-être qu'en modifiant quelque chose le script puisse marcher avec sauvegarde. Enfin bon.
Le script de Vincent26 marche pour la sauvegarde, cependant mon personne n'est plus visible. Tant pis, je vais continuer à chercher une solution.
Le script de Vincent26 marche pour la sauvegarde, cependant mon personne n'est plus visible. Tant pis, je vais continuer à chercher une solution.
- vincent26Membre
- Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010
Re: [résolu]Problème sauvegarde (lié à un script)
Dim 7 Déc 2014 - 15:47
Je vais regarder si tu veut j'avais pas encore eu le temps
Narak => le language est le même c'est juste que RM VX Ace est mieux programmer que VX mais ya pas mal de truc qui sont très proche donc oui un script est totalement adaptable
Narak => le language est le même c'est juste que RM VX Ace est mieux programmer que VX mais ya pas mal de truc qui sont très proche donc oui un script est totalement adaptable
- Narak1Membre
- Nombre de messages : 130
Age : 32
Distinction : aucune
Date d'inscription : 09/11/2014
Re: [résolu]Problème sauvegarde (lié à un script)
Dim 7 Déc 2014 - 15:58
vincent26 oui adaptable mais pas compatible sans modifications.
- vincent26Membre
- Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010
Re: [résolu]Problème sauvegarde (lié à un script)
Dim 7 Déc 2014 - 16:13
Oui ^^ du coup voila pour la modif : en fait c'était bien un script pour RMVX ace mais il était mal agencer pour un truc qui empêche la sauvegarde (RM n’autorise pas la sauvegarde d'un sprite en lui même mais uniquement des valeur du coup il buger pour la sauvegarde ^^)
- Code:
=begin
Script d'affichage des équipements sur le Joueur
Auteur: wilkyo
Idée de Rotsak
Version: 1.0
Description:
Affiche sur le héros les équipements dont il est équipé.
N'affiche que ceux qui sont mis dans la Base de Données comme "Affichable"
Utilisation:
Pour ce faire, il faut mettre ce commentaire sur la page de l'objet:
CharaName = image_de_l_equipement
Si c'est une image simple (avec $), ça suffit.
Sinon, il faut ajouter:
CharaIndex = index_de_l_equipement
(entre 0 et 7 inclus)
Changements:
- V 1.0: Script fonctionnel pour le premier héros de l'équipe, sur la map.
=end
module Wilkyo
# Priorités d'affichage. Plus le nombre est grand, plus il sera au dessus des autres.
# Plus le nombre est petit, plus il sera caché par les autres
# Bouclier, Casque, Armure, Accessoire
PRIORITE = [4, 3, 1, 2]#[4, 2, 1, 3]
end
#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
# This sprite is used to display characters. It observes a instance of the
# Game_Character class and automatically changes sprite conditions.
#==============================================================================
class Sprite_Player < Sprite_Character
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :armors
attr_reader :armors_charsets
attr_reader :armors_sprites
attr_accessor :need_refresh_armors
#--------------------------------------------------------------------------
# * Object Initialization
# viewport : viewport
# character : character (Game_Character)
#--------------------------------------------------------------------------
def initialize(viewport, character = nil)
@need_refresh_armors = false
@armors = $game_party.members[0].armors if $game_party.members.size > 0
@armors_charsets = []
@armors_sprites = []
for i in 0 .. @armors.size-1
@armors_sprites.push(::Sprite.new(viewport))
@armors_charsets.push(nil)
end
super(viewport, character)
end
def re_initialize
# Nettoyage des anciens
for i in 0 .. @armors.size-1
@armors_sprites[i].dispose
end
@armors_charsets = []
@armors_sprites = []
for i in 0 .. @armors.size-1
@armors_sprites.push(::Sprite.new(viewport))
if @armors[i] == nil or @armors[i].chara_name == nil
@armors_charsets.push(nil)
else
@armors_charsets.push([@armors[i].chara_name, @armors[i].chara_index, 0, 0])
@armors_sprites[i].bitmap = Cache.character(@armors_charsets[i][0])
@need_refresh_armors = true
end
end
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
for i in 0..@armors_sprites.size-1
@armors_sprites[i].dispose
end
super
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
@armors = $game_party.members[0].armors if $game_party.members.size > 0
update_bitmap_armors
update_src_rect_armors
end
#--------------------------------------------------------------------------
# * Update Transfer Origin Bitmap
#--------------------------------------------------------------------------
def update_bitmap_armors
re_initialize if @need_refresh_armors
for i in 0..@armors.size-1
# Si aucun équipement alors qu'il y en avait un
if (@armors[i] == nil and @armors_charsets[i] != nil) or
(@armors_charsets[i] != nil and @armors[i] != nil and @armors_charsets[i][0] != @armors[i].chara_name)
re_initialize
end
# S'il n'y a pas d'équipement ou s'il n'y a pas d'image pour l'équipement
next if @armors[i] == nil or @armors[i].chara_name == nil or @armors[i].chara_name == nil
# S'il n'y a pas de nom ou si le nom est différent
if @armors_charsets[i] == nil or @need_refresh_armors
if @armors_sprites[i] != nil
@armors_sprites[i].dispose
@armors_sprites[i] = ::Sprite.new(viewport)
end
@armors_charsets[i] = [@armors[i].chara_name, @armors[i].chara_index, 0, 0]
@armors_sprites[i].bitmap = Cache.character(@armors_charsets[i][0])
bitm = @armors_sprites[i].bitmap
sign = @armors_charsets[i][0][/^[\!\$]./]
if sign != nil and sign.include?('$')
@armors_charsets[i][2] = bitm.width / 3
@armors_charsets[i][3] = bitm.height / 4
else
@armors_charsets[i][2] = bitm.width / 12
@armors_charsets[i][3] = bitm.height / 8
end
@armors_sprites[i].ox = @armors_charsets[i][2] / 2
@armors_sprites[i].oy = @armors_charsets[i][3]
end
end
@need_refresh_armors = false
end
#--------------------------------------------------------------------------
# * Update Transfer Origin Rectangle
#--------------------------------------------------------------------------
def update_src_rect_armors
for i in 0..@armors.size
next if @armors[i] == nil or @armors_charsets[i] == nil
if @tile_id == 0
index = @armors_charsets[i][1]
pattern = @character.pattern < 3 ? @character.pattern : 1
sx = (index % 4 * 3 + pattern) * @armors_charsets[i][2]
sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @armors_charsets[i][3]
@armors_sprites[i].src_rect.set(sx, sy, @armors_charsets[i][2], @armors_charsets[i][3])
@armors_sprites[i].x = self.x
@armors_sprites[i].y = self.y
@armors_sprites[i].z = self.z + Wilkyo::PRIORITE[i]
end
end
end
end
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# * Change Party Member
#--------------------------------------------------------------------------
alias command_129_armors command_129
def command_129
command_129_armors
$game_temp.sprite.need_refresh_armors = true
end
end
module RPG
#==============================================================================
# ** BaseItem
#------------------------------------------------------------------------------
# Superclass of Skill, Item, Weapon, and Armor.
#==============================================================================
class BaseItem
def chara_name
self.note.each_line { |line|
return line.gsub('CharaName = ', '').chomp if line.include?('CharaName = ')
}
return nil
end
def chara_index
self.note.each_line { |line|
return line.gsub('CharaIndex = ', '').chomp.to_i if line.include?('CharaIndex = ')
}
return 0
end
end
end
#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
# This class brings together map screen sprites, tilemaps, etc. It's used
# within the Scene_Map class.
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# * Create Character Sprite
#--------------------------------------------------------------------------
def create_characters
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
@character_sprites.push(sprite)
end
for vehicle in $game_map.vehicles
sprite = Sprite_Character.new(@viewport1, vehicle)
@character_sprites.push(sprite)
end
sp = Sprite_Player.new(@viewport1, $game_player)
$game_temp.sprite = sp
@character_sprites.push(sp)
end
end
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# This class handles the party. It includes information on amount of gold
# and items. The instance of this class is referenced by $game_party.
#==============================================================================
class Game_Temp
attr_accessor :sprite
end
- SlameMembre
- Nombre de messages : 32
Distinction : aucune
Date d'inscription : 17/11/2014
Re: [résolu]Problème sauvegarde (lié à un script)
Dim 7 Déc 2014 - 18:16
Merci beaucoup Vincent26, problème réglé !
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|