Pokémon Script Project Forum Index

Manuel | Search
 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

 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
Giratinaprimal
Membre


Joined: 08 Oct 2010
Posts: 69
Renégat
Localisation: ???
Masculin

PostPosted: Sat 24 Jan - 21:48 (2015)    Post subject: 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


Last edited by Giratinaprimal on Sun 25 Jan - 11:29 (2015); edited 2 times in total
Back to top
Publicité






PostPosted: Sat 24 Jan - 21:48 (2015)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Sansonic
Membre


Joined: 04 Mar 2009
Posts: 587
Masculin

PostPosted: Sun 25 Jan - 00:11 (2015)    Post subject: 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 .
Back to top
Visit poster’s website
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Sun 25 Jan - 00:19 (2015)    Post subject: 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
Back to top
Facebook Twitter
Giratinaprimal
Membre


Joined: 08 Oct 2010
Posts: 69
Renégat
Localisation: ???
Masculin

PostPosted: Sun 25 Jan - 11:28 (2015)    Post subject: 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.
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Sun 25 Jan - 12:34 (2015)    Post subject: 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
Back to top
Facebook Twitter
Contenu Sponsorisé






PostPosted: Today at 04:06 (2019)    Post subject: Améliorations de la commande "Afficher un message

Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a 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)