Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: [VX] Générateur d'événements. Lun 27 Avr 2009 - 21:14 | |
| Je pensais avoir posté ce script sur le forum, mais je ne le retrouve pas... Voici une toute derniere version du script, permettant de faire plus de choses, et beaucoup plus stable. 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 creer des pnj, donc toutes les commandes complexes comme les conditions, gestions de variables sont inutiles. collez ce script au dessus de main: - Code:
-
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # 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="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
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 - 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 ! si vous avez des questions.... berka
Dernière édition par berka le Mer 29 Avr 2009 - 13:57, édité 1 fois |
|
Maire Lv.9
Age : 34 Inscrit le : 15/10/2008 Messages : 351
| Sujet: Re: [VX] Générateur d'événements. Sam 16 Mai 2009 - 18:06 | |
| Pourquoi t'utilises un anti-lag ? Théoriquement, ton jeu ne devrait pas 'lagger' (ce mot est toujours mal utilisé) si tu utilises bien le logiciel. Ce qui fait chuter le FPS: trop d'images raffraichies par frame: est il indispensable de tout rafraichir constament? de trop grandes maps, trop d'events communs... Tout est optimisable !
berka
ps: La meche: zut, j'ai vraiment zappé ca ! avec mon site, mes études, pleins d'autres scripts urgents, j'avais totalement oublié, je m'y mets dès que possible ! |
|