RPG maker VX
Últimos temas
» Script de menu
por maxi Jue 04 Dic 2014, 1:44 pm

» Ayuda intro animado!!!
por maxi Miér 03 Dic 2014, 9:41 pm

» ayuda con este engin
por maxi Miér 03 Dic 2014, 8:42 am

» Hud de Vida 100% Personalizable - Engine Sencillo! Sin Scripts :)
por davidaikago Jue 20 Nov 2014, 10:58 am

» Ultimate parallax control by:GDS [ace]
por arellano Miér 08 Oct 2014, 8:28 pm

» Script Touhou (animated) Map name (v1.4)
por davidaikago Miér 08 Oct 2014, 2:09 pm

» tutorial puerta nueva
por davidaikago Miér 08 Oct 2014, 9:08 am

» cámara de fotos
por davidaikago Miér 08 Oct 2014, 9:05 am

» Imperial Action System II Demo
por davidaikago Miér 08 Oct 2014, 8:47 am

» VE Batalla animada [ACE]
por FhierusIV Jue 18 Sep 2014, 10:57 am

» Nuevo Reglamento del Foro [Vigente desde Septiembre 2014]
por maxi Miér 17 Sep 2014, 8:37 am

» MOG|Animated Title
por Souta21 Mar 09 Sep 2014, 7:24 pm

» Tutorial Engine - Cambiar Character al Equipar Objeto
por maxi Lun 21 Jul 2014, 10:19 am

» Script de climas
por gambasoxd Sáb 19 Jul 2014, 8:58 am

» Script de contraseña(codigo) para abrir un cofre
por rpgame Jue 03 Jul 2014, 6:03 pm

¿Quién está en línea?
En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Ninguno

[ Ver toda la lista ]


La mayor cantidad de usuarios en línea fue 117 el Mar 09 Ago 2011, 3:39 pm.

Ace Message System SCRIPT

Ir abajo

Ace Message System SCRIPT

Mensaje por Bontou el Vie 07 Sep 2012, 7:11 am

Hola a todos, bien buscando cosillas encontre este script, que sirve para que en los mensajes que escribimos, con una serie de codigos, podamos poner nombres en otro color, tamaño añadir iconos y alguna cosilla mas. El script es de Yanfly ( que raro no xD) peeero con las instrucciones traducidas a español para que los manquitos como yo lo entendamos.
La configuración y forma de uso viene incluida en el script asique sin mas...
Código:
 #==============================================================================
    #
    # ▼ Yanfly Engine Ace - Ace Message System v1.04
    # -- Last Updated: 2012.01.13
    # -- Level: Normal
    # -- Requires: n/a
    #
    # -- Traducido por: Sigmund_vx
    #==============================================================================
    $imported = {} if $imported.nil?
    $imported["YEA-MessageSystem"] = true

    #==================================================================
    # ▼ Updates
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # 2012.01.13 - Bug Fixed: Negative tags didn't display other party members.
    # 2012.01.12 - Compatibility Update: Message Actor Codes
    # 2012.01.10 - Added Feature: \pic[x] text code.
    # 2012.01.04 - Bug Fixed: \ic tag was \ii. No longer the case.
    #            - Added: Scroll Text window now uses message window font.
    # 2011.12.31 - Started Script and Finished.
    #
    #==============================================================================
    # ▼ Introducción
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # Es de notarse que el RPG Maker VX Ace mejoró significativamente el sistema de
    # mensajes pero, con certeza, no le hace mal a nadie agregar más detalles al
    # mismo como ventanas de nombre, códigos de texto para agregar íconos, nombre de
    # items/armas y armaduras en los mensajes de un modo dinânimo y bello.
    # Este script también permite al usuario, ajustar el tamaño de la ventana de
    # mensaje durante el juego. agregar o modificar la fuente, y dar la
    # posibilidad de acelerar el texto.
    #
    #==============================================================================
    # ▼ Instrucciones
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # Para instalar este script abra el editor, copie el código y pegue por encima
    # del main y abajo de (scripts adicionales).
    #
    # -----------------------------------------------------------------------------
    # Message Window text Codes - Para ser colocados en la ventana de mensaje.
    # -----------------------------------------------------------------------------
    #  Default:    Efecto:
    #    \v[x]    - Escribe el valor de la variable de Id [x] ,
    #    \n[x]    - Escribe el nombre del personaje (Actor) de Id [x]
    #    \p[x]    - Escribe el nombre del miembro de ID X del grupo.
    #    \g        - Escribe el nombre de la moneda corriente.
    #    \c[x]    - Cambia el color del texto a x.
    #    \i[x]    - Dibuja el ícono de id x en la ventana de mensajes.
    #    \{        - Aumenta el tamaño del texto por 8 puntos.
    #    \}        - Disminuye el tamaño del texto por 8 puntos.
    #    \$        - Abre la ventana del dinero.
    #    \.        - Espera 15 frames (1/4 de segundo).
    #    \|        - Espera 60 frames (1 segundo).
    #    \!        - Espera hasta que alguna tecla sea presionada.
    #    \>        - El siguiente texto va a surgir instantáneamente.
    #    \<        - El siguiente texto no surge más instantáneamente.
    #    \^        - Omite el siguiente mensaje.
    #    \\        - Escribe "" en la ventana.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  Wait:      Efecto:
    #    \w[x]    - Espera x frames (60 frames = 1 segundo).
    #                Sólo en la ventana de mensajes.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  NameWindow: Efecto:
    #    \n<x>    - Crea una ventana de nombre, donde x es el texto exhibido.
    #                Lado izquierdo. *Nota
    #    \nc<x>    - Crea una ventana de nombre, donde x es el texto exhibido.
    #                Centrado. *Nota
    #    \nr<x>    - Crea una ventana de nombre, donde x es el texto exhibido.
    #                Lado Derecho. *Nota
    #
    #              *Nota: Funciona sólo en las ventanas de mensaje.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  Position:  Efecto:
    #    \px[x]    - Cambiar la coordenada X del texto a el valor de x.
    #    \py[x]    - Cambiar la coordenada Y del texto a el valor de y.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  Picture:    Efecto:
    #    \pic[x]  - Dibuja la imagen x de la carpeta Graphics\Pictures.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  Outline:    Efecto:
    #    \oc[x]    - Cambiar el color de los bordes a x.
    #    \oo[x]    - Cambiar la opacidad de los bordes a x.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  Font:      Efecto:
    #    \fr      - Reseta todos los cambios de fuente.
    #    \fz[x]    - Cambia el tamaño de la fuente a el valor x.
    #    \fn[x]    - Cambia el nombre de la fuente a x
    #                (X = nombre de la fuente referente la sustitución.).
    #    \fb      - Cambia la letra a negrita
    #    \fi      - Cambia la letra a Itálico
    #    \fo      - Cambia el contorno o borde de la fuente
    #    \fs      - Le agrega sombra a la fuente
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  Actor:      Efecto:
    #    \af[x]    - Muestra el rostro del actor de Id x. *Nota
    #    \ac[x]    - Muestra el nombre de la clase del Actor de id x. *Nota
    #    \as[x]    - Muestra el nombre de la subclasse del Actor de id X.
    #                Requiere: Class System. *Nota
    #    \an[x]    - Muestra el apelido (nickname) del actor de id X. *Nota
    #
    #              *Nota: Si x es 0 o negativo, Mostrará el rostro referente a:.
    #                  0 - Líder
    #                  -1 - 1º Miembro no líder.
    #                  -2 - 2º Miembro no líder.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  Names:      Efecto:
    #    \nc[x]    - Muestra el nombre de la clase de Id x.
    #    \ni[x]    - Muestra el nombre del Item de id x.
    #    \nw[x]    - Muestra el nombre de la Arma de Id .
    #    \na[x]    - Muestra el nombre de la Armadura de Id x
    #    \ns[x]    - Muestra el nombre de la Habilidad de Id x.
    #    \nt[x]    - Muestra el nombre del Estado de Id x.
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  Icon Names: Efecto:
    #    \ic[x]    - Muestra el nombre de la Clase de Id x incluyendo Ícono.*
    #    \ii[x]    - Muestra el nombre del item de Id x incluyendo Ícone.
    #    \iw[x]    - Muestra el nombre de la arma de Id x incluyendo Ícone.
    #    \ia[x]    - Muestra el nombre armadura de Id x incluyendo Ícone.
    #    \is[x]    - Muestra el nombre de la Habilidad de Id x incluyendo Ícone.
    #    \it[x]    - Muestra el nombre del Estado de Id x incluyendo Ícone.
    #
    #              *Nota: Requiere YEA - Class System
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    # Y estos son los códigos de texto agregados con el uso del script.
    # Recuerde que algunos de estos códigos sólo funcionarán en las Ventana de Mensajes
    # De cualquier forma, estos son muy útiles para textos de "Ayuda" para
    # Descripciones, Biografía de los personajes y Etc.
    #
    #==============================================================================
    # ▼ Compatibilidad
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # Este script es sólo para RPG Maker VX Ace . No es compatíble con cualquier otra
    # Engine sin ajustes.
    #
    #==============================================================================

    module YEA
      module MESSAGE
   
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Configuraciones Generales de la Ventana de Mensaje
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # A continuación puedes modificar las configuraçiones básicas, logrando
        # personalizar algunas funciones a su gusto. Ajustelos como desee.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # Este botón se presiona para mover el texto hacia adelante.
        # Debe ser presionado para que ocurra el efecto. Cuando se pulsa, acelera
        # los mensajes, pero si hay algun código que haga una pausa seguirá esperando.
        # Cuando se pulsa de nuevo, pasará automáticamente a la siguiente página.
        TEXT_SKIP = :A    # Input::A Botón Shift del Teclado.
   
        # Esta variable ajusta el número de líneas visibles en la ventana de mensajes.
        # Si no deseas utilizar este recurso, cambie el valor de la constante a 0.
        # Si el valor de la línea es 0 o menor, el valor será automáticamente cambiado
        # a el standar de 4 líneas.
        VARIABLE_ROWS  = 21
   
        # Esta variable ajusta la anchura de la caja de mensajes mostrada.
        # Si no deseas utilizar este recurso cambie la constante a 0.
        # Si el valor de la anchura es 0 o menor, se ajustará la anchura estandar de
        # la ventana.
        VARIABLE_WIDTH = 22
   
        # Esta es la cantidad de espacio que la ventana de mensaje utilizara cada
        # vez que el rostro de un personaje se utiliza. Estandar: 112
        FACE_INDENT_X = 112
   
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Configuración de la Ventana de Nombre -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # La Ventana de nombre es la pequeña caja que aparece por encima de la
        # ventana estandar.
        # Es utilizada para mostrar cualquier texto por encima de la ventana de
        # mensajes. como el propio titulo lo dice, un nombre.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        NAME_WINDOW_X_BUFFER = -20  # Buffer x | Posición X de la ventana de nombre.
        NAME_WINDOW_Y_BUFFER = 0    # Buffer y | Posición Y de la ventana de nombre.
        NAME_WINDOW_PADDING  = 20    # Espacio añadido a la posición horizontal.
        NAME_WINDOW_OPACITY  = 255  # Opacidad de la ventana de nombre.
        NAME_WINDOW_COLOUR  = 6    # Color del texto usado para nombres.
   
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Configuración de las Fuentes -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # El Sistema de mensaje de Ace separa las fuentes de manera diferenciada
        # para el uso in-game. Ajusta las configuraciones, y defina sus fuentes de
        # juego.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # Estas constantes definen que fuente es usada. Si la primera fuente no
        # existe en el ordenador del jugador, automáticamente la próxima fuente
        # será utilizada en lugar de la anterior.
        MESSAGE_WINDOW_FONT_NAME = ["Comic Sans MS", "Arial", "Courier New"]
   
        # Aquí se ajusta la configuración de la manera con la que las fuentes se
        # mostraran. Incluyendo el tamaño de letra por defecto, si el texto está
        # en negrita por defecto, itálico, tienen bordes o sombreado por defecto,etc.
        MESSAGE_WINDOW_FONT_SIZE    = 24      # Tamaño de la fuente.
        MESSAGE_WINDOW_FONT_BOLD    = false    # Negrita por defecto?
        MESSAGE_WINDOW_FONT_ITALIC  = false    # Italico por defecto?
        MESSAGE_WINDOW_FONT_OUTLINE = true    # Borde por defecto?
        MESSAGE_WINDOW_FONT_SHADOW  = false    # Sombreado por defecto?
   
      end # MESSAGE
    end # YEA

    #==============================================================================
    # Editar cualquier cosa a partir desde este punto puede causar, daño al
    # computador, desesperacion del usuario, coma, muerte, mal aliento.
    # A continuación, edite bajo su propio riesgo.
    #==============================================================================

    #==============================================================================
    # ■ Variable
    #==============================================================================

    module Variable
 
      #--------------------------------------------------------------------------
      # self.message_rows
      #--------------------------------------------------------------------------
      def self.message_rows
        return 4 if YEA::MESSAGE::VARIABLE_ROWS <= 0
        return 4 if $game_variables[YEA::MESSAGE::VARIABLE_ROWS] <= 0
        return $game_variables[YEA::MESSAGE::VARIABLE_ROWS]
      end
 
      #--------------------------------------------------------------------------
      # self.message_width
      #--------------------------------------------------------------------------
      def self.message_width
        return Graphics.width if YEA::MESSAGE::VARIABLE_WIDTH <= 0
        return Graphics.width if $game_variables[YEA::MESSAGE::VARIABLE_WIDTH] <= 0
        return $game_variables[YEA::MESSAGE::VARIABLE_WIDTH]
      end
 
    end # Variable

    #==============================================================================
    # ■ Game_Interpreter
    #==============================================================================

    class Game_Interpreter
 
      #--------------------------------------------------------------------------
      # overwrite method: command_101
      #--------------------------------------------------------------------------
      def command_101
        wait_for_message
        $game_message.face_name = @params[0]
        $game_message.face_index = @params[1]
        $game_message.background = @params[2]
        $game_message.position = @params[3]
        while continue_message_string?
          @index += 1
          if @list[@index].code == 401
            $game_message.add(@list[@index].parameters[0])
          end
          break if $game_message.texts.size >= Variable.message_rows
        end
        case next_event_code
        when 102
          @index += 1
          setup_choices(@list[@index].parameters)
        when 103
          @index += 1
          setup_num_input(@list[@index].parameters)
        when 104
          @index += 1
          setup_item_choice(@list[@index].parameters)
        end
        wait_for_message
      end
 
      #--------------------------------------------------------------------------
      # new method: continue_message_string?
      #--------------------------------------------------------------------------
      def continue_message_string?
        return true if next_event_code == 101 && Variable.message_rows > 4
        return next_event_code == 401
      end
 
    end # Game_Interpreter

    #==============================================================================
    # ■ Window_Base
    #==============================================================================

    class Window_Base < Window
 
      #--------------------------------------------------------------------------
      # new method: setup_message_font
      #--------------------------------------------------------------------------
      def setup_message_font
        @message_font = true
        change_color(normal_color)
        contents.font.out_color = Font.default_out_color
        contents.font.name = YEA::MESSAGE::MESSAGE_WINDOW_FONT_NAME
        contents.font.size = YEA::MESSAGE::MESSAGE_WINDOW_FONT_SIZE
        contents.font.bold = YEA::MESSAGE::MESSAGE_WINDOW_FONT_BOLD
        contents.font.italic = YEA::MESSAGE::MESSAGE_WINDOW_FONT_ITALIC
        contents.font.outline = YEA::MESSAGE::MESSAGE_WINDOW_FONT_OUTLINE
        contents.font.shadow = YEA::MESSAGE::MESSAGE_WINDOW_FONT_SHADOW
      end
 
      #--------------------------------------------------------------------------
      # alias method: reset_font_settings
      #--------------------------------------------------------------------------
      alias window_base_reset_font_settings_ams reset_font_settings
      def reset_font_settings
        if @message_font
          setup_message_font
        else
          window_base_reset_font_settings_ams
          contents.font.out_color = Font.default_out_color
          contents.font.outline = Font.default_outline
          contents.font.shadow = Font.default_shadow
        end
      end
 
      #--------------------------------------------------------------------------
      # alias method: convert_escape_characters
      #--------------------------------------------------------------------------
      alias window_base_convert_escape_characters_ams convert_escape_characters
      def convert_escape_characters(text)
        result = window_base_convert_escape_characters_ams(text)
        result = convert_ace_message_system_new_escape_characters(result)
        return result
      end
 
      #--------------------------------------------------------------------------
      # new method: convert_ace_message_system_new_escape_characters
      #--------------------------------------------------------------------------
      def convert_ace_message_system_new_escape_characters(result)
        #---
        result.gsub!(/\eFR/i) { "\eAMSF[0]" }
        result.gsub!(/\eFB/i) { "\eAMSF[1]" }
        result.gsub!(/\eFI/i) { "\eAMSF[2]" }
        result.gsub!(/\eFO/i) { "\eAMSF[3]" }
        result.gsub!(/\eFS/i) { "\eAMSF[4]" }
        #---
        result.gsub!(/\eAC\[([-+]?\d+)\]/i) { escape_actor_class_name($1.to_i) }
        result.gsub!(/\eAS\[([-+]?\d+)\]/i) { escape_actor_subclass_name($1.to_i) }
        result.gsub!(/\eAN\[([-+]?\d+)\]/i) { escape_actor_nickname($1.to_i) }
        #---
        result.gsub!(/\eNC\[(\d+)\]/i) { $data_classes[$1.to_i].name }
        result.gsub!(/\eNI\[(\d+)\]/i) { $data_items[$1.to_i].name }
        result.gsub!(/\eNW\[(\d+)\]/i) { $data_weapons[$1.to_i].name }
        result.gsub!(/\eNA\[(\d+)\]/i) { $data_armors[$1.to_i].name }
        result.gsub!(/\eNS\[(\d+)\]/i) { $data_skills[$1.to_i].name }
        result.gsub!(/\eNT\[(\d+)\]/i) { $data_states[$1.to_i].name }
        #---
        result.gsub!(/\eIC\[(\d+)\]/i) { escape_icon_item($1.to_i, :class) }
        result.gsub!(/\eII\[(\d+)\]/i) { escape_icon_item($1.to_i, :item) }
        result.gsub!(/\eIW\[(\d+)\]/i) { escape_icon_item($1.to_i, :weapon) }
        result.gsub!(/\eIA\[(\d+)\]/i) { escape_icon_item($1.to_i, :armour) }
        result.gsub!(/\eIS\[(\d+)\]/i) { escape_icon_item($1.to_i, :skill) }
        result.gsub!(/\eIT\[(\d+)\]/i) { escape_icon_item($1.to_i, :state) }
        #---
        return result
      end
 
      #--------------------------------------------------------------------------
      # new method: escape_actor_class_name
      #--------------------------------------------------------------------------
      def escape_actor_class_name(actor_id)
        actor_id = $game_party.members[actor_id.abs].id if actor_id <= 0
        actor = $game_actors[actor_id]
        return "" if actor.nil?
        return actor.class.name
      end
 
      #--------------------------------------------------------------------------
      # new method: actor_subclass_name
      #--------------------------------------------------------------------------
      def escape_actor_subclass_name(actor_id)
        return "" unless $imported["YEA-ClassSystem"]
        actor_id = $game_party.members[actor_id.abs].id if actor_id <= 0
        actor = $game_actors[actor_id]
        return "" if actor.nil?
        return "" if actor.subclass.nil?
        return actor.subclass.name
      end
 
      #--------------------------------------------------------------------------
      # new method: escape_actor_nickname
      #--------------------------------------------------------------------------
      def escape_actor_nickname(actor_id)
        actor_id = $game_party.members[actor_id.abs].id if actor_id <= 0
        actor = $game_actors[actor_id]
        return "" if actor.nil?
        return actor.nickname
      end
 
      #--------------------------------------------------------------------------
      # new method: escape_icon_item
      #--------------------------------------------------------------------------
      def escape_icon_item(data_id, type)
        case type
        when :class
          return "" unless $imported["YEA-ClassSystem"]
          icon = $data_classes[data_id].icon_index
          name = $data_items[data_id].name
        when :item
          icon = $data_items[data_id].icon_index
          name = $data_items[data_id].name
        when :weapon
          icon = $data_weapons[data_id].icon_index
          name = $data_weapons[data_id].name
        when :armour
          icon = $data_armors[data_id].icon_index
          name = $data_armors[data_id].name
        when :skill
          icon = $data_skills[data_id].icon_index
          name = $data_skills[data_id].name
        when :state
          icon = $data_states[data_id].icon_index
          name = $data_states[data_id].name
        else; return ""
        end
        text = "\eI[#{icon}]" + name
        return text
      end
 
      #--------------------------------------------------------------------------
      # alias method: process_escape_character
      #--------------------------------------------------------------------------
      alias window_base_process_escape_character_ams process_escape_character
      def process_escape_character(code, text, pos)
        case code.upcase
        #---
        when 'FZ'
          contents.font.size = obtain_escape_param(text)
        when 'FN'
          text.sub!(/\[(.*?)\]/, "")
          font_name = $1.to_s
          font_name = Font.default_name if font_name.nil?
          contents.font.name = font_name.to_s
        #---
        when 'OC'
          colour = text_color(obtain_escape_param(text))
          contents.font.out_color = colour
        when 'OO'
          contents.font.out_color.alpha = obtain_escape_param(text)
        #---
        when 'AMSF'
          case obtain_escape_param(text)
          when 0; reset_font_settings
          when 1; contents.font.bold = !contents.font.bold
          when 2; contents.font.italic = !contents.font.italic
          when 3; contents.font.outline = !contents.font.outline
          when 4; contents.font.shadow = !contents.font.shadow
          end
        #---
        when 'PX'
          pos[:x] = obtain_escape_param(text)
        when 'PY'
          pos[:y] = obtain_escape_param(text)
        #---
        when 'PIC'
          text.sub!(/\[(.*?)\]/, "")
          bmp = Cache.picture($1.to_s)
          rect = Rect.new(0, 0, bmp.width, bmp.height)
          contents.blt(pos[:x], pos[:y], bmp, rect)
        #---
        else
          window_base_process_escape_character_ams(code, text, pos)
        end
      end
 
    end # Window_Base

    #==============================================================================
    # ■ Window_ChoiceList
    #==============================================================================

    class Window_ChoiceList < Window_Command
 
      #--------------------------------------------------------------------------
      # alias method: initialize
      #--------------------------------------------------------------------------
      alias window_choicelist_initialize_ams initialize
      def initialize(message_window)
        window_choicelist_initialize_ams(message_window)
        setup_message_font
      end
 
    end # Window_ChoiceList

    #==============================================================================
    # ■ Window_ScrollText
    #==============================================================================

    class Window_ScrollText < Window_Base
 
      #--------------------------------------------------------------------------
      # alias method: initialize
      #--------------------------------------------------------------------------
      alias window_scrolltext_initialize_ams initialize
      def initialize
        window_scrolltext_initialize_ams
        setup_message_font
      end
 
    end # Window_ScrollText

    #==============================================================================
    # ■ Window_NameMessage
    #==============================================================================

    class Window_NameMessage < Window_Base
 
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(message_window)
        @message_window = message_window
        super(0, 0, Graphics.width, fitting_height(1))
        self.opacity = YEA::MESSAGE::NAME_WINDOW_OPACITY
        self.z = @message_window.z + 1
        self.openness = 0
        setup_message_font
        @close_counter = 0
        deactivate
      end
 
      #--------------------------------------------------------------------------
      # update
      #--------------------------------------------------------------------------
      def update
        super
        return if self.active
        return if self.openness == 0
        return if @closing
        @close_counter -= 1
        return if @close_counter > 0
        close
      end
 
      #--------------------------------------------------------------------------
      # start_close
      #--------------------------------------------------------------------------
      def start_close
        @close_counter = 4
        deactivate
      end
 
      #--------------------------------------------------------------------------
      # force_close
      #--------------------------------------------------------------------------
      def force_close
        @close_counter = 0
        deactivate
        close
      end
 
      #--------------------------------------------------------------------------
      # start
      #--------------------------------------------------------------------------
      def start(text, x_position)
        @text = text.clone
        set_width
        create_contents
        set_x_position(x_position)
        set_y_position
        refresh
        activate
        open
      end
 
      #--------------------------------------------------------------------------
      # set_width
      #--------------------------------------------------------------------------
      def set_width
        text = @text.clone
        dw = standard_padding * 2 + text_size(text).width
        dw += YEA::MESSAGE::NAME_WINDOW_PADDING * 2
        dw += calculate_size(text.slice!(0, 1), text) until text.empty?
        self.width = dw
      end
 
      #--------------------------------------------------------------------------
      # calculate_size
      #--------------------------------------------------------------------------
      def calculate_size(code, text)
        case code
        when "\e"
          return calculate_escape_code_width(obtain_escape_code(text), text)
        else
          return 0
        end
      end
 
      #--------------------------------------------------------------------------
      # calculate_escape_code_width
      #--------------------------------------------------------------------------
      def calculate_escape_code_width(code, text)
        dw = -text_size("\e").width - text_size(code).width
        case code.upcase
        when 'C', 'OC', 'OO'
          dw += -text_size("[" + obtain_escape_param(text).to_s + "]").width
          return dw
        when 'I'
          dw += -text_size("[" + obtain_escape_param(text).to_s + "]").width
          dw += 24
          return dw
        when '{'
          make_font_bigger
        when '}'
          make_font_smaller
        when 'FZ'
          contents.font.size = obtain_escape_param(text)
        when 'FN'
          text.sub!(/\[(.*?)\]/, "")
          font_name = $1.to_s
          font_name = Font.default_name if font_name.nil?
          contents.font.name = font_name.to_s
        when 'AMSF'
          case obtain_escape_param(text)
          when 0; reset_font_settings
          when 1; contents.font.bold = !contents.font.bold
          when 2; contents.font.italic = !contents.font.italic
          when 3; contents.font.outline = !contents.font.outline
          when 4; contents.font.shadow = !contents.font.shadow
          end
        else
          return dw
        end
      end
 
      #--------------------------------------------------------------------------
      # set_y_position
      #--------------------------------------------------------------------------
      def set_x_position(x_position)
        case x_position
        when 1 # Left
          self.x = @message_window.x
          self.x += YEA::MESSAGE::NAME_WINDOW_X_BUFFER
        when 2 # 3/10
          self.x = @message_window.x
          self.x += @message_window.width * 3 / 10
          self.x -= self.width / 2
        when 3 # Center
          self.x = @message_window.x
          self.x += @message_window.width / 2
          self.x -= self.width / 2
        when 4 # 7/10
          self.x = @message_window.x
          self.x += @message_window.width * 7 / 10
          self.x -= self.width / 2
        when 5 # Right
          self.x = @message_window.x + @message_window.width
          self.x -= self.width
          self.x -= YEA::MESSAGE::NAME_WINDOW_X_BUFFER
        end
        self.x = [[self.x, Graphics.width - self.width].min, 0].max
      end
 
      #--------------------------------------------------------------------------
      # set_y_position
      #--------------------------------------------------------------------------
      def set_y_position
        case $game_message.position
        when 0
          self.y = @message_window.height
          self.y -= YEA::MESSAGE::NAME_WINDOW_Y_BUFFER
        else
          self.y = @message_window.y - self.height
          self.y += YEA::MESSAGE::NAME_WINDOW_Y_BUFFER
        end
      end
 
      #--------------------------------------------------------------------------
      # refresh
      #--------------------------------------------------------------------------
      def refresh
        contents.clear
        reset_font_settings
        @text = sprintf("\eC[%d]%s", YEA::MESSAGE::NAME_WINDOW_COLOUR, @text)
        draw_text_ex(YEA::MESSAGE::NAME_WINDOW_PADDING, 0, @text)
      end
 
    end # Window_NameMessage

    #==============================================================================
    # ■ Window_Message
    #==============================================================================

    class Window_Message < Window_Base
 
      #--------------------------------------------------------------------------
      # alias method: initialize
      #--------------------------------------------------------------------------
      alias window_message_initialize_ams initialize
      def initialize
        window_message_initialize_ams
        setup_message_font
      end
 
      #--------------------------------------------------------------------------
      # overwrite method: window_width
      #--------------------------------------------------------------------------
      def window_width
        return Variable.message_width
      end
 
      #--------------------------------------------------------------------------
      # overwrite method: window_height
      #--------------------------------------------------------------------------
      def window_height
        return fitting_height(Variable.message_rows)
      end
 
      #--------------------------------------------------------------------------
      # alias method: create_all_windows
      #--------------------------------------------------------------------------
      alias window_message_create_all_windows_ams create_all_windows
      def create_all_windows
        window_message_create_all_windows_ams
        @name_window = Window_NameMessage.new(self)
      end
 
      #--------------------------------------------------------------------------
      # overwrite method: create_back_bitmap
      #--------------------------------------------------------------------------
      def create_back_bitmap
        @back_bitmap = Bitmap.new(width, height)
        rect1 = Rect.new(0, 0, Graphics.width, 12)
        rect2 = Rect.new(0, 12, Graphics.width, fitting_height(4) - 24)
        rect3 = Rect.new(0, fitting_height(4) - 12, Graphics.width, 12)
        @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
        @back_bitmap.fill_rect(rect2, back_color1)
        @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
      end
 
      #--------------------------------------------------------------------------
      # alias method: dispose_all_windows
      #--------------------------------------------------------------------------
      alias window_message_dispose_all_windows_ams dispose_all_windows
      def dispose_all_windows
        window_message_dispose_all_windows_ams
        @name_window.dispose
      end
 
      #--------------------------------------------------------------------------
      # alias method: update_all_windows
      #--------------------------------------------------------------------------
      alias window_message_update_all_windows_ams update_all_windows
      def update_all_windows
        window_message_update_all_windows_ams
        @name_window.update
        @name_window.back_opacity = self.back_opacity
        @name_window.opacity = self.opacity
      end
 
      #--------------------------------------------------------------------------
      # alias method: update_show_fast
      #--------------------------------------------------------------------------
      alias window_message_update_show_fast_ams update_show_fast
      def update_show_fast
        @show_fast = true if Input.press?(YEA::MESSAGE::TEXT_SKIP)
        window_message_update_show_fast_ams
      end
 
      #--------------------------------------------------------------------------
      # overwrite method: input_pause
      #--------------------------------------------------------------------------
      def input_pause
        self.pause = true
        wait(10)
        Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C) ||
          Input.press?(YEA::MESSAGE::TEXT_SKIP)
        Input.update
        self.pause = false
      end
 
      #--------------------------------------------------------------------------
      # overwrite method: convert_escape_characters
      #--------------------------------------------------------------------------
      def convert_escape_characters(text)
        result = super(text.to_s.clone)
        result = namebox_escape_characters(result)
        result = message_escape_characters(result)
        return result
      end
 
      #--------------------------------------------------------------------------
      # new method: namebox_escape_characters
      #--------------------------------------------------------------------------
      def namebox_escape_characters(result)
        result.gsub!(/\eN\<(.+?)\>/i)  { namewindow($1, 1) }
        result.gsub!(/\eN1\<(.+?)\>/i) { namewindow($1, 1) }
        result.gsub!(/\eN2\<(.+?)\>/i) { namewindow($1, 2) }
        result.gsub!(/\eNC\<(.+?)\>/i) { namewindow($1, 3) }
        result.gsub!(/\eN3\<(.+?)\>/i) { namewindow($1, 3) }
        result.gsub!(/\eN4\<(.+?)\>/i) { namewindow($1, 4) }
        result.gsub!(/\eN5\<(.+?)\>/i) { namewindow($1, 5) }
        result.gsub!(/\eNR\<(.+?)\>/i) { namewindow($1, 5) }
        return result
      end
 
      #--------------------------------------------------------------------------
      # new method: namebox
      #--------------------------------------------------------------------------
      def namewindow(text, position)
        @name_text = text
        @name_position = position
        return ""
      end
 
      #--------------------------------------------------------------------------
      # new method: message_escape_characters
      #--------------------------------------------------------------------------
      def message_escape_characters(result)
        result.gsub!(/\eAF\[(\d+)\]/i) { change_face($1.to_i) }
        return result
      end
 
      #--------------------------------------------------------------------------
      # new method: change_face
      #--------------------------------------------------------------------------
      def change_face(actor_id)
        actor_id = $game_party.members[actor_id.abs].id if actor_id <= 0
        actor = $game_actors[actor_id]
        return "" if actor.nil?
        $game_message.face_name = actor.face_name
        $game_message.face_index = actor.face_index
        return ""
      end
 
      #--------------------------------------------------------------------------
      # alias method: new_page
      #--------------------------------------------------------------------------
      alias window_message_new_page_ams new_page
      def new_page(text, pos)
        adjust_message_window_size
        window_message_new_page_ams(text, pos)
      end
 
      #--------------------------------------------------------------------------
      # overwrite method: new_line_x
      #--------------------------------------------------------------------------
      def new_line_x
        return $game_message.face_name.empty? ? 0 : YEA::MESSAGE::FACE_INDENT_X
      end
 
      #--------------------------------------------------------------------------
      # new method: adjust_message_window_size
      #--------------------------------------------------------------------------
      def adjust_message_window_size
        self.height = window_height
        self.width = window_width
        create_contents
        update_placement
        self.x = (Graphics.width - self.width) / 2
        start_name_window
      end
 
      #--------------------------------------------------------------------------
      # new method: clear_name_window
      #--------------------------------------------------------------------------
      def clear_name_window
        @name_text = ""
        @name_position = 0
      end
 
      #--------------------------------------------------------------------------
      # new method: start_name_window
      #--------------------------------------------------------------------------
      def start_name_window
        return if @name_text == ""
        @name_window.start(@name_text, @name_position)
      end
 
      #--------------------------------------------------------------------------
      # overwrite method: fiber_main
      #--------------------------------------------------------------------------
      def fiber_main
        $game_message.visible = true
        update_background
        update_placement
        loop do
          process_all_text if $game_message.has_text?
          process_input
          $game_message.clear
          @gold_window.close
          @name_window.start_close
          Fiber.yield
          break unless text_continue?
        end
        close_and_wait
        $game_message.visible = false
        @fiber = nil
      end
 
      #--------------------------------------------------------------------------
      # alias method: open_and_wait
      #--------------------------------------------------------------------------
      alias window_message_open_and_wait_ams open_and_wait
      def open_and_wait
        clear_name_window
        adjust_message_window_size
        window_message_open_and_wait_ams
      end
 
      #--------------------------------------------------------------------------
      # alias method: close_and_wait
      #--------------------------------------------------------------------------
      alias window_message_close_and_wait_ams close_and_wait
      def close_and_wait
        @name_window.force_close
        window_message_close_and_wait_ams
      end
 
      #--------------------------------------------------------------------------
      # alias method: all_close?
      #--------------------------------------------------------------------------
      alias window_message_all_close_ams all_close?
      def all_close?
        return window_message_all_close_ams && @name_window.close?
      end
 
      #--------------------------------------------------------------------------
      # alias method: process_escape_character
      #--------------------------------------------------------------------------
      alias window_message_process_escape_character_ams process_escape_character
      def process_escape_character(code, text, pos)
        case code.upcase
        when 'W' # Wait
          wait(obtain_escape_param(text))
        else
          window_message_process_escape_character_ams(code, text, pos)
        end
      end
 
    end # Window_Message

    #==============================================================================
    #
    # ▼ End of File
    #
    #==============================================================================

Creditos : Yanfly
Traducción: Sigmund_vx
avatar
Bontou
30
30

Masculino

Edad 30

Cantidad de envíos 30

Maker Cash 43

Reputación 2


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.