Kingdom Ultimate Index du Forum


 
 Portail du forumPortail FAQFAQ  Radio KURadio KU  RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

La charte du forumCharte du forum   Votez du forumVoter pour le forum

[RMXP] Message qui disparait au bout de X secondes.

 
Poster un nouveau sujet   Répondre au sujet    Kingdom Ultimate Index du Forum -> RPG Maker -> Registre des scripts -> Scripts pour les messages
Sujet précédent :: Sujet suivant  
Auteur Message
Arktall

Administrateur


Hors ligne

Inscrit le: 12 Mar 2007
Messages: 1 328
Date de naissance: 15/06/1991
Projet RPG Maker: Eternal Adventure
Point(s): 1 371
Moyenne de points: 1,03

MessagePosté le: 28/03/2009 17:30:56    Sujet du message: [RMXP] Message qui disparait au bout de X secondes. Répondre en citant

Bonjour/Bonsoir
Auteur : Sihn/Chaotique Blue

Message qui dure X frames avant de disparaitre


- Description -
Vous en rêviez? Chaotique Blue l'a fait. Finis les prises de tête lors de vos cinématiques!
Le message qui disparait automatiquement et reste synchro avec les actions de vos événements est enfin arrivé!

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


- 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.

voilà, j'espère que ce script vous sera utile! N'hésitez pas à m'avertir en cas de bug!
_________________
DarkSquall = Deimos = Arktall


Revenir en haut
Visiter le site web du posteur MSN
Publicité








MessagePosté le: 28/03/2009 17:30:56    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
sephiroth123

Modérateur


Hors ligne

Inscrit le: 03 Oct 2007
Messages: 91
Localisation: dans le trou du cul du monde
Date de naissance: 15/01/1994
Projet RPG Maker: Reminiscence du temps et Raising of mana
Point(s): 92
Moyenne de points: 1,01

MessagePosté le: 28/03/2009 17:58:54    Sujet du message: [RMXP] Message qui disparait au bout de X secondes. Répondre en citant

Merci Arkanall pour ce script, en effet ce script et tres bien pour les cinematiques
encore merci pour le partage ^^
_________________
FAN DE ROCK !!!!! (comme maxoubarou ^^)

Ibanez GRX 70 DXJ (pas comme maxoubarou ^^)


Revenir en haut
Contenu Sponsorisé








MessagePosté le: 20/10/2017 03:15:03    Sujet du message: [RMXP] Message qui disparait au bout de X secondes.

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Kingdom Ultimate Index du Forum -> RPG Maker -> Registre des scripts -> Scripts pour les messages Toutes les heures sont au format GMT
Page 1 sur 1

Sauter vers:  



 Partenaires 
Votez pour le forum! Xooit.com :: Top Forums Musiques Ost/midi, wallpapers, screenshots, vid os, emulation, gifs, fanarts, astuces, solutions tous les secrets de Final Fantasy d voiler ! La page Facebook du forum oniromancie, tout l'univers de rpg maker en français! Forum RPG Maker XP Forum RPG Maker XP

Devenir Partenaire ?

Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation

© KingdomUltimate.xooit.com 2008-2010
Toute reproduction totale ou partielle est interdite sans l'autorisation d'un membre de l'équipe.