Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

399 connectés actuellement

29373772 visiteurs
depuis l'ouverture

3139 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Guelnika & E-magination

Offgame

Hellsoft

ConsoleFun

Tous nos partenaires

Devenir
partenaire



Générateur d'events aléatoires

Crée des pnj interactifs aléatoirement sur la map.

Script pour RPG Maker VX
Ecrit par berka (site de l'auteur)
Publié par Berka (lui envoyer un message privé)
Signaler un script cassé

❤ 0

Auteur : berka
Logiciel : RPG Maker VX
Nombre de scripts : 1

Fonctionnalités
Désormais, avec ce script, vous pouvez créer tout un tas de PNJ (perso non jouables), totalement inutiles, mais qui donneront un peu de vie a votre jeu.
Si vous le souhaitez, vous pouvez générer des perso totalement aléatoires (apparence, faceset, message...)
les persos peuvent etre positionnés aléatoirement sur la map, là où c'est passable.

J'ai volontairement pas inclu certaines fonctions d'events. Je pense que ce script est fait pour créer des pnj, donc toutes les commandes complexes comme les conditions, gestions de variables sont inutiles.

Installation
Collez ce script au dessus de main :

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
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



Utilisation
ce script s'appelle depuis un event, autant de fois qu'il faut créer de persos. Exemple d'appel, dans un event, par appel de script :

Portion de code : Tout sélectionner

1
2
3
4
[event]
chara:rand
texte: rand
type_mov : 1



Et ne mettez pas l'event en processus parallèle... sinon, votre héros se sentira comme dans le métro à l'heure de pointe ! Votre map sera remplie de gus.
Si vous avez des questions....

berka




Zeus81 - posté le 21/05/2009 à 00:49:00 (11071 messages postés)

❤ 0

Citation:

return Kernel.eval(script)


eval retourne le résultat de l'opération qu'on lui donne.
Par exemple quand on fait eval(var = 1 + 1) ça retourne 2.
Donc quand on fait insérer un script et qu'on met un truc du genre var = false
Le eval retourne false.
Et quand l'interpreteur reçois un false, il croit qu'il y eu une erreur et il recommence.
Autrement dit ça bug !
Donc vaut mieux mettre un return true.
Je sais que sur XP c'est comme ça par défaut mais c'est une erreur, la preuve dans VX ils ont mis un return true :D


Minusc - posté le 21/05/2009 à 10:46:40 (239 messages postés)

❤ 0

Citoyen de Rapture

Excelent !
Ca permet plein des trucs super ça !
Ceci dit, sur quel version marche ce script ? Vx ou/et Xp ?

(par contre, j'ai du mal à piger la remarque de Zeus81 >.<)

http://www.hordes.fr?ref=Minusc


Monos - posté le 21/05/2009 à 11:28:44 (57322 messages postés)

❤ 0

Vive le homebrew

Lisez les scripts.

Citation:

Générateur d'événement

# par berka rgss2

# www.rpgmakervx-fr.com

#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

# Rgss 2 v 2.1 sur les bases de mithos et pipo



RGSS 2 dont 99% chance que cela soit VX.

Plus
www.rpgmakervx-fr.com
si on a pas fait gaffe au RGSS2.

Signer du nez ?


berka - posté le 21/05/2009 à 13:18:43 (493 messages postés)

❤ 0

planchant sur un script

Exact, Zeus !
J'ai zappé ça... et vu que je ne me sers quasiment jamais des events...

berka

Twitter: Pensées politiques et juridiques. Réflexions informatiques


Rorito - posté le 06/06/2009 à 11:55:00 (43 messages postés)

❤ 0

Ils ont fait chier le mauvais mexicain...

Petite question de débutant:D
si on met pas l'event en processus parallèle, on met quoi?

Pourquoi dans ce magnifique film qu'est Massacre à la tronçonneuse les personnages ne vont jamais aux toilettes et ne se lavent jamais les mains? No reason. Pourquoi certains aiment les saucisses et d'autres pas? No fucking reason.


zehytos - posté le 10/06/2009 à 20:35:59 (5 messages postés)

❤ 0

J'ai un tout petit problème ... :'(
sa bug (chez moi) à la ligne 194 :

class Scene_Map def refresh_spriteset

j'ai testé sur un projet vierge sa bug quand même ...

donc :help

la vie ne vaut rien et rien ne vaut la vie.


fou de rpg - posté le 04/08/2009 à 21:55:54 (17 messages postés)

❤ 0

Gamer

Ouai salut c'est pareille que toi Zehytos
je ne trouve pas de solution quelqu'un pourait nous aider
s'il vous plait.:sriden

rpg


sherkan95 - posté le 19/09/2009 à 16:50:32 (3 messages postés)

❤ 0

salut jai un peu besoin daide jai mit le cripte au dessus de main comme vous le dite mais quand je jou il ny a aucun png ajouter jai du mal ^^ aidé moi svp merci


dramar - posté le 24/02/2010 à 18:20:50 (42 messages postés)

❤ 0

Pas processus paralele > Automatique ou contact... ou encore (Si event commun)Appel

Un maker qui revient du passé


Distor - posté le 28/04/2010 à 18:13:29 (3 messages postés)

❤ 0

Finir son projet ou ne pas le finir, telle est la question!

J'ai la solution pour la ligne 194 qui bug, faites Entrée devant "def" pour le remettre en place!


--ayoub-- - posté le 24/05/2010 à 17:41:18 (96 messages postés)

❤ 0

C'est moi la meileur

:sonic

78


Khradil - posté le 29/10/2010 à 10:20:16 (96 messages postés)

❤ 0

Bon,moi le script marche,mais les PNJ ne parles pas,dommage...
Autre choses,pour certains qui disent,si on ne pas en processus parallele,mettez-le sur une dalle en contact avec le heros =)


Lord Lagiacrus - posté le 12/04/2011 à 21:41:48 (4 messages postés)

❤ 0

Jhhiirooo... Luke... Je suis ton père! NON!

Désolé d'up le poste :s mais j'ai le même problème que Khradil... Y aurait-il quelqu'un pour y remedier?:susp

Ha, et pour une pose facile des pnjs, processus parallèle dans un event ac l(es)'appelle(s) du script puis en bas de la liste "effacer cet évènement":biere

Luttons contre le réchauffement climatique... ouvrons nos frigos!


Magik - posté le 06/10/2011 à 22:42:42 (3 messages postés)

❤ 0

Fan de jeu RPG

marche pas :'(


mauderich - posté le 09/03/2012 à 02:53:11 (63 messages postés)

❤ 0

•Ƹ̵̡Ӝ̵̨̄Ʒ•

moi cest la ligne 387 qui marche pas ... je ne suis pas vraiment habituer avec les script ... es ce que je dois changer quelque chose dedans ou cest juste copier collé et aussi je comprend pas le '' ce script s'appelle depuis un event, autant de fois qu'il faut créer de persos.
exemple d'appel, dans un event, appel de script


Portion de code:




[event]

chara:rand

texte: rand

type_mov : 1

et ne mettez pas l'event en processus parallèle... si non, votre héro se sentira comme dans le métro à l'heure de pointe ! votre map sera remplie de gus. ''

merci de m'aider je suis débutent :doute5

La vie est courte, alors profite en !!!

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 - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers