Изменения на карте [XP]

Программист Ruby Разработчик Проект месяца 3 место Проект месяца 2 место Проект года 1 место Проект года 3 место Учитель Оратор Паладин Проект месяца 1 место 2 место Готв 3 место Организатор конкурсов Ветеран
Больше
12 года 10 мес. назад - 12 года 10 мес. назад #61155 от caveman
Долго думал, помещать ли этот скрипт в одну строчку сюда, но, так как все-таки это скрипт, то тут ему и место.

Для всяких катсцен и загадок иногда хочется менять карту прямо на ходу. Знаю, что у Эльфа в разработке адские скрипты для этого, но зато тут я, кроме мелкого скриптика, хочу показать, из чего же состоит карта в 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 значений они идут сверху вниз слева направо по его развертке.



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

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

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

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

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

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

Скрин до:
ВНИМАНИЕ: Спойлер!


Скрин после:
ВНИМАНИЕ: Спойлер!


Демопример: yadi.sk/d/CTsreMJt5mNfA
Последнее редактирование: 12 года 10 мес. назад пользователем caveman. Причина: мальчонка
Спасибо сказали: Nalia

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
12 года 10 мес. назад - 12 года 10 мес. назад #61157 от strelokhalfer
Походу что то затерялось в глубине твоей пещеры)

[IMG

Куда мальчонку дел?

"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Последнее редактирование: 12 года 10 мес. назад пользователем strelokhalfer.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Разработчик Проект месяца 3 место Проект месяца 2 место Проект года 1 место Проект года 3 место Учитель Оратор Паладин Проект месяца 1 место 2 место Готв 3 место Организатор конкурсов Ветеран
Больше
12 года 10 мес. назад #61158 от caveman
Дико извиняюсь, это был проект еще с тех доисторических времен, когда я новые чары добавлял в папку Common Files, я и забыл, что такое делал когда-то :)

вот мальчонка!
yadi.sk/d/CTsreMJt5mNfA

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
12 года 10 мес. назад #61159 от strelokhalfer
Какой же он... страшненький...
Видать от жары лавы расплавился)

"Стрелок, что-то ты неочень похож на свой аватар..."(с)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Разработчик Проект месяца 3 место Проект месяца 2 место Проект года 1 место Проект года 3 место Учитель Оратор Паладин Проект месяца 1 место 2 место Готв 3 место Организатор конкурсов Ветеран
Больше
12 года 10 мес. назад #61160 от caveman
не помню, откуда он у меня, может из 2003 мейкера попался)))
событие сработало?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
12 года 10 мес. назад #61161 от strelokhalfer
Ага, на событиях не все сделать можно.

"Стрелок, что-то ты неочень похож на свой аватар..."(с)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Разработчик Проект месяца 3 место Проект месяца 2 место Проект года 1 место Проект года 3 место Учитель Оратор Паладин Проект месяца 1 место 2 место Готв 3 место Организатор конкурсов Ветеран
Больше
12 года 10 мес. назад #61162 от caveman
Тебе партийное задание - посмотреть как оно работает на VX ACE (про набор tile_id) ^_^

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
12 года 10 мес. назад #61163 от strelokhalfer
Уже. Не работает. Ну, одно из различий, та не i a z, но заменив все равно не работает, но и не вылетает)

"Стрелок, что-то ты неочень похож на свой аватар..."(с)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Разработчик Проект месяца 3 место Проект месяца 2 место Проект года 1 место Проект года 3 место Учитель Оратор Паладин Проект месяца 1 место 2 место Готв 3 место Организатор конкурсов Ветеран
Больше
12 года 10 мес. назад #61164 от caveman
код то похож, суть там в tile_id (которым и посвящена большая часть поста), они наверняка отличаются от XP

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
12 года 10 мес. назад #61165 от strelokhalfer
Скорее всего это так

"Стрелок, что-то ты неочень похож на свой аватар..."(с)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Разработчик Проект месяца 3 место Проект месяца 2 место Проект года 1 место Проект года 3 место Учитель Оратор Паладин Проект месяца 1 место 2 место Готв 3 место Организатор конкурсов Ветеран
Больше
12 года 10 мес. назад #61166 от caveman
forums.rpgmakerweb.com/index.php?/topic/2829-autotile-tile-ids/
dl.dropboxusercontent.com/u/68527961/RMV.../Autotile%20Data.htm

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
12 года 4 мес. назад #66657 от DeadElf79
Не стал оформлять тему в "Проектах", решил положить архивчик сюда. Ловите!
Пример работы с tile_id и изменением карты из события был построен на основе "Крестиков-Ноликов".
Сразу предупреждаю - не доработал механику игры, работает только на "Легком" уровне сложности, зато - работает. Кто хочет, может взять и допилить, ресурсы открыты)) РТП не требуется! вроде как.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Оратор Паладин Даритель Стимкея Проект месяца 1 место Проект месяца 2 место Проект месяца 3 место 2 место Готв 2 место За 3 место на конкурсе маппинга
Больше
12 года 4 мес. назад #66658 от Sypherot

DeadElf79 пишет: Не стал оформлять тему в "Проектах", решил положить архивчик сюда. Ловите!
Пример работы с tile_id и изменением карты из события был построен на основе "Крестиков-Ноликов".
Сразу предупреждаю - не доработал механику игры, работает только на "Легком" уровне сложности, зато - работает. Кто хочет, может взять и допилить, ресурсы открыты)) РТП не требуется! вроде как.

Занятно :)
Сам заюзал этот скрипт в своем проекте, когда потребовалось до поры скрыть проход в одну из комнат в доме.

Всего хорошего, и спасибо за рыбу

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.127 секунд
Работает на Kunena форум