Life RPG Maker 2.0
Bem vindo a LRM, forum de ajuda Maker
Registre-se em nosso forum e aproveite Very Happy
esperamos que você seja ajudado e esperamos que nos ajude Very Happy

Participe do fórum, é rápido e fácil

Life RPG Maker 2.0
Bem vindo a LRM, forum de ajuda Maker
Registre-se em nosso forum e aproveite Very Happy
esperamos que você seja ajudado e esperamos que nos ajude Very Happy
Life RPG Maker 2.0
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Life RPG Maker 2.0

2ª versão do forum life rpg maker

Os membros mais ativos do mês
Nenhum usuário

Últimos assuntos
» Kingdon 1.6
Advanced Message Script 2.0 EmptyTer Jun 09, 2015 3:02 pm por MasterKill

» Tempo dinâmico e Hora do Sistema
Advanced Message Script 2.0 EmptySeg Dez 09, 2013 5:42 pm por jonathas

» Sistema de Natação
Advanced Message Script 2.0 EmptySáb Dez 07, 2013 5:14 pm por jonathas

» Classificar Inventario
Advanced Message Script 2.0 EmptySáb Dez 07, 2013 12:07 pm por Samuka_Adm

» VOLTEI ALELUIA :D
Advanced Message Script 2.0 EmptySáb Dez 07, 2013 10:35 am por Samuka_Adm

» Netplay Master v4.0.7
Advanced Message Script 2.0 EmptyQua Jun 26, 2013 1:32 pm por xdario

» The League Of War [Season 1]
Advanced Message Script 2.0 EmptySex Jan 18, 2013 6:02 pm por Warrior

» Meu primeiro desenho que posto :D
Advanced Message Script 2.0 EmptyQua Jan 09, 2013 1:37 pm por PedroMatoso

» Window Configurações
Advanced Message Script 2.0 EmptyQua Jan 09, 2013 1:36 pm por PedroMatoso

Parceiros
Fórum grátis

Fórum grátis


Mundo RPG Maker
MMORPG BRASIL

Você não está conectado. Conecte-se ou registre-se

Advanced Message Script 2.0

3 participantes

Ir para baixo  Mensagem [Página 1 de 1]

1Advanced Message Script 2.0 Empty Advanced Message Script 2.0 Qua Nov 28, 2012 6:03 pm

Samuka_Adm

Samuka_Adm
Admin
Admin

Créditos:
Dubealex:Por criar.
Desert Eagle:Por traduzir o script para o pôrtugues.
dodoop:por postar na MRM
Samuka_Adm(eu) por postar aqui no forum LRM

Função:
Adiciona novas funções nas mensagens sendo que últilizando esse script voce poderá botar faces,imagens,ícones de armas,ícones de itens,quantia de dinheiro,posicionar a janela na posição de um evento...

Como usar:
Abra o Editor de Scripts e insira um novo script acima da classe 'Main'. Nomeie esse novo script como AMS, Advanced Message Script ou qualquer outro nome que você desejar. Agora, copie o código abaixo e cole no editor de scripts e para colocá-lo em ação, crie um evento, coloque uma mensagem e teste os comandos que virão abaixo do script neste tópico.

Script:
Código:

#====================================================
# AMS - Advanced Message Script - R4 [Atualização #2]
#====================================================
# Para maiores informações e atualizações, visite:
# www.dubealex.com (Creation Asylum - Site Oficial)
# www.castelorpg.net (Castelo RPG - Tradução Oficial)
#
# Editado, Corrigido e Melhorado por: Dubealex
# Script Original por: XRXS Scripter (Um cara japa ^^)
# Códigos de Cor Hexadecimal (HTML) por: Phylomorphis
# Traduzido por: Desert Eagle
#
# Agradecimentos:
# Rabu: Por ativar a função de exibição de face num
#      projeto encriptado
#
# Para ver as novas funções, procure por:  #NOVO
# Para definir qual botão pula a caixa de texto,
# procure por:  #PULAR_TEXTO
#
# 18 de Maio de 2005
#====================================================

# Aqui você pode ativar ou desativar o modo de escrita
# letra por letra. Defina-o como true para ativar o modo
# Defina-o como false para desativar o modo.

LETTER_BY_LETTER_MODE = true

#===================================================
# Início da Classe AMS
#===================================================

class AMS

attr_accessor :name_box_x_offset
attr_accessor :name_box_y_offset
attr_accessor :font_type
attr_accessor :name_font_type
attr_accessor :font_size
attr_accessor :name_font_size
attr_accessor :message_box_opacity
attr_accessor :name_box_skin
attr_accessor :name_box_text_color
attr_accessor :message_box_text_color
attr_accessor :message_box_skin
attr_accessor :name_box_width
attr_accessor :name_box_height
attr_accessor :message_width
attr_accessor :message_height
attr_accessor :message_x
attr_accessor :message_y_bottom
attr_accessor :message_y_middle
attr_accessor :message_y_top
attr_accessor :event_message_x_ofset
attr_accessor :event_message_y_ofset

def initialize

@name_box_x_offset = 0      # Definição da coordenada X da caixa de nome > Padrão = 0
@name_box_y_offset = -10    # Definição da coordenada Y da caixa de nome > Padrão = -10
@name_box_width = 8          # Definição da largura da caixa de nome > Padrão = 8 
@name_box_height = 26        # Definição da altura da caixa de nome > Padrão = 26

@font_type = "Tahoma"          # Definição da fonte da caixa de mensagens (Case-Sensitive)
@name_font_type = "Tahoma" # Definição da fonte da caixa de nome (Case-Sensitive)
@font_size = 22                      # Definição do tamanho da fonte da caixa de mensagens
@name_font_size = 22            # Definição do tamanho da fonte da caixa de nome
@name_box_text_color=0        # Definição da cor do texto da caixa de nome
@message_box_text_color=0  # Definição da cor do texto da caixa de mensagens

@message_box_opacity = 160            # Definição da opacidade da caixa de mensagens > Padrão = 160
@message_box_skin = "001-Blue01"  # Definição da WindowSkin da caixa de mensagens
@name_box_skin = "001-Blue01"      # Definição da WindowSkin da caixa de nome

@message_width = 480          # Definição da largura da caixa de mensagens > Padrão = 480
@message_height = 160        # Definição da altura da caixa de mensagens > Padrão = 160
@message_x = 80                  # Definição da posição X da caixa de mensagens > Padrão = 80
@message_y_bottom = 304    # Definição da posição inferior Y da caixa de mensagens > Padrão = 304
@message_y_middle = 160    # Definição da posição central Y da caixa de mensagens > Padrão = 160
@message_y_top = 16          # Definição da posição superior Y da caixa de mensagens > Padrão = 16

@event_message_x_ofset = 0  # Definição da coordenada X da caixa de eventos > Padrão = 0
@event_message_y_ofset = 48  # Definição da coordenada Y da caixa de eventos > Padrão = 48

end
end

#===================================================
# Fim da Classe AMS
#===================================================


#===================================================
# Início da Classe Window_Message
#===================================================

class Window_Message < Window_Selectable 

alias xrxs9_initialize initialize

def initialize

@alex_skip = false

xrxs9_initialize

if $soundname_on_speak == nil then
$soundname_on_speak = ""
end

$gaiji_file = "./Graphics/Gaiji/sample.png"

if FileTest.exist?($gaiji_file)
@gaiji_cache = Bitmap.new($gaiji_file)
else
@gaigi_cache = nil
end
@opacity_text_buf = Bitmap.new(32, 32)
end


#--------------------------------------------------------------------------

alias xrxs9_terminate_message terminate_message

def terminate_message

if @name_window_frame != nil
@name_window_frame.dispose
@name_window_frame = nil
end

if @name_window_text  != nil
@name_window_text.dispose
@name_window_text  = nil
end
xrxs9_terminate_message
end

#--------------------------------------------------------------------------

def refresh

self.contents.clear
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)
@x = @y = @max_x = @max_y = @indent = @lines = 0
@face_indent = 0
@opacity = 255
@cursor_width = 0
@write_speed = 0
@write_wait = 0
@mid_stop = false
@face_file = nil
@popchar = -2

if $game_temp.choice_start == 0
@x = 8
end

if $game_temp.message_text != nil
@now_text = $game_temp.message_text
if (/\A\\[Ff]\[(.+)\]/.match(@now_text))!=nil then
  @face_file = $1 + ".png"
  @x = @face_indent = 128
  if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
    self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
  end
  @now_text.gsub!(/\\[Ff]\[(.*)\]/) { "" }
end

begin
last_text = @now_text.clone
@now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
end until @now_text == last_text
@now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
 end

# NOVO
# Parar Pulo de Texto (Ligar-Desligar)

@now_text.gsub!(/\\[%]/) { "\100" }

# Fim do novo comando

# NOVO
# Mostrar Nome do Inimigo

 @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
 $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
 end

# Fim do novo comando

# NOVO
# Mostrar Preço do Item

 @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
 $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
 end

# Fim do novo comando

# NOVO
# Mostrar Nome da Classe do Herói

 @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
 $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
 end

# Fim do novo comando

# NOVO
# Mostrar Nome do Mapa Atual

 @now_text.gsub!(/\\[Mm]ap/) do
 $game_map.name    != nil ? $game_map.name    : ""
 end

# Fim do novo comando

# NOVO
# Escolher Cor da Caixa de Nome

 @now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
 $ams.name_box_text_color=$1.to_i
 @now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }
 end

 # Fim do novo comando

name_window_set = false
if (/\\[Nn]ame\[(.+)\]/.match(@now_text)) != nil
  name_window_set = true
  name_text = $1
  @now_text.sub!(/\\[Nn]ame\[(.*)\]/) { "" }
end

if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
  @popchar = $1.to_i
  if @popchar == -1
    @x = @indent = 48
    @y = 4
  end
  @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
end

@max_choice_x = 0
if @popchar >= 0
  @text_save = @now_text.clone
  @max_x = 0
  @max_y = 4
  for i in 0..3
    line = @now_text.split(/\n/)[3-i]
    @max_y -= 1 if line == nil and @max_y <= 4-i
    next if line == nil
    line.gsub!(/\\\w\[(\w+)\]/) { "" }
    cx = contents.text_size(line).width
    @max_x = cx if cx > @max_x
    if i >= $game_temp.choice_start
      @max_choice_x = cx if cx > @max_choice_x
    end
  end
  self.width = @max_x + 32 + @face_indent
  self.height = (@max_y - 1) * 32 + 64
  @max_choice_x -= 68
  @max_choice_x -= @face_indent*216/128
else
  @max_x = self.width - 32 - @face_indent
  for i in 0..3
    line = @now_text.split(/\n/)[i]
    next if line == nil
    line.gsub!(/\\\w\[(\w+)\]/) { "" }
    cx = contents.text_size(line).width
    if i >= $game_temp.choice_start
      @max_choice_x = cx if cx > @max_choice_x
    end
  end
  @max_choice_x += 8
end
@cursor_width = 0
@now_text.gsub!(/\\\\/) { "\000" }
@now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
@now_text.gsub!(/\\[Gg]/) { "\002" }
@now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
@now_text.gsub!(/\\[Aa]\[(.*)\]/) { "\004[#{$1}]" }

 # NOVO
 # Mudança da Cor Permanente
 
 @now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do
  $ams.message_box_text_color= $1.to_i
  @now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }
 end

 # Fim do novo comando

 # NOVO
 # Mudar Fonte
 
  @now_text.gsub(/\\[Tt]\[(.*)\]/) do
  buftxt = $1.to_s
  $ams.font_type = buftxt
  @now_text.sub!(/\\[Tt]\[(.*)\]/) { "" }
  end
 
 # Fim do novo comando

@now_text.gsub!(/\\[.]/) { "\005" }
@now_text.gsub!(/\\[|]/) { "\006" }
@now_text.gsub!(/\\[>]/) { "\016" }
@now_text.gsub!(/\\[<]/) { "\017" }
@now_text.gsub!(/\\[!]/) { "\020" }
@now_text.gsub!(/\\[~]/) { "\021" }
@now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
@now_text.gsub!(/\\[Ii]/) { "\023" }
@now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
@now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
@now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
@now_text.gsub!(/\\[Rr]\[(.*)\]/) { "\027[#{$1}]" }

reset_window

if name_window_set
  color=$ams.name_box_text_color
  off_x =  $ams.name_box_x_offset
  off_y =  $ams.name_box_y_offset
  space = 2
  x = self.x + off_x - space / 2
  y = self.y + off_y - space / 2
  w = self.contents.text_size(name_text).width + $ams.name_box_width + space
  h = $ams.name_box_height + space
  @name_window_frame = Window_Frame.new(x, y, w, h)
  @name_window_frame.z = self.z + 1
  x = self.x + off_x + 4
  y = self.y + off_y
  @name_window_text  = Air_Text.new(x, y, name_text, color)
  @name_window_text.z = self.z + 2
end
end

reset_window

if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end

if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end

#--------------------------------------------------------------------------

def update

super

if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
  @input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
  @fade_in = false
end
return
end
@now_text = nil if @now_text == ""

if @now_text != nil and @mid_stop == false
if @write_wait > 0
  @write_wait -= 1
  return
end
text_not_skip = LETTER_BY_LETTER_MODE
while true
  @max_x = @x if @max_x < @x
  @max_y = @y if @max_y < @y
  if (c = @now_text.slice!(/./m)) != nil
    if c == "\000"
      c = "\\"
    end
 
    if c == "\001"
      @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
      temp_color = $1
      color = temp_color.to_i
      leading_x = temp_color.to_s.slice!(/./m)
      if leading_x == "#"
        self.contents.font.color = hex_color(temp_color)
        next
      end
      if color >= 0 and color <= 7
        self.contents.font.color = text_color(color)
      end
      next
    end

    if c == "\002"
      if @gold_window == nil and @popchar <= 0
        @gold_window = Window_Gold.new
        @gold_window.x = 560 - @gold_window.width
        if $game_temp.in_battle
          @gold_window.y = 192
        else
          @gold_window.y = self.y >= 128 ? 32 : 384
        end
        @gold_window.opacity = self.opacity
        @gold_window.back_opacity = self.back_opacity
      end
      c = ""
    end

    if c == "\003"
      @now_text.sub!(/\[([0-9]+)\]/, "")
      speed = $1.to_i
      if speed >= 0 and speed <= 19
        @write_speed = speed
      end
      c = ""
    end

    if c == "\004"
      @now_text.sub!(/\[(.*)\]/, "")
      buftxt = $1.dup.to_s
      if buftxt.match(/\//) == nil and buftxt != "" then
        $soundname_on_speak = "Audio/SE/" + buftxt
      else
        $soundname_on_speak = buftxt.dup
      end
      c = ""
    elsif c == "\004"
      c = ""
    end
 
    if c == "\005"
      @write_wait += 5
      c = ""
    end
 
    if c == "\006"
      @write_wait += 20
      c = ""
    end
 
    if c == "\016"
      text_not_skip = false
      c = ""
    end
 
    if c == "\017"
      text_not_skip = true
      c = ""
    end
 
    if c == "\020"
      @mid_stop = true
      c = ""
    end
 
    if c == "\021"
      terminate_message
      return
    end
 
    if c == "\023"
      @indent = @x
      c = ""
    end

    if c == "\024"
      @now_text.sub!(/\[([0-9]+)\]/, "")
      @opacity = $1.to_i
      color = self.contents.font.color
      self.contents.font.name = $ams.font_type
      self.contents.font.size = $ams.font_size
      self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
      c = ""
    end

    if c == "\025"
      @now_text.sub!(/\[([0-9]+)\]/, "")
      self.contents.font.size = [[$1.to_i, 6].max, 32].min
      c = ""
    end

    if c == "\026"
      @now_text.sub!(/\[([0-9]+)\]/, "")
      @x += $1.to_i
      c = ""
    end
 
    if c == "\027"
      @now_text.sub!(/\[(.*)\]/, "")
      @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
      if $soundname_on_speak != ""
        Audio.se_play($soundname_on_speak)
      end
    c = ""
    end

    if c == "\030"
      @now_text.sub!(/\[(.*)\]/, "")
      self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
      if $soundname_on_speak != ""
        Audio.se_play($soundname_on_speak)
      end
      @x += 24
      c = ""
    end

    if c == "\n"
      @lines += 1
      @y += 1
      @x = 0 + @indent + @face_indent
      if @lines >= $game_temp.choice_start
        @x = 8 + @indent + @face_indent
        @cursor_width = @max_choice_x
      end
      c = ""
    end
 
    if c == "\022"
      @now_text.sub!(/\[([0-9]+)\]/, "")
      @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
      c = ""
    end
 
    # NOVO
    # Pular Texto (Ligar-Desligar)
 
    if c == "\100"
        if @alex_skip==false
          @alex_skip=true
        else
          @alex_skip=false
        end
      c = ""
    end 
   
    # Fim do Novo Comando
                             
    if c != ""
      self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
      @x += self.contents.text_size(c).width
      if $soundname_on_speak != "" then
        Audio.se_play($soundname_on_speak)
      end
    end
 
# PULAR_TEXTO
# -----------
#
# Aqui você configura qual tecla pulará a caixa de mensagens
# Mude o valor da linha 572, como indicado
#
# B = Esc, 0 (Teclado Numérico), X
# C = Enter, Barra de Espaço e C
# A = Shift, Z

if Input.press?(Input::C) # <-- Mude o valor desta linha
  if @alex_skip==false     
  text_not_skip = false
  end
    end
  else
    text_not_skip = true
    break
  end
 
  if text_not_skip
    break
  end
end
@write_wait += @write_speed
return
end

if @input_number_window != nil
@input_number_window.update
if Input.trigger?(Input::C)
  $game_system.se_play($data_system.decision_se)
  $game_variables[$game_temp.num_input_variable_id] =
    @input_number_window.number
  $game_map.need_refresh = true
  @input_number_window.dispose
  @input_number_window = nil
  terminate_message
end
return
end

if @contents_showing
if $game_temp.choice_max == 0
  self.pause = true
end

if Input.trigger?(Input::B)
  if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
    $game_system.se_play($data_system.cancel_se)
    $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
    terminate_message
  end
end

if Input.trigger?(Input::C)
  if $game_temp.choice_max > 0
    $game_system.se_play($data_system.decision_se)
    $game_temp.choice_proc.call(self.index)
  end
  if @mid_stop
    @mid_stop = false
    return
  else
    terminate_message
  end
end
return
end

if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
  @input_number_window.contents_opacity = 0
end
@fade_in = true
return
end

if self.visible
@fade_out = true
self.opacity -= 48
if self.opacity == 0
  self.visible = false
  @fade_out = false
  $game_temp.message_window_showing = false
end
return
end
end

#--------------------------------------------------------------------------

def get_character(parameter)

case parameter
when 0 
return $game_player
else
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end

#--------------------------------------------------------------------------

def reset_window

#MESSAGE_SIZE
#MESSAGE_POSITION

if @popchar >= 0
events = $game_map.events
if events != nil
  character = get_character(@popchar)
  x = [[character.screen_x -  $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min
  y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min
  self.x = x
  self.y = y
end
elsif @popchar == -1
self.x = -4
self.y = -4
self.width = 648
self.height = 488
else
if $game_temp.in_battle
  self.y = 16
else
  case $game_system.message_position
  when 0 
    self.y = $ams.message_y_top
  when 1 
    self.y = $ams.message_y_middle
  when 2 
    self.y = $ams.message_y_bottom
  end
  self.x = $ams.message_x
  if @face_file == nil
    self.width = $ams.message_width
    self.x = $ams.message_x
  else
    if self.width <= 600
      self.width = 600
      self.x -=60
    end
  end
  self.height = $ams.message_height
end
end
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
if @face_file != nil
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
if @popchar == -1
self.opacity = 255
self.back_opacity = 0
elsif $game_system.message_frame == 0
self.opacity = 255
self.back_opacity = $ams.message_box_opacity
else
self.opacity = 0
self.back_opacity = $ams.message_box_opacity
end
end

#--------------------------------------------------------------------------

def gaiji_draw(x, y, num)

if @gaiji_cache == nil
return 0
else
if @gaiji_cache.width < num * 24
  return 0
end

if self.contents.font.size >= 20 and self.contents.font.size <= 24
  size = 24
else
  size = self.contents.font.size * 100 * 24 / 2200
end

self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))

if $soundname_on_speak != "" then
  Audio.se_play($soundname_on_speak)
end
return size
end
end

#--------------------------------------------------------------------------

def line_height
return 32

if self.contents.font.size >= 20 and self.contents.font.size <= 24
return 32
else
return self.contents.font.size * 15 / 10
end
end

#--------------------------------------------------------------------------

def ruby_draw_text(target, x, y, str,opacity)

sizeback = target.font.size
target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
rubysize = [rubysize, 6].max
opacity = [[opacity, 0].max, 255].min
split_s = str.split(/,/)
split_s[0] == nil ? split_s[0] = "" : nil
split_s[1] == nil ? split_s[1] = "" : nil

height = sizeback + rubysize
width  = target.text_size(split_s[0]).width

target.font.size = rubysize
ruby_width = target.text_size(split_s[1]).width
target.font.size = sizeback

buf_width = [target.text_size(split_s[0]).width, ruby_width].max

width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0

if opacity == 255
target.font.size = rubysize
target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
target.font.size = sizeback
target.draw_text(x, y, width, target.font.size, split_s[0])
return width
else
if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
  @opacity_text_buf.dispose
  @opacity_text_buf = Bitmap.new(buf_width, height)
else
  @opacity_text_buf.clear
end
@opacity_text_buf.font.size = rubysize
@opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
@opacity_text_buf.font.size = sizeback
@opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
if sub_x >= 0
  target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
else
  target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
end
return width
end
end

#--------------------------------------------------------------------------

def convart_value(option, index)
option == nil ? option = "" : nil
option.downcase!

case option
when "i"
unless $data_items[index].name == nil
  r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
end
when "w"
unless $data_weapons[index].name == nil
  r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
end
when "a"
unless $data_armors[index].name == nil
  r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
end
when "s"
unless $data_skills[index].name == nil
  r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
end
else
r = $game_variables[index]
end

r == nil ? r = "" : nil
return r
end

#--------------------------------------------------------------------------

def dispose
terminate_message

if @gaiji_cache != nil
unless @gaiji_cache.disposed?
  @gaiji_cache.dispose
end
end

unless @opacity_text_buf.disposed?
@opacity_text_buf.dispose
end

$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end

#--------------------------------------------------------------------------

def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end

#=========================================
# Fim da Classe Window_Message
#=========================================


#=========================================
# Início da Classe Window_Frame
#=========================================

class Window_Frame < Window_Base

def initialize(x, y, width, height)
super(x, y, width, height)
self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)
self.contents = nil
end

#--------------------------------------------------------------------------

def dispose
super
end
end

#=========================================
# Fim da Classe Window_Frame
#=========================================


#===============================================
# Início do Código Adicional da Classe Game_Map
#===============================================

class Game_Map

# Modificação por Dubealex (do original XRXS) para
# mostrar o nome do mapa atual na tela

def name
$map_infos[@map_id]
end
end

#============================================
# Fim do Código Adicional da Classe Game_Map
#============================================


#==================================================
# Início do Código Adicional da Classe Scene_Title
#==================================================

class Scene_Title

# Modificação por Dubealex (do original XRXS) para
# mostrar o nome do mapa atual na tela

$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
 $map_infos[key] = $map_infos[key].name
end

# Modificação por Dubealex para salvar as informações
# do AMS nos arquivos de save

$ams = AMS.new

end

#===============================================
# Fim do Código Adicional da Classe Scene_Title
#===============================================


#==================================================
# Início do Código Adicional da Classe Window_Base
#==================================================

class Window_Base < Window

# Modificação por Dubealex (do original Phylomorphis)
# para usar códigos hexadecimais de cor (HTML)

def hex_color(string)
red = 0
green = 0
blue = 0
if string.size != 6
  print("Strings hexadecimais devem ter no máximo 6 caracteres.")
  print("A cor branca será utilizada.")
  return Color.new(255, 255, 255, 255)
end
for i in 1..6
  s = string.slice!(/./m)
  if s == "#"
    print("trings hexadecimais devem conter o caractere \"#\".")
    print("A cor branca será utilizada.")
    return Color.new(255, 255, 255, 255)
  end
  value = hex_convert(s)
  if value == -1
    print("Erro convertendo valor hexadecimal.")
    print("A cor branca será utilizada.")
    return Color.new(255, 255, 255, 255)
  end
  case i
  when 1
    red += value * 16
  when 2
    red += value
  when 3
    green += value * 16
  when 4
    green += value
  when 5
    blue += value * 16
  when 6
    blue += value
  end
end
return Color.new(red, green, blue, 255)
end

#--------------------------------------------------------------------------

def hex_convert(character)
case character
 when "0"
  return 0
when "1"
  return 1
when "2"
  return 2
when "3"
  return 3
when "4"
  return 4
when "5"
  return 5
when "6"
  return 6
when "7"
  return 7
when "8"
  return 8
when "9"
  return 9
when "A"
  return 10
when "B"
  return 11
when "C"
  return 12
when "D"
  return 13
when "E"
  return 14
when "F"
  return 15
 end
return -1
end
end

#===============================================
# Fim do Código Adicional da Classe Window_Base
#===============================================


#=========================================
# Início da Classe Air_Text
#=========================================

class Air_Text < Window_Base

def initialize(x, y, designate_text, color=0)

super(x-16, y-16, 32 + designate_text.size * 12, 56)
self.opacity      = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.font.name = $ams.name_font_type
self.contents.font.size = $ams.name_font_size
self.contents.font.color = text_color(color)
self.contents.draw_text(0, 0, w, h, designate_text)
end

#--------------------------------------------------------------------------

def dispose
self.contents.clear
super
end
end

#==========================================
# Fim da Classe Air_Text
#==========================================


#===================================================
# Início do Código Adicional da Classe Scene_Save
#===================================================

class Scene_Save < Scene_File

alias ams_original_write_save_data write_save_data

def write_save_data(file)
 ams_original_write_save_data(file)
 Marshal.dump($ams, file)
end

end

#===================================================
# Fim do Código Adicional da Classe Scene_Save
#===================================================


#===================================================
# Início do Código Adicional da Classe Scene_Load
#===================================================

class Scene_Load < Scene_File

alias ams_original_read_save_data read_save_data

def read_save_data(file)
 ams_original_read_save_data(file)
 $ams      = Marshal.load(file)
end

end

#===================================================
# Fim do Código Adicional da Classe Scene_Load
#===================================================

Comandos:
Código:

Mudar a cor do texto temporariamente (Padrão):

\c[ID_da_Cor]

Insira a ID da cor desejada. Todas as cores foram programadas na classe Window_Base, iniciando na linha 39. 0 é branco. Para ver uma pequena tabela dessas cores, abra o arquivo de ajuda de seu RPG Maker XP e cheque a seção Eventos > Opções de Mensagens.


Mudar a cor do texto temporariamente (Hexadecimal):

\c[#000000]

Insira o código de cores hexadecimal desejado dentro dos colchetes.

#000000 = preto
#FFFFFF = branco


Mostrar janela de dinheiro:

\G

Este comando irá exibir uma janela com todo o dinheiro do jogador no canto superior direito da janela.


Mostrar nome do herói:

\n[ID_do_Herói]

Insira a ID do herói desejado para exibir o nome do mesmo.


Mostrar nome do inimigo:

\m[ID_do_Inimigo]

Insira a ID do inimigo desejado para exibir o nome do mesmo.


Mostrar preço do item:

\Price[ID_do_Item]

Insira a ID do item desejado para exibir o preço do mesmo.


Mostrar nome do mapa atual:

\Map

Este comando exibirá o nome do mapa no qual o herói se encontra no momento.


Mostrar um gráfico de face na mensagem:

\f[Nome_do_Gráfico]

O Nome_do_Gráfico deve ser o nome do arquivo de imagem que deve estar localizado no diretório Graphics\Pictures do seu projeto. O arquivo deve ser um PNG de 96X96 pixels. Você não precisa escrever a extensão do arquivo, só escreva o nome do arquivo.

Exemplo: \f[Ash]

Isso mostrará na sua caixa de mensagens o arquivo Ash.png, localizado na pasta Graphics\Pictures.


Mostrar nome da classe de um personagem:

\Class[ID_do_Herói]

Insira a ID do herói desejado para mostrar o nome da classe do herói.


Mostrar nome de variáveis, itens, armas, armaduras e habilidades:

\v[xID]

Você deve substituir o x pela primeira letra da categoria que você deseja exibir o nome (em inglês), seguido da ID do item, arma, armadura, habilidade ou variável. Exemplo:

Variável = Não escreva nada, apenas insira a ID da variável \v[ID_da_Variável]
Itens = i + ID do Item --> \v[iID]
Armaduras = a + ID da Armadura --> \v[aID]
Armas = w + ID da Arma --> \v[wID]
Habilidades = s + ID da Habilidade --> \v[sID]


Mostrar nome ou outra informação na caixa de nome:

\Name[text]

Use este comando para exibir uma caixa de nome acima da caixa de mensagens que exibirá o texto que você inserir após o comando. Você também pode usar outrocomando após este comando, como por exemplo mostrar o nome do herói na caixa.

Exemplo:

\Name[\v[12]] --> Isso exibirá a variável de ID 12 na caixa de nome.
\Name[Dubealex] --> Isso exibirá "Dubealex" na caixa de nome.
\Name[\n[1]] --> Isso exibirá o herói de ID 1 na caixa de nome.


Modificar a opacidade do texto:

\o[Opacidade]

Use este comando para modificar a opacidade do texto presente na caixa de mensagens. Insira um número entre 0 e 255, quando 255 é totalmente opaco e 0 é totalmente transparente.


Modificar velocidade do texto:

\s[Speed]

Use este comando para modificar a velocidade com que o texto é exibido na caixa de mensagens. Insira um número entre 1 e 19, onde 1 é o mais rápido e 19 é o mais lento.


Modificar tamanho do texto:

\h[Size]

Use este comando para modificar o tamanho do texto exibido na caixa de mensagens. Insira um número entre 6 e 32, onde 6 é o menor e 32 é o maior.


Exibir caixa de mensagens acima do herói ou eventos:

\p[Option]

Use este comando para fazer a caixa de mensagens aparecer acima de qualquer herói ou evento presente no seu mapa. Utilize as seguintes opções:

\p[ID_do_Evento]
\P[0]
\p[-1]

- "\p[ID_do_Evento]" irá colocar a caixa de mensagens acima do evento especificado (Insira a ID do Evento)
- "\p[0]" irá colocar a caixa de mensagens acima do herói
- "\p[-1]" irá deixar a caixa de mensagens sem fundo e sem bordas


Ativar/Desativar modo letra por letra temporariamente:

\< --> Para ativar o modo
\> --> Para desativar o modo


Mudar fonte da caixa de mensagens (permanente):

\t[NomedaFonte]

O NomedaFonte deve ser um arquivo .TTF localizado no diretório C:\Windows\Fonts. A inserção do nome é Case-Sensitive (maiúsculas diferentes de minúsculas).


Executar um efeito sonoro enquanto cada letra é exibida (permanente):

\a[NomedoArquivo]

O arquivo deve estar no diretório Audio\SE, presente na pasta do seu projeto. Lembre-se de definir esse efeito como desligado quando você não precisar mais dele, deixando os colchetes vazios ou então o efeito será escutado em todas as caixas de mensagens daqui para frente.


Mostrar texto como superscript:

\[Primeiro]Segundo

O primeiro texto estará em tamanho normal e o segundo estará um pouco menor e mais elevado na linha, como um superscript.


Ativar/Desativar botão de pular texto (permanente):

\%

Use este comando para ativar ou desativar o botão de pular o texto. Este comando é útil quando você quer controlar a exibição de alguma parte importante da história do jogo e não quer que o usuário pule a parte. Lembre-se que as alterações feitas por este comando são permanentes, por isso se quiser usar o comando de pular texto novamente, use o código novamente.


Modificar a cor do texto da caixa de nome (permanente):

\z[ColorID]

Use isto como você usa normalmente o comando de cor (\c[ID_da_cor]) - Mas desta vez a cor definida será utilizada na caixa de nome e a modificação da cor é permanente. Por isso, lembre-se de modificar a cor novamente (para a cor padrão).


Modificar cor do texto da caixa de mensagens (permanente):

\Color[ColorID]

Use isto como você usa normalmente o comando de cor (\c[ID_da_cor]) - Mas desta vez a cor definida será utilizada em todas as caixas de mensagens do jogo.


Comandos variados:

\| --> Esperar por 1 segundo
\. --> Esperar por 25 segundos
\~ --> Auto-fechar caixa ao exibir última letra
\! --> Esperar por usuário inserir uma tecla
\\ --> Exibir o caractere \

https://liferpgmakerv2.forumeiros.com

2Advanced Message Script 2.0 Empty Re: Advanced Message Script 2.0 Qua Nov 28, 2012 6:43 pm

Warrior

Warrior
Moderador
Moderador

Tem imagens ai???

3Advanced Message Script 2.0 Empty Re: Advanced Message Script 2.0 Qua Nov 28, 2012 6:45 pm

SameKage

SameKage
Aprendiz
Aprendiz

Imagens seriam uma boa mesmo kk, testa ele e põe screens

http://distritomaker.forumeiros.com

4Advanced Message Script 2.0 Empty Re: Advanced Message Script 2.0 Qua Nov 28, 2012 8:04 pm

Samuka_Adm

Samuka_Adm
Admin
Admin

dboa gente eu vo postar screens daki a pouco pq agr vo jantar, dps dou um edit akie xD
@edit:
screen:
Advanced Message Script 2.0 Sem_ta11
comando usado:
\Map

https://liferpgmakerv2.forumeiros.com

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos