Já viram qual a arte dessa semana?Exposição dos Artistas #8
5 Respostas   356 Visualizações
0 Membros e 1 Visitante estão vendo este tópico.
module Lune_Message#=======================================================# Lune Message System# Autor: Raizen# Compativel com: RMVXAce# Comunidade: Centrorpg.com# O script permite mensagens acima de eventos, # fazendo um modo mais interativo de mensagens entre# npcs e personagens.# Informações: Versão Atual 1.2# O script pode substituir as versões antigas que não afetará # negativamente em nada no jogo.#Atualização 1.1 => Adicionado setas para indicar o evento que está falando.#Atualização 1.2 => Correção no dispose da imagem, e adicionado#Atualização 1.3 => Sistema de mensagens da batalha colocada para padrão.# a função de utilizar o modo antigo de mensagens.# Instruções# Para utilizar a mensagem basta chamar o comando basico# de mostrar mensagem, podendo conter ou não uma face.# antes do mostrar mensagem configure o evento que quer# que apareça a mensagem, e a posição(acima ou abaixo) do evento.# Também é possivel escolher pontos diferentes de mensagens sem se# basear em eventos.# Para configurar a posição da mensagem faça o seguinte.# Chamar Script:Lune_Message.config(p, id)# Sendo o p a posição que pode ser# 1 = acima do personagem# 0 = abaixo do personagem# 2 = estilo de mensagens antiga# Ou seja para desativar o script de mensagens e usar do modo antigo# basta chamar script desse modo.# Chamar Script:Lune_Message.config(2, 0)# Coloque um Esperar 1 frame antes de mostrar a mensagem no modo antigo,# para ser possível dar tempo de reconfigurar todas as posições antigas.# ID sendo o ID do evento, e 0 o ID do personagem.# Para o Herói coloque o valor 0.# O tamanho da janela é configurado automaticamente, sendo que você# deve escolher o espaçamento da fonte para se ajustar melhor a fonte# que você está usando.Espacamento = 9# Tamanho dos personagens(em pixels) que aparecerá as mensagens, para efeito # de correçãoTamanho = 48# Nome do arquivo que servirá de cursor para indicar o personagem que# está falando.# Caso não queira arquivo algum para indicar, basta colocar desse modo.# Imagem = ""# A imagem deve estar na pasta Graphics/System dentro da pasta do seu projeto.Imagem = "window_popup"# ========================================================================# Aqui começa o script modifique caso saiba o que está fazendo.# ========================================================================def self.config(p, id)posicao(p)identificacao(id)enddef self.posicao(p = nil)@p = p unless p == nilreturn @penddef self.identificacao(id = nil)@id = id unless id == nilreturn @idendend#==============================================================================# ** Janela auxiliar#==============================================================================class Lune_Window_Message < Window_Baseinclude Lune_Message def initialize(x, y, window_width, window_height) super(x, y, window_width, window_height) self.z = 199 self.openness = 0 @get_sprite = true @sprite_arrow = Sprite.new @sprite_arrow.bitmap = Cache.system(Imagem) if Lune_Message.identificacao == 0 @lune_x = $game_player.screen_x @lune_y = $game_player.screen_y else @lune_x = $game_map.events[Lune_Message.identificacao].screen_x @lune_y = $game_map.events[Lune_Message.identificacao].screen_y end @sprite_arrow.x = @lune_x - 8 @sprite_arrow.y = @lune_y - Lune_Message::Tamanho end def refresh if @get_sprite == true @sprite_arrow.y += 4 @get_sprite = false else @sprite_arrow.y -= 4 @get_sprite = true end end def openlune self.openness += 40 self.openness <= 254 ? (return false) : (return true) end def closelune @sprite_arrow.opacity = 0 unless Imagem.nil? self.openness -= 40 self.openness >= 1 ? (return false) : (return true) end def dispose @sprite_arrow.dispose super endend class Game_Message# Retorna o valor da quantidade de linhas def get_lune_lines @lune_text_size = 0 @texts.inject("") {|r, text| @lune_text_size += 1} return @lune_text_size end# Retorna o valor do tamanho do texto. def get_lune_length @lune_length_size = 0 @texts.inject("") {|r, text| @lune_length_size = text.size if text.size > @lune_length_size} return @lune_length_size end end #==============================================================================# ** Window_Message#------------------------------------------------------------------------------# Esta janela de mensagem é usada para exibir textos.#============================================================================== #-------------------------------------------------------------------------- # * Aquisição da largura da janela #--------------------------------------------------------------------------class Window_Message < Window_Base# aliasingalias lune_message_update update alias lune_process_all_text process_all_textalias lune_message_dispose disposealias lune_input_choice input_choice def initialize super(0, 0, Graphics.width, fitting_height(4)) self.z = 200 self.openness = 0 create_all_windows create_back_bitmap create_back_sprite clear_instance_variables end def window_width $game_message.get_lune_length * Lune_Message::Espacamento + 50 end #-------------------------------------------------------------------------- # * Aquisição da altura da janela #-------------------------------------------------------------------------- def window_height fitting_height($game_message.get_lune_lines) end def update(*args) lune_message_update(*args) unless Lune_Message.posicao == 2 @lune_message.refresh if @lune_message and Graphics.frame_count % 25 == 1 self.opacity = 0 end end def fiber_main $game_message.visible = true update_background lune_update_placement if Lune_Message.posicao == 2 loop do if Lune_Message.posicao == 2 lune_process_all_text if $game_message.has_text? else process_all_text if $game_message.has_text? end process_input $game_message.clear @gold_window.close Fiber.yield break unless text_continue? end @lune_message.opacity = 0 unless @lune_message == nil and Lune_Message.posicao == 2 close_and_wait $game_message.visible = false @fiber = nil end def lune_update_placement @position = $game_message.position self.y = @position * (Graphics.height - height) / 2 self.x = 0 @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height end def update_placement @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height unless Lune_Message.identificacao.nil? self.x = @lune_x - window_width / 2 self.x -= (self.x + window_width - Graphics.width) if self.x + window_width >= Graphics.width self.x -= new_line_x self.x = [self.x,0].max self.y = @lune_y self.y -= window_height + Lune_Message::Tamanho if Lune_Message.posicao == 1 self.y = [self.y,0].max self.y -= (self.y + window_height - Graphics.height) if self.y + window_height >= Graphics.height end end #-------------------------------------------------------------------------- # * Execução de todos texto #-------------------------------------------------------------------------- def process_all_text if Lune_Message.identificacao == 0 @lune_x = $game_player.screen_x @lune_y = $game_player.screen_y else @lune_x = $game_map.events[Lune_Message.identificacao].screen_x @lune_y = $game_map.events[Lune_Message.identificacao].screen_y end @lune_message.dispose unless @lune_message.nil? w = @lune_x - window_width / 2 h = @lune_y $game_message.face_name.empty? ? (w = [w,0].max) : (w = [w,112].max) h -= window_height + Lune_Message::Tamanho if Lune_Message.posicao == 1 h = [h,0].max w -= (w + window_width - Graphics.width) if w + window_width >= Graphics.width h -= (h + window_height - Graphics.height) if h + window_height >= Graphics.height @lune_message = Lune_Window_Message.new(w, h, window_width, window_height) @lune_face = Window_Base.new(w - 104, h + 8, 104, 104) unless $game_message.face_name.empty? update_placement text = convert_escape_characters($game_message.all_text) pos = {} new_page(text, pos) open_and_wait process_character(text.slice!(0, 1), text, pos) until text.empty? end #-------------------------------------------------------------------------- # * Abertura da janela e espeta até abertura total #-------------------------------------------------------------------------- def open_and_wait unless Lune_Message.posicao == 2 @lune_message.openlune Fiber.yield until @lune_message.openlune open else open Fiber.yield until open? end end #-------------------------------------------------------------------------- # * Fechamento da janela e espeta até fechamento total #-------------------------------------------------------------------------- def close_and_wait close Fiber.yield until all_close? @lune_message.closelune if @lune_message Fiber.yield until @lune_message.closelune unless Lune_Message.posicao == 2 end #-------------------------------------------------------------------------- # * Execução de espera de entrada #-------------------------------------------------------------------------- def input_pause self.pause = true if Lune_Message.posicao == 2 wait(10) Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C) Input.update @lune_face.dispose unless @lune_face.nil? self.pause = false end def dispose @lune_message.dispose if @lune_message Lune_Message.config(2,0) lune_message_dispose end #-------------------------------------------------------------------------- # * Execução de entrada de escolhas #-------------------------------------------------------------------------- def input_choice lune_input_choice @lune_face.dispose unless @lune_face.nil? endend
module Lune_Message def self.config(p, id, type=0) posicao(p) identificacao(id) tipo(type) end def self.tipo(type = nil) @tipo = type unless type == nil return @tipo endendclass Lune_Window_Message < Window_Base alias :old_init :initialize def initialize(*args) old_init(*args) case Lune_Message.posicao when 0 rect = Lune_Message.tipo == 0 ? Rect.new(32,0,32,64) : Rect.new(32,64,32,64) when 1 rect = Lune_Message.tipo == 0 ? Rect.new(0,0,32,64) : Rect.new(0,64,32,64) end @sprite_arrow.src_rect = rect @sprite_arrow.x = @lune_x - 12 pos_y = Lune_Message.posicao == 0 ? (@lune_y - Tamanho + 16) : @lune_y - 80 @sprite_arrow.y = pos_y @sprite_arrow.z = 200 end def refresh endend
Poderia deixar uma imagem do problema?