Код:
#==============================================================================
# +++ MOG - Имена над событиями (v1.0) +++
#==============================================================================
# Автор: Moghunter
# Ссылка: http://www.atelier-rgss.com
# Перевёл и модифицировал для SRPG: DeadElf79
#==============================================================================
# Позволяет отображать какие-нибудь надписи, к примеру имена
# над событиями (ивентами) на карте.
#==============================================================================
# Все, что вам нужно сделать, это добавить в комментарий такой текст:
#
# <Text=ИМЯ>
#
# где ИМЯ - это любой текст, в том числе и имя.
#
# К примеру (все примеры рабочие):
#
# <Text=Телепорт>
# <Text - Торговец>
# <Text =123Мария>
# Внимание! Без текста в комментарии на странице ивента скрипт не выведет ничего!
#
#==============================================================================
module MOG_EVENT_TEXT_POPUP
#В этом модуле вы можете настроить что-нибудь
#Например, шрифт
FONT_NAME = "Arial"
FONT_SIZE = 16
#его жирность
FONT_BOLD = true
#цвет
FONT_COLOR = Color.new(255,255,255)
#или приоритет отрисовки на экране
SCREEN_Z = 1
end
#==============================================================================
# ■ Game CharacterBase
#==============================================================================
class Game_CharacterBase
attr_accessor :text
attr_accessor :opacity
attr_accessor :erased
end
#==============================================================================
# ■ Game Event
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● Инициализация
#--------------------------------------------------------------------------
alias mog_event_text_initialize initialize
def initialize(map_id, event)
mog_event_text_initialize(map_id, event)
end
#--------------------------------------------------------------------------
# ● Установка настроек страницы
#--------------------------------------------------------------------------
alias mog_event_text_setup_page_settings setup_page_settings
def setup_page_settings
mog_event_text_setup_page_settings
setup_event_text
end
#--------------------------------------------------------------------------
# ● Установка текста над событием
#--------------------------------------------------------------------------
def setup_event_text
return if @list == nil
for command in @list
if command.code == 108
if command.parameters[0][/<[Tt][Ee][Xx][Tt]/]
text1=command.parameters[0][/(\=|\-)(.+)\>/]
@text =$2
end
end
end
end
end
#==============================================================================
# ■ Sprite Character Text
#==============================================================================
class Sprite_Character_Text < Sprite_Base
include MOG_EVENT_TEXT_POPUP
#--------------------------------------------------------------------------
# ● Инициализация
#--------------------------------------------------------------------------
def initialize(viewport = nil,character,sprite)
super(viewport)
text_size = character.text.to_s.split(//)
w = 32 + (FONT_SIZE / 2) * text_size.size rescue nil
w = 32 if w == nil or w < 32
self.bitmap = Bitmap.new(w,32)
self.bitmap.font.name = FONT_NAME
self.bitmap.font.size = FONT_SIZE
self.bitmap.font.bold = FONT_BOLD
self.bitmap.font.color = FONT_COLOR
self.bitmap.draw_text(0,0,self.width,self.height,character.text.to_s,1) rescue nil
update_position(character,sprite)
end
#--------------------------------------------------------------------------
# ● Удаление
#--------------------------------------------------------------------------
def dispose
super
self.bitmap.dispose
end
#--------------------------------------------------------------------------
# ● Обновление расположения
#--------------------------------------------------------------------------
def update_position(character,sprite)
if character.erased
self.visible = false
return
end
self.x = character.screen_x - self.width / 2
self.y = character.screen_y - (sprite.height + self.height)
self.z = character.screen_z + SCREEN_Z
self.visible = character.transparent == true ? false : true
self.opacity = character.opacity
end
end
#==============================================================================
# ■ Sprite Character - вот это модифицировал
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ● Инициализация
#--------------------------------------------------------------------------
#alias mog_event_text_initialize initialize
#скопировал из SRPG и дополнил
def initialize(viewport, character = nil, battler=nil)
super(viewport)
@character = character
@balloon_duration = 0
@battler = battler
@battler_visible = false
@effect_type = nil
@effect_duration = 0
@damage_duration = 0
@charging_duration = 0
@character_text = ""
create_event_text
update
end
#--------------------------------------------------------------------------
# ● Создаем текст для события
#--------------------------------------------------------------------------
def create_event_text
return if @character == nil
return if @character.text == nil
return if @character.text == @character_text
dispose_event_text
@event_text = Sprite_Character_Text.new(viewport,@character,self)
@character_text = @character.text
end
#--------------------------------------------------------------------------
# ● Удаление
#--------------------------------------------------------------------------
alias mog_event_text_dispose dispose
def dispose
mog_event_text_dispose
dispose_event_text
end
#--------------------------------------------------------------------------
# ● Удаляем текст у события
#--------------------------------------------------------------------------
def dispose_event_text
return if @event_text == nil
@event_text.dispose
@event_text = nil
end
#--------------------------------------------------------------------------
# ● Обновляем
#--------------------------------------------------------------------------
alias mog_event_text_update update
def update
mog_event_text_update
create_event_text
update_event_text
end
#--------------------------------------------------------------------------
# ● Обновляем текст над событием
#--------------------------------------------------------------------------
def update_event_text
return if @event_text == nil
@event_text.update_position(@character,self)
end
end
#Не знаю, зачем это.
$mog_rgss3_event_text_popup = true
Социальные закладки