Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Картинка в картинке - вид на другую карту

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74770

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
Картинка в картинке [VX Ace]

Информация:

Автор: 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. Готово!

Код:
страница PiP [ Нажмите, чтобы развернуть ]


страница Game_Map [ Нажмите, чтобы развернуть ]


(остальные страницы см. в следующих сообщениях)

Что хотелось бы улучшить:
Что хотелось бы сделать, но сейчас нет времени, так что помочь принимается:
- Удобство использования с другими скриптами, например, не константные значения файла интерфейса и субкарты.
- Перемещение вида в другой угол экрана, если персонаж оказывается под ним и перестаёт быть виден.
- Возможность нескольких разных видов одновременно и по отдельности.
- Возможность отключить обработку карты в виде, чтобы её события не действовали, пока не видны (или пока не нужно, чтобы они действовали).
- Лучшая презентация: огонь явно не подходит как пример рамки интерфейса %)
- Более адекватное скрывание вида в бою.
- Возможность, чтобы вид не скрывался в бою и на других экранах.
- Возможность убрать отключение-включение вида по кнопки.
- Возможность управляемому персонажу находиться на субкарте, а также правильно показывать на субкарте другие действия (транспорт, ходящая гуськом партия).

Что хотелось бы сделать, но скорее всего невозможно:
- Такое же постепенное появление Вьюпорта с видом, как и появление интерфейса. Но похоже, что Вьюпорты не поддерживают прозрачность.
- Чтобы все скрипты дополнения были на одной компактной страницы, а не нуждались в замене стандартных страниц. Но, кажется, необходимые изменения в них слишком точечные и разбросанные, чтобы это было возможно.
Вложения:
Последнее редактирование: 9 года 6 мес. назад от EvilCat.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, DeadElf79, Ren310, Jas6666, MaltonTheWarrior, zmeelov66, KageDesu

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74771

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
страница Game_CharacterBase [ Нажмите, чтобы развернуть ]


страница Game_Character [ Нажмите, чтобы развернуть ]


страница Game_Vehicle [ Нажмите, чтобы развернуть ]


страница Game_Event [ Нажмите, чтобы развернуть ]
Последнее редактирование: 9 года 6 мес. назад от EvilCat.
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74772

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
страница Spriteset_Map [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74786

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • Организатор конкурсовПроект месяца 1 место2 место Сбитая кодировкаПобедитель Сбитой кодировки3 место ГотвПроект месяца 3 местоПрограммист JavaScript Писатель 3 место3 местоПроект месяца 2 место
Собственно, один вопрос: зачем заменять имеющиеся страницы, если можно всё это добавлять в материалы? А так - спасибо, поизучаем :)
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74789

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
Оформить так было бы здорово (это одно из пожеланий), но не представляется возможным :\ Допустим, в Game_CharacterBase тридцать-сорок отсылок к $game_map в самых разных методах. Большая часть была заменена на @game_map. Чтобы сделать это не заменой страницы кода, а дополнением, пришлось бы, во-первых, переопределить больше половины методов, во-вторых, эти переопределённые методы будут просто копиями с парой заменённых символов. Разница с заменой оригинальной кодовой страницы получается очень невелика.
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74792

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • Организатор конкурсовПроект месяца 1 место2 место Сбитая кодировкаПобедитель Сбитой кодировки3 место ГотвПроект месяца 3 местоПрограммист JavaScript Писатель 3 место3 местоПроект месяца 2 место
Если помнить, что заменял, то да. Если скрипт предназначен для "чайников" - лучше даже небольшие изменения выносить отдельно, чтобы они были очевидны, иначе потом будет много вопросов, с чем там что-то конфликтует.
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79, yuryol

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74800

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
Представляю себе такой случай. Допустим, будет страница с кодом Game_BaseCharacter_EvilCat, где в классе Game_BaseCharacter будут переопределены 30 методов, внутри которых будет копипаста из оригинального класса, только с заменой $game_map на @game_map. По другому, с alias'ами, не получится, потому что не добавлены дополнительные действия, а только изменены отдельные строчки.

В таком случае эти файлы, содержащие в принципе копипасту половины оригинального кода с мелкими изменениями, необходимо размещать до всех других скриптов, поскольку если какой-нибудь скрипт сделает "alias :стандартный_метод :моя_копия_стандартного_метода", а в его новом стандартном_методе сделать "super; что-то от себя", а потом Game_BaseCharacter_EvilCat тупо переопределит стандартный_метод, то функционал того скрипта перестанет работать.

Кроме того, при отладке написания скриптов в присутствии такого дублирования могут возникнуть трудности с тем, куда смотреть: в Game_BaseCharacter или в Game_BaseCharacter_EvilCat, потому что придётся помнить, которые методы были перегружены в последнем.

Мне кажется, легче просто заменить оригинальные классы.
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74801

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • Организатор конкурсовПроект месяца 1 место2 место Сбитая кодировкаПобедитель Сбитой кодировки3 место ГотвПроект месяца 3 местоПрограммист JavaScript Писатель 3 место3 местоПроект месяца 2 место
"Копипасту половины оригинального кода" можно и нужно запихнуть в некий аналог "ядра", во-первых. А насчёт "отладки" - господи, Ctrl+Shift+F вам в помощь :)
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74802

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
"Копипасту половины оригинального кода" можно и нужно запихнуть в некий аналог "ядра"

Научи, пожалуйста.
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74804

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • Организатор конкурсовПроект месяца 1 место2 место Сбитая кодировкаПобедитель Сбитой кодировки3 место ГотвПроект месяца 3 местоПрограммист JavaScript Писатель 3 место3 местоПроект месяца 2 место
Я имею в виду - ту часть кода, которая должна быть выше всех, есть смысл выделять в отдельный блок с пометкой "ставить выше всех". Тогда как раз вопрос с конфликтами будет решаться максимально быстро.
Жуть болотная, на лапках, в тапках и с пулемётом...
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 6 мес. назад #74805

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • УчительОрганизатор конкурсовПроект месяца 2 местоВетеран1 место в Готв3 местоПисатель 3 местоПрограммист RubyПроект месяца 1 место
EvilCat, можешь посмотреть на то, как реализовано все хотя у этого парня:
victorscripts.wordpress.com/rpg-maker-vx-ace/ (скрипты отдельно, базовый модуль - отдельно, но требуется для работы).
Разберешься с этим - натолкнет на правильные мысли в нужном направлении ^_^
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 3 мес. назад #76992

  • Jas6666
  • Jas6666 аватар
  • Вне сайта
  • Мастер
  • Сообщений: 229
  • Спасибо получено: 205
  • Даритель СтимкеяУчитель3 место
EvilCat работа над скриптом продолжается или это уже полностью готовый вариант?
Можно узнать )
-как изменить размеры окна ?
-как поместить окно в другой угол ?
-можно ли чтобы окно отслеживало определённый евент и передвигало изображение в окне за ним ?
-можно ли включить окно через переменные или переключатели и также его выключить?
-есть ли возможность включить несколько окон одновременно ))?
-как сделать чтобы в окне отображался главный герой если он стоит в том месте где в окне отображается изображение ?
-можно ли чтобы окно переключалась на определённые евенты (скажем я нажал на кнопку и в окне показывается как где то открылась дверь потом я нажал на другую кнопку и в окне показывается уже другое изображение но дверь в предыдущем месте остаётся открытой )
-возможно сделать чтобы изображение в окне переключалось по нажатию кнопки на клавиатуре или по выбору из меню?
- как сделать чтобы в окне отображался не верхней левый угол а другое место на карте?
- как заменить фон с огнём или убрать его ?
- возможно ли менять фон переменными или переключателями?
Слишком много хочу :laugh:
Большое спасибо за скрипт !!!
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 3 мес. назад #76993

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
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
Слишком много хочу :laugh:
Большое спасибо за скрипт !!!

Рада, если хотя бы чем-то он поможет! %) И ты всё правильно хочешь. С такой механикой можно много интересного сделать, жаль только, что времени в сутках так мало -_-
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Jas6666

Картинка в картинке - вид на другую карту 9 года 3 мес. назад #76999

  • Jas6666
  • Jas6666 аватар
  • Вне сайта
  • Мастер
  • Сообщений: 229
  • Спасибо получено: 205
  • Даритель СтимкеяУчитель3 место
EvilCat почему бы тебе не попросить помощи на этом форуме в помощи и на форуме нейтральной полосы,
с этим скриптом можно такое наворотить в создании игр даже сейчас ))) а что можно будет когда он будет со всякими примочками :)
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 3 мес. назад #77000

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
Я уже попросила помощи на IRC-канале... Каюсь, я гейм-дизайнер больше, чем программист, так что если без меня скрипт доведут до ума, я не расстроюсь, а обрадуюсь %)
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 3 мес. назад #77728

  • Arykray
  • Arykray аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 595
  • Спасибо получено: 52
Интересный скрипт, как волшебное зеркало которое позволяет наблюдать за другими мирами.

Пару небольших замечаний:
лучше все это дело при старте игры сделать отключенным, запустил не создав вторую карту получил от мейкера ошибку, по умолчанию как раз таки INITIALLY_VISIBLE=true.
Размеры окна советую делать кратные 32, для определенного количества тайлов.

Персонаж в окне вообще не отображается (можно и текущую карту туда засунуть).
Нужна прозрачность окошка.
Есть вариант: сделать как игровой экран только с размерами не 580 × 444 а меньше.
Было бы забавно переключатся между экранами расширяя на весь экран свернутый и сворачивая текущий)))
Можно еще для рыбалки скрипт использовать смотреть когда рыба подплывает и подсекать)))
Или для камеры слежения, если стелс игра.

Все заносить начинает, значит спать пора!

Покопаюсь на досуге, может чего и получится!
Чем сложнее задача - тем проще ее не решать.

Последнее редактирование: 9 года 3 мес. назад от Arykray.
Администратор запретил публиковать записи гостям.

Картинка в картинке - вид на другую карту 9 года 2 мес. назад #77974

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Проект месяца 1 местоОраторВетеранПроект месяца 3 местоПрограммист JavaScript Проект месяца 2 местоПрограммист RubyПаладинРазработчикДаритель Стимкея
Гляньте эту версию: Яндекс


Удалил огненное оформление, добавил возможность вызывать нужную карту через скрипты в эвентах - используйте change_pip_map(id)

Вроде работает...
Последнее редактирование: 9 года 2 мес. назад от DK. Причина: забыл ссылку :)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: MaltonTheWarrior, EvilCat

Картинка в картинке - вид на другую карту 9 года 2 мес. назад #77979

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 2 место Учитель3 место Готв
Спасибо огромное за доработку! %)
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.533 секунд