Войти на сайт

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

ТЕМА: Изменения на карте [XP]

Изменения на карте [XP] 11 года 5 мес. назад #61155

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 2 местоПроект месяца 1 место2 место ГотвРазработчикПроект месяца 3 местоУчительПроект года 3 место3 местоПроект года 1 местоПрограммист Ruby
Долго думал, помещать ли этот скрипт в одну строчку сюда, но, так как все-таки это скрипт, то тут ему и место.

Для всяких катсцен и загадок иногда хочется менять карту прямо на ходу. Знаю, что у Эльфа в разработке адские скрипты для этого, но зато тут я, кроме мелкого скриптика, хочу показать, из чего же состоит карта в XP.

Доп. информацию можно погуглить, и, может быть кто-то напишет подобное и для ACE.

Итак, приступим.

Как известно, данные карты состоят из трехмерной таблицы data[x, y, i], где x, y - координаты тайла на карте, а i - слой (0, 1 или 2)
В эту таблицу записываются данные тайлсета карты - некие tile_id.

Разберем подробнее, какие значения принимают эти самые tile_id. Создадим карту и посмотрим на данные тайлсета слева. Мы имеем:
1) Первый верхний ряд - это тайл-пустышка (blank) и семь автотайлов.
2) Далее идут обычные тайлы.

Теперь финт ушами - кликнем дважды на какой-нибудь автотайл, и появится окошко Autotile Expansion с полной разверткой автотайла.

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Вернемся к 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 значений они идут сверху вниз слева направо по его развертке.

exp.png


В помощь я заскринил картинку, и теперь, для вычисления нужного tile_id у автотайла смотрим на картинку и считаем:
tile_id = 48*i + номер_на_картинке, где i - номер автотайла (0 - для пустого)

C 384го номера идут по порядку сверху вниз слева направо обычные тайлы тайлсета.

Теперь можно со знанием дела воспользоваться новым методом в $game_map
class Game_Map
  def set_tile(x, y, i, tile_id)
    data[x,y,i] = tile_id
  end
end

Дергается код из события (третий таб в конце, вызов скрипта), например,
$game_map.set_tile(6, 7, 0, 64)

Как все это можно применить? Тут все зависит от фантазии разработчика. Например, можно сделать выдвигающийся мост или "расколоть землю" землетрясением.

В помощь я прикладываю демку, в которой герой, нажав на кнопку, получает переход с одного берега лавовой реки на другой. Тут как раз используются автотайлы, потому событие довольно большое.

Скрин до:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Скрин после:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Демопример: yadi.sk/d/CTsreMJt5mNfA
Последнее редактирование: 11 года 5 мес. назад от caveman. Причина: мальчонка
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Nalia

Изменения на карте [XP] 11 года 5 мес. назад #61157

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Программист Ruby2 место Сбитая кодировкаОрганизатор конкурсовДаритель СтимкеяПереводчик2 место
Походу что то затерялось в глубине твоей пещеры)


Куда мальчонку дел?
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 11 года 5 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61158

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 2 местоПроект месяца 1 место2 место ГотвРазработчикПроект месяца 3 местоУчительПроект года 3 место3 местоПроект года 1 местоПрограммист Ruby
Дико извиняюсь, это был проект еще с тех доисторических времен, когда я новые чары добавлял в папку Common Files, я и забыл, что такое делал когда-то :)

вот мальчонка!
yadi.sk/d/CTsreMJt5mNfA
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61159

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Программист Ruby2 место Сбитая кодировкаОрганизатор конкурсовДаритель СтимкеяПереводчик2 место
Какой же он... страшненький...
Видать от жары лавы расплавился)
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61160

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 2 местоПроект месяца 1 место2 место ГотвРазработчикПроект месяца 3 местоУчительПроект года 3 место3 местоПроект года 1 местоПрограммист Ruby
не помню, откуда он у меня, может из 2003 мейкера попался)))
событие сработало?
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61161

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Программист Ruby2 место Сбитая кодировкаОрганизатор конкурсовДаритель СтимкеяПереводчик2 место
Ага, на событиях не все сделать можно.
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61162

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 2 местоПроект месяца 1 место2 место ГотвРазработчикПроект месяца 3 местоУчительПроект года 3 место3 местоПроект года 1 местоПрограммист Ruby
Тебе партийное задание - посмотреть как оно работает на VX ACE (про набор tile_id) ^_^
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61163

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Программист Ruby2 место Сбитая кодировкаОрганизатор конкурсовДаритель СтимкеяПереводчик2 место
Уже. Не работает. Ну, одно из различий, та не i a z, но заменив все равно не работает, но и не вылетает)
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61164

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 2 местоПроект месяца 1 место2 место ГотвРазработчикПроект месяца 3 местоУчительПроект года 3 место3 местоПроект года 1 местоПрограммист Ruby
код то похож, суть там в tile_id (которым и посвящена большая часть поста), они наверняка отличаются от XP
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61165

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Программист Ruby2 место Сбитая кодировкаОрганизатор конкурсовДаритель СтимкеяПереводчик2 место
Скорее всего это так
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 11 года 5 мес. назад #61166

  • caveman
  • caveman аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1274
  • Спасибо получено: 1307
  • Проект месяца 2 местоПроект месяца 1 место2 место ГотвРазработчикПроект месяца 3 местоУчительПроект года 3 место3 местоПроект года 1 местоПрограммист Ruby
forums.rpgmakerweb.com/index.php?/topic/2829-autotile-tile-ids/
dl.dropboxusercontent.com/u/68527961/RMV.../Autotile%20Data.htm

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

Изменения на карте [XP] 10 года 10 мес. назад #66657

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • Проект месяца 1 местоПроект месяца 2 местоОрганизатор конкурсов3 местоПрограммист RubyУчительПисатель 3 место1 место в ГотвВетеран
Не стал оформлять тему в "Проектах", решил положить архивчик сюда. Ловите!
Пример работы с tile_id и изменением карты из события был построен на основе "Крестиков-Ноликов".
Сразу предупреждаю - не доработал механику игры, работает только на "Легком" уровне сложности, зато - работает. Кто хочет, может взять и допилить, ресурсы открыты)) РТП не требуется! вроде как.
Администратор запретил публиковать записи гостям.

Изменения на карте [XP] 10 года 10 мес. назад #66658

  • Sypherot
  • Sypherot аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1239
  • Спасибо получено: 1044
  • ОраторДаритель Стимкея2 место ГотвПроект месяца 3 местоПроект месяца 2 местоПаладинПроект месяца 1 место2 место За 3 место на конкурсе маппинга
DeadElf79 пишет:
Не стал оформлять тему в "Проектах", решил положить архивчик сюда. Ловите!
Пример работы с tile_id и изменением карты из события был построен на основе "Крестиков-Ноликов".
Сразу предупреждаю - не доработал механику игры, работает только на "Легком" уровне сложности, зато - работает. Кто хочет, может взять и допилить, ресурсы открыты)) РТП не требуется! вроде как.
Занятно :)
Сам заюзал этот скрипт в своем проекте, когда потребовалось до поры скрыть проход в одну из комнат в доме.
Всего хорошего, и спасибо за рыбу
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.215 секунд