La solution idéale serait d'avoir un script de variables locales. Avec des variables locales, tu n'aurais qu'à copier-coller tes événements tel quel, au lieu de devoir changer les variables de chacun d'entre eux (ce qui est une mauvaise idée, tu te rendras vite compte que le nombre de variable à utiliser est ingérable).
Reste juste à trouver un scripteur ayant un peu de temps devant lui et capable de te faire ce script...
Et ça tombe bien, je suis un scripteur ayant un peu de temps devant lui et capable de te faire ce script!
Plouf.
- Code:
-
#==============================================================================
# Système de variables locales
#------------------------------------------------------------------------------
# Auteur : Sihn
# Créé le : 22/10/2011
# Version : 1.0
#------------------------------------------------------------------------------
# Mettez entre les crochets tous les identifiants de variables séparer par une virgule à utiliser
# comme des variables locales.
# Exemple : SELF_VARIABLES_ID = [5, 6, 7, 11, 12]
SELF_VARIABLES_ID = [1]
#==============================================================================
#==============================================================================
# ** Game_Variables
#==============================================================================
class Game_Variables
#--------------------------------------------------------------------------
# * Alias
#--------------------------------------------------------------------------
alias local_variable_initialize initialize
alias old_get []
alias old_set []=
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
local_variable_initialize
@self_variables = {}
end
#--------------------------------------------------------------------------
# * Get Variable
# variable_id : variable ID
#--------------------------------------------------------------------------
def [](variable_id)
unless SELF_VARIABLES_ID.include?(variable_id)
return old_get(variable_id)
else
key = create_key(variable_id)
return @self_variables[key] == nil ? 0 : @self_variables[key]
end
end
#--------------------------------------------------------------------------
# * Set Variable
# variable_id : variable ID
# value : the variable's value
#--------------------------------------------------------------------------
def []=(variable_id, value)
unless SELF_VARIABLES_ID.include?(variable_id)
old_set(variable_id, value)
else
if variable_id <= 5000
key = create_key(variable_id)
@self_variables[key] = value
end
end
end
#--------------------------------------------------------------------------
# * Create Key
# variable_id : variable ID
#--------------------------------------------------------------------------
def create_key(variable_id)
return [$game_map.map_id, $game_map.interpreter.original_event_id, variable_id]
end
end
#==============================================================================
# ** Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :original_event_id
end
Comme d'hab, à mettre au dessus de main, mais au dessous des autres scripts, et à nommer comme bon te semble ("Variables locales" me semble approprié).
Pour le fonctionnement, c'est assez simple. Ce script "converti" des variables classiques en variable locales. Et donc, chacune de ces variables locales à une valeur propre à l'événement dans lequel elle est utilisée, exactement comme pour les interrupteurs locaux.
Par exemple, imagine que mon script convertisse la variable 1 en variable locale d'ailleurs, c'est ce qu'il fait par défaut. Je reviendrais plus tard sur comment choisir les variables à utiliser en tant que variables locales).
On va nommer cette variable "PV".
Si tu modifies la variable PV dans un événement, elle ne sera modifiée QUE dans cet événement, et pas les autres. Chaque événement aura donc sa propre valeur pour la variable PV.
Et tu peux faire ça pour toutes les variables que tu veux, tout en gardant des variables globales, communes à tous les événements!
Regarde le début du script :
- Code:
-
SELF_VARIABLES_ID = [1]
Remplace juste le 1 par les identifiants des variables (séparés par une virgule) qui doivent être utilisé en variables globales. J'ai mis un exemple au début du script, en commentaires.
Si tu as la moindre question, n'hésites pas!