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.

Sistema de mensajes Ace

Ir abajo

Sistema de mensajes Ace

Mensaje por Muzgar el Mar 18 Dic 2012, 10:22 am

Tercer y último (por ahora... quizás xD) Script que subo de Ace, es posible que haya cometido algún error o me haya saltado algo y sobre faltas de ortografía mejor no hablamos xD en tal caso reportarmelo (las faltas de ortografía no que ya sé que hay si o si xD) No he puesto de titulo el del script original por varias razones, uno quien no lo conozca le es más fácil buscarlo en español... y alguna más que no recuerdo xD de todas formas lo detallo a continuación.

Nombre:Yanfly| Ace Message System (Sistema de mensajes para Ace xD)

Descripción: Este script mejorará nuestro sistema de mensajes tanto visualmente como a la hora de crear secuencias. Además nos ayudará a hacer más sencillo el trabajo a la hora de modificar la base de datos. Y como soy un vago pongo la descripción que viene en el script xD Ahí va
"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ámico 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: Copiar el script y ponerlo encima de Main... el resto de las instrucciones está en la demo o incluso en el propio script.

SCRIPT


Pastebin: [Tienes que estar registrado y conectado para ver este vínculo]

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
    #
    #==============================================================================

Imágenes
Spoiler:
[Tienes que estar registrado y conectado para ver esa imagen]

[Tienes que estar registrado y conectado para ver esa imagen]

[Tienes que estar registrado y conectado para ver esa imagen]

(lo de hacha de guerr" está así a propósito xD)

Demo


[Tienes que estar registrado y conectado para ver este vínculo]

Cualquier duda, preguntar.
avatar
Muzgar
500
500

Masculino

Edad 26

Cantidad de envíos 700

Maker Cash 2738

Reputación 78


Volver arriba Ir abajo

Sistema de mensajería

Mensaje por Trequiell el Dom 30 Dic 2012, 7:57 pm

Muchas gracias Muzgar. Es una auténtica pasada!!. Justo lo que buscaba, pues hace años que dejé de usar el vx y ahora es como empezar de nuevo, aunque nunca fuí un experto por falta de tiempo. Con el vx encontré uno que era la leche, y no sabía si habría algo así para Ace. Menuda sorpresa cuando lo he visto!!. Gracias. Por cierto... no he visto página mejor que ésta para rpg maker. En cuanto a estructuración, recursos, tutoriales... y lo más importante.... la generosidad de los usuarios es impresionante!. cheers
avatar
Trequiell
50
50

Masculino

Edad 41

Cantidad de envíos 102

Maker Cash 145

Reputación 15


Extras
Sobre mí::

Volver arriba Ir abajo

Re: Sistema de mensajes Ace

Mensaje por Muzgar el Lun 31 Dic 2012, 11:30 am

Me alegro de que te sirviese ^^ para cualquier duda sobre su utilización aquí estoy xD aunque creo que lo he dejado bien claro en la demo xD

Para más scripts de Ace:

[Tienes que estar registrado y conectado para ver este vínculo]
(Este post no existiría si no fuese por el enlace que acabo de pasar, cree el post para ayudar ^^)

Me alegro que la página sea de tu agrado, la verdad es que en esta página todos intentamos ayudar a todos ^^

Un saludo
avatar
Muzgar
500
500

Masculino

Edad 26

Cantidad de envíos 700

Maker Cash 2738

Reputación 78


Volver arriba Ir abajo

Re: Sistema de mensajes Ace

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

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