Elekami Fondateur
Messages postés : 19071 Date d'inscription : 19/07/2008 Jauge LPC :
| Sujet: [XP] Message qui disparait au bout de X frames Dim 20 Jan 2013 - 17:07 | |
| L'autre fois y a des gens qui se demandaient comment zapper automatiquement des messages sur RMXP. Bah ça se fait avec ce script de Sihn (Chaotic Blue). Ce script permet donc d'afficher un message (via la commande "Afficher un message") qui disparait au bout d'un certain nombre de frames de votre choix. Il suffit d'inclure dans le message en question \t[nb_de_frames] et le tour est joué. - Code:
-
#=============================================================================== # ■ Message qui dure X frames #=============================================================================== # Auteur : Sihn # Version : 1.3 #------------------------------------------------------------------------------- # Permet d'afficher un message qui s'efface automatiquement au bout d'un # certain temps. #=============================================================================== # Utilisation: # # Créé un nouveau message contenant \T[X] # Remplacez X par un nombre de votre choix. Ce nombre sera la durée d'affichage # du message en frames. (20 frames vaut environ 1 secondes) # Bien entendu, les messages ne contenant pas cette commandes seront "normaux". # Note: Durant un message temporaire, les commandes de l'événement affichant le # message ne seront pas bloquées. (comme si vous utilisiez une commande "Jouée # une animation", par exemple.) # Cependant, vous pouvez faire en sorte que les commandes restent bloquées # comme avant en remplaçant "false" ci-dessous par "true". TIME_MESSAGE_STOP = false #===============================================================================
class Game_Temp attr_accessor :time_showing alias time_showing_initialize initialize def initialize @time_showing = 0 time_showing_initialize end end
class Window_Message < Window_Selectable def refresh self.contents.clear self.contents.font.color = normal_color self.contents.font.name = $fontface self.contents.font.size = $fontsize x = y = 0 @cursor_width = 0 if $game_temp.choice_start == 0 x = 8 end if $game_temp.message_text != nil text = $game_temp.message_text begin last_text = text.clone text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] } end until text == last_text text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end text.gsub!(/\\\\/) { "\000" } text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" } text.gsub!(/\\[Gg]/) { "\002" } text.gsub!(/\\[Tt]\[([0-9]+)\]/) { "\003[#{$1}]" } while ((c = text.slice!(/./m)) != nil) if c == "\000" c = "\\" end if c == "\001" text.sub!(/\[([0-9]+)\]/, "") color = $1.to_i if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end next end if c == "\002" if @gold_window == nil @gold_window = Window_Gold.new @gold_window.x = 560 - @gold_window.width if $game_temp.in_battle @gold_window.y = 192 else @gold_window.y = self.y >= 128 ? 32 : 384 end @gold_window.opacity = self.opacity @gold_window.back_opacity = self.back_opacity end next end if c == "\003" text.sub!(/\[([0-9]+)\]/, "") $game_temp.time_showing = $1.to_i * 2 $game_temp.time_showing *= -1 if $game_temp.time_showing < 0 next end if c == "\n" if y >= $game_temp.choice_start @cursor_width = [@cursor_width, x].max end y += 1 x = 0 if y >= $game_temp.choice_start x = 8 end next end self.contents.draw_text(4 + x, 32 * y, 40, 32, c) x += self.contents.text_size(c).width
end end if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end if $game_temp.num_input_variable_id > 0 digits_max = $game_temp.num_input_digits_max number = $game_variables[$game_temp.num_input_variable_id] @input_number_window = Window_InputNumber.new(digits_max) @input_number_window.number = number @input_number_window.x = self.x + 8 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end end def update super if @fade_in self.contents_opacity += 24 if @input_number_window != nil @input_number_window.contents_opacity += 24 end if self.contents_opacity == 255 @fade_in = false end return end if @input_number_window != nil @input_number_window.update if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) $game_variables[$game_temp.num_input_variable_id] = @input_number_window.number $game_map.need_refresh = true @input_number_window.dispose @input_number_window = nil terminate_message end return end if @contents_showing if $game_temp.choice_max == 0 self.pause = $game_temp.time_showing == 0 end if Input.trigger?(Input::B) if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0 $game_system.se_play($data_system.cancel_se) $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1) terminate_message end end if $game_temp.time_showing == 0 or $game_temp.choice_max > 0 if Input.trigger?(Input::C) if $game_temp.choice_max > 0 $game_system.se_play($data_system.decision_se) $game_temp.choice_proc.call(self.index) end terminate_message end else $game_temp.time_showing -= 1 if $game_temp.time_showing == 0 if $game_temp.choice_max > 0 $game_system.se_play($data_system.decision_se) $game_temp.choice_proc.call(self.index) end terminate_message end end return end if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true reset_window refresh Graphics.frame_reset self.visible = true self.contents_opacity = 0 if @input_number_window != nil @input_number_window.contents_opacity = 0 end @fade_in = true return end if self.visible @fade_out = true self.opacity -= 48 if self.opacity == 0 self.visible = false @fade_out = false $game_temp.message_window_showing = false end return end end end
class Interpreter alias message_waiting_update update def update if $game_temp.time_showing != 0 and $game_temp.choice_cancel_type == 0 and $game_temp.num_input_variable_id == 0 and not TIME_MESSAGE_STOP @message_waiting = false end message_waiting_update end end - Citation :
- - Mode d'emploi -
Note: un résumé du mode d'emploi se trouve au début du script. Tout d'abord, copier-coller ce script au dessus de Main, et nommez-le comme bon vous semble. Ensuite, créé un message via la commande "Afficher un message", et dans ce message, incluez ceci: \t[nb_de_frames] en remplaçant nb_de_frames par le nombre de frames durant lesquelles le messages doit rester affichés. Par exemple: "\t[40]Votre message" affichera "Votre message" durant 40 frames (soit 2 secondes environs). Attention! Lorsque vous faites un message temporaire, votre héros ne peut pas bouger (comme avec les messages normaux), mais l'événement, lui, continue son cours! (comme il le ferait avec une commande "Afficher une animation", par exemple) Mais vous pouvez changer cela au début du script, à la ligne 21. Remplacez false par true.
Vous l'aurez remarqué, aucune commande "Insérer un script" n'est nécessaire. |
|
Invité Invité
| Sujet: Re: [XP] Message qui disparait au bout de X frames Dim 20 Jan 2013 - 17:33 | |
| Elek qui poste des scripts. xD Merci du partage. =) |
|
Elekami Fondateur
Messages postés : 19071 Date d'inscription : 19/07/2008 Jauge LPC :
| Sujet: Re: [XP] Message qui disparait au bout de X frames Dim 20 Jan 2013 - 17:40 | |
| Je m'ajoute 3 points quand même. |
|
Jin Ancien staffeux
Messages postés : 8557 Date d'inscription : 08/12/2010 Jauge LPC :
| Sujet: Re: [XP] Message qui disparait au bout de X frames Dim 20 Jan 2013 - 23:11 | |
| je l'ai et il marche bof bof... il est pas compatible avec tout les script custom message |
|
Ti-Max Membre V.I.P.
Messages postés : 2260 Date d'inscription : 11/07/2012 Jauge LPC :
| Sujet: Re: [XP] Message qui disparait au bout de X frames Lun 21 Jan 2013 - 0:24 | |
| Comme celui de 'Universal Message System' je suppose. xD |
|
Elekami Fondateur
Messages postés : 19071 Date d'inscription : 19/07/2008 Jauge LPC :
| Sujet: Re: [XP] Message qui disparait au bout de X frames Lun 21 Jan 2013 - 0:28 | |
| Ouais c'est ça le problème. :'( |
|
Mimiko Ninja (niveau 5)
Messages postés : 229 Date d'inscription : 31/08/2011 Jauge LPC :
| Sujet: Re: [XP] Message qui disparait au bout de X frames Ven 25 Jan 2013 - 0:42 | |
| merci pour le partage ele ^^
|
|
Contenu sponsorisé
| Sujet: Re: [XP] Message qui disparait au bout de X frames | |
| |
|