- Сообщений: 469
- Спасибо получено: 850
Картинка в картинке - вид на другую карту
Информация:
Автор: EvilCat
Версия мейкера: VX ACE.
Тип: Новый элемент
Описание:
Пока игрок ходит по карте, он может видеть события другой карты в небольшом прямоугольнике. События другой карты также работают - персонажи ходят, меняются в соответствии с переключателями, выполняют команды... Можно применять в различных механиках, когда стоишь в одном месте и влияешь на события совершенно в другом (или подсматриваешь).
Особенности:
- Вид включается и отключается кнопкой F5
- При переходе между локациями сохраняется состояние видимости вида, а в битвах и меню он скрывается.
Установка:
1. Добавить в список скриптов новую страницу с названием PiP и кодом, находящимся под спойлером.
2. К сожалению, чтобы научить Мейкер обрабатывать две карты сразу, необходимо было перевести несколько стандартных классов и модулей с глобальной переменной $game_map на локальную @game_map, содержащую контекстную карту, а также изменить некоторые методы, чтобы они работали с ограниченной областью, а не всем экраном сразу. Поэтому следует также заменить содержимое нескольких стандартных страниц с кодом в соответствии со спойлерами ниже.
3. Необязательная настройка.
3.1. В строчках №№ 62-63 страницы "PiP" находятся настройки числа фреймов для появления и отключения дополнительного интерфейса и адрес графического файла, использующегося в качестве интерфейса.
3.2. В строчках №№ 65-69 той же страницы находятся параметры прямоугольной области, выделенной под вид на другую карту.
3.3. В строчке № 71 находится изначальное состояние интерфейса: видим или скрыт; а в строчек № 72 - код кнопки, которая переключает.
4. Готово!
Код:
(остальные страницы см. в следующих сообщениях)
Что хотелось бы улучшить:
Что хотелось бы сделать, но сейчас нет времени, так что помочь принимается:
- Удобство использования с другими скриптами, например, не константные значения файла интерфейса и субкарты.
- Перемещение вида в другой угол экрана, если персонаж оказывается под ним и перестаёт быть виден.
- Возможность нескольких разных видов одновременно и по отдельности.
- Возможность отключить обработку карты в виде, чтобы её события не действовали, пока не видны (или пока не нужно, чтобы они действовали).
- Лучшая презентация: огонь явно не подходит как пример рамки интерфейса %)
- Более адекватное скрывание вида в бою.
- Возможность, чтобы вид не скрывался в бою и на других экранах.
- Возможность убрать отключение-включение вида по кнопки.
- Возможность управляемому персонажу находиться на субкарте, а также правильно показывать на субкарте другие действия (транспорт, ходящая гуськом партия).
Что хотелось бы сделать, но скорее всего невозможно:
- Такое же постепенное появление Вьюпорта с видом, как и появление интерфейса. Но похоже, что Вьюпорты не поддерживают прозрачность.
- Чтобы все скрипты дополнения были на одной компактной страницы, а не нуждались в замене стандартных страниц. Но, кажется, необходимые изменения в них слишком точечные и разбросанные, чтобы это было возможно.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Жуть болотная, на лапках, в тапках и с пулемётом...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Допустим, в Game_CharacterBase тридцать-сорок отсылок к $game_map в самых разных методах. Большая часть была заменена на @game_map. Чтобы сделать это не заменой страницы кода, а дополнением, пришлось бы, во-первых, переопределить больше половины методов, во-вторых, эти переопределённые методы будут просто копиями с парой заменённых символов. Разница с заменой оригинальной кодовой страницы получается очень невелика. Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Жуть болотная, на лапках, в тапках и с пулемётом...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
В таком случае эти файлы, содержащие в принципе копипасту половины оригинального кода с мелкими изменениями, необходимо размещать до всех других скриптов, поскольку если какой-нибудь скрипт сделает "alias :стандартный_метод :моя_копия_стандартного_метода", а в его новом стандартном_методе сделать "super; что-то от себя", а потом Game_BaseCharacter_EvilCat тупо переопределит стандартный_метод, то функционал того скрипта перестанет работать.
Кроме того, при отладке написания скриптов в присутствии такого дублирования могут возникнуть трудности с тем, куда смотреть: в Game_BaseCharacter или в Game_BaseCharacter_EvilCat, потому что придётся помнить, которые методы были перегружены в последнем.
Мне кажется, легче просто заменить оригинальные классы.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Жуть болотная, на лапках, в тапках и с пулемётом...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
"Копипасту половины оригинального кода" можно и нужно запихнуть в некий аналог "ядра"
Научи, пожалуйста.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Жуть болотная, на лапках, в тапках и с пулемётом...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
victorscripts.wordpress.com/rpg-maker-vx-ace/ (скрипты отдельно, базовый модуль - отдельно, но требуется для работы).
Разберешься с этим - натолкнет на правильные мысли в нужном направлении
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Можно узнать )
-как изменить размеры окна ?
-как поместить окно в другой угол ?
-можно ли чтобы окно отслеживало определённый евент и передвигало изображение в окне за ним ?
-можно ли включить окно через переменные или переключатели и также его выключить?
-есть ли возможность включить несколько окон одновременно ))?
-как сделать чтобы в окне отображался главный герой если он стоит в том месте где в окне отображается изображение ?
-можно ли чтобы окно переключалась на определённые евенты (скажем я нажал на кнопку и в окне показывается как где то открылась дверь потом я нажал на другую кнопку и в окне показывается уже другое изображение но дверь в предыдущем месте остаётся открытой )
-возможно сделать чтобы изображение в окне переключалось по нажатию кнопки на клавиатуре или по выбору из меню?
- как сделать чтобы в окне отображался не верхней левый угол а другое место на карте?
- как заменить фон с огнём или убрать его ?
- возможно ли менять фон переменными или переключателями?
Слишком много хочу
Большое спасибо за скрипт !!!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Jas6666 пишет: EvilCat работа над скриптом продолжается или это уже полностью готовый вариант?
Увы, с моей стороны не продолжается - я сделала и залила много обновлений для браузерки, в которой участвую, а вот на Мейкер времени не хватило -_- Сейчас постараюсь вспомнить ответы на твои вопросы %)
-как изменить размеры окна ?
-как поместить окно в другой угол ?
На странице "PiP" скриптов есть такие строчки:
SUBVIEW_X=10
SUBVIEW_Y=10
SUBVIEW_WIDTH=200
SUBVIEW_HEIGHT=200
Первые два параметра - координаты левого верхнего угла окна, а вторые два - его ширина и высота.
Об этом я не подумала... Кажется, сейчас окно показывает строго левый верхний угол. Сейчас я не могу сесть и разобраться, так что вопрос к знатокам, как двигать камеру скриптами независимо от персонажа? %)-можно ли чтобы окно отслеживало определённый евент и передвигало изображение в окне за ним ?
- как сделать чтобы в окне отображался не верхней левый угол а другое место на карте?
Объект окна предусматривает методы toggle (переключение видимости), set_visible (сделать показываемым) и set_invisible (сделать невидимым). В событиях можно использовать команду Script, которая задействует эти методы. Если я не ошибаюсь, написать нужно просто PiPHud.toggle (или другой нужный метод).-можно ли включить окно через переменные или переключатели и также его выключить?
Не в данной версии скрипта, но технически ограничений нет - если кто-то поможет с доработкой кода, это будет возможным %)-есть ли возможность включить несколько окон одновременно ))?
Увы, это тоже требует серьёзной доработки кода.-как сделать чтобы в окне отображался главный герой если он стоит в том месте где в окне отображается изображение ?
Если подойдут знатоки и скажут, как именно задавать координаты камеры, это можно будет сделать легко %) Что касается открытых дверей, то это вообще исключительно вопрос переменных и триггеров - видимость двери в окне никак не помогает и не мешает ей быть открытой в соответствии с триггерами.-можно ли чтобы окно переключалась на определённые евенты (скажем я нажал на кнопку и в окне показывается как где то открылась дверь потом я нажал на другую кнопку и в окне показывается уже другое изображение но дверь в предыдущем месте остаётся открытой )
Насчёт выбора в меню не знаю, как у тебя устроены меню... Но что касается кнопок, то в коде PiP есть такое место:-возможно сделать чтобы изображение в окне переключалось по нажатию кнопки на клавиатуре или по выбору из меню?
def self.update
toggle if Input.trigger?(TOGGLE_KEY)
refresh
@submap.update(true)
@submap_view.update
end
...а TOGGLE_KEY задана сверху как:
TOGGLE_KEY=:F5
Можно сделать различные реакции и на другие кнопки, типа:
<какой_нибудь_метод> if Input.trigger?(:F10)
Спрайт с огнём задан здесь:- как заменить фон с огнём или убрать его ?
HUD_FILE='Graphics/Titles2/Fire'
Можно указать другой файл. В данной версии скрипта я не предусмотрела отсутствия спрайта -_-
Сейчас подобного не предусмотрено, но скорее всего его можно менять простой скриптовой командой:- возможно ли менять фон переменными или переключателями?
PiPHud.expose_sprite.bitmap=Bitmap.new('<адрес файла>')
Если перед этим добавить в модуль PiPHud:
def expose_sprite
@sprite
end
Слишком много хочу
Большое спасибо за скрипт !!!
Рада, если хотя бы чем-то он поможет! %) И ты всё правильно хочешь. С такой механикой можно много интересного сделать, жаль только, что времени в сутках так мало -_-
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
с этим скриптом можно такое наворотить в создании игр даже сейчас ))) а что можно будет когда он будет со всякими примочками
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пару небольших замечаний:
лучше все это дело при старте игры сделать отключенным, запустил не создав вторую карту получил от мейкера ошибку, по умолчанию как раз таки INITIALLY_VISIBLE=true.
Размеры окна советую делать кратные 32, для определенного количества тайлов.
Персонаж в окне вообще не отображается (можно и текущую карту туда засунуть).
Нужна прозрачность окошка.
Есть вариант: сделать как игровой экран только с размерами не 580 × 444 а меньше.
Было бы забавно переключатся между экранами расширяя на весь экран свернутый и сворачивая текущий)))
Можно еще для рыбалки скрипт использовать смотреть когда рыба подплывает и подсекать)))
Или для камеры слежения, если стелс игра.
Все заносить начинает, значит спать пора!
Покопаюсь на досуге, может чего и получится!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Удалил огненное оформление, добавил возможность вызывать нужную карту через скрипты в эвентах - используйте change_pip_map(id)
Вроде работает...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
