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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
| #==============================================================================
# ■ InterpreterEX
#------------------------------------------------------------------------------
# Script permettant d'ajouter des fonctionnalités étendues à l'interpreteur
# de commande évènementielle
# Createur : Tonyryu
# Date : 29/08/2006
# Version : 1.01 - 09/10/2006
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle ( http://www.irpi.ccip.fr/ ).
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#------------------------------------------------------------------------------
=begin
Pour utiliser les commandes étendues, il suffit de les appelés dans la
commande "Appeler un script" ou "Conditions..." script, en utilisant
cette syntaxe :
COMMAND-[nom de la commande]
exemple : COMMAND-MODIF_INT_LOCAL:2=0
Liste des commandes étendues :
MODIF_INT_LOCAL:[interrupteur]=[etat]
permet de modifier un interrupteur local
parametre : interrupteur : nombre entre 0 et 99 (0:A, 1:B, 2:C, 3:D, ...)
etat : 0 pour activé, et 1 pour désactivé
exemple : COMMAND-MODIF_INT_LOCAL:2=0 permet de désactiver l'interupteur local C
TEST_INT_LOCAL:[interrupteur]=[etat]
permet de tester dans une condition un interrupteur local
parametre : interrupteur : nombre entre 0 et 99 (0:A, 1:B, 2:C, 3:D, ...)
etat : 0 pour activé, et 1 pour désactivé
exemple : COMMAND-TEST_INT_LOCAL:2 permet de récupérer l'interrupteur local C
TEST_HERO_SUR_EVENT
permet de tester dans une condition si le hero se trouve sur l'evenement
exemple : COMMAND-TEST_HERO_SUR_EVENT
MODIF_CLASSE:[id_hero]=[id_classe]
permet d'utiliser la commande qui ne fonctionne pas.
exemple : COMMAND-MODIF_CLASSE:1=2 permet de changer la classe du hero 1 en classe id 2
MESSAGE:[variable_chaine]
permet de passer outre la fenêtre d'édition de message, et donc écrire en japonnais
exemple : COMMAND-MESSAGE:$maChaine permet d'afficher le contenue de $maChaine
prise en compte des \n pour sauter à la ligne.
=end
#==============================================================================
class Interpreter
# Renommer les fonctions par défaut
alias command_111_base command_111
alias command_355_base command_355
#--------------------------------------------------------------------------
# ● command_111
# Surcharge de fonction de base
#--------------------------------------------------------------------------
def command_111
# Si la commande script de la condition est utilisée
if @parameters[0] == 12
# Si cela correspond à une commande étentu
if @parameters[1][0,8] == "COMMAND-"
# effectuer le traitement étendu
return command_extend(@parameters[1].clone)
else
# Sinon effectuer le traitement de base
return command_111_base
end
end
# effectuer le traitement de base
return command_111_base
end
#--------------------------------------------------------------------------
# ● command_355
# Surcharge de fonction de base
#--------------------------------------------------------------------------
def command_355
script = @parameters[0]
# Si la commande script est une commande étendu
if script[0,8] == "COMMAND-"
# effectuer le traitement étendu
return command_extend(script.clone)
else # Sinon
# effectuer le traitement de base
return command_355_base
end
end
#--------------------------------------------------------------------------
# ● save_param
#--------------------------------------------------------------------------
def save_param
@saveParam = []
for i in 0..@parameters.size - 1
@saveParam[i] = @parameters[i]
end
end
#--------------------------------------------------------------------------
# ● save_param
#--------------------------------------------------------------------------
def load_param
for i in 0..@parameters.size - 1
@parameters[i] = @saveParam[i]
end
end
#--------------------------------------------------------------------------
# ● command_extend
#--------------------------------------------------------------------------
def command_extend(commande)
commande[0,8] = ""
# Selon la commance étendu
case commande
when /MODIF_INT_LOCAL:(.*)=(.*)/ # Modifier l'interrupteur local
if @list[@index].code == 355
int = $1.to_i
etat = $2.to_i
if ( int > -1 and int < 100 ) and ( etat == 0 or etat == 1 )
save_param
@parameters[0] = int
@parameters[1] = etat
result = command_123
load_param
return result
end
end
return true
when /TEST_INT_LOCAL:(.*)=(.*)/ # Tester l'interrupteur local
if @list[@index].code == 111
int = $1.to_i
etat = $2.to_i
if ( int > -1 and int < 100 ) and ( etat == 0 or etat == 1 )
save_param
@parameters[0] = 2
@parameters[1] = int
@parameters[2] = etat
result = command_111_base
load_param
return result
end
return command_skip
end
return true
when /TEST_HERO_SUR_EVENT/ # Tester la position du hero sur l'event
if @list[@index].code == 111
for i in 0..$game_map.events.size
eventTest = $game_map.events[i]
if eventTest.id == @event_id
$fic_log.write("eventTest [#{eventTest.x},#{eventTest.y}]\nplayer [#{$game_player.x},#{$game_player.y}]\n")
result = (eventTest.x == $game_player.x and eventTest.y == $game_player.y )
@branch[@list[@index].indent] = result
if @branch[@list[@index].indent] == true
@branch.delete(@list[@index].indent)
return true
end
return command_skip
end
end
for event in $game_map.events
end
return command_skip
end
return true
when /MODIF_CLASSE:(.*)=(.*)/ # Changer la classe du héro
if @list[@index].code == 355
@list.insert(@index + 1, RPG::EventCommand.new(321, 0, [$1.to_i,$2.to_i]))
@list.delete_at(@index)
@index -= 1
end
when /MESSAGE:(.*)/ # afficher un message
if @list[@index].code == 355
tabLignes = eval($1).split("\n")
#print tabLignes
nbLignes = tabLignes.size
for i in 0..nbLignes - 2
ligne = tabLignes[nbLignes - i - 1]
@list.insert(@index + 1, RPG::EventCommand.new(401, 0, [ligne]))
end
@list.insert(@index + 1, RPG::EventCommand.new(101, 0, [tabLignes[0]]))
@list.delete_at(@index)
@index -= 1
end
end # fin case
end
end |