|
| Variables Locales | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: Variables Locales Jeu 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 |
| | | Léo
Messages : 6241
| Sujet: Re: Variables Locales Jeu 18 Aoû - 23:42 | |
| Yeah, ça doit être cool ça, des variables locales... Dommage que je n'utilise pas VX. Merci pour le partage en tout cas ! | |
| | | Aenki
Messages : 6953
| Sujet: Re: Variables Locales Jeu 18 Aoû - 23:44 | |
| Du très bon ça ! Merci du partage nuki ! | |
| | | Invité Invité
| Sujet: Re: Variables Locales Lun 22 Aoû - 23:42 | |
| Mise a jours... je pense, finale Mise à jours finale qui ajoute des opérandes ! Listes des commandesIl 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 |
| | | Contenu sponsorisé
| Sujet: Re: Variables Locales | |
| |
| | | | Variables Locales | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |