Mise à jours du précédent:
Voila une mise à jours de mon script de gestion des variables locales.
Plus élégant et surtout, ne permet plus QUE la création de variables temporaires. Les variables au sein d'événements peuvent communiquer entre elle.
Mais aussi entre les map. Même si on se trouve sur la map 9, il est possible de modifier/accéder à la variables 3 de la map 7.
Les variables sont identifiées par des numéro et utilisables au moyen des commandes Appel de Script dans les évenements.
Lien original du script ICI
Code
Voila une mise à jours de mon script de gestion des variables locales.
Plus élégant et surtout, ne permet plus QUE la création de variables temporaires. Les variables au sein d'événements peuvent communiquer entre elle.
Mais aussi entre les map. Même si on se trouve sur la map 9, il est possible de modifier/accéder à la variables 3 de la map 7.
Les variables sont identifiées par des numéro et utilisables au moyen des commandes Appel de Script dans les évenements.
Lien original du script ICI
Code
- Code:
#Ajout de la gestion des variables locales aux evenement
#Auteur: Nuki
#Liste des méthodes utilisables
#=============================================================
# get(map_id, evt_id, id) -> retourne la variable n°id de l'evenement n°evt_id de la map n°map_id
# => Alias : get_by_map(map_id, evt_id, id)
# get(evt_id, id) -> retourne la variable n°id de l'evenement n°evt_id de la map courante
# => Alias : get_by_event(evt_id, id)
# get(id) -> retourne la variable n°id de l'evenement courant
# => Alias : get_by_id(id)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# set(map_id, evt_id, id, valeur) -> attribue valeur à la variable n°id de l'evenement n°evt_id de la map n°map_id
# => Alias : set_by_map(map_id, evt_id, id, valeur)
# set(evt_id, id, valeur) -> attribue valeur à la variable n°id de l'evenement n°evt_id de la map courante
# => Alias : set_by_event(evt_id, id, valeur)
# set(id, valeur) -> attribue valeur à la variable n°id de l'evenement courant
# => Alias : set_by_id(id, valeur)
#=============================================================
class Self_Var
attr_accessor :map_id
attr_accessor :event_id
attr_accessor :id
attr_accessor :value
def initialize(map_id, event_id, id, value)
@map_id = map_id
@event_id = event_id
@id = id
@value = value
end
end
class Scene_Title
alias var_main main
def main
var_main
$game_self_var = Array.new
end
end
class Game_Interpreter
# Récupère une variable en fonction de toute ces données
def get_by_map(map_id, event_id, id)
local = $game_self_var.find{
|variable|
variable.map_id == map_id && variable.event_id == event_id && variable.id == id
}
return local.value if local.instance_of?(Self_Var)
return 0 if local == nil
end
# Récupère une variable en fonction de son ID d'event et de son idée sur la map courante
def get_by_event(event_id, id)
return get_by_map(@map_id, event_id, id)
end
# Récupère la variable de l'evenement courant en fonction d'une ID
def get_by_id(id)
return get_by_map(@map_id, @event_id, id)
end
# Attribue une variable en fonction de toutes les données
def set_by_map(map_id, event_id, id, value)
index = $game_self_var.index(
$game_self_var.find{
|variable|
variable.map_id == map_id && variable.event_id == event_id && variable.id == id
})
if index == nil
$game_self_var << Self_Var.new(map_id, event_id, id, value)
else
$game_self_var[index].value = value
end
end
# Attribue une variable en fonction de l'evenement ID et de l'ID de la variable
def set_by_event(event_id, id, value)
set_by_map(@map_id, event_id, id, value)
end
# Attribue une variable en fonction de l'ID de la variable dans l'evenement courant
def set_by_id(id, value)
set_by_map(@map_id, @event_id, id, value)
end
#Utilisation GET générique
def get(*args)
if args.length == 3
return get_by_map(args[0], args[1], args[2])
elsif args.length == 2
return get_by_event(args[0], args[1])
elsif args.length == 1
return get_by_id(args[0])
else
return 0
end
end
#Utilisation SET générique
def set(*args)
if args.length == 4
set_by_map(args[0], args[1], args[2], args[3])
return true
elsif args.length == 3
set_by_event(args[0], args[1], args[2])
return true
elsif args.length == 2
set_by_id(args[0], args[1])
return true
else
return false
end
end
end
class Scene_File
alias var_write_save_data write_save_data
alias var_read_save_data read_save_data
def write_save_data(file)
var_write_save_data(file)
Marshal.dump($game_self_var,file)
end
def read_save_data(file)
var_read_save_data(file)
$game_self_var = Marshal.load(file)
end
end