- Сообщений: 1274
- Спасибо получено: 1307
Изменения на карте [XP]
Для всяких катсцен и загадок иногда хочется менять карту прямо на ходу. Знаю, что у Эльфа в разработке адские скрипты для этого, но зато тут я, кроме мелкого скриптика, хочу показать, из чего же состоит карта в XP.
Доп. информацию можно погуглить, и, может быть кто-то напишет подобное и для ACE.
Итак, приступим.
Как известно, данные карты состоят из трехмерной таблицы data[x, y, i], где x, y - координаты тайла на карте, а i - слой (0, 1 или 2)
В эту таблицу записываются данные тайлсета карты - некие tile_id.
Разберем подробнее, какие значения принимают эти самые tile_id. Создадим карту и посмотрим на данные тайлсета слева. Мы имеем:
1) Первый верхний ряд - это тайл-пустышка (blank) и семь автотайлов.
2) Далее идут обычные тайлы.
Теперь финт ушами - кликнем дважды на какой-нибудь автотайл, и появится окошко Autotile Expansion с полной разверткой автотайла.
Offtop: если вам для карты мало семи автотайлов, то это неплохой способ добавить еще несколько:
- делаем принтскрин открытого окна с разверткой нужного автотайла
- вырезаем, сохраняем, добавляем развертку вниз к нашему тайлсету (ширина развертки = ширине тайлсета (8 тайлов), высота - 6 тайлов)
- настраиваем приоритеты и проходимости по вкусу
Вернемся к tile_id
Итак, все происходит вот как:
На каждый автотайл, включая blank, забито 48 значений tile_id (8*6, как видно из оффтопика), то есть:
blank - 0-47
1й - 48-95
2й - 96-143
3й - 144-191
4й - 192-239
5й - 240-287
6й - 288-335
7й - 336-383
Внутри пачки из 48 значений они идут сверху вниз слева направо по его развертке.
В помощь я заскринил картинку, и теперь, для вычисления нужного tile_id у автотайла смотрим на картинку и считаем:
tile_id = 48*i + номер_на_картинке, где i - номер автотайла (0 - для пустого)
C 384го номера идут по порядку сверху вниз слева направо обычные тайлы тайлсета.
Теперь можно со знанием дела воспользоваться новым методом в $game_map
Дергается код из события (третий таб в конце, вызов скрипта), например,
Как все это можно применить? Тут все зависит от фантазии разработчика. Например, можно сделать выдвигающийся мост или "расколоть землю" землетрясением.
В помощь я прикладываю демку, в которой герой, нажав на кнопку, получает переход с одного берега лавовой реки на другой. Тут как раз используются автотайлы, потому событие довольно большое.
Скрин до:
Скрин после:
Демопример: yadi.sk/d/CTsreMJt5mNfA
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
вот мальчонка!
yadi.sk/d/CTsreMJt5mNfA
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
Видать от жары лавы расплавился)
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
событие сработало?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- strelokhalfer
-
- Не в сети
- Живу я здесь
-
- Знатный грамотей
- Сообщений: 1640
- Спасибо получено: 1080
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
dl.dropboxusercontent.com/u/68527961/RMV.../Autotile%20Data.htm
скрипт почти такой же, но подбирать tile_id для замены будет тяжелее
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пример работы с tile_id и изменением карты из события был построен на основе "Крестиков-Ноликов".
Сразу предупреждаю - не доработал механику игры, работает только на "Легком" уровне сложности, зато - работает. Кто хочет, может взять и допилить, ресурсы открыты)) РТП не требуется! вроде как.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
ЗанятноDeadElf79 пишет: Не стал оформлять тему в "Проектах", решил положить архивчик сюда. Ловите!
Пример работы с tile_id и изменением карты из события был построен на основе "Крестиков-Ноликов".
Сразу предупреждаю - не доработал механику игры, работает только на "Легком" уровне сложности, зато - работает. Кто хочет, может взять и допилить, ресурсы открыты)) РТП не требуется! вроде как.
Сам заюзал этот скрипт в своем проекте, когда потребовалось до поры скрыть проход в одну из комнат в доме.
Всего хорошего, и спасибо за рыбу
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
