Partagez
Aller en bas
avatar
UltimaSasuke
Membre

Nombre de messages : 88
Age : 23
Localisation : France, 05
Distinction : aucune
Date d'inscription : 27/07/2011

New Game+

le Mer 28 Déc 2011 - 3:22
Je n'avais vraiment rien à faire, et puis si je vous poste deux scripts d'affilé, et que en plus ils n'ont pas vraiment de liens, c'est qu'il dois forcement avoir un troisième quelque part!

Le voici, le New Game+. Vous le connaissez surement déjà, il existe dans certains jeux, dont le plus récent dans ma mémoire c'est Xenoblade Chronicle (Sur Wii).
Il permet de récupérez des donnés telle que les niveaux, objets, personnages, interrupteurs, variables, etc... Pour à la fin les mettre à disposition mais au début du jeux. En résumé on recommence le jeux avec les équipements, niveaux, objets, etc... avec le quelle on l'avait fini.

Il nécessite deux autres script, déjà Ace Save Engine qui est disponible ici : Ace Save Engine
Et aussi Ace Core Engine (Fonctionne sans aussi, mais je vous le conseille) : Ace Core Engine

Les Instructions sont sur le script. Et le voici :

Code:
#==============================================================================
#
# ▼ Yanfly Engine Ace - Save Engine Add-On: New Game+ v1.00
# -- Dérnière Mise à Jour: 2011.12.26
# -- Niveau: Normal
# -- Requière: YEA - Ace Save Engine v1.01+
#
#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-NewGame+"] = true

#==============================================================================
# ▼ Mise à Jour
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.26 - Début et fin de script.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# New Game+ est une bonne façon de replongé vos joueur dans le jeux, il permet
# au joueur de revivre le jeux d'une autre manière. Il transfert les objets,
# les membres de l'équipe, les compétences, les intérrupteurs et aussi les
# variables. Il existe donc de nombreuses options pour votre New Game+.
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Pour installer se script, ouvrez l'éditeur de script et insérez le en dessous
# de Matérial et au dessus de Main. N'oubliez pas de sauvegarder.
#
# -----------------------------------------------------------------------------
# Balises des Objets - Ces balises vont dans la notebox des objets dans la base
# de donnée.
# -----------------------------------------------------------------------------
# <no carry over>
# Mettre ses balises dans la notebox des objets que vous voulez qui ne sois pas
# repporté sur le New Game+
# -----------------------------------------------------------------------------
# Balises des armes - Ces balises vont dans la notebox des armes dans la base de
# donnée.
# -----------------------------------------------------------------------------
# <no carry over>
# Mettre ses balises dans la notebox des armes que vous voulez qui ne sois pas
# repporté sur le New Game+
# -----------------------------------------------------------------------------
# Balises des armures - Ces balises vont dans la notebox des armures dans la
# base de donnée.
# -----------------------------------------------------------------------------
# <no carry over>
# Mettre ses balises dans la notebox des armures que vous voulez qui ne sois pas
# repporté sur le New Game+
#==============================================================================
# ▼ Compatibilité
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Se script est uniquement pour RPG Maker VX Ace, et il est peu probable qu'il
# Fonctionne sous RPG Maker VX.
#
# Ce script requière Yanfly Engine Ace et Ace Save Engine v1.01+ et le script
# dois être placé après Ace Save Engine dans la liste des scripts.
#
#==============================================================================

module YEA
  module NEW_GAME_PLUS
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Paramètre Général -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # Description
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    NGP_SWITCH = 50        # Si l'interrupteur est sur "Activé" alors la
                          # sauvegarde passe en New Game+
    NGP_TEXT  = "New Game+"  # Texte utilisé pour dire que la partie est en
                              # New game+
   
    # Ceci est le texte qui s'affiche en déscrption du New Game+ dans le menu
    # des sauvegardes.
    NGP_HELP  = "Démarre un New Game+."
   
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Paramètre de report -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # Ces paramètres définisent se qui est reporté ou pas. Ces paramètres sont
    # spécifique, ajustez les soignesement.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # Ici sont noté les interrupteurs qui serons reporté et activé, tout les
    # autres serons sur "désactivé".
    CARRY_OVER_SWITCHES = [1, 2, 3]
   
    # Ici sont noté les variables qui serons reporté, tout les autres aurons une
    # valeur égale à 0.
    CARRY_OVER_VARIABLES = [1..6]
   
    # Si ceci est sur "false", les personnages serons remis à neuf. Si c'est sur
    # "true" alors les personnages resterons comme ils sont.
    CARRY_OVER_ACTORS = true
   
    # Ces paramètres ne sont utilisé que si CARRY_OVER_ACTORS est égale à "true"
    # , vous pouvez choisir de reporté les niveaux, les équipements et les
    # compétences. Si c'est égale à true ceci est reporté sinon, false, ce n'est
    # pas reporté.
    CARRY_OVER_LEVELS = true # Niveaux
    CARRY_OVER_EQUIPS = true # Equipements
    CARRY_OVER_SKILLS = true # Compétences
   
    # Si ce paramètre est sur false alors les membres de l'équipes reviendrons
    # à l'original, si la paramètre est true alors les membres de l'équipe
    # ne changerons pas.
    CARRY_OVER_PARTY_MEMBERS = true
   
   
    # Vous pouvez choisir ici de reporter l'argent, les objets, les armes et les
    # armures. Si c'est égale à true ceci est reporté sinon, false, ce n'est
    # pas reporté.
    CARRY_OVER_GOLD    = true # Argent
    CARRY_OVER_ITEMS  = true # Objets
    CARRY_OVER_WEAPONS = true # Armes
    CARRY_OVER_ARMOURS = true # Armures
   
  end # NEW_GAME_PLUS
end # YEA

#==============================================================================
# ▼ Ne pas éditer la suitte sous peine d'entrer en coma et/ou mourrir dans
# d'atroce soufrance. L'ordinateur peut aussi être touché et endommagé gravement
#==============================================================================

if $imported["YEA-SaveEngine"]

module YEA
  module NEW_GAME_PLUS
    module_function
    #--------------------------------------------------------------------------
    # convert_integer_array
    #--------------------------------------------------------------------------
    def convert_integer_array(array)
      result = []
      array.each { |i|
        case i
        when Range; result |= i.to_a
        when Integer; result |= [i]
        end }
      return result
    end
    #--------------------------------------------------------------------------
    # converted_contants
    #--------------------------------------------------------------------------
    CARRY_OVER_SWITCHES = convert_integer_array(CARRY_OVER_SWITCHES)
    CARRY_OVER_VARIABLES = convert_integer_array(CARRY_OVER_VARIABLES)
  end # NEW_GAME_PLUS
  module REGEXP
  module BASEITEM
   
    NO_CARRY_OVER = /<(?:NO_CARRY_OVER|no carry over)>/i
   
  end # BASEITEM
  end # REGEXP
end # YEA

#==============================================================================
# ■ DataManager
#==============================================================================

module DataManager
 
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class <<self; alias load_database_ngp load_database; end
  def self.load_database
    load_database_ngp
    load_notetags_ngp
  end
 
  #--------------------------------------------------------------------------
  # new method: load_notetags_ngp
  #--------------------------------------------------------------------------
  def self.load_notetags_ngp
    groups = [$data_items, $data_weapons, $data_armors]
    for group in groups
      for obj in group
        next if obj.nil?
        obj.load_notetags_ngp
      end
    end
  end
 
end # DataManager

#==============================================================================
# ■ RPG::BaseItem
#==============================================================================

class RPG::BaseItem
 
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :no_carry_over
 
  #--------------------------------------------------------------------------
  # common cache: load_notetags_ngp
  #--------------------------------------------------------------------------
  def load_notetags_ngp
    @no_carry_over = false
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::BASEITEM::NO_CARRY_OVER
        @no_carry_over = true
      end
    } # self.note.split
    #---
  end
 
end # RPG::BaseItem

#==============================================================================
# ■ Switch
#==============================================================================

module Switch
 
  #--------------------------------------------------------------------------
  # self.new_game_plus
  #--------------------------------------------------------------------------
  def self.new_game_plus
    return $game_switches[YEA::NEW_GAME_PLUS::NGP_SWITCH]
  end
 
end # Switch

#==============================================================================
# ■ DataManager
#==============================================================================

module DataManager
 
  #--------------------------------------------------------------------------
  # new method: setup_new_game_plus
  #--------------------------------------------------------------------------
  def self.setup_new_game_plus(index)
    create_new_game_plus_objects(index)
    $game_map.setup($data_system.start_map_id)
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    $game_player.refresh
    Graphics.frame_count = 0
  end
 
  #--------------------------------------------------------------------------
  # new method: create_new_game_plus_objects
  #--------------------------------------------------------------------------
  def self.create_new_game_plus_objects(index)
    load_game_without_rescue(index)
    ngp_reset_switches
    ngp_reset_variables
    ngp_reset_self_switches
    ngp_reset_actors
    ngp_reset_party
  end
 
  #--------------------------------------------------------------------------
  # new method: ngp_reset_switches
  #--------------------------------------------------------------------------
  def self.ngp_reset_switches
    for i in 0...$data_system.switches.size
      next if i <= 0
      next if YEA::NEW_GAME_PLUS::CARRY_OVER_SWITCHES.include?(i)
      $game_switches[i] = false
    end
  end
 
  #--------------------------------------------------------------------------
  # new method: ngp_reset_variables
  #--------------------------------------------------------------------------
  def self.ngp_reset_variables
    for i in 0...$data_system.variables.size
      next if i <= 0
      next if YEA::NEW_GAME_PLUS::CARRY_OVER_VARIABLES.include?(i)
      $game_variables[i] = 0
    end
  end
 
  #--------------------------------------------------------------------------
  # new method: ngp_reset_self_switches
  #--------------------------------------------------------------------------
  def self.ngp_reset_self_switches
    $game_self_switches = Game_SelfSwitches.new
  end
 
  #--------------------------------------------------------------------------
  # new method: ngp_reset_actors
  #--------------------------------------------------------------------------
  def self.ngp_reset_actors
    unless YEA::NEW_GAME_PLUS::CARRY_OVER_ACTORS
      $game_actors = Game_Actors.new
    else
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_LEVELS
        for i in 0...$data_actors.size
          actor = $game_actors[i]
          next if actor.nil?
          actor.new_game_plus_levels
        end
      end
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_EQUIPS
        for i in 0...$data_actors.size
          actor = $game_actors[i]
          next if actor.nil?
          actor.new_game_plus_equips
        end
      end
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_SKILLS
        for i in 0...$data_actors.size
          actor = $game_actors[i]
          next if actor.nil?
          actor.new_game_plus_skills
        end
      end
      #---
    end
  end
 
  #--------------------------------------------------------------------------
  # new method: ngp_reset_party
  #--------------------------------------------------------------------------
  def self.ngp_reset_party
    gold = 0
    items = {}
    members = []
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
      for member in $game_party.members
        members.push(member.id)
      end
    end
    #---
    gold = $game_party.gold if YEA::NEW_GAME_PLUS::CARRY_OVER_GOLD
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_ITEMS
      for item in $data_items
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_WEAPONS
      for item in $data_weapons
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_ARMOURS
      for item in $data_armors
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    $game_party = Game_Party.new
    unless YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
      $game_party.setup_starting_members
    end
    #---
    for member_id in members
      $game_party.add_actor(member_id)
    end
    $game_party.gain_gold(gold)
    for key in items
      item = key[0]
      next if item.nil?
      $game_party.gain_item(item, key[1])
    end
  end
 
end # DataManager

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
 
  #--------------------------------------------------------------------------
  # new method: new_game_plus_levels
  #--------------------------------------------------------------------------
  def new_game_plus_levels
    @class_id = actor.class_id
    @level = actor.initial_level
    @exp = {}
    if $imported["YEA-ClassSystem"]
      init_unlocked_classes
      init_subclass
    end
    clear_param_plus
    init_exp
    refresh
  end
 
  #--------------------------------------------------------------------------
  # new method: new_game_plus_equips
  #--------------------------------------------------------------------------
  def new_game_plus_equips
    init_equips(actor.equips)
  end
 
  #--------------------------------------------------------------------------
  # new method: new_game_plus_skills
  #--------------------------------------------------------------------------
  def new_game_plus_skills
    init_skills
  end
 
end # Game_Actor

#==============================================================================
# ■ Window_FileAction
#==============================================================================

class Window_FileAction < Window_HorzCommand
 
  #--------------------------------------------------------------------------
  # alias method: add_load_command
  #--------------------------------------------------------------------------
  alias add_load_command_ngp add_load_command
  def add_load_command
    if new_game_plus?
      add_command(YEA::NEW_GAME_PLUS::NGP_TEXT, :new_game_plus)
    else
      add_load_command_ngp
    end
  end
 
  #--------------------------------------------------------------------------
  # new method: new_game_plus?
  #--------------------------------------------------------------------------
  def new_game_plus?
    return false if @header.nil?
    return false if @header[:switches].nil?
    return @header[:switches][YEA::NEW_GAME_PLUS::NGP_SWITCH]
  end
 
  #--------------------------------------------------------------------------
  # alias method: update_help
  #--------------------------------------------------------------------------
  alias update_help_ngp update_help
  def update_help
    case current_symbol
    when :new_game_plus; @help_window.set_text(YEA::NEW_GAME_PLUS::NGP_HELP)
    else; update_help_ngp
    end
  end
 
end # Window_FileAction

#==============================================================================
# ■ Scene_File
#==============================================================================

class Scene_File < Scene_MenuBase
 
  #--------------------------------------------------------------------------
  # alias method: create_action_window
  #--------------------------------------------------------------------------
  alias create_action_window_ngp create_action_window
  def create_action_window
    create_action_window_ngp
    @action_window.set_handler(:new_game_plus, method(:on_action_ngp))
  end
 
  #--------------------------------------------------------------------------
  # new method: on_action_ngp
  #--------------------------------------------------------------------------
  def on_action_ngp
    Sound.play_load
    DataManager.setup_new_game_plus(@file_window.index)
    fadeout_all
    $game_system.on_after_load
    SceneManager.goto(Scene_Map)
  end
 
end # Scene_File

end # $imported["YEA-SaveEngine"]

#==============================================================================
#
# ▼ Fin du script
#
#==============================================================================

Encore une fois, amusez vous! Et encore mes fautes, je sais... je m'améliore non?! Wink

+1 point de participation


avatar
Elisa'
Staffeux retraité

Nombre de messages : 2924
Age : 20
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' Smile]
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: New Game+

le Mer 28 Déc 2011 - 11:56
Merci du partage, encore un point de participation en plus =)

_________________


Cliquez ici pour voter pour la commu'
avatar
REGISS4
Membre

Nombre de messages : 7
Age : 16
Localisation : Thulin (Belgique)
Distinction : aucune
Date d'inscription : 19/08/2014

Re: New Game+

le Sam 8 Nov 2014 - 12:47
Au merci c'est ce que j'avais besoin un GRAND merci
avatar
Balbereith
Staffeux retraité

Nombre de messages : 4129
Age : 25
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' Smile]
Date d'inscription : 13/05/2009

Re: New Game+

le Sam 8 Nov 2014 - 13:46
Attention, la réponse d'Elisa date de décembre 2011, nous sommes en novembre 2014, ce qui constitue un nécropost (et je rappelle que c'est interdit ici ^^)
Contenu sponsorisé

Re: New Game+

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