| Bourgeois (Nv 2) |
 |
Inscrit le: 01 Juil 2008, 00:00 Messages: 233 Localisation: Seine et Marne Niveau RPG Maker: 83% Logiciel(s) préféré(s): rpg maker xp Point(s) Fort(s): Charamaking Sexe: Masculin Points d'aide: 7/60
Créations :
Voir ses créations
|
Salut, Alors voici le script en question. - Code: Tout sélectionner
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # 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 #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # -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="00" # 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=9 # 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 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
Tous marche parfaitement (ou presque) mais il y a un problème au niveau des messages aléatoire. J'ai beau mettre "texte:rand"Rien ne ce passe... à si l'event généré se retourne une demi-seconde sans rien dire et il continue son chemin, j'aimerais bien savoir d'où vient le problème, merci d'avance
_________________ http://kald.minitroopers.fr/
|
|