Mensagem em cima do evento Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Mensagem em cima do evento

+4
Soaresdk
Zetto
Sanuzuki
Valentine
8 participantes

Ir para baixo

Mensagem em cima do evento Empty Mensagem em cima do evento

Mensagem por Valentine Dom maio 26, 2019 9:30 am

1) Substitua o script [VS] Window_Message por:
Código:
#==============================================================================
# ** Window_Message
#------------------------------------------------------------------------------
#  Autor: Valentine
#==============================================================================

class Game_Message
  
  attr_accessor :event_id
  
  def clear
    @texts = []
    @choices = []
    @face_name = ''
    @face_index = 0
    @background = 0
    @position = 2
    @event_id = 0
    @choice_cancel_type = 0
    @choice_proc = nil
    @num_input_variable_id = 0
    @num_input_digits_max = 0
    @item_choice_variable_id = 0
    @scroll_mode = false
    @scroll_speed = 2
    @scroll_no_fast = false
  end
  
end

#==============================================================================
# ** Game_Interpreter
#==============================================================================
class Game_Interpreter
  
  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]
    $game_message.event_id = @event_id
    while next_event_code == 401 # Texto
      @index += 1
      $game_message.add(@list[@index].parameters[0])
    end
    case next_event_code
    when 102 # Mostrar escolhas
      @index += 1
      setup_choices(@list[@index].parameters)
    when 103 # Entrada numérica
      @index += 1
      setup_num_input(@list[@index].parameters)
    when 104 # Selecionar item
      @index += 1
      setup_item_choice(@list[@index].parameters)
    end
    wait_for_message
  end
  
end

#==============================================================================
# ** Window_ChoiceList
#==============================================================================
class Window_ChoiceList < Window_Command
  
  def initialize(message_window)
    @message_window = message_window
    super(0, 0)
    self.openness = 0
    self.windowskin = Cache.system('WindowMessage')
    deactivate
  end
  
  def update_placement
    self.width = [max_choice_width + 12, 96].max + padding * 2
    self.width = [ width, Graphics.width].min
    self.height = fitting_height($game_message.choices.size)
    self.x = @message_window.x + @message_window.width - width
    self.y = @message_window.y + @message_window.height
  end
  
end

#==============================================================================
# ** Window_Message
#==============================================================================
class Window_Message < Window_Base
  
  def initialize
    super(adjust_x, 0, 640, window_height)
    self.z = 200
    self.openness = 0
    self.windowskin = Cache.system('WindowMessage')
    create_all_windows
    clear_instance_variables
    @ok_button = Button.new(self, 0, 0, Vocab::Ok) { $game_message.visible = false }
    @ok_button.visible = false
  end
  
  def adjust_x
    Graphics.width / 2 - 320
  end
  
  def dispose
    super
    dispose_all_windows
  end
  
  def update
    super
    update_all_windows
    update_fiber
  end
  
  def fiber_main
    $game_message.visible = true
    loop do
      process_all_text if $game_message.has_text?
      @ok_button.visible = (!$game_message.choice? && !$game_message.item_choice?)
      process_input
      # Se clicou em Ok ou pressinou Esc
      unless $game_message.choice? || $game_message.item_choice?
        @ok_button.visible = false
        $network.send_next_event_command
      end
      $game_message.clear
      @gold_window.close
      # Se morreu com a janela de escolhas aberta
      @choice_window.close
      @item_window.close
      Fiber.yield
      break unless text_continue?
    end
    close_and_wait
    # Se pressionou Esc
    $game_message.visible = false
    @fiber = nil
  end
  
  def process_all_text
    text = convert_escape_characters($game_message.all_text)
    # Remove os caracteres especiais para que seja
    #calculada a largura correta do texto
    open_and_wait(remove_special_characters(text))
    pos = {}
    new_page(text, pos)
    process_character(text.slice!(0, 1), text, pos) until text.empty?
  end
  
  def remove_special_characters(text)
    result = text.clone
    # gsub converte regexp para string, diferentemente
    #do delete que não faz esta conversão
    result.gsub!(/\eC\[(\d+)\]/i, '')
    result.gsub!(/\e$/i, '')
    result.gsub!(/\e{/i, '')
    result.gsub!(/\e}/i, '')
    result.gsub!(/\e./i, '')
    result.gsub!(/\e|/i, '')
    result.gsub!(/\e!/i, '')
    result.gsub!(/\e>/i, '')
    result.gsub!(/\e</i, '')
    result.gsub!(/\e^/i, '')
    result
  end
  
  def open_and_wait(text)
    lines = text.split("\n")
    width = text_size(lines.max{ |a, b| a.size <=> b.size }).width
    width += $game_message.face_name.empty? ? 47 : 149
    height = lines.size * calc_line_height(text) + 32
    height = 120 if height < 120 && !$game_message.face_name.empty?
    self.width = width
    self.height = height
    if $game_message.event_id > 0
      self.x = [$game_map.events[$game_message.event_id].screen_x - self.width / 2, 0].max
      self.y = [$game_map.events[$game_message.event_id].screen_y - 35 - self.height, 0].max
      self.x = Graphics.width - width - 47 if self.x + width + 47 > Graphics.width
    # Se a mensagem é mostrada nos eventos comuns
    else
      update_placement
      self.x = (Graphics.width - width) / 2
    end
    choice_height = fitting_height($game_message.choices.size)
    self.y = Graphics.height - height - choice_height if self.y + height + choice_height > Graphics.height
    @ok_button.x = width - 55
    @ok_button.y = height - 15
    open
    Fiber.yield until open?
  end
  
  def text_continue?
    $game_message.has_text?
  end
  
  def update_show_fast
    @show_fast = true if Input.trigger?(Configs::ATTACK_KEY)
  end
  
  def new_page(text, pos)
    contents.clear
    draw_face($game_message.face_name, $game_message.face_index, 0, 0)
    reset_font_settings
    pos[:x] = new_line_x
    pos[:y] = 0
    pos[:new_x] = new_line_x
    pos[:height] = calc_line_height(text)
    clear_flags
  end
  
  def new_line_x
    $game_message.face_name.empty? ? 10 : 109
  end
  
  def calc_line_height(text)
    20
  end
  
  def input_pause
    self.pause = true
    wait(10)
    Fiber.yield until Input.trigger?(:B) || !$game_message.visible
    Input.update
    self.pause = false
  end
  
  def input_choice
    @choice_window.start
    Fiber.yield while @choice_window.active && $game_message.visible
  end
  
  def input_item
    @item_window.start
    Fiber.yield while @item_window.active && $game_message.visible
  end
  
end

#==============================================================================
# ** Control
#==============================================================================
class Control
end

#==============================================================================
# ** Button
#==============================================================================
class Button < Control
  
  def x=(x)
    @x = x
  end
  
  def y=(y)
    @y = y
  end
  
end
2) Baixe a windowskin abaixo, renomeei para WindowMessage e coloque na pasta System:
Mensagem em cima do evento IjsrQXM
Resultado:
Mensagem em cima do evento B8D3lJP

Créditos:
Valentine
Readerusama (pela Windowskin)


Última edição por Valentine em Qua Dez 29, 2021 11:30 am, editado 8 vez(es)
Valentine
Valentine
Administrador
Administrador

Medalhas : Mensagem em cima do evento ZgLkiRU
Mensagens : 5345
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por Sanuzuki Dom maio 26, 2019 10:43 am

Script Magnifico!

Sanuzuki
Novato
Novato

Mensagens : 1
Créditos : 0

Ficha do personagem
Nível: 1
Experiência:
Mensagem em cima do evento Left_bar_bleue0/0Mensagem em cima do evento Empty_bar_bleue  (0/0)
Vida:
Mensagem em cima do evento Left_bar_bleue30/30Mensagem em cima do evento Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por Zetto Dom maio 26, 2019 7:25 pm

Ficou excelente <3
Zetto
Zetto
Novato
Novato

Mensagens : 2
Créditos : 0

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por Soaresdk Dom maio 26, 2019 8:39 pm

sempre inovando parabéns

Soaresdk
Novato
Novato

Mensagens : 10
Créditos : 0

Ficha do personagem
Nível: 1
Experiência:
Mensagem em cima do evento Left_bar_bleue0/50Mensagem em cima do evento Empty_bar_bleue  (0/50)
Vida:
Mensagem em cima do evento Left_bar_bleue30/30Mensagem em cima do evento Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por Caio Juan Seg maio 27, 2019 9:19 am

Diferenciado, estou mexendo agora com essa ferramenta, é bom ver que ainda continuam inovando sempre. +1

_________________
-Não Aceito Mais do que um Mapa Perfeito-
Mensagem em cima do evento VfZx7

Mensagem em cima do evento Arenax
Aguardem!!!
Caio Juan
Caio Juan
Colaborador
Colaborador

Medalhas : Mensagem em cima do evento 94Jxv
Mensagens : 815
Créditos : 71

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por retropiguru Sáb Jun 01, 2019 12:03 pm

Muito bom!!
vlw..

_________________
PROJETO: Heros Online [20%]
Classes: Guerreiro, Arqueiro, Mago e Sacerdote
VXA-OS "gráficos RM.vx.ace"
retropiguru
retropiguru
Novato
Novato

Mensagens : 14
Créditos : 0

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por aeFly Dom Fev 09, 2020 3:29 am

há como ajustar a altura?
Spoiler:
aeFly
aeFly
Iniciante
Iniciante

Mensagens : 36
Créditos : 14

Ficha do personagem
Nível: 1
Experiência:
Mensagem em cima do evento Left_bar_bleue0/0Mensagem em cima do evento Empty_bar_bleue  (0/0)
Vida:
Mensagem em cima do evento Left_bar_bleue30/30Mensagem em cima do evento Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por Kincy Dom Fev 09, 2020 8:33 pm

Parabéns, isso mostra um significante crescimento ao MMO desenvolvido no VXA-OS, muito obrigado Val!
Kincy
Kincy
Membro Ativo
Membro Ativo

Mensagens : 289
Créditos : 31

Ficha do personagem
Nível: 1
Experiência:
Mensagem em cima do evento Left_bar_bleue0/0Mensagem em cima do evento Empty_bar_bleue  (0/0)
Vida:
Mensagem em cima do evento Left_bar_bleue30/30Mensagem em cima do evento Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por Valentine Ter Mar 24, 2020 10:07 am

Script atualizado.

Erro ao mostrar mensagem nos eventos comuns corrigido.
Valentine
Valentine
Administrador
Administrador

Medalhas : Mensagem em cima do evento ZgLkiRU
Mensagens : 5345
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por Valentine Sex Set 25, 2020 1:06 pm

Script atualizado para a versão 2.1.1.
Valentine
Valentine
Administrador
Administrador

Medalhas : Mensagem em cima do evento ZgLkiRU
Mensagens : 5345
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Mensagem em cima do evento Empty Re: Mensagem em cima do evento

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

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