Скрипт позволяет просматривать информацию об объекте/событии/евенте, находящимся прямо перед героем по нажатию клавиши.
Внимание! Альфа версия
Кому не сложно, посмотрите демку... Что можно добавить/изменить/улучшить ? Позже планируется сделать авторегулируемое окно. В шапке скрипта нет никаких настроек и инструкций.
Суть скрипта: пользователь забивает в комментарий события текст в виде <object_info = ваш текст>
текст без кавычек. Поддерживает формативный ввод (перевод на новую строку - \n, пробел в начале строки \P - почему нельзя использовать обычный спросите вы... когда вы описываете информацию (<object_info = ваш текст>) скрипт удаляет все пробелы после = и если нужно сделать специально пробел, то используйте \P, а также \c[id], id - число, а \c - цвет текста) - в демке все это используется. Не проверял на выводе имен, переменных и прочего (как в сообщениях событий), но подозреваю, что также работает... Позже сделаю тест.
Потом, если игрок стоит напротив события (смотрит на него), то при нажатии клавиши шифт shift отображается окно.
Чтобы отобразить свое имя в заголовке окна используйте <object_info_type = имя> также без кавычек.
Версия: 0.1 альфа
Демо
Скрипт:
=begin
###############################################################################
# #
# Информация об объектах на карте #
# #
###############################################################################
Автор: Денис Кузнецов (http://vk.com/id8137201)
Версия: 0.1 alpha
Релиз от: 04.02.15
Настроек нет
=end
$Object_Info_Window = nil
class Game_Event < Game_Character
attr_reader :event
end
class Scene_Map < Scene_Base
def create_object_info_window(name, info)
$Object_Info_Window = Object_Info_Window.new(name, info) if $Object_Info_Window.nil?
end
def search_info
x, y = 0, 0
case $game_player.direction
when 2
y = 1
when 4
x = -1
when 6
x = 1
when 8
y = -1
end
event_info = $game_map.events_xy($game_player.x + x, $game_player.y + y)[0]
return if event_info.nil?
name = ""
info = ""
event_info.list.each do |index|
if index.code == 108 || index.code == 408
if index.parameters[0] =~ /<[\s]*object[\w\s]*info[\s]*=[\s]*([а-яА-Я\w\S\ ]+)[\s]*>/i
text = $1.gsub(/[\\]+n/, "\n")
text = text.gsub(/[\\]+P/, " ")
info += text
end
name = $1 if index.parameters[0] =~ /<[\s]*object[\w\s]*info[\w\s]*type[\s]*=[\s]*([а-яА-Я\w\S\ ]+)[\s]*>/i
end
end
if name == ""
name = event_info.event.name
end
create_object_info_window(name, info) if info != ""
end
alias dk_update update
def update
dk_update
if Input.press?(:SHIFT)
search_info
else
if !$Object_Info_Window.nil?
$Object_Info_Window.dispose
$Object_Info_Window = nil
end
end
end
end
class Object_Info_Window < Window_Base
def initialize(info_text, text_array)
@info_text = info_text
@text = text_array
x, y, w, h = 50, 50, 400, 300
super(x, y, w, h)
update
end
def update
super
contents.clear
draw_text(0, 0, contents_width, 24, "Информация о " + @info_text, 1)
contents.fill_rect(0, 24, contents_width, 2, normal_color)
draw_text_ex(0, 30, @text.to_s)
end
end