Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # • Sensor Menssage
- #==============================================================================
- # Autor: Dax
- # Versão: 1.0
- # Site: www.dax-soft.weebly.com
- # Requerimento: Dax Core
- #==============================================================================
- # • Descrição:
- #------------------------------------------------------------------------------
- # Quando o jogador estiver na área(determinada por você) de um evento,
- # irá aparecer um texto por cima da cabeça do evento. Quanto mais o jogador estiver
- # longe, mais opaco vai se tornando o texto.
- #==============================================================================
- # • Como usar: CHAMAR SCRIPT
- #------------------------------------------------------------------------------
- # sm(id, area, text)
- # * id = ID do evento.
- # * area = Area do evento.
- # * text = Mensagem.
- #==============================================================================
- Dax.register(:sensor_message, "Dax", 1.0, "06/03/14")
- #==============================================================================
- # • Rpg::Sensor_Message
- #==============================================================================
- module Rpg::Sensor_Message
- extend self
- @sm = []
- #----------------------------------------------------------------------------
- # • Configurações.
- #----------------------------------------------------------------------------
- WIDTH = 160 # Largura máxima permitida.
- SIZE = 16 # Tamanho da fonte.
- NAME = "Arial" # Nome da fonte.
- BOLD = true # Negrito na fonte.
- OUTLINE = true # Borda na fonte.
- SHADOW = true # Sombra na fonte.
- COLOR = ColorBasic.default # Cor da fonte.
- AREA = 2 # Recomendado que se deixe no 2. AREA - a multiplicação da área, para
- # surtir o efeito de opacidade.
- #----------------------------------------------------------------------------
- # • Fazer.
- #----------------------------------------------------------------------------
- def make(*args)
- return if @sm[args[0].__id__].is_a?(Sensor_Message_Sprite)
- @sm[args[0].__id__] = Sensor_Message_Sprite.new(*args)
- end
- #----------------------------------------------------------------------------
- # • Renovar
- #----------------------------------------------------------------------------
- def dispose
- return if @sm.nil?
- @sm.each(&:dispose)
- end
- #----------------------------------------------------------------------------
- # • Atualizar.
- #----------------------------------------------------------------------------
- def update
- return if @sm.nil?
- @sm.each { |i| i.update unless i.nil? or i.disposed? }
- end
- end
- #==============================================================================
- # • Sensor_Message_Sprite
- #==============================================================================
- class Sensor_Message_Sprite < Sprite
- include Rpg::Sensor_Message
- #----------------------------------------------------------------------------
- # • Inicialização dos objetos.
- #----------------------------------------------------------------------------
- def initialize(id, sensor, name, add_y=nil)
- super([WIDTH, SIZE+2])
- @id, @sensor, @name = id, sensor, name || ""
- @add_y = add_y || 0
- self.x = ($game_map.events[@id].screen_x - (self.width / 2))
- self.y = ($game_map.events[@id].screen_y - 56) + @add_y
- self.bitmap.font.name = NAME
- self.bitmap.font.size = SIZE
- self.bitmap.font.bold = BOLD
- self.bitmap.font.shadow = SHADOW
- self.bitmap.font.outline = OUTLINE
- self.bitmap.font.color = COLOR
- self.bitmap.draw_text_rect(@name, 1)
- opacity_defined
- end
- #----------------------------------------------------------------------------
- # • Renovação dos objetos.
- #----------------------------------------------------------------------------
- def dispose
- self.bitmap.dispose unless self.bitmap.disposed?
- super
- end
- #----------------------------------------------------------------------------
- # • Atualização dos objetos.
- #----------------------------------------------------------------------------
- def update
- opacity_defined
- self.x = ($game_map.events[@id].screen_x - (self.width / 2))
- self.y = ($game_map.events[@id].screen_y - 56) + @add_y
- end
- #----------------------------------------------------------------------------
- # • Definir opacidade
- #----------------------------------------------------------------------------
- def opacity_defined
- @distance = DMath.distance_sensor($game_player, $game_map.events[@id])
- self.opacity = (@distance <= @sensor) ? 255 : (@distance <= (@sensor * AREA)) ? 127 : 64
- end
- end
- #==============================================================================
- # • Scene_Map
- #==============================================================================
- class Scene_Map < Scene_Base
- #----------------------------------------------------------------------------
- # • Renovação dos objetos.
- #----------------------------------------------------------------------------
- alias :sensor_message_terminate :terminate
- def terminate
- sensor_message_terminate
- Rpg::Sensor_Message.dispose
- end
- #----------------------------------------------------------------------------
- # • Atualização dos objetos.
- #----------------------------------------------------------------------------
- alias :sensor_message_update :update
- def update
- sensor_message_update
- Rpg::Sensor_Message.update
- end
- end
- #==============================================================================
- # • Game_Interpreter
- #==============================================================================
- class Game_Interpreter
- #----------------------------------------------------------------------------
- # • Sensor.
- #----------------------------------------------------------------------------
- def sm(*args)
- Rpg::Sensor_Message.make(*args)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment