RitoJS Ancien staffeux
Messages postés : 1925 Date d'inscription : 22/02/2012 Jauge LPC :
| Sujet: [VX Ace] Lune message system Mer 26 Sep 2012 - 14:19 | |
| 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: Il faut faire comme cela: Vous pouvez aussi utiliser une image qui peut vous servir de flèche( à placer dans le dossier Graphics/System de votre projet) comme ceci: 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à. Points ajoutés ! |
|
shin Chevalier Dragon (niveau 1)
Messages postés : 726 Date d'inscription : 18/10/2011 Jauge LPC :
| Sujet: Re: [VX Ace] Lune message system Mer 26 Sep 2012 - 18:14 | |
| bien pratique et plutôt classe merci |
|
Number6406 Paladin (niveau 2)
Messages postés : 578 Date d'inscription : 23/07/2012 Jauge LPC :
| Sujet: Re: [VX Ace] Lune message system Mer 26 Sep 2012 - 20:45 | |
| Merci pour ce beau script |
|
Invité Invité
| Sujet: Re: [VX Ace] Lune message system Ven 11 Oct 2013 - 8:01 | |
| Bonjour, j'ai un petit soucis avec le script. Quand je veux parler à un PNJ avec se script d'installé voilas se que le programme me met. Petite question au passage, comme le topic n'est plus tout jeune dois-je normalement refaire un sujet ou encore poser ma question autre part. Merci d'avance |
|
Ti-Max Membre V.I.P.
Messages postés : 2260 Date d'inscription : 11/07/2012 Jauge LPC :
| Sujet: Re: [VX Ace] Lune message system Ven 11 Oct 2013 - 11:39 | |
| As-tu essayer d'afficher un texte à ce moment là ? Si oui, pourrais-tu le poster ? |
|
Invité Invité
| Sujet: Re: [VX Ace] Lune message system Ven 11 Oct 2013 - 16:25 | |
| Et bien je suis confus. J'ai voulu refaire la même chose et cela a fonctionné.... Je fonctionne sur 2 ordinateurs et tantôt j'ai rajouté le script sur un projet contenant plusieurs Script. Peut être qu'il n'est pas compatible avec d'autre. Désolé du dérangement. Si je trouve une incompatibilité avec un autre script je le ferai savoir. Si quelqu'un connais un autre script qui permet d'afficher le nom des pnj comme celui là et qui est compatible avec le Lunar je suis preneur |
|
Clémengrenage Chevalier (niveau 4)
Messages postés : 122 Date d'inscription : 06/08/2013 Jauge LPC :
| Sujet: Re: [VX Ace] Lune message system Ven 11 Oct 2013 - 18:18 | |
| massymiguel : Désolé, je n'en connais aucun.
Le script à l'air génial ! Merci ! |
|
City Hunter Administrateur
Messages postés : 6524 Date d'inscription : 25/05/2011 Jauge LPC :
| Sujet: Re: [VX Ace] Lune message system Ven 11 Oct 2013 - 21:11 | |
| As tu regardé dans notre banque de script ? Peut être en avons nous un =o |
|
Ti-Max Membre V.I.P.
Messages postés : 2260 Date d'inscription : 11/07/2012 Jauge LPC :
| Sujet: Re: [VX Ace] Lune message system Ven 11 Oct 2013 - 21:41 | |
| Il y en a d'autre oui, mais compatible avec Lunar, je ne sais pas par contre. |
|
Heaven Chevalier Dragon (niveau 1)
Messages postés : 755 Date d'inscription : 01/04/2013 Jauge LPC :
| Sujet: Re: [VX Ace] Lune message system Sam 12 Oct 2013 - 0:28 | |
| Qui affiche le nom des personnages en dessous des boites de dialogues ou au dessus d'un PNJ ou autre ? Si c'est au dessus d'un PNJ ou autre, tu as le script "PNJ Name" qui est extra =D Au contraire, si c'est pour afficher le nom en dessous d'un dialogue, tu as celui de Yanfly (il me semble)
Heav'n |
|
Invité Invité
| Sujet: Re: [VX Ace] Lune message system Sam 12 Oct 2013 - 22:32 | |
| Heaven: C'est pour afficher au-dessus des boites de dialogues et justement j'utilisais le script de Yanfly.
Snif je vais devoir choisir entre les deux. |
|
Contenu sponsorisé
| Sujet: Re: [VX Ace] Lune message system | |
| |
|