Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: [VX] Choix dynamique d'un visage dans les messages Lun 26 Mai 2008 - 20:30 | |
| Ce script permet d'afficher le visage d'un acteur ou d'un membre de l'équipe (en plus de quelques option supplémentaires venant de ADS dont l'affichage des balloons d'émotions au dessus des personnages) Les screens: Il s'agit 2 fois du même héro avec un changement d'apparence. Lors du changement d'apparence, le visage du héro se modifie également pour refléter ce à quoi il ressemble maintenant. Plutôt que de gérer individuellement les fenêtres \af[1] est utiliser dans ce cas-ci tel que démontrer dans cette fenêtre: Et voici le script: - Code:
-
# Window_Message by RPG-Maker VX # ADS by modern algebra (rmrk.net) # MyMessage by MirainoHikari (MH) # # Syntaxe des options de message # # \v[VAR] - Affiche la variable #VAR # \n[ID] - Affiche le nom du personnage ID (liste des personnages) # \c[COLOR] - Modifie la couleur du texte pour la couleur avec l'id COLOR # \G - Affiche la fenêtre de monnaie # \. - Attend 1/4 sec (15 frames) avant de poursuivre le message # \| - Attend 1 sec (60 frames) avant de poursuivre le message # \! - Attend que le joueur appuie sur une touche avant de poursuivre le message # \> - Affiche le texte rapidement # \< - Affiche le texte lentement # \^ - N'arrête pas le texte à la fin de l'affichage du message # # \af[ID] - Affiche le visage du personnage ID (liste des personnages) # \pf[ID] - Affiche le visage du personnage ID (liste d'équipe) # \ns[ID] - Affiche le nom de la compétence ID (liste des skills) # # \bln[TAGET,BALOON] - Affiche l'emotion avec l'id BALOON sur l'evenement avec l'id TARGET (si 0, sur héro) # # \ac[ID] - Affiche la classe du personnage ID (liste d'équipe) # \np[ID] - Affiche le nom du personnage ID (liste d'équipe) # \ne[ID] - Affiche le nom de l'événement selon ID de l'event sur la carte active # \nc[ID] - Affiche le nom de la classe ID (liste des classes) # \nm[ID] - Affiche le nom du monstre ID (liste des monstres) # \ni[ID] - Affiche le nom de l'objet ID (liste des items) # \nw[ID] - Affiche le nom de l'arme ID (liste des armes) # \na[ID] - Affiche le nom de l'armure ID (liste des armures) # \pi[ID] - Affiche le prix de l'objet ID (liste des items) # \pw[ID] - Affiche le prix de l'arme ID (liste des armes) # \pa[ID] - Affiche le prix de l'arme ID (liste des armes) # \ii[ID] - Affiche l'icone de l'objet ID (liste des items) # \iw[ID] - Affiche l'icone de l'arme ID (liste des armes) # \ia[ID] - Affiche l'icone de l'arme ID (liste des armes)
#============================================================================== # MyMessage #------------------------------------------------------------------------------ # Remplace le script de base Window_Message #==============================================================================
class Window_Message < Window_Selectable def initialize super(0, 288, 544, 128) self.z = 200 self.active = false self.index = -1 self.openness = 0 @opening = false # WIndow opening flag @closing = false # Window closing flag @text = nil # Remaining text to be displayed @contents_x = 0 # X coordinate for drawing next character @contents_y = 0 # Y coordinate for drawing next character @line_count = 0 # Line count drawn up until now @wait_count = 0 # Wait count @background = 0 # Background type @position = 2 # Display position @show_fast = false # Fast forward flag @line_show_fast = false # Fast forward by line flag @pause_skip = false # Input standby omission flag @restart_line = 0 # MH : new line default position create_gold_window create_number_input_window create_back_sprite end #-------------------------------------------------------------------------- # ● New Page #-------------------------------------------------------------------------- def new_page contents.clear if $game_message.face_name.empty? @contents_x = 0 @restart_line = 0 else name = $game_message.face_name index = $game_message.face_index draw_face(name, index, 0, 0) @contents_x = 112 end @contents_y = 0 @line_count = 0 @show_fast = false @line_show_fast = false @pause_skip = false contents.font.color = text_color(0) end #-------------------------------------------------------------------------- # ● New Line #-------------------------------------------------------------------------- def new_line if $game_message.face_name.empty? @contents_x = @restart_line else @contents_x = 112 end @contents_y += WLH @line_count += 1 @line_show_fast = false end #-------------------------------------------------------------------------- # ● Convert #-------------------------------------------------------------------------- def convert_special_characters # Original @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] } @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] } @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name } @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" } @text.gsub!(/\\G/) { "\x02" } @text.gsub!(/\\\./) { "\x03" } @text.gsub!(/\\\|/) { "\x04" } @text.gsub!(/\\!/) { "\x05" } @text.gsub!(/\\>/) { "\x06" } @text.gsub!(/\\</) { "\x07" } @text.gsub!(/\\\^/) { "\x08" } @text.gsub!(/\\\\/) { "\\" } # By MH @text.gsub!(/\\AF\[(\d+)\]/i) { "\x77[#{$1.to_i}]"} # Actor Face @text.gsub!(/\\PF\[(\d+)\]/i) { "\x11[#{$1.to_i}]"} # Party Face @text.gsub!(/\\NS\[(\d+)\]/i) { $data_skills[$1.to_i].name } # Skill Name @text.gsub!(/\\IS\[(\d+)\]/i) { "\x98[#{$data_skills[$1.to_i].icon_index}]" } # Skill Icon # FROM ADS @text.gsub! (/\\BLN\[(\d+,\d+)\]/i) { "\x96[#{$1.to_s}]" } # Balloon @text.gsub!(/\\AC\[(\d+)\]/i) { $game_actors[$1.to_i].class.name } # Actor Class @text.gsub!(/\\NC\[(\d+)\]/i) { $data_classes[$1.to_i].name } # Class Name @text.gsub!(/\\NP\[(\d+)\]/i) { $game_party.members[$1.to_i].name } # Actor Name by Party Index begin @text.gsub!(/\\NE\[(\d+)\]/i) { $game_map.events[$1.to_i].name } # Event Name rescue end @text.gsub!(/\\NM\[(\d+)\]/i) { $data_enemies[$1.to_i].name } # Monster Name @text.gsub!(/\\NI\[(\d+)\]/i) { $data_items[$1.to_i].name } # Item Name @text.gsub!(/\\NW\[(\d+)\]/i) { $data_weapons[$1.to_i].name } # Weapon Name @text.gsub!(/\\NA\[(\d+)\]/i) { $data_armors[$1.to_i].name } # Armor Name @text.gsub!(/\\PI\[(\d+)\]/i) { $data_items[$1.to_i].price.to_s } # Item Price @text.gsub!(/\\PW\[(\d+)\]/i) { $data_weapons[$1.to_i].price.to_s } # Weapon Price @text.gsub!(/\\PA\[(\d+)\]/i) { $data_armors[$1.to_i].price.to_s } # Armor Price @text.gsub! (/\\II\[(\d+)\]/i) { "\x98[#{$data_items[$1.to_i].icon_index}]" } # Item Icon @text.gsub! (/\\IW\[(\d+)\]/i) { "\x98[#{$data_weapons[$1.to_i].icon_index}]" } # Weapon Icon @text.gsub! (/\\IA\[(\d+)\]/i) { "\x98[#{$data_armors[$1.to_i].icon_index}]" } # Armor Icon end #-------------------------------------------------------------------------- # ● Update Message #-------------------------------------------------------------------------- def update_message loop do c = @text.slice!(/./m) # Get next text character case c when nil # There is no text that must be drawn finish_message # Finish update break when "\x00" # New line new_line if @line_count >= MAX_LINE # If line count is maximum unless @text.empty? # If there is more self.pause = true # Insert number input break end end when "\x01" # \C[n] (text character color change) @text.sub!(/\[([0-9]+)\]/, "") contents.font.color = text_color($1.to_i) next when "\x02" # \G (gold display) @gold_window.refresh @gold_window.open when "\x03" # \. (wait 1/4 second) @wait_count = 15 break when "\x04" # \| (wait 1 second) @wait_count = 60 break when "\x05" # \! (Wait for input) self.pause = true break when "\x06" # \> (Fast display ON) @line_show_fast = true when "\x07" # \< (Fast display OFF) @line_show_fast = false when "\x08" # \^ (No wait for input) @pause_skip = true when "\x77" #MH @text.sub! (/\[(\d*)\]/, "") actor = $game_actors[$1.to_i] begin draw_face(actor.face_name, actor.face_index, 0, 0) rescue end @contents_x = 112 @restart_line = 112 when "\x11" #MH @text.sub! (/\[(\d*)\]/, "") actor = $game_party.members[$1.to_i] begin draw_face(actor.face_name, actor.face_index, 0, 0) rescue end @contents_x = 112 @restart_line = 112 when "\x96" # Show Balloon #ADS # Extract Target and Balloon ID @text.sub! (/\[(\d*),(\d*)\]/, "") # If target is player if $1.to_i == 0 $game_player.balloon_id = $2.to_i else return if $game_map.events[$1.to_i] == nil $game_map.events[$1.to_i].balloon_id = $2.to_i end when "\x98" # \icon (Icon) #ADS @text.sub!(/\[(\d*)\]/, "") draw_icon ($1.to_i, @contents_x, @contents_y) @contents_x += 24 when "\x99" # \name (Namebox) #ADS @text.sub!(/\[(.*?)\]/, "") create_name_window ($1.to_s) else # when text is normal text contents.draw_text(@contents_x, @contents_y, 40, WLH, c) c_width = contents.text_size(c).width @contents_x += c_width end break unless @show_fast or @line_show_fast end end end Ce code part à la fois du script Advance Dialog Script (ADS) de modern algebra et du MessageWindow par défaut du RPG maker. Je n'avais pas besoin d'ADS au complet, surtout que le script Paragrapher qui est essentiel à ADS bug avec certains autres de mes scripts. Comme d'habitude, vous devez placer ce script dans la section Users Scripts au dessus de Main ce qui aurra pour effet de surcharger Window_Message. ATTENTION, seuls les focntion surcharger sont présente dans le script, vous ne devez pas remplacer Window_Message. Dans les messages, laisser l'image du personnage vide et commencer votre message par \af[1] pour afficher le visage de Actor[1] ou \pf[0] pour afficher celui de Member[0] (noter que les membres de l'équipe vont de 0 à nombre de coéquipier -1 et que les ID des acteurs vont de 1 à ID). Je ne sais pas si ce script est incompatible avec advance face script, mais je n'ai pas testé puisque j'utilise la taille des facesets par défaut. Pour le tester, vous devrez placer le script de visage APRÈS le présent script puisque ce script surcharge le Window_Message qui viens bien avant la section Users Scripts.
Dernière édition par Zangther le Jeu 23 Aoû 2012 - 11:48, édité 7 fois |
|
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
| Sujet: Re: [VX] Choix dynamique d'un visage dans les messages Lun 26 Mai 2008 - 22:07 | |
| On peut avoir des screens ? Merci |
|
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Ajout des screens Mar 27 Mai 2008 - 0:15 | |
| Voilà, j'ai rajouté les screens dans le message d'origine. Le screen d'exemple d'entrée du texte utilise un script que je suis en train de mettre au point pour modifier les persos, il n'est pas tout à fait au point mais dès qu'il le sera, je le posterai lui aussi. |
|
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
| Sujet: Re: [VX] Choix dynamique d'un visage dans les messages Mar 27 Mai 2008 - 17:37 | |
| Super ce script ! Merci |
|
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: [VX] Choix dynamique d'un visage dans les messages Mer 28 Mai 2008 - 1:27 | |
| Ce n'est rien voyons. Ce qui m'étonne, c'est que personne n'y ait pensé avant, c'est tellement pratique. |
|
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
| Sujet: Re: [VX] Choix dynamique d'un visage dans les messages Mer 28 Mai 2008 - 11:57 | |
| En faite c'est surtout utile si c'est le héros qui choisis ces co-équipier.
Comme ça on risque pas de ce tromper quoi ^^.
Je te remercie amplement pour avoir en quelque sorte créer ce script. Je me demandais aussi à quoi ça pouvais bien servir :/ ... Mais bon, maintenant, c'est sur, sans ce script, à part faire des variables et compagnie, on pouvais pas afficher le bon facset ^^. Donc, script très utile ! Merci ! |
|
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: [VX] Choix dynamique d'un visage dans les messages Jeu 29 Mai 2008 - 0:04 | |
| Wais bon. Il y a d'autre utilités aussi. Si tu permets à ton personnage de changer d'apparence (ce qui dans mon cas est un jeu basé entièrement sur cette faculté) c'est fort pratique. Ton perso change de forme, le face set évolue avec lui. Pense à ça... Tu veux que ton perso, en changeant de classe ou de niveau son apparence change (FF Tactique quelqu'un ) ben ce script le permet et t'as pas à te casser la tête. Peu importe l'apparence qu'il est rendu, s'il entamme un dialogue avec un NPC, bien on vois le bon visage. Mais c'est certain que pour avoir une utilité encore plus apparente, ça prendrait aussi mon script de modification de personnages (qui n'est pas totalement au point encore, mais ça s'en vient). (Un script 100% Hikari cette fois )
Dernière édition par MirainoHikari le Lun 9 Juin 2008 - 19:38, édité 1 fois |
|
Citadin Lv.7
Age : 31 Inscrit le : 06/04/2008 Messages : 167
| Sujet: Re: [VX] Choix dynamique d'un visage dans les messages Jeu 29 Mai 2008 - 11:18 | |
| Woaw merci ça peut être utile ! |
|
| Sujet: Re: [VX] Choix dynamique d'un visage dans les messages | |
| |
|