Make & Graph
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -20%
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, ...
Voir le deal
399 €

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Variables locales

4 participants

Aller en bas  Message [Page 1 sur 1]

1RPG Maker VX Variables locales Jeu 18 Aoû - 21:22

nuki

avatar
Membre
Membre

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

2RPG Maker VX Re: Variables locales Jeu 18 Aoû - 21:52

Venox

avatar
Fondateur
Fondateur

C'est cool ça ! Merci Nuki :)

3RPG Maker VX Re: Variables locales Jeu 18 Aoû - 22:13

Sena

Sena
Membre Royal
Membre Royal

Merci du partage.

4RPG Maker VX Re: Variables locales Jeu 18 Aoû - 23:01

mew72

mew72
Super Membre
Super Membre

Merci nuki

5RPG Maker VX Re: Variables locales Ven 19 Aoû - 13:01

Venox

avatar
Fondateur
Fondateur

Valide, je déplace.

Contenu sponsorisé



Revenir en haut  Message [Page 1 sur 1]

Sujets similaires

-

» Variables LOCALES VERSION XP

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

 

Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser