RPG Maker Détente
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
RechercherDernières imagesPortailAccueilAccueilForumPraline au mielS'enregistrerConnexion

Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 Variables Locales

Aller en bas 
2 participants
AuteurMessage
Invité
Invité




Variables Locales Empty
MessageSujet: Variables Locales   Variables Locales Icon_minitimeJeu 18 Aoû - 23:19

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
 
Revenir en haut Aller en bas
Léo

 
Léo


Messages : 6241


Variables Locales Empty
MessageSujet: Re: Variables Locales   Variables Locales Icon_minitimeJeu 18 Aoû - 23:42

Yeah, ça doit être cool ça, des variables locales... amour
Dommage que je n'utilise pas VX.

Merci pour le partage en tout cas ! Sourit
Revenir en haut Aller en bas
Aenki
   
   
Aenki


Messages : 6953


Variables Locales Empty
MessageSujet: Re: Variables Locales   Variables Locales Icon_minitimeJeu 18 Aoû - 23:44

Du très bon ça ! Merci du partage nuki ! ;p
Revenir en haut Aller en bas
Invité
Invité




Variables Locales Empty
MessageSujet: Re: Variables Locales   Variables Locales Icon_minitimeLun 22 Aoû - 23:42

Mise a jours... je pense, finale

Mise à jours finale qui ajoute des opérandes !

Listes des commandes

Il est aussi possible d'attribuer une opérande (valeur aléaoire, coordonnées, expériences etc).
Voici la liste des coordonnées

* commande(:rand, 9, 18) => Retourne un nombre aléatoire entre 9 et 18
* commande(:id_map) => Retourne ID de la map
* commande(:team_size) => Retourne la taille de la team
* commande(:gold) => Retourne l'argent
* commande(:steps) => Retourne le nombre de pas
* commande(:play_time) => Retourne la durée de jeu
* commande(:timer) => Retourne la valeur du chronometre
* commande(:save_count) => le nombre de sauvegarde
* commande(:event_x, id) => le X (coordonnées) de levent ID
* commande(:event_y, id) => le y (coordonnées) de levent ID
* commande(:event_screen_y, id) => le y (écran) de levent ID
* commande(:event_screen_x, id) => le x (écran) de levent ID
* commande(:event_direction, id) => la direction de levent ID
* commande(:heroes_x, id) => le X (coordonnées) du héros
* commande(:heroes_y, id) => le Y (coordonnées) du héros
* commande(:heroes_screen_y, id) => le Y (ecran) du héros
* commande(:heroes_screen_x, id) => le X (ecran) du héros
* commande(:heroes_direction, id) => la direction du héros
* commande(:level, id) => niveau du personnage en fonction de l ID
* commande(:exp, id) => expérience du personnage en fonction de l ID
* commande(:hp, id) => hp du personnage en fonction de l ID
* commande(:mp, id) => mp du personnage en fonction de l ID
* commande(:max_hp, id) => HP Max du personnage en fonction de l ID
* commande(:max_mp, id) => MP Max du personnage en fonction de l ID
* commande(:atk, id) => Puissance attaque du personnage en fonction de l ID
* commande(:def, id) => Défence du personnage en fonction de l ID
* commande(:spi, id) => Spiritualité du personnage en fonction de l ID
* commande(:agi, id) => Agilité du personnage en fonction de l ID
* commande(:nb_item, id) => nombre d'objet possédés en fonction de l ID
* commande(:var, id) => attribue une variable en fonction de son ID a une variable locale

Exemple avec la commande rand => set(1, commande(:rand, 9, 19))

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)

#=============================================================
# commande("commande_name", args) => Retourne une opérande des variables
# OU commande(:commande, args)
#=============================================================

module SelfVar
  class << self
    def set(id_map, 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
    def get(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
  end
end

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
  #gestion des commandes
  def commande(commande, *args)
    case args.length
      when 0
        return Commandes::send(commande)
      when 1
        return Commandes::send(commande, args[0])
      when 2
        return Commandes::send(commande, args[0], args[1])
    end
  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

module Commandes
  class << self
    # Random
    def rand(*args)
      return args[0] + Kernel.rand(args[1] - args[0])
    end
    # id Map
    def id_map(*args)
      return $game_map.map_id
    end
    #Taille de l'équipe
    def team_size(*args)
      return $game_party.members.size
    end
    # Argent de l'équipe
    def gold(*args)
      return $game_party.gold
    end
    # Nombre de pas
    def steps(*args)
      return $game_party.steps
    end
    # temps de jeu
    def play_time(*args)
      return Graphics.frame_count / Graphics.frame_rate
    end
    # Chronometre
    def timer(*args)
      return $game_system.timer / Graphics.frame_rate
    end
    # nombre de sauvegarde
    def save_count(*args)
      return $game_system.save_count
    end
    # coord_x evenement
    def event_x(*args)
      return $game_map.events[args[0]].x if args[0] != -1
      return $game_player.x
    end
    # coord_y evenement
    def event_y(*args)
      return $game_map.events[args[0]].y if args[0] != -1
      return $game_player.y
    end
    # coord screen y
    def event_screen_y(*args)
      return $game_map.events[args[0]].screen_y if args[0] != -1
      return $game_player.screen_y
    end
    # coord screen x
    def event_screen_x(*args)
      return $game_map.events[args[0]].screen_x if args[0] != -1
      return $game_player.screen_x
    end
    # coord screen x
    def event_direction(*args)
      return $game_map.events[args[0]].direction if args[0] != -1
      return $game_player.direction
    end
    # coord heros
    def heroes_x(*args)
      return Commandes::event_x(-1)
    end
    def heroes_y(*args)
      return Commandes::event_y(-1)
    end
    def heroes_screen_x(*args)
      return Commandes::event_screen_x(-1)
    end
    def heroes_screen_y(*args)
      return Commandes::event_screen_y(-1)
    end
    def heroes_direction(*args)
      return Commandes::event_direction(-1)
    end
    # Level of an actor
    def level(*args)
      return $game_actors[args[0]].level
    end
    # exp of an actor
    def exp(*args)
      return $game_actors[args[0]].exp
    end
    #hp of an actor
    def hp(*args)
      return $game_actors[args[0]].hp
    end
    # mp of an actor
    def mp(*args)
      return $game_actors[args[0]].mp
    end
    #max hp of an actor
    def max_hp(*args)
      return $game_actors[args[0]].maxhp
    end
    # max mp of an actor
    def max_mp(*args)
      return $game_actors[args[0]].maxmp
    end
    # attaque of an actor
    def atk(*args)
      return $game_actors[args[0]].atk
    end
    # defense of an actor
    def def(*args)
      return $game_actors[args[0]].def
    end
    # attaque of an actor
    def spi(*args)
      return $game_actors[args[0]].spi
    end
    # attaque of an actor
    def agi(*args)
      return $game_actors[args[0]].agi
    end
    # item
    def nb_item(*args)
      return $game_party.item_number($data_items[args[0]])
    end
    # Get a true var value
    def var(*args)
      return  $game_variables[args[0]] 
    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
 
Revenir en haut Aller en bas
Contenu sponsorisé





Variables Locales Empty
MessageSujet: Re: Variables Locales   Variables Locales Icon_minitime

Revenir en haut Aller en bas
 
Variables Locales
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Variables LOCALES VERSION XP
» Vérifier des variables avec un interrupteur

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker Détente :: Entrepôt :: Scripts :: Scripts Vx-
Sauter vers: