 RPG Maker VX/VXAce - La Communauté - v3 Le forum de la communauté francophone de making. News, entraide, ressources, venez nombreux! Spécialisés dans RPG Maker VX et RPG Maker VXAce |
           
 
| |
| Auteur | Message |
|---|
Berka Administrateur


Nombre de messages: 1824 Age: 21 Localisation: Paris Capacités: expert Distinction: rubyste déglingué
9ème dan en scripting-no-jutsu
Nouveau Justine Beber ;P Date d'inscription: 16/12/2007
 | Sujet: [en cours] Hero Creator Ven 10 Oct 2008 - 21:53 | |
| Nous avons un projet: Hero Creator faciliter la vie de ceux qui veulent personnaliser leur jeu... et combler les lacunes de rmvx... Nous allons permettre la création de A a Z d'un héro, au cours de la partie ! Comment procéder: - partir de ressources découpées, rangées dans des dossiers selon leur type: yeux, corps, cheveux...
- lister ces ressources dans rmvx via des tableaux
- afficher ces ressources, gerant leur superposition, pour assembler un charset
- enregistrer cette images sous forme png, dotée de la gestion alpha (transparence)
- une fois ce systeme mis en place, il nous sera très facile de faire la meme chose pour des facesets, battlers...
idées en plus: - un systeme de choix de la luminosité/contraste/teinte
- un éditeur de caractérisitiques/compétences
- un zone de saisie du nom...
- optimisation...
Voila pour les grandes lignes... Notez: - que ce projet doit rester secret, pour eviter toutes questions inutiles
- chacun du groupe scripteur peut aider, intervenir, demander des explications
- le but de ces projets est non seulement de scripter, aider, mais aussi d'apprendre
Laché vo com, comme on dit ! amicalement, berka _________________ Berka sur twitter, tavu ? Pensées politiques et juridiques. Réflexions informatiques.
.: Bonjour Invité, je ne fais pas de support de script par MP :.
|
|  | | Berka Administrateur


Nombre de messages: 1824 Age: 21 Localisation: Paris Capacités: expert Distinction: rubyste déglingué
9ème dan en scripting-no-jutsu
Nouveau Justine Beber ;P Date d'inscription: 16/12/2007
 | Sujet: Re: [en cours] Hero Creator Ven 10 Oct 2008 - 22:03 | |
| double post volontaire pour vous annoncer que j'ai déja commencé la programmation du listing des ressources: le tout bien expliqué un conseil lisez le sur rmvx ! | Code: | Root = "./creator/" #définition de l'emplacement des ressources ./ est le dossier du projet class Game_Listing #définition de la classe attr_accessor :corps; :yeux; :bas; :haut; :accessoires #stockage des variables d'instance pour plus tard def initialize #méthode initialize d_corps = Dir.open(Root + "corps") rescue d_corps = Dir::mkdir(Root + "corps", 0777) #ouverture du dossier corps, le créer si il n'existe pas d_corps = d_corps.sort - [".", ".."] rescue nil # rangement des fichiers de A a Z on enleve tous les fichiers situés dans le dossier racine du projet @corps = []; @corps[0] = []; @corps[1] = [] # initialisation des tableaux a double entree: @corps[1] contiendra les éléments féminins @corps[0] le reste # on prend chaque éléement du tableau d_corps, on verifie que c'est un fichier png. si son nom comporte "f-" comme feminin, on le place dans @corps[1] sinon... d_corps.each { |fichier| if File.ftype(Root+"corps/"+fichier) == "file"; fichier.include?("f-") ? @corps[1].push(fichier) : @corps[0].push(fichier) if fichier.include?(".png")end} #pareil pour les yeux d_yeux = Dir.open(Root + "yeux") rescue d_yeux = Dir::mkdir(Root + "yeux", 0777) d_yeux = d_yeux.sort - [".", ".."] rescue nil @yeux = []; @yeux[0] = []; @yeux[1] = [] d_yeux.each { |fichier| if File.ftype(Root+"yeux/"+fichier) == "file"; fichier.include?("f-") ? @yeux[1].push(fichier) : @yeux[0].push(fichier) if fichier.include?(".png")end} d_bas = Dir.open(Root + "bas") rescue d_bas = Dir::mkdir(Root + "bas", 0777) d_bas = d_bas.sort - [".", ".."] rescue nil @bas = []; @bas[0] = []; @bas[1] = [] d_bas.each { |fichier| if File.ftype(Root+"bas/"+fichier) == "file"; fichier.include?("f-") ? @bas[1].push(fichier) : @bas[0].push(fichier) if fichier.include?(".png")end} d_haut = Dir.open(Root + "haut") rescue d_haut = Dir::mkdir(Root + "haut", 0777) d_haut = d_haut.sort - [".", ".."] rescue nil @haut = []; @haut[0] = []; @haut[1] = [] d_haut.each { |fichier| if File.ftype(Root+"haut/"+fichier) == "file"; fichier.include?("f-") ? @haut[1].push(fichier) : @haut[0].push(fichier) if fichier.include?(".png")end} d_accessoires = Dir.open(Root + "accessoires") rescue d_accessoires = Dir::mkdir(Root + "accessoires", 0777) d_accessoires = d_accessoires.sort - [".", ".."] rescue nil @accessoires = []; @accessoires[0] = []; @accessoires[1] = [] d_accessoires.each { |fichier| if File.ftype(Root+"accessoires/"+fichier) == "file"; fichier.include?("f-") ? @accessoires[1].push(fichier) : @accessoires[0].push(fichier) if fichier.include?(".png")end} end end listing = Game_Listing.new #on appelle la classe de listing |
je ne connais pas trop votre niveau en ruby ! si vous avez des questions, n'hésitez pas, on est la pour apprendre, a me demander des cours (vers 2-3h du mat' ) sur la chatbox !_________________ Berka sur twitter, tavu ? Pensées politiques et juridiques. Réflexions informatiques.
.: Bonjour Invité, je ne fais pas de support de script par MP :.
|
|  | | Arayashiki Démonophile sadique


Nombre de messages: 655 Age: 22 Localisation: Trois lettres me demangent. Oserai-je ? Capacités: bon Avertissements: Avertissements infinis |-) Distinction: FUCKING nouveau dieu du mal. Gros connard en chef. Date d'inscription: 18/08/2008
 | Sujet: Re: [en cours] Hero Creator Ven 10 Oct 2008 - 23:15 | |
| Berka j'ai une question : on vire tous les scripts déjà présents ou tu veux en garder quelques uns qui serait utiles ? |
|  | | Berka Administrateur


Nombre de messages: 1824 Age: 21 Localisation: Paris Capacités: expert Distinction: rubyste déglingué
9ème dan en scripting-no-jutsu
Nouveau Justine Beber ;P Date d'inscription: 16/12/2007
 | Sujet: Re: [en cours] Hero Creator Sam 11 Oct 2008 - 0:03 | |
| en fait on cree un méga script qui se rajoutera à un projet. Le joueur pourra en début de jeu creer son propre perso ! _________________ Berka sur twitter, tavu ? Pensées politiques et juridiques. Réflexions informatiques.
.: Bonjour Invité, je ne fais pas de support de script par MP :.
|
|  | | T. à la menthe Administrateur, Fondateur, Vieillard acariâtre


Nombre de messages: 3382 Age: 99 Localisation: Erem Vehyx Avertissements: Avertissements infinis |-) Distinction: Flooder invisible [Coco']
Maître vénéré [Les Kikoolol]
Champion de boxe et au lit ! :O [Wax]
Être Mythique [Sisitkt]
Papi T. qui a l'ostéoporose [Skillo]
Soldat Ikéa [Coco'] Date d'inscription: 16/12/2007
 | Sujet: Re: [en cours] Hero Creator Sam 11 Oct 2008 - 0:12 | |
| Mais un script de ce genre n'existe-t-il pas déjà sur RRR? Il me semble en avoir déjà vu un  |
|  | | Berka Administrateur


Nombre de messages: 1824 Age: 21 Localisation: Paris Capacités: expert Distinction: rubyste déglingué
9ème dan en scripting-no-jutsu
Nouveau Justine Beber ;P Date d'inscription: 16/12/2007
 | Sujet: Re: [en cours] Hero Creator Sam 11 Oct 2008 - 0:19 | |
| il en existait un pour xp. pour vx, celui dont tu parles ne permet pas la creation de chara, mais juste de hero ! et puis ca peut etre un bon entrainement ! _________________ Berka sur twitter, tavu ? Pensées politiques et juridiques. Réflexions informatiques.
.: Bonjour Invité, je ne fais pas de support de script par MP :.
|
|  | | T. à la menthe Administrateur, Fondateur, Vieillard acariâtre


Nombre de messages: 3382 Age: 99 Localisation: Erem Vehyx Avertissements: Avertissements infinis |-) Distinction: Flooder invisible [Coco']
Maître vénéré [Les Kikoolol]
Champion de boxe et au lit ! :O [Wax]
Être Mythique [Sisitkt]
Papi T. qui a l'ostéoporose [Skillo]
Soldat Ikéa [Coco'] Date d'inscription: 16/12/2007
 | Sujet: Re: [en cours] Hero Creator Sam 11 Oct 2008 - 0:29 | |
| Oki ^^ Je m'informais juste  Il faudrait juste essayer de trouver du monde motivé maintenant ^^ Bonne chance à vous tous!  |
|  | | Arayashiki Démonophile sadique


Nombre de messages: 655 Age: 22 Localisation: Trois lettres me demangent. Oserai-je ? Capacités: bon Avertissements: Avertissements infinis |-) Distinction: FUCKING nouveau dieu du mal. Gros connard en chef. Date d'inscription: 18/08/2008
 | Sujet: Re: [en cours] Hero Creator Sam 11 Oct 2008 - 1:34 | |
| Merci Tret' ^^. Il est vrai que ça me permettra d'augmenter grandement mes capacités en script. Mais je sais pas si M.D pensait à ça comme projet.
Sinon pourquoi ne pas faire une version Hero maker comme logiciel ( sous forme de projet). Et après remodelé les scripts pour les intégrés à un jeu quelconque pour permettre la création de héros en début de partie. Et puis j'avais émis l'idée de faire une version anglaise mais ça c'est à voir.
Il faudrait aussi qu'un graphiste est accès à ce sous-forum pour nous aider non ? |
|  | | Berka Administrateur


Nombre de messages: 1824 Age: 21 Localisation: Paris Capacités: expert Distinction: rubyste déglingué
9ème dan en scripting-no-jutsu
Nouveau Justine Beber ;P Date d'inscription: 16/12/2007
 | Sujet: Re: [en cours] Hero Creator Sam 11 Oct 2008 - 10:27 | |
| [code="Aray"]Sinon pourquoi ne pas faire une version Hero maker comme logiciel [/code] pas trop compris... peut etre que c'est l'heure matinale ^^
pour ce qui est du graphiste, on pourra le faire un fois les bases posées, le noyau du systeme fini... dans la section recrutement _________________ Berka sur twitter, tavu ? Pensées politiques et juridiques. Réflexions informatiques.
.: Bonjour Invité, je ne fais pas de support de script par MP :.
|
|  | | Arayashiki Démonophile sadique


Nombre de messages: 655 Age: 22 Localisation: Trois lettres me demangent. Oserai-je ? Capacités: bon Avertissements: Avertissements infinis |-) Distinction: FUCKING nouveau dieu du mal. Gros connard en chef. Date d'inscription: 18/08/2008
 | Sujet: Re: [en cours] Hero Creator Dim 12 Oct 2008 - 22:13 | |
| alors violà une petite modélation de ma part du script Scene_Title : La méthode create_window_command : | Code: | def create_command_window s1 = Vocab::new_game s2 = Vocab::continue s3 = Vocab::shutdown s4 = "Hero_creator" @command_window = Window_Command.new(172, [s1, s2, s3,s4]) @command_window.x = (544 - @command_window.width) / 2 @command_window.y = 288 if @continue_enabled # If continue is enabled @command_window.index = 1 # Move cursor over command else # If disabled @command_window.draw_item(1, false) # Make command semi-transparent end @command_window.openness = 0 @command_window.open end |
la méthode update :
| Code: | def update super @command_window.update if Input.trigger?(Input::C) case @command_window.index when 0 #New game command_new_game when 1 # Continue command_continue when 2 # Shutdown command_shutdown when 3 $scene = Scene_Hero_Maker.new end end end |
et voilà la classe Scene_Hero_Creator
| Code: | class Scene_Hero_Creator def initialize(actor_index = 0) @actor_index = actor_index create_command_window end def create_command_window @command_window = Window_Command.new ( 150 ["Charaset","Faceset"]) end def update super @command_window.update if Input.trigger?(Input::C) case @command_window.index when 0 $scene = Scene_Chara.new when 1 $scene = Scene_Face.new end end end end |
il doit surement y avoir des erreurs étant donné que j'ai pas pris le temps de tester.
Sinon berka je suis chaud pour un petit cours sur les scripts sur la CB donc dis moi ton heure et je tacherais d'y être. |
|  | | Berka Administrateur


Nombre de messages: 1824 Age: 21 Localisation: Paris Capacités: expert Distinction: rubyste déglingué
9ème dan en scripting-no-jutsu
Nouveau Justine Beber ;P Date d'inscription: 16/12/2007
 | Sujet: Re: [en cours] Hero Creator Dim 12 Oct 2008 - 22:29 | |
| pffiou ! voila, j'ai fini le systeme en lui meme... listing des ressources choix des ressources visualisation en direct et enregistrement du bitmap en fichier bmp... Aray: en fait la scene creator est beaucoup plus complexe: mais vraiment merci de t'etre impliqué ! voici le script entier: je suis desolé, masi je n'ai pas eu le courage de commenter... mais je le ferai demain ! pour les questions >> CB Game_Listing: | Spoiler: | | | | Code: | Root = "./creator/" class Game_Listing def initialize d_corps = Dir.open(Root + "corps") rescue d_corps = Dir::mkdir(Root + "corps", 0777) d_corps = d_corps.sort - [".", ".."] rescue nil @corps = []; @corps[0] = []; @corps[1] = [] d_corps.each { |fichier| if File.ftype(Root+"corps/"+fichier) == "file"; fichier.include?("f-") ? @corps[1].push(fichier) : @corps[0].push(fichier) if fichier.include?(".png")end} d_yeux = Dir.open(Root + "yeux") rescue d_yeux = Dir::mkdir(Root + "yeux", 0777) d_yeux = d_yeux.sort - [".", ".."] rescue nil @yeux = []; @yeux[0] = []; @yeux[1] = [] d_yeux.each { |fichier| if File.ftype(Root+"yeux/"+fichier) == "file"; fichier.include?("f-") ? @yeux[1].push(fichier) : @yeux[0].push(fichier) if fichier.include?(".png")end} d_bas = Dir.open(Root + "bas") rescue d_bas = Dir::mkdir(Root + "bas", 0777) d_bas = d_bas.sort - [".", ".."] rescue nil @bas = []; @bas[0] = []; @bas[1] = [] d_bas.each { |fichier| if File.ftype(Root+"bas/"+fichier) == "file"; fichier.include?("f-") ? @bas[1].push(fichier) : @bas[0].push(fichier) if fichier.include?(".png")end} d_haut = Dir.open(Root + "haut") rescue d_haut = Dir::mkdir(Root + "haut", 0777) d_haut = d_haut.sort - [".", ".."] rescue nil @haut = []; @haut[0] = []; @haut[1] = [] d_haut.each { |fichier| if File.ftype(Root+"haut/"+fichier) == "file"; fichier.include?("f-") ? @haut[1].push(fichier) : @haut[0].push(fichier) if fichier.include?(".png")end} d_objets = Dir.open(Root + "objets") rescue d_objets = Dir::mkdir(Root + "objets", 0777) d_objets = d_objets.sort - [".", ".."] rescue nil @objets = []; @objets[0] = []; @objets[1] = [] d_objets.each { |fichier| if File.ftype(Root+"objets/"+fichier) == "file"; fichier.include?("f-") ? @objets[1].push(fichier) : @objets[0].push(fichier) if fichier.include?(".png")end} d_tete = Dir.open(Root + "tete") rescue d_tete = Dir::mkdir(Root + "tete", 0777) d_tete = d_tete.sort - [".", ".."] rescue nil @tete = []; @tete[0] = []; @tete[1] = [] d_tete.each { |fichier| if File.ftype(Root+"tete/"+fichier) == "file"; fichier.include?("f-") ? @tete[1].push(fichier) : @tete[0].push(fichier) if fichier.include?(".png")end} end def type(type) case type when "Corps"; return @corps when "Tete"; return @tete when "Bas"; return @bas when "Haut"; return @haut when "Yeux"; return @yeux when "Objets"; return @objets end end end |
|
Scene_Creator:
| Spoiler: | | | | Code: | class Scene_Creator attr_accessor :categories def initialize $charset = [] $sexe = 0 @ok = false @cat = ["Corps", "Yeux", "Tete", "Haut", "Bas", "Objets"] @listing = Game_Listing.new @categories = Window_Command.new(394,@cat, 6, 0) @categories.index = 0; @categories.active = false @categories.y = 416-@categories.height; @categories.x = 150 @help_window = Window_Help.new @choix = Window_Command.new(150,["Choisir", 'Retirer', 'Suivant', 'Quitter']) @choix.height = 104; @choix.y = 416 - @choix.height @choix.active = true @listes = Window_Command.new(150,@listing.type(@cat[@categories.index])[$sexe]) @listes.y = 56; @listes.height = 256; @listes.active = false @vue = Window_Vue.new end def main Graphics.transition loop do Graphics.update Input.update update break if $scene != self end Graphics.freeze @help_window.dispose @vue.calque.dispose rescue nil @vue.dispose;@choix.dispose;@listes.dispose;@categories.dispose end def update @listes.update @help_window.update @categories.update @choix.update (@listes.dispose;@listes=Window_Command.new(150,@listing.type(@cat[@categories.index])[$sexe]);@listes.y=56;@listes.height=256;@listes.active=false) if @categories.active @vue.refresh(@cat[@categories.index]+"/"+@listing.type(@cat[@categories.index])[$sexe][@listes.index]) rescue nil if @listes.active if Input.trigger?(Input::C) (@listes.y=56;@listes.height=256;@listes.active = true;@categories.active=false;return) if @categories.active (($charset.push(Cache.creator(@cat[@categories.index]+"/"+@listing.type(@cat[@categories.index])[$sexe][@listes.index]));@categories.active=true;@categories.index+=1 rescue nil;return)rescue nil) if @listes.active && !@ok if @choix.active case @choix.index when 0; @categories.active=true;@choix.active=false; ok = false when 1; @choix.active=false;@listes.dispose;@listes=Window_Command.new(150,$charset);@listes.y=56;@listes.height=256; @ok = true; return when 3; creation end end end if Input.trigger?(Input::B) (@categories.active=true;@listes.active=false;@choix.active=false;return) if @listes.active (@choix.active=true;@categories.active=false;@listes.active=false rescue nil;return) if @categories.active $scene = Scene_Map.new if @choix.active end end def creation @a = Bitmap.new(128,192) @a.rect.set(299,128,128,192) $charset.each { |element| @a.stretch_blt(Rect.new(0,0, 128,192), element, element.rect, 255)} capture(@a, "hero.bmp") $scene = Scene_Map.new end end
class Window_Vue < Window_Base attr_accessor :calque def initialize super(150, 56, 394, 304) @calque = Sprite.new refresh end def refresh(fichier = "") self.contents.clear (@calque.bitmap = Cache.creator(fichier) @calque.z = 1000 * ($scene.categories.index+1) @calque.x,@calque.y = 299, 128)rescue nil if !$charset.empty? $charset.each { |element| self.contents.stretch_blt(Rect.new((self.width-element.width)/2, (self.height-element.height)/2, 128,192), element, element.rect, 255)} end end end module Cache def self.creator(filename) load_bitmap("./creator/", filename) end end |
|
et le systeme d'enregistrement en bmp, pas de moi (mais de vgvgf, le scripteur le plus baleze de tous les temps !)
| Spoiler: | | | | Code: | def capture(bmp, filename, background_color = nil, prevent_hang_up = true) filename += '.bmp' if File.extname(filename) != '.bmp' if !background_color.nil? temp_bmp = bmp.clone rect = Rect.new(0, 0, temp_bmp.width, temp_bmp.height) bmp = Bitmap.new(temp_bmp.width, temp_bmp.height) bmp.fill_rect(rect, background_color) bmp.stretch_blt(rect, temp_bmp, rect) temp_bmp.dispose end file = File.open(filename, 'wb') file.write('BM') file.write([54 + (bmp.width * bmp.height * 24) / 8].pack('L')) file.write('ABMP') file.write([54].pack('L')) file.write([40].pack('L')) file.write([bmp.width].pack('L')) file.write([bmp.height].pack('L')) file.write([1].pack('L')[0, 2]) file.write([24].pack('L')[0, 2]) file.write([0, 0, 0, 0, 0, 0].pack('L6')) null_spaces = 0 if bmp.width / 4 != bmp.width / 4.0 if (bmp.width + 1) / 4 == (bmp.width + 1) / 4.0 null_spaces = 1 elsif (bmp.width + 2) / 4 == (bmp.width + 2) / 4.0 null_spaces = 2 elsif (bmp.width + 3) / 4 == (bmp.width + 3) / 4.0 null_spaces = 3 end end for y in (-bmp.height + 1)..0 line = '' for x in 0...bmp.width color = bmp.get_pixel(x, y.abs) line += [color.blue.to_i].pack('L')[0, 1] line += [color.green.to_i].pack('L')[0, 1] line += [color.red.to_i].pack('L')[0, 1] end file.write(line) end file.close end |
|
_________________ Berka sur twitter, tavu ? Pensées politiques et juridiques. Réflexions informatiques.
.: Bonjour Invité, je ne fais pas de support de script par MP :.
|
|  | | Arayashiki Démonophile sadique


Nombre de messages: 655 Age: 22 Localisation: Trois lettres me demangent. Oserai-je ? Capacités: bon Avertissements: Avertissements infinis |-) Distinction: FUCKING nouveau dieu du mal. Gros connard en chef. Date d'inscription: 18/08/2008
 | Sujet: Re: [en cours] Hero Creator Dim 12 Oct 2008 - 22:34 | |
| Ah oui en effet j'étais lui du compte  . Bon je vais essayer de décrypter tout ça ... Sinon bah je vais essayer de faire quelque chose d'utile moi... |
|  | | Mist' Administrateur


Nombre de messages: 2689 Age: 19 Localisation: France // Auvergne // Cantal Capacités: expert Distinction: Elite du Service Anti Boulets
Force Rouge Mist', toujours EN ACTION!! contre les Gaaxkun de la cité d'Erem Vehyx
La biatch préréfée à Coco'
[Coco' ]
"J'en branle"
[Mist' à Yuko]
JEAN LOU de la commu' (Jena Lee fake)
[Universal Music] Date d'inscription: 22/12/2007
 | Sujet: Re: [en cours] Hero Creator Mer 15 Oct 2008 - 17:00 | |
| J'suis ok ^^ Moi, j'veux participer, par contre, j'ai plus le net, donc, j'arives pendant les vacs. _________________ ~ The Sauce Make The Difference.  |
|  | | Berka Administrateur


Nombre de messages: 1824 Age: 21 Localisation: Paris Capacités: expert Distinction: rubyste déglingué
9ème dan en scripting-no-jutsu
Nouveau Justine Beber ;P Date d'inscription: 16/12/2007
 | Sujet: Re: [en cours] Hero Creator Mer 15 Oct 2008 - 19:39 | |
| Si quelqu'un pouvais trouver un pack de charas découpés, ce serait parfait ! _________________ Berka sur twitter, tavu ? Pensées politiques et juridiques. Réflexions informatiques.
.: Bonjour Invité, je ne fais pas de support de script par MP :.
|
|  | | Arayashiki Démonophile sadique


Nombre de messages: 655 Age: 22 Localisation: Trois lettres me demangent. Oserai-je ? Capacités: bon Avertissements: Avertissements infinis |-) Distinction: FUCKING nouveau dieu du mal. Gros connard en chef. Date d'inscription: 18/08/2008
 | Sujet: Re: [en cours] Hero Creator Mer 15 Oct 2008 - 19:41 | |
| Je peux même te le faire si tu veux. Par contre ça va prendre du temps. Je dirais deux trois jours. Si tu peux attendre jusque là. |
|  | | |
Sujets similaires |  |
|
| | Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
|
|