Отображение значения переменных в игре
Информация:
Автор: DeadElf79
Версия: 1.0
Версия мейкера: VX Ace
Лицензия: свободно для использования где угодно
Описание:
Скрипт позволяет отображать значение переменных на экране.
Можно настроить:
- шрифт,
- цвет,
- текст,
- положение на экране
Внимание: в тексте обязательно должно быть сочетание символов
%d, иначе не отобразиться переменная, вылетит ошибка, взорвется пара вертолетов и так далее. Нет, я серьезно, не забывайте об этом.
Можно использовать как в скриптах (в классах-потомках Scene_Base) и на карте через "Вызов скрипта".
Скриншот:
Демка:
yadi.sk/d/C3vAhyWNiGZRq
Код:=begin
Пример использования:
1. Добавить в ивент команду "Вызвать скрипт"
2. Скопировать туда следующий код:
show_var 1,0,0,"Variables[1]=%d"
=end
class Scene_Base
FONT_NAME = ["Times New Roman","Arial"]
FONT_SIZE = 32
FONT_COLOR = {
:red => 255,
:green => 174,
:blue => 0,
:opacity => 255
}
def show_var(id,x,y,title="%d",color=nil)
@spr||=[]
@spr[id]||={
:sprite => nil,
:origtitle => "%d",
:title => "%d",
:value => nil,
:color => nil
}
@spr[id][:value] = $game_variables[id]
@spr[id][:origtitle] = title
@spr[id][:title] = format(@spr[id][:origtitle],@spr[id][:value])
@spr[id][:sprite] = Sprite.new if @spr[id][:sprite].nil?
@spr[id][:sprite].x = x
@spr[id][:sprite].y = y
@spr[id][:sprite].z = 250
@spr[id][:sprite].bitmap.dispose if !@spr[id][:sprite].bitmap.nil?
temp = Bitmap.new(640,480)
w = temp.text_size(@spr[id][:title]).width
h = temp.text_size(@spr[id][:title]).height
temp.dispose
@spr[id][:sprite].bitmap = Bitmap.new(w+16,h+16)
@spr[id][:sprite].bitmap.font.name = FONT_NAME
@spr[id][:sprite].bitmap.font.size = FONT_SIZE
if !color.is_a? Color
@spr[id][:sprite].bitmap.font.color = Color.new(FONT_COLOR[:red],
FONT_COLOR[:green],FONT_COLOR[:blue],FONT_COLOR[:opacity])
else
@spr[id][:color] = color
@spr[id][:sprite].bitmap.font.color = @spr[id][:color]
end
@spr[id][:sprite].bitmap.draw_text(Rect.new(0,0,w,h),@spr[id][:title])
end
alias before_vars_update update
def update
before_vars_update
if !@spr.nil?
for id in 1..999
next if @spr[id].nil?
if $game_variables[id]!=@spr[id][:value]
@spr[id][:value] = $game_variables[id]
@spr[id][:title] = format(@spr[id][:origtitle],@spr[id][:value])
w = @spr[id][:sprite].bitmap.text_size(@spr[id][:title])
if w.width > @spr[id][:sprite].bitmap.width
temp = Bitmap.new(640,480)
wb = temp.text_size(@spr[id][:title]).width*FONT_SIZE/16
hb = temp.text_size(@spr[id][:title]).height*FONT_SIZE/16
temp.dispose
@spr[id][:sprite].bitmap = Bitmap.new(wb+16,hb+16)
@spr[id][:sprite].bitmap.font.name = FONT_NAME
@spr[id][:sprite].bitmap.font.size = FONT_SIZE
if !@spr[id][:color].is_a? Color
@spr[id][:sprite].bitmap.font.color = Color.new(FONT_COLOR[:red],
FONT_COLOR[:green],FONT_COLOR[:blue],FONT_COLOR[:opacity])
else
@spr[id][:sprite].bitmap.font.color = @spr[id][:color]
end
@spr[id][:sprite].bitmap.draw_text(Rect.new(0,0,wb,hb),@spr[id][:title])
end
end
end# end for
end# end if
end
alias before_vars_terminate terminate
def terminate
before_vars_terminate
return if @spr.nil?
@spr.each{|spr|
spr.bitmap.dispose
spr.dispose
}
end
end
class Game_Interpreter
def show_var(*args)
SceneManager.scene.show_var(*args)
end
end