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
205
206
207
208
209
210
211
212
| #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Générateur d'événements
# par berka rgss2
# www.rpgmakervx-fr.com
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Rgss 2 v 2.1 sur les bases de mithos et pipo
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# -Utilisation-
# écrivez dans un event, commande insérer un script:
#
# minumum requis:
# [event] # obligatoire !
# chara : "Actor01" # nom du fichier du charset ou: chara:rand
#
# et les commandes optionnelles:
# x : 5 # position abscisses, pos aléatoire si rien
# y : 10 # position ordonnées, pos aléatoire si rien
# nom : "Event01" # nom de l'event ou nom: rand
# c_index : 0 # index sur la planche de chara
# face : "Actor01" # nom du fichier du faceset ou: face:true (==>chara)
# f_index : 0 # index sur la planche de chara
# dir : 2 # direction de l'event
# type_mov:0 # type de mouvement
# vit_mov:0 # vitesse de mouvement
# freq_mov:0 # frequence de mouvement
# texte:"bonjour" # dialogue ou texte:rand (cf. liste dessous)
# trigger:0 # declencheur de l'event
# prio_type:1 # type de priorité
# script: print @a=1 # lance une commande de script
# combat: 1,true,false # combat: id_monstre, fuite, continuer si defaite
# or: 0,0,1000 # or: 0/1 (aj/enl),0/1 (Const/var), montant (nbr/var_id)
# objet: 2,0,0,10 # objet: id,0/1 (aj/enl),0/1 (Const/var), montant (nbr/var_id)
# arme: 2,0,0,10 # arme: id,0/1 (aj/enl),0/1 (Const/var), montant (nbr/var_id)
# bouclier: 2,0,0,10 # bouclier: id,0/1 (aj/enl),0/1 (Const/var), montant (nbr/var_id)
# suppr : true # suppression de l'événement
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Exemple:
#
# [event]
# chara:rand
# texte:rand
# type_mov : 1
#
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
$characters="people" # série de charsets utilisés pour la création aléatoire
# people1, people2...
# modifiable en cours de jeu, les charas seront piochés dans
# les planches de ./Graphics/Characters
$chara_nbre=5 # nombre de fichiers people
# dialogues aleatoires
$dialogues=["Bonjour, il fait beau, nan ?","Comment allez vous ?","Partez d'ici !",
"Je n'ai pas de temps à vous accorder !","Vous m'ennuyez...","Encore vous ?",
"Ah! vous voilà, cher ami !","Tiens, vous semblez fatigué.","Grrrrr...",
"Hors de ma vue !","Quelle belle journée!","Je me promène.","Vous êtes de retour ?",
"Hihihi !","Rien.","Je ne veux plus vous parler.","Que faire ?","Mais c'est ¥N[1] !",
"Le temps change...","Vous êtes mon idole...","Dieu, que vous êtes laid !",
"Vous me rappelez quelqu'un...","Vous avez l'air sournois","Salut ¥N[1] !",
"Je ne vous fais pas confiance...","Ne m'approchez pas !","Je suis souffrant",
"Hé ! tu la connais celle là ?","Ahhahaharff...","Bonjour","Portez vous bien !",
"Ravi de vous revoir","...Tousse...","Coucou!","Encore un étranger ?","Bouh !",
"Je n'entends rien de ce que vous dites...","Articulez !","Parlez plus bas.",
"J'ai fait route toute la journée.","Je suis d'accord.","Dégage, mendiant !",
"Bonjour jeune homme","...snif...","Vous attirez le malheur ici !","Entendu.",
"Ne me regardez pas comme ça !","Il faut qu'on se parle...","Venez déjeuner !",
"Je suis content de vous connaitre."]
# in-game: $dialogues << "Tu es devenu un héro !"
$nom=[%w(Gw Ul Et Rh Ed Gr Dr Dw Tr Gh As Ar Ag Xor), # générateur de nom
%w(ai ia eo ui yn or ul ur a e i o u y yr ya yl),
%w(th rk dd gh z l mn lyr zar gor ryn nia lia )]
module Berka
module Pnj_Gen
Tag = "[event]" # Tag du générateur
Separateur = ":" # Separateur: cmd/valeut
Index_Chara = 8 # Nombre de poses
Commandes = {:face => "[101,[@_face,@_f_index,0,2]]", # Liste des commandes
:or => "[125,[*@_or]]",
:objet => "[126,[*@_objet]]",
:arme => "[127,[*@_arme]]",
:bouclier => "[128,[*@_bouclier]]",
:combat => "[301,[0,*@_combat])]",
:script => "[355,[@_script]]",
:suppr => "[214]",
:texte => "[401,[@_texte]]"
}
ProfCoord = 100 # profondeur du scan x/y
end
end
include Berka::Pnj_Gen
class Array
def arand
self[Kernel.rand(self.size)]
end
end
class Object
def rand?
self == "?"
end
end
class Game_Map
include RPG
def check_event(x,y)
for event in @events.values
return event.id if event.x==x&&event.y==y
end
return nil
end
def make_event(com)
self.instance_variables.each{|v|eval("#{v}=nil") if v.include?("@_")}
rand="?"
com.each_with_index{|c,i|eval("@_#{c.first.id2name}=#{c[1]}")}
set_rand
set_options
return if @_x.nil?||@_y.nil?
if check_event(@_x,@_y).nil?
@event=Event.new(@_x,@_y)
com.each{|c|c=c.first
ajout_cmd(*eval("#{Commandes[c]}"))if Commandes.has_key?(c)
}
@event.id=creerid
@event.name=@_nom
@event.pages.first.graphic.character_name=@_chara
@event.pages.first.graphic.character_index=@_c_index
@event.pages.first.graphic.direction=@_dir
@event.pages.first.move_type=@_type_mov
@event.pages.first.move_frequency=@_freq_mov
@event.pages.first.move_speed=@_vit_mov
@event.pages.first.through=@_trav
@event.pages.first.trigger=@_trigger
@event.pages.first.priority_type=@_prio_type
@events[@event.id]=Game_Event.new(@map_id,@event)
@need_refresh=true
$scene.refresh_spriteset
end
end
def set_rand
rand="?"
@_chara||=rand
@_nom=aleatoire_nom if @_nom.nil?
@_texte=$dialogues.arand if @_texte.rand?
@_x,@_y=*aleatoire_pos if @_x.nil?||@_y.nil?
@_pers=aleatoire_perso
if @_chara.rand?||@_c_index.rand?
@_face,@_f_index,@_chara,@_c_index=@_pers
end
end
def set_options
@_chara=@_pers.first if @chara.nil?
@_c_index=@_pers[1] if @_c_index.nil?
@_face,@_f_index = "",0 if @_face==false
@_dir||=3
@_type_mov||=0
@_freq_mov||=3
@_vit_mov||=3
@_trav||=false
@_trigger||=0
@_prio_type||=1
end
def aleatoire_pos
ProfCoord.times{
x,y=Kernel.rand(width).to_i,Kernel.rand(height).to_i
next if x==$game_player.x&&y==$game_player.y
(return x,y) if passable?(x,y)&&!check_event(x,y)
}
return nil,nil
end
def aleatoire_perso
i=Kernel.rand(Index_Chara-1)
res=$characters+(Kernel.rand($chara_nbre)+1).to_s
return [res,i,res,i]
end
def aleatoire_nom
n="#{$nom.first.arand}#{$nom[1].arand}#{$nom[2].arand}"
n<<$nom[1].arand if rand(4)==1
return n
end
def event_name(id)
@events[id].name if !@events[id].nil?
end
def creerid
id=1
id+=1 while @events.keys.include?(id)
return id
end
def ajout_cmd(code,param=[],i=0)
cmd=EventCommand.new
cmd.code,cmd.parameters,cmd.indent=code,param,i
@event.pages.first.list.insert(-2,cmd)
end
end
class Scene_Map<Scene_Base
def refresh_spriteset
@spriteset.dispose;@spriteset=Spriteset_Map.new
end
end
class Game_Interpreter
def eval(script)
if script.include?(Tag)
com=[];script.gsub!(Tag,'')
list=script.split("\n")
s=Separateur
list.each_with_index{|e,i|e.gsub!(' '+s,s);e.gsub!(s+' ',s);f=e.split(s)
com<<[f.first.to_sym,f[1]]if !f[1].nil?}
$game_map.make_event(com)
return
end
return Kernel.eval(script)
end
end |