Oniromancie: Scripts - Variable Locale


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (14 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

75 connectés actuellement

9259612 visiteurs
depuis l'ouverture

656 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Make & Graph'

RPG Maker Land

Pixelandgame

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Variable Locale
Script pour RPG Maker VX
Ecrit par Nuki

Description
Ce script permet de greffer une fonctionnalité complémentaire aux évenements de RPGMAKERVX, 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
Toutes les fonctions sont décrites dans le haut du script. Il suffit de les appeler pour effectuer une action sur une variable locale.

Code

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
 
#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
 




loly74 - posté le 21/08/2011 à 15:38:50. (795 messages postés)

Couteau pas tout à fait Suisse Agréé

HA HA HA!! Le script tant attendu!
Merci Nuki, il sera utile à de nombreux makeurs, je pense, moi y compris!:)

Sylvan Melody, c'est par ici ! | Mes Musiques! | "Les RTP c'est quand même très limité. Quand on réalise un jeu, on réalise un univers qui va avec, et cet univers il passe beaucoup par les graphismes, et l'identité qu'on leur donne."


zou - posté le 21/08/2011 à 23:39:54. (2197 messages postés)

Excuse moi si je te fais concurence mais je poste ce script que j'avais fais à la demande de Kisth.
Je le pense mieux car il ne crée pas une nouvelle variable globale, plus simple, donc c'est plus mieux...
Et compatible XP et VX

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# ------------------------------------------------------------------------------------
# *Script de variables locales
# ------------------------------------------------------------------------------------
 
=begin
 
Script de Zou, 3/7/2011
 
Utilistation :
  Pour assigner une variable locale
  >insérer un script : set_variable(numéro de la variable, valeur)
  
  Pour récupérer une variable
  >insérer un script : get_variable(numéro de la variable)
  
  Par défaut on modifie la variable de l'évènement dans laquelle la commande est insérée,
  pour modifier la variable locale d'un autre évènement, rajouter avant la fin de la
  paranthèse : , id de l'event , id de la map
                                      ^
                                  optionnel
 
 
  exemple : set_variable(5, 19.5)
            set_variable(8, 10, 1)
            get_variable(4)
            get_variable(2, 1, 14)
            
=end
 
class Interpreter #modifier cette ligne par Game_Interpreter sous VX
  
  def set_variable(variable_id, value, map_id = $game_map.map_id, event_id = @event_id)
    key = [map_id, event_id, variable_id]
    $game_self_switches[key] = value
    if map_id == $game_map.map_id
      $game_map.need_refresh = true
    end
    return true
  end
  
  def get_variable(variable_id, map_id = $game_map.map_id, event_id = @event_id)
    key = [map_id, event_id, variable_id]
    if $game_self_switches[key] == nil
      return 0
    end
    return $game_self_switches[key]
  end
  
end
 
class Game_SelfSwitches
  def [](key)
    if key[1].is_a?(String)
      return @data[key] == true ? true : false
    else
      return @data[key]
    end
  end
end


nukii - posté le 25/08/2011 à 18:35:17. (888 messages postés)

Encore un bide ->

le soucis ce n'est pas la création d'une variable locale c'est son utlisation. Tu en utilises aussi une.
Jen'ai fait que recopier le mode de fonctionnement de RM.

Nouvelle version :
http://nuki.music-all.be/Scripts/Local_Event.php

Le Blog collaboratif

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis