Le deal à ne pas rater :
Jeux, jouets et Lego : le deuxième à -50% (large sélection)
Voir le deal

Aller en bas
Slame
Slame
Membre

Nombre de messages : 32
Distinction : aucune
Date d'inscription : 17/11/2014

Résolu [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 ! Smile


Dernière édition par Slame le Dim 7 Déc 2014 - 18:17, édité 1 fois
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu 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
Slame
Slame
Membre

Nombre de messages : 32
Distinction : aucune
Date d'inscription : 17/11/2014

Résolu 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. :/
Narak1
Narak1
Membre

Nombre de messages : 130
Age : 32
Distinction : aucune
Date d'inscription : 09/11/2014

Résolu 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
Slame
Slame
Membre

Nombre de messages : 32
Distinction : aucune
Date d'inscription : 17/11/2014

Résolu 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. Smile
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu 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 Wink

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
Narak1
Narak1
Membre

Nombre de messages : 130
Age : 32
Distinction : aucune
Date d'inscription : 09/11/2014

Résolu Re: [résolu]Problème sauvegarde (lié à un script)

Dim 7 Déc 2014 - 15:58
vincent26 oui adaptable mais pas compatible sans modifications.
vincent26
vincent26
Membre

Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu 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
Slame
Slame
Membre

Nombre de messages : 32
Distinction : aucune
Date d'inscription : 17/11/2014

Résolu Re: [résolu]Problème sauvegarde (lié à un script)

Dim 7 Déc 2014 - 18:16
Merci beaucoup Vincent26, problème réglé ! Smile
Contenu sponsorisé

Résolu Re: [résolu]Problème sauvegarde (lié à un script)

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