
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
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. (606 messages postés)
|

Couteau Suisse Agréé | HA HA HA!! Le script tant attendu!
Merci Nuki, il sera utile à de nombreux makeurs, je pense, moi y compris! |
Foolen: 2012 - Je ne sais pas trop comment, mais je les ai tous à dos, au moins, j'aurais le mérite de l'avoir fait sans eux. |
|
zou - posté le 21/08/2011 à 23:39:54. (2145 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
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 | 
|