Vesperia Making
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Forum concernant le talent artistique des gens, venez poster vos créations pour avoir des critiques !
 
AccueilAccueil  PortailPortail  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  ConnexionConnexion  
Connexion
Nom d'utilisateur:
Mot de passe:
Connexion automatique: 
:: Récupérer mon mot de passe
Derniers sujets
» NEOTORI [MAJ Terra III]
[VXAce] Variables locales EmptyLun 10 Déc - 4:39 par esziaprez

» La Princesse Déchue
[VXAce] Variables locales EmptyMer 7 Nov - 19:47 par Rabah

» Vesperia making ouvert ?
[VXAce] Variables locales EmptyDim 21 Oct - 16:24 par Brandobscure

» [VxAce]Clock Tower 2
[VXAce] Variables locales EmptyDim 30 Sep - 17:00 par MisterFarios

» Postez vos screenshots !
[VXAce] Variables locales EmptyMer 26 Sep - 15:57 par Hamburger

» Votre point de vue sur l'humour
[VXAce] Variables locales EmptyJeu 20 Sep - 1:07 par Valefor

» Test de Eternal Dream par RitoJS
[VXAce] Variables locales EmptyMer 19 Sep - 12:34 par Kirkilou

» Qu'est ce que vous regardez en 1er dans un projet présenté ?
[VXAce] Variables locales EmptyMer 19 Sep - 11:56 par riffraff24

» Réformation des topics
[VXAce] Variables locales EmptySam 15 Sep - 10:44 par Kirkilou

Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 [VXAce] Variables locales

Aller en bas 
2 participants
AuteurMessage
Griminy
Nouveau membre
Nouveau membre
Griminy


Messages : 61
Date d'inscription : 19/07/2012
Localisation : Belgique

Espace Maker
Points d'aides:
[VXAce] Variables locales Left_bar_bleue3/100[VXAce] Variables locales Empty_bar_bleue  (3/100)

[VXAce] Variables locales Empty
MessageSujet: [VXAce] Variables locales   [VXAce] Variables locales EmptyVen 3 Aoû - 12:46

Initialement par Nuki, réécrit par moi Smile

Description
Ce script permet de greffer une fonctionnalité complémentaire aux évenements de RPGMAKERVXAce, en parallèle avec les Interrupteurs locaux, il permet la manipulation de variables locales. Variables n'ayant pour portée que celle de l'évènement dans laquelle elle est créée.

Installation
Il suffit de coller le script au dessus de la portion de code Main .

Utilisation

# get(map_id, evt_id, id) -> retourne la variable n°id de l'evenement n°evt_id de la map n°map_id

# get(evt_id, id) -> retourne la variable n°id de l'evenement n°evt_id de la map courante

# get(id) -> retourne la variable n°id de l'evenement courant

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

# set(evt_id, id, valeur) -> attribue valeur à la variable n°id de l'evenement n°evt_id de la map courante

# set(id, valeur) -> attribue valeur à la variable n°id de l'evenement courant

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

Listes des commands
Il est aussi possible d'attribuer une opérande (valeur aléaoire, coordonnées, expériences etc).
Voici la liste des coordonnées
command(:rand, 9, 18) => Retourne un nombre aléatoire entre 9 et 18
command(:id_map) => Retourne ID de la map
command(:team_size) => Retourne la taille de la team
command(:gold) => Retourne l'argent
command(:steps) => Retourne le nombre de pas
command(:play_time) => Retourne la durée de jeu
command(:timer) => Retourne la valeur du chronometre
command(:save_count) => le nombre de sauvegarde
command(:event_x, id) => le X (coordonnées) de levent ID
command(:event_y, id) => le y (coordonnées) de levent ID
command(:event_screen_y, id) => le y (écran) de levent ID
command(:event_screen_x, id) => le x (écran) de levent ID
command(:event_direction, id) => la direction de levent ID
command(:heroes_x, id) => le X (coordonnées) du héros
command(:heroes_y, id) => le Y (coordonnées) du héros
command(:heroes_screen_y, id) => le Y (ecran) du héros
command(:heroes_screen_x, id) => le X (ecran) du héros
command(:heroes_direction, id) => la direction du héros
command(:level, id) => niveau du personnage en fonction de l ID
command(:exp, id) => expérience du personnage en fonction de l ID
command(:hp, id) => hp du personnage en fonction de l ID
command(:mp, id) => mp du personnage en fonction de l ID
command(:max_hp, id) => HP Max du personnage en fonction de l ID
command(:max_mp, id) => MP Max du personnage en fonction de l ID
command(:atk, id) => Puissance attaque du personnage en fonction de l ID
command(:def, id) => Défence du personnage en fonction de l ID
command(:spi, id) => Spiritualité du personnage en fonction de l ID
command(:agi, id) => Agilité du personnage en fonction de l ID
command(:nb_item, id) => nombre d'objet possédés en fonction de l ID
command(:var, id) => attribue une variable en fonction de son ID a une variable locale
Exemple avec la command rand => set(1, command(:rand, 9, 19))
Et d'autres

Code:

# Variables locales version 1.1
# Par Grim (http://funkywork.blogspot.com)
#==============================================================================
# ** Simple_Matrix
#------------------------------------------------------------------------------
#  Manipulation de matrice facilement
#==============================================================================

class Simple_Matrix

  #--------------------------------------------------------------------------
  # * Variables d'instances
  #--------------------------------------------------------------------------
  attr_accessor :table

  #--------------------------------------------------------------------------
  # * Construction
  #--------------------------------------------------------------------------
  def initialize
      @table = []
  end

  #--------------------------------------------------------------------------
  # * Récupère une valeur
  #--------------------------------------------------------------------------
  def [](*keys)
      table, f_key = @table, keys.pop
      keys.each do |key|
        table[key] ||= []
        table = table[key]
      end
      return table[f_key]
  end

  #--------------------------------------------------------------------------
  # * Attribue une valeur
  #--------------------------------------------------------------------------
  def []=(*keys)
      value, f_key = keys.pop, keys.pop
      table = @table
      keys.each do |key|
        table[key] ||= []
        table = table[key]
      end
      table[f_key] = value
  end

end

#==============================================================================
# ** Command
#------------------------------------------------------------------------------
#  Ajoute des commands facilement manipulables
#==============================================================================

module Command

  #--------------------------------------------------------------------------
  # * Singleton de Command
  #--------------------------------------------------------------------------
  extend self

  #--------------------------------------------------------------------------
  # * Opérandes standards
  #--------------------------------------------------------------------------
  def random(x, y) (x + rand(y - x)) end
  def map_id() $game_map.map_id end
  def var(id) $game_variables[id] end
  def set_var(id, value)
      $game_variables[id] = value
  end
  #--------------------------------------------------------------------------
  # * Opérandes de partie
  #--------------------------------------------------------------------------
  def team_size() $game_party.members.size end
  def gold() $game_party.gold end
  def steps() $game_party.steps end
  def play_time() (Graphics.frame_count / Graphics.frame_rate) end
  def timer() $game_timer.sec end
  def save_count() $game_system.save_count end
  def battle_count() $game_system.battle_count end
  #--------------------------------------------------------------------------
  # * Opérandes d'objets
  #--------------------------------------------------------------------------
  def item_count(id) $game_party.item_number($data_items[id]) end
  def weapon_count(id) $game_party.item_number($data_weapons[id]) end
  def armor_count(id) $game_party.item_number($data_armors[id]) end
  #--------------------------------------------------------------------------
  # * Opérandes d'acteurs
  #--------------------------------------------------------------------------
  def actor(id) $game_actors[id] end
  def level(id) $game_actors[id].level end
  def experience(id) $game_actors[id].exp end
  def hp(id) $game_actors[id].hp end
  def mp(id) $game_actors[id].mp end
  def max_hp(id) $game_actors[id].maxhp end
  def max_mp(id) $game_actors[id].maxmp end
  def attack(id) $game_actors[id].atk end
  def defense(id) $game_actors[id].def end
  def magic(id) $game_actors[id].mat end
  def magic_defense(id) $game_actors[id].mdf end
  def agility(id) $game_actors[id].agi end
  def lucky(id) $game_actors[id].luk end
  #--------------------------------------------------------------------------
  # * Opérandes d'events
  #--------------------------------------------------------------------------
  def event_x(id)
      character = $game_player
      character = $game_map.events[id] unless id == 0
      character.x
  end
  def event_y(id)
      character = $game_player
      character = $game_map.events[id] unless id == 0
      character.y
  end
  def event_direction(id)
      character = $game_player
      character = $game_map.events[id] unless id == 0
      character.direction
  end
  def event_screen_x(id)
      character = $game_player
      character = $game_map.events[id] unless id == 0
      character.screen_x
  end
  def event_screen_y(id)
      character = $game_player
      character = $game_map.events[id] unless id == 0
      character.screen_y
  end
  def heroes_x() Command.event_x(0) end
  def heroes_y() Command.event_y(0) end
  def heroes_direction() Command.event_direction(0) end
  def heroes_screen_x() Command.event_screen_x(0) end
  def heroes_screen_y() Command.event_screen_y(0) end
  def distance_between_case(ev1, ev2)
      event1 = (ev1 == 0) ? $game_player : $game_map.events[ev1]
      event2 = (ev2 == 0) ? $game_player : $game_map.events[ev2]
      Math.hypot((event1.x - event2.x), (event1.y-event2.y))
  end
  def distance_between_pixel(ev1, ev2)
      event1 = (ev1 == 0) ? $game_player : $game_map.events[ev1]
      event2 = (ev2 == 0) ? $game_player : $game_map.events[ev2]
      Math.hypot((event1.screen_x - event2.screen_x), (event1.screen_y-event2.screen_y))
  end
  #--------------------------------------------------------------------------
  # * Opérandes de partie
  #--------------------------------------------------------------------------
  def actor_id(position)
      $game_party.members[position]
      return actor ? actor.id : 0
  end
  #--------------------------------------------------------------------------
  # * command de lecture de la base de données
  #--------------------------------------------------------------------------
  def read_data_monster(id, method = false)
      monster = $data_enemies[id]
      return monster unless method
      method = method.to_sym
      value = false
      value = 0 if method == :mhp || method == :hp
      value = 1 if method == :mmp || method == :mp
      value = 2 if method == :atk || method == :attack
      value = 3 if method == :def || method == :defense
      value = 4 if method == :mat || method == :magic_attack
      value = 5 if method == :mdf || method == :magic_defense
      value = 6 if method == :agi || method == :agility
      value = 7 if method == :luk || method == :lucky
      return monster.params[value] if value
      monster.send(method)
  end
  def read_data_skill(id, method = false)
      skill = $data_skills[id]
      return skill unless method
      skill.send(method.to_sym)
  end
end

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  Ajout du support des variables locales
#==============================================================================

class Game_Interpreter

  #--------------------------------------------------------------------------
  # * Récupération d'une variable local
  #--------------------------------------------------------------------------
  def get(*arguments)
      result = 0
      case arguments.length
      when 1; result = $game_selfVars[@map_id, @event_id, arguments[0]]
      when 2; result = $game_selfVars[@map_id, arguments[0], arguments[1]]
      when 3; result = $game_selfVars[arguments[0], arguments[1], arguments[2]]
      end
      return (result) ? result : 0
  end

  #--------------------------------------------------------------------------
  # * Attribution d'une variable locale
  #--------------------------------------------------------------------------
  def set(*arguments)
      case arguments.length
      when 2; $game_selfVars[@map_id, @event_id, arguments[0]] = arguments[1]
      when 3; $game_selfVars[@map_id, arguments[0], arguments[1]] = arguments[2]
      when 4; $game_selfVars[arguments[0], arguments[1], arguments[2]] = arguments[3]
      end
  end

  #--------------------------------------------------------------------------
  # * API de manipulation des commands
  #--------------------------------------------------------------------------
  def cmd(command, *arguments) Command.send(command.to_sym, *arguments) end
  def command(command, *arguments) cmd(command, *arguments) end

  #--------------------------------------------------------------------------
  # * API de récupérations des monstres/acteurs/techniques
  #--------------------------------------------------------------------------
  def ennemy(id) cmd(:read_data_monster, id) end
  def actor(id) cmd(:actor, id) end
  def skill(id) cmd(:read_data_skill, id) end

end

#==============================================================================
# ** DataManager
#------------------------------------------------------------------------------
#  Ajout des variables locales
#==============================================================================

module DataManager

  class << self
      #--------------------------------------------------------------------------
      # * Alias
      #--------------------------------------------------------------------------
      alias local_create_game_objects create_game_objects
      alias local_make_save_contents make_save_contents
      alias local_extract_save_contents extract_save_contents

      #--------------------------------------------------------------------------
      # * Crée les objets du jeu
      #--------------------------------------------------------------------------
      def create_game_objects
        local_create_game_objects
        $game_selfVars = Simple_Matrix.new
      end

      #--------------------------------------------------------------------------
      # * Sauve le contenu du jeu
      #--------------------------------------------------------------------------
      def make_save_contents
        contents = local_make_save_contents
        contents[:self_vars] = $game_selfVars
        contents
      end

      #--------------------------------------------------------------------------
      # * Charge le contenu du jeu
      #--------------------------------------------------------------------------
      def extract_save_contents(contents)
        local_extract_save_contents
        $game_selfVars = contents[:self_vars]
      end

  end

end
Revenir en haut Aller en bas
http://www.biloucorp.com/BCW/Grim/
Kirkilou
Administrateur
Administrateur
Kirkilou


Messages : 578
Date d'inscription : 15/07/2012
Age : 24
Localisation : Devant mon Windows 7 Edition starter

Espace Maker
Points d'aides:
[VXAce] Variables locales Left_bar_bleue100/100[VXAce] Variables locales Empty_bar_bleue  (100/100)

[VXAce] Variables locales Empty
MessageSujet: Re: [VXAce] Variables locales   [VXAce] Variables locales EmptyVen 3 Aoû - 13:19

Incroyable, il fallait y penser .
+2 pour cet incroyable script
Revenir en haut Aller en bas
https://vesperia-making.forumgaming.fr
 
[VXAce] Variables locales
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [VxAce]Clock Tower 2
» [VXAce] Prend ma place
» [VXAce] Event Extender, Le Grimator !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Vesperia Making ::  :: Ressources :: Scripts :: Autres scripts-
Sauter vers: