#===============================================================================# Configurable section#===============================================================================module NAP_EV_TEXT_CONF COMMENT_TAG = 'evtxt' # Do not use '<' or '>' characters! DEFAULT_FONT_SIZE = 22 DEFAULT_FG_COLOR = Color.new(255, 255, 255) DEFAULT_BG_COLOR = Color.new(0, 0, 0, 0) # Color.new(128,128,128,128) # grayend#===============================================================================# Below is to make this script standalone from Napoleons Core Script#===============================================================================if !$imported || !$imported[:nap_core] || $imported[:nap_core] < 1.05 # Global bitmap just for measuring text size # DO NOT FORGET to change the font size and stuff before measuring! $txt_measure_bmp = Bitmap.new(1,1) class Scene_Map < Scene_Base attr_reader :spriteset end class Spriteset_Map attr_reader :character_sprites end module Nap def self.get_character_sprite(ev_id) return nil if !SceneManager.scene.is_a?(Scene_Map) || !SceneManager.scene.spriteset SceneManager.scene.spriteset.character_sprites.each{|cs| return cs if cs.character.id == ev_id } return nil end endend#===============================================================================# Event Text Script#===============================================================================class Sprite_Character < Sprite_Base attr_accessor :ev_text_sprite attr_accessor :ev_text_font_size alias nap_ev_text_initialize initialize def initialize(*args) nap_ev_text_initialize(*args) @ev_text_font_size = NAP_EV_TEXT_CONF:

EFAULT_FONT_SIZE end def nap_ev_set_text(text) # If there already is a text in place then it will be overwritten. @ev_text_sprite.dispose if @ev_text_sprite # Do not create a (new) sprite if the text is nil (means that we want to erase it) if text.nil? @ev_text_sprite = nil return end # Create sprite @ev_text_sprite = Sprite.new # Measure text size $txt_measure_bmp.font.size = @ev_text_font_size txt_size = $txt_measure_bmp.text_size(text) # Create & render on bitmap @ev_text_sprite.bitmap = Bitmap.new(txt_size.width, txt_size.height) @ev_text_sprite.bitmap.font.size = @ev_text_font_size @ev_text_sprite.bitmap.fill_rect(0, 0, @ev_text_sprite.bitmap.width, @ev_text_sprite.bitmap.height, NAP_EV_TEXT_CONF:

EFAULT_BG_COLOR) @ev_text_sprite.bitmap.font.color = NAP_EV_TEXT_CONF:

EFAULT_FG_COLOR @ev_text_sprite.bitmap.draw_text(0, 0, @ev_text_sprite.bitmap.width, @ev_text_sprite.bitmap.height, text, 1) end alias nap_ev_text_update update def update nap_ev_text_update return if !@ev_text_sprite nap_ev_text_render_above_head end def nap_ev_text_render_above_head @ev_text_sprite.x = x - @ev_text_sprite.width / 2 @ev_text_sprite.y = y - height - @ev_text_sprite.height @ev_text_sprite.z = z + 1 end #~ def nap_ev_text_render_topleft#~ @ev_text_sprite.x = x - width / 2#~ @ev_text_sprite.y = y - height#~ @ev_text_sprite.z = z + 1#~ endendclass Game_Event < Game_Character alias nap_ev_text_setup_page_settings setup_page_settings def setup_page_settings nap_ev_text_setup_page_settings nap_ev_text_commenttag end def nap_ev_text_commenttag for command in self.list if command.code == 108 if command.parameters[0] =~ /<#{NAP_EV_TEXT_CONF::COMMENT_TAG}.*?)>/ix sprite_character = Nap.get_character_sprite(self.id) sprite_character.nap_ev_set_text($1) if sprite_character end end end end alias nap_ev_text_erase erase def erase @ev_text_sprite.dispose if @ev_text_sprite nap_ev_text_erase endend#===============================================================================# Game Interpreter# For: Adding commands#===============================================================================class Game_Interpreter def nap_ev_text(ev_id, text) return if !SceneManager.scene.is_a?(Scene_Map) || !SceneManager.scene.spriteset SceneManager.scene.spriteset.character_sprites.find{|e| e.character.id == ev_id}.nap_ev_set_text(text) end def nap_ev_erase_text(ev_id) return if !SceneManager.scene.is_a?(Scene_Map) || !SceneManager.scene.spriteset SceneManager.scene.spriteset.character_sprites.find{|e| e.character.id == ev_id}.nap_ev_set_text(nil) endend#===============================================================================# Scene Base# For: Showing the texts when the map starts. The initial setup_page_settings# is called before the map-scene is activated (like if the player came from# the title-scene or another map) and therefor could have the wrong or none# Spriteset set.#===============================================================================#~ class Scene_Base#~ alias nap_ev_text_post_start post_start#~ def post_start#~ $game_map.events.each{ |ev| ev[1].nap_ev_text_commenttag } # array note: [0] = id, [1] = event #~ nap_ev_text_post_start#~ end#~ end#~ class Scene_Map#~ alias nap_ev_text_post_transfer post_transfer#~ def post_transfer#~ $game_map.events.each{ |ev| ev[1].nap_ev_text_commenttag } # array note: [0] = id, [1] = event #~ nap_ev_text_post_transfer#~ end#~ endclass Game_Map alias nap_ev_text_setup setup def setup(map_id) nap_ev_text_setup(map_id) $game_map.events.each{ |ev| ev[1].nap_ev_text_commenttag } # array note: [0] = id, [1] = event endend