Pokémon Script Project Index du Forum

S’enregistrer | Rechercher | Connexion
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

Améliorations de la commande "Afficher un message

 
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts
Sujet précédent :: Sujet suivant   
Auteur Message
Giratinaprimal
Membre


Inscrit le: 08 Oct 2010
Messages: 69
Renégat
Localisation: ???
Masculin

MessagePosté le: Sam 24 Jan - 21:48 (2015)    Sujet du message: Améliorations de la commande "Afficher un message

Hello !

Après une très longue absence (3 ans), je me suis un peu remis à mon projet. J'ai essayé d'améliorer la fonction "Afficher un message" afin qu'elle gère les pauses en plein milieu de texte ou les fins automatiques. "Et pourquoi ne pas en faire profiter les autres ?", me suis-je dit !

Important :
Ce script fonctionne sur PSP4G+. Il est possible qu'il fonctionne également avec d'autres versions de PSP mais c'est à vérifier. Il ne fonctionnera pas avec des projets RPG Maker XP ordinaires.

Installation :
Créez un script au-dessus de Main, renommez-le comme vous le voulez et collez le script suivant :

Code:
#=======================================================================
# ■ Fonctions supplémentaires de la commande "Afficher un message"
#    GiraPrimal - MàJ le 25/01/2015 - v1.1
#
# Basé sur le script Window_Message (redéfinition pour PSP) de Krosk
# Compatible aevc PSP4G+, à vérifier pour d'autres versions.
# Crédits non nécessaires mais appréciés.
# Toutes améliorations bienvenues.
#=======================================================================
# ■ DESCRIPTION
# Comme vous le savez peut-être, on peut modifier la couleur d'un
# message ou mettre le nom d'un personnage directement dedans. Ce
# script offre des fonctions supplémentaires afin d'avoir un rendu
# similaire à ce qu'on a dans RPG Maker VX.
#-----------------------------------------------------------------------
# ■ COMMENT L'UTILISER ?
# Dans un événement, créez un message et écrivez les commandes suivantes
# pour effectuer différentes actions :
# \N[X]     Affiche le nom du héros n°X
# \C[X]     À partir de cet endroit, le texte prend la couleur n°X
#           (voir le script Window_Base pour les couleurs)
# \G        Affiche une fenêtre avec l'argent possédé par le joueur
#           (cette fenêtre disparaît une fois le message terminé)
# \\        Affiche le caractère '\'
# \.        Marque une pause d'1/4 de seconde à cet endroit
# \|        Marque une pause d'une seconde à cet endroit
# \!        Marque une pause à cet endroit. Le message continuera
#           dès que le joueur appuie sur C, ENTRÉE, X ou ÉCHAP
# \^        Termine le message sans que le joueur n'appuie sur un bouton
#           (placez cette commande de préférence à la fin du message)
#-----------------------------------------------------------------------
# ■ NOTES
# - (Important)   Ce script peut ne pas fonctionner sur des projets RPG
#                 Maker XP ordinaires. Il est conçu à la base
#                 pour PSP 4G+.
#=======================================================================

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
    text_count = 0
    x = y = 0
    push = false
    @cursor_width = 0
    wait = 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] }
        text.gsub!(/\\[Pp]\[([0-9]+)\]/) { $string[$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!(/\\\./)               { "\003" }
      text.gsub!(/\\\|/)               { "\004" }
      text.gsub!(/\\!/)                { "\005" }
      text.gsub!(/\\\^/)               { "\006" }
     
      while ((c = text.slice!(/./m)) != nil)
        # \\
        if c == "\000"
          c = "\\"
        end
       
        # \C[n]
        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
       
        # \G
        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 = 255
            @gold_window.back_opacity = 255
          end
          next
        end
       
        # \.
        if c == "\003"
          wait = 10
          until wait == 0
            wait -= 1
            Graphics.update
            $scene.update
          end
        end
       
        # \|
        if c == "\004"
          wait = 40
          until wait == 0
            wait -= 1
            Graphics.update
            $scene.update
          end
        end
       
        # \!
        if c == "\005"
          until Input.trigger?(Input::C) or Input.trigger?(Input::B)
            Graphics.update
            $scene.update
            Input.update
          end
        end
       
        # \^
        if c == "\006"
          terminate_message
        end
       
        # \n
        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, 24 * y, 40, 32, c)
        text_count += 1
        Input.update
        if Input.trigger?(Input::C)
          push = true
        end
        if text_count == @speed_defilement and @speed_defilement != 0 and push == false
          Graphics.update
          #$game_map.update
          $scene.update#spriteset.update
          text_count = 0
        end
        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
      @input_number_window = Window_InputNumber.new($game_temp.num_input_digits_max)
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end 
end



Utilisation :
Si vous utilisez la commande d'évent "Afficher un message" pour afficher du texte, tapez les commandes suivantes :
\N[X] Affiche le nom du héros n°X
\C[X] À partir de cet endroit, le texte prend la couleur n°X (voir le script Window_Base pour les couleurs)
\G Affiche une fenêtre avec l'argent possédé par le joueur (cette fenêtre disparaît une fois le message terminé)
\\ Affiche le caractère '\'
\. Marque une pause d'1/4 de seconde à cet endroit
\| Marque une pause d'une seconde à cet endroit
\! Marque une pause à cet endroit. Le message continuera dès que le joueur appuie sur C, ENTRÉE, X ou ÉCHAP
\^ Termine le message sans que le joueur n'appuie sur un bouton (placez cette commande de préférence à la fin du message)

Remarques :
- Si vous voulez ajouter d'autres options, n'hésitez pas à proposer.
- Il est possible que le caractère '\' apparaisse comme le symbole Yen selon la version du logiciel que vous utilisez. Cette différence n'influe pas les effets du script.
- Le caractère '\' est disponible en tapant la combinaison Alt Gr + _. (Juste au cas où ^^)


À plus Clin d'œil foireux


Dernière édition par Giratinaprimal le Dim 25 Jan - 11:29 (2015); édité 2 fois
Revenir en haut
Publicité






MessagePosté le: Sam 24 Jan - 21:48 (2015)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Sansonic
Membre


Inscrit le: 04 Mar 2009
Messages: 587
Masculin

MessagePosté le: Dim 25 Jan - 00:11 (2015)    Sujet du message: Améliorations de la commande "Afficher un message

Intéressant de permettre l'incorporation de commandes de message VX's like.
Evidemment le seul souci reste de ne pas pouvoir l'utiliser sur des projets non PSP, cela dit pour améliorer l'ensemble tu peux t'inspirer d'autres scripts ayant ce même effet sous XP.


Concernant les tilesets qui se figent, un scripteur confirmé saura expliquer la chose mieux que moi, mais je présume que ça tien au ciblage des éléments affectés par l’arrêt momentané du défilement de frames. Certainement que sous RGSS1 la gestion sur ce point diffère de celle sous RGSS2 et +, d'où la non incorporation de la commande de base. Ou ça peut être simplement un bug chez-toi comme c'est le cas pour certains avec le déclenchement en "Automatique".
Mon propos n'est pas scrupuleusement proche du vocable d'usage, mais j'espère et pense ne pas être loin de la vérité (auquel cas corrigez moi).


Sur ce merci du partage  Clin d'œil foireux .
Revenir en haut
Visiter le site web du posteur
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté le: Dim 25 Jan - 00:19 (2015)    Sujet du message: Améliorations de la commande "Afficher un message

Les animations qui se figent dans le fond vient du fait que la map n'est plus rafraichie pendant les pauses.
Code:
        if c == "\004"
          wait = 40
          until wait == 0
            wait -= 1
            Graphics.update
          end
        end

Qui doit devenir :
Code:
        if c == "\004"
          wait = 40
          until wait == 0
            wait -= 1
            Graphics.update
            $scene.update
          end
        end


Etc... pour le reste :p
Revenir en haut
Facebook Twitter
Giratinaprimal
Membre


Inscrit le: 08 Oct 2010
Messages: 69
Renégat
Localisation: ???
Masculin

MessagePosté le: Dim 25 Jan - 11:28 (2015)    Sujet du message: Améliorations de la commande "Afficher un message

Hello !

C'est corrigé et ça marche nickel ! Merci, Nuri Yuri Clin d'œil foireux
Le script a été mis à jour.
Revenir en haut
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté le: Dim 25 Jan - 12:34 (2015)    Sujet du message: Améliorations de la commande "Afficher un message

De rien :p
Je me servirais des commandes que t'as ajouté dans PSDK si j'y pense Gros matou qui ronronne
Revenir en haut
Facebook Twitter
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 18:19 (2017)    Sujet du message: Améliorations de la commande "Afficher un message

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)
Traduction par : phpBB-fr.com