AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le deal à ne pas rater :
Smartphone Xiaomi 14 – 512 Go- 6,36″ 5G Double SIM à 599€
599 €
Voir le deal

Partagez
 

 [VX Ace] Lune message system.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
RitoJS
Modérateur
Modérateur
RitoJS


Masculin Age : 30
Inscrit le : 22/12/2011
Messages : 1600

[VX Ace] Lune message system. Empty
MessageSujet: [VX Ace] Lune message system.   [VX Ace] Lune message system. Icon_minitimeMer 26 Sep 2012 - 12:28

Lune Message System


Crédit: Raizen

Ce script permet d'avoir une boite de dialogue "plus légère" et plus pratique:
-La boite de dialogue s'adapte en fonction de la longueur et la largeur de votre message.
-Possibilité d'avoir votre windowskin comme cadre pour les faceset.
-On peut switché entre les dialogues customisé et ceux de base.
-Afficher une flèche pour savoir qui parle (héros ou pnj).

Screenshots:
Spoiler:

Instructions:
Tout d'abord, placez le script le script au-dessus de main.
Pour appeler la nouvelle boite de dialogue, il faut insérer cette ligne de code avant le message:
Code:
Lune_Message.config(p, id)
"p" est le type de dialogue qui se défini par 3 chiffre:
0= En-dessous du personnage.
1= Au-dessus du personnage.
2= La boite de dialogue de base. (qui désactive aussi le script.)

"id" est l'ID de l'event.
0 est l'ID du héros.
Exemple:
Pour avoir ce dialogue:
[VX Ace] Lune message system. Dialogue2_imagesia-com_2cl6
Il faut faire comme cela:
[VX Ace] Lune message system. Exemple1_imagesia-com_2clo


Vous pouvez aussi utiliser une image qui peut vous servir de flèche( à placer dans le dossier Graphics/System de votre projet) comme ceci:[VX Ace] Lune message system. Arrow

Si vous ne voulez pas utiliser de flèche, allez à la ligne 57 et changer le nom de votre image par ceci:
Code:
Imagem = ""

Script:
Code:
module Lune_Message
#=======================================================
#                Lune Message System
# Author: Raizen
# Compatible with: RMVXAce
# The script allows message boxes above and below the
# character, with automatic size making a more interatvice
# message system between characters.



# Instructions

# To use the message just call the show message
# either with a face or not.

# before showing the message configure the character that
# will receive the message box.
# Also configure if it is below or above the character.

# It is also possible to toggle between the new message system
# and the old message system

# To configure the message system just do the following.

# Call Script:Lune_Message.config(p, id)

# Being p the position of the message box.
# 1 = above the character
# 0 = below the character
# 2 = old message system

# To deactivate this script just
# Call Script this way
# Call Script:Lune_Message.config(2, 0)
# Put a 1 frame wait before changing between the message systems,
# to give the system the time to reconfigure all the positions back to
# the old system, or from the old to the new system.

# ID is the event ID, being the ID 0 it is the Hero.
# The windows size is configured automatically, being that you
# will need to choose the length of the font to ajust better to the
# message box. (In pixels)

Espacamento = 11

# Size of the characters that you are using, an estimate to calculate
# the Boxes position.

Tamanho = 48

# Name of the picture file that will put a cursor above the character
# which is talking.
# In case you do not need any picture files put the constant this way.
# Imagem = ""
# The image needs to be in the file Graphics/System inside your project.
Imagem = "arrow"
# ========================================================================
# Here starts the script.
# ========================================================================

def self.config(p, id)
posicao(p)
identificacao(id)
end

def self.posicao(p = nil)
@p = p unless p == nil
return @p
end

def self.identificacao(id = nil)
@id = id unless id == nil
return @id
end
end

#==============================================================================
# ** Janela auxiliar
#==============================================================================
class Lune_Window_Message < Window_Base
include Lune_Message
  def initialize(x, y, window_width, window_height)
        super(x, y, window_width, window_height)
        self.z = 199
        self.openness = 0
        @get_sprite = true
        @sprite_arrow = Sprite.new
        @sprite_arrow.bitmap = Cache.system(Imagem)
        if Lune_Message.identificacao == 0
          @lune_x = $game_player.screen_x
          @lune_y = $game_player.screen_y
          else
          @lune_x = $game_map.events[Lune_Message.identificacao].screen_x
          @lune_y = $game_map.events[Lune_Message.identificacao].screen_y
        end
        @sprite_arrow.x = @lune_x - 8
        @sprite_arrow.y = @lune_y - Lune_Message::Tamanho
  end
  def refresh
  if @get_sprite == true
  @sprite_arrow.y += 4
  @get_sprite = false
  else
  @sprite_arrow.y -= 4
  @get_sprite = true
  end
  end
  def openlune
        self.openness += 40
        self.openness <= 254 ? (return false) : (return true)
  end
  def closelune
        @sprite_arrow.opacity = 0 unless Imagem.nil?
        self.openness -= 40
        self.openness >= 1 ? (return false) : (return true)
  end
  def dispose
  @sprite_arrow.dispose
  super
  end
end


class Game_Message
# Retorna o valor da quantidade de linhas
  def get_lune_lines
        @lune_text_size = 0
        @texts.inject("") {|r, text| @lune_text_size += 1}
        return @lune_text_size
  end
# Retorna o valor do tamanho do texto.
  def get_lune_length
        @lune_length_size = 0
        @texts.inject("") {|r, text| @lune_length_size = text.size if text.size > @lune_length_size}
        return @lune_length_size
  end
end

#==============================================================================
# ** Window_Message
#------------------------------------------------------------------------------
#  Esta janela de mensagem é usada para exibir textos.
#==============================================================================
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
class Window_Message < Window_Base
# aliasing
alias lune_message_update update 
alias lune_process_all_text process_all_text
alias lune_message_dispose dispose
  def initialize
        super(0, 0, Graphics.width, fitting_height(4))
        self.z = 200
        self.openness = 0
        create_all_windows
        create_back_bitmap
        create_back_sprite
        clear_instance_variables

  end
  def window_width
        $game_message.get_lune_length * Lune_Message::Espacamento + 15
  end
  #--------------------------------------------------------------------------
  # * Aquisição da altura da janela
  #--------------------------------------------------------------------------
  def window_height
        fitting_height($game_message.get_lune_lines)
  end
  def update(*args)
        lune_message_update(*args)
        unless Lune_Message.posicao == 2
        @lune_message.refresh if @lune_message and Graphics.frame_count % 25 == 1
        self.opacity = 0
        end
  end
  def fiber_main
        $game_message.visible = true
        update_background
        lune_update_placement if Lune_Message.posicao == 2
        loop do
          if Lune_Message.posicao == 2
          lune_process_all_text if $game_message.has_text?
          else
          process_all_text if $game_message.has_text?
          end
          process_input
          $game_message.clear
          @gold_window.close
          Fiber.yield
          break unless text_continue?
        end
        @lune_message.opacity = 0 unless @lune_message == nil and Lune_Message.posicao == 2
        close_and_wait
        $game_message.visible = false
        @fiber = nil
  end
  def lune_update_placement
        @position = $game_message.position
        self.y = @position * (Graphics.height - height) / 2
        self.x = 0
        @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
  end
  def update_placement
        @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
        unless Lune_Message.identificacao.nil?
          self.x = @lune_x - window_width / 2
          self.x -= (self.x + window_width - Graphics.width) if self.x + window_width >= Graphics.width
          self.x -= new_line_x
          self.x = [self.x,0].max     
          self.y = @lune_y
          self.y -= window_height + Lune_Message::Tamanho if Lune_Message.posicao == 1
          self.y = [self.y,0].max
          self.y -= (self.y + window_height - Graphics.height) if self.y + window_height >= Graphics.height
        end
  end
  #--------------------------------------------------------------------------
  # * Execução de todos texto
  #--------------------------------------------------------------------------
  def process_all_text
        if Lune_Message.identificacao == 0
          @lune_x = $game_player.screen_x
          @lune_y = $game_player.screen_y
          else
          @lune_x = $game_map.events[Lune_Message.identificacao].screen_x
          @lune_y = $game_map.events[Lune_Message.identificacao].screen_y
        end
        @lune_message.dispose unless @lune_message.nil?
        w = @lune_x - window_width / 2
        h = @lune_y
        $game_message.face_name.empty? ? (w = [w,0].max) : (w = [w,112].max)
        h -= window_height + Lune_Message::Tamanho if Lune_Message.posicao == 1
        h = [h,0].max
        w -= (w + window_width - Graphics.width) if w + window_width >= Graphics.width
        h -= (h + window_height - Graphics.height) if h + window_height >= Graphics.height
        @lune_message = Lune_Window_Message.new(w, h, window_width, window_height)
        @lune_face = Window_Base.new(w - 104, h + 8, 104, 104) unless $game_message.face_name.empty?
        update_placement
        text = convert_escape_characters($game_message.all_text)
        pos = {}
        new_page(text, pos)
        open_and_wait
        process_character(text.slice!(0, 1), text, pos) until text.empty?
  end
        #--------------------------------------------------------------------------
  # * Abertura da janela e espeta até abertura total
  #--------------------------------------------------------------------------
  def open_and_wait
        unless Lune_Message.posicao == 2
        @lune_message.openlune
        Fiber.yield until @lune_message.openlune
        open
  else
        open
        Fiber.yield until open?
  end
  end
        #--------------------------------------------------------------------------
  # * Fechamento da janela e espeta até fechamento total
  #--------------------------------------------------------------------------
  def close_and_wait
        close
        Fiber.yield until all_close?
        @lune_message.closelune if @lune_message
        Fiber.yield until @lune_message.closelune unless Lune_Message.posicao == 2
  end
        #--------------------------------------------------------------------------
  # * Execução de espera de entrada
  #--------------------------------------------------------------------------
  def input_pause
        self.pause = true if Lune_Message.posicao == 2
        wait(10)
        Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
        Input.update
        @lune_face.dispose unless @lune_face.nil?
        self.pause = false
  end
  def dispose
        @lune_message.dispose if @lune_message
        Lune_Message.config(2,0)
        lune_message_dispose
  end
end
Il y a des instruction plus précise que les miennes dans le script.^^

Voilà.

Sympathique ! +3 points de participation ! Bonne continuation !


Dernière édition par RitoJS le Mer 26 Sep 2012 - 15:47, édité 1 fois
Revenir en haut Aller en bas
http://lunarito.wordpress.com/
Francky
Noble Lv.8
Noble Lv.8
Francky


Masculin Age : 28
Inscrit le : 19/02/2010
Messages : 290

[VX Ace] Lune message system. Empty
MessageSujet: Re: [VX Ace] Lune message system.   [VX Ace] Lune message system. Icon_minitimeMer 26 Sep 2012 - 12:56

Super script ! Il me sera utile ! Smile
Revenir en haut Aller en bas
zouzaka
Croisé Lv.14
Croisé Lv.14
zouzaka


Masculin Age : 26
Inscrit le : 22/05/2011
Messages : 1141

[VX Ace] Lune message system. Empty
MessageSujet: Re: [VX Ace] Lune message system.   [VX Ace] Lune message system. Icon_minitimeMer 26 Sep 2012 - 13:46

merci du partage ^^
Revenir en haut Aller en bas
Francky
Noble Lv.8
Noble Lv.8
Francky


Masculin Age : 28
Inscrit le : 19/02/2010
Messages : 290

[VX Ace] Lune message system. Empty
MessageSujet: Re: [VX Ace] Lune message system.   [VX Ace] Lune message system. Icon_minitimeMer 26 Sep 2012 - 15:09

J'ai juste remarquer. Tu as mis que pour mettre une autre image, il fallait mettre son nom à la ligne 63. Or pour c'était à la ligne 57, est ce que c'est moi qui me suis trompé ou alors tu as fais une erreur de frappe Smile
Revenir en haut Aller en bas
zouzaka
Croisé Lv.14
Croisé Lv.14
zouzaka


Masculin Age : 26
Inscrit le : 22/05/2011
Messages : 1141

[VX Ace] Lune message system. Empty
MessageSujet: Re: [VX Ace] Lune message system.   [VX Ace] Lune message system. Icon_minitimeMer 26 Sep 2012 - 15:19

Exacte, c'est bien la linge 57 qu'il faut changer Wink
Revenir en haut Aller en bas
RitoJS
Modérateur
Modérateur
RitoJS


Masculin Age : 30
Inscrit le : 22/12/2011
Messages : 1600

[VX Ace] Lune message system. Empty
MessageSujet: Re: [VX Ace] Lune message system.   [VX Ace] Lune message system. Icon_minitimeMer 26 Sep 2012 - 15:46

Ah désolé. J'ai choppé le script en portugais, c'est peut-être à cause de ça.
J'édite. Smile
Revenir en haut Aller en bas
http://lunarito.wordpress.com/
Contenu sponsorisé




[VX Ace] Lune message system. Empty
MessageSujet: Re: [VX Ace] Lune message system.   [VX Ace] Lune message system. Icon_minitime

Revenir en haut Aller en bas
 

[VX Ace] Lune message system.

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» [RÉSOLU] Problème avec le script de "Custom Message System"
» Demande chara lune
» Code Scipio la quête du cristal de lune
» Trois animations ( soleil, lune, loup )
» Les Chroniques de Nouvelle-Lune !! DEMO DISPONIBLE !!

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX.Ace - RGSS3 :: Events & PNJs-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit