Скрипт для сравнения тайлов

Больше
9 года 11 мес. назад #92265 от Paranoid
В общем такая тема. Пока я использовал скрипт Tile Swap у меня возникла мысль: "А можно ли сравнить тайл по координтам с тайлом в тайлсете?". И вот мне хотелось бы узнать у опытных скриптеров возможно ли это сделать? И если возможно, хотелось бы скрипт, с помощью которого, можно было бы это провернуть.
Вообще желательно для Асе, но и для МВ такой бы тоже не помешал, я думаю.

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 11 мес. назад #92266 от DeadElf79
Сравнить как изображение? В эйсе еще можно, в мв - не уверен, что жс позволит читать попиксельно.

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

1 место в Готв 3 место Учитель Разработчик 3 место Готв Ветеран Писатель 2 место Тестер
Больше
9 года 11 мес. назад #92267 от Демий
Я так понял, Параноиду надо выяснить, а находится ли в клетке 3,4 например, тайл воды?

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

Больше
9 года 11 мес. назад - 9 года 11 мес. назад #92268 от Paranoid
Ну не как изображение, а что-то типа ID тайлов. Не знаю есть ли этот ID вообще.
Просто в тайл свапе же можно поставить или удалить определенный тайл, так почему нельзя его сравнить с тем что уже есть на карте?

Нет, Демий, не совсем. Вот есть у меня на карте дерево в 1 квадрат, а в тайлсете 2 дерева (сосна и дуб). И вот мне нужно узнать сосна это или дуб.

Мастер объяснять
Последнее редактирование: 9 года 11 мес. назад пользователем Paranoid.

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

  • Naarassusi Game
  • Не в сети
  • Захожу иногда
  • Захожу иногда
  • Как упал ты с неба, денница, сын зари! Разбился о землю, попиравший народы.
Разработчик Коммерсант Проект месяца 2 место Проект месяца 3 место
Больше
9 года 11 мес. назад - 9 года 11 мес. назад #92271 от Naarassusi Game
Это реализуемо,вполне. Сравнивается номер тайла на тайлмапе в конкретной клетке и с номером на тайлсете и, при желании, заменяется другим тайлом из сета.Таким образом, например, можно реализовать копательную механику террарии или крафт зе ворлд.
Последнее редактирование: 9 года 11 мес. назад пользователем Naarassusi Game.

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

Оратор 1 место в Готв 3 место Готв 2 место Учитель Композитор Победитель конкурса Организатор конкурсов
Больше
9 года 11 мес. назад #92279 от yuryol
скорее всего я неправильно понял вопрос, но ведь это стандартная функция,не? :unsure:

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

Больше
9 года 11 мес. назад #92280 от Paranoid
Юр, отчасти ты прав, но с такими данными неудобно работать. Хотелось бы скрипт для упрощенной работы как это сделано в Tile Swap. Там можно самому легко определить id слоя просто посчитав.

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

1 место в Готв 3 место Учитель Разработчик 3 место Готв Ветеран Писатель 2 место Тестер
Больше
9 года 11 мес. назад #92281 от Демий
Ленивый Пара, держи. -_-'
Code:
$game_map.tile_id(x, y, z)

Где Z, судя по всему - слой.
Спасибо сказали: DeadElf79, Paranoid

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

Больше
9 года 11 мес. назад #92282 от Paranoid
Демий, там такой набор цифр получается, что работать с ним очень не удобно. Я выше написал что именно мне бы хотелось. В прочем, это тоже пригодится.

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

Больше
9 года 11 мес. назад #92309 от Paranoid
В общем благодаря Петру (а ранее благодаря Эльфу) я добыл команду для получения ид тайла, которая работает так же как и стандартная.
Code:
Оно $game_map.data[x, y, слой]
Но(!) мне хотелось бы чтобы ид тайла получался так же как задается в тайл свапе. Может все таки кто-нибудь организует скрипт?

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

Больше
9 года 11 мес. назад - 9 года 11 мес. назад #92362 от Paranoid
В тайл свапе
Оно

На 131 строке (New. Convert my tileID to an internal tile ID.) идет код конвертации ид тайлов из тайл свапа обратно в ид привычный для мукера. Может кто-нибудь помочь написать скрипт для обратной конвертации. То бишь при использовании команды $game_map.data[x, y, слой] или подобной, происходила бы конвертация в привычный для тайл свапа вид.
Последнее редактирование: 9 года 11 мес. назад пользователем Paranoid.

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 11 мес. назад - 9 года 10 мес. назад #92410 от DeadElf79
Параноид, можно попробовать. Если это не сделают до меня, я добавлю код в этот же пост.

[strike]Вот готов пока только беглый набросок для сетов от B до E, для автотайлов еще не сделал.[/strike] Done!
Code:
# convert internal tileID to my tileID def convert_internal_tid(x, y, layer = 0) internal_tileID = $game_map.tile_id(x, y, layer) tileID = "" if internal_tileID >= 2048 # A1 - A4 tileID = "A#{((internal_tileID-2048)/48).to_i}" elsif (1536...2048).inlcude? internal_tileID # A5 tileID = "A#{(internal_tileID-1536+128)}" else # B - E if (0...256).inlcude? internal_tileID # B tileID = "B#{internal_tileID+1}" elsif (256...512).inlcude? internal_tileID # C tileID = "C#{internal_tileID-256+1}" elsif (512...768).inlcude? internal_tileID # D tileID = "D#{internal_tileID-512+1}" elsif (768...1024).inlcude? internal_tileID # E tileID = "E#{internal_tileID-768+1}" end end end

Ссылку оставляю для себя или того, кто меня обгонит при написании кода: forums.rpgmakerweb.com/index.php?/topic/2829-autotile-tile-ids/
Последнее редактирование: 9 года 10 мес. назад пользователем DeadElf79.
Спасибо сказали: Paranoid

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

Больше
9 года 11 мес. назад #92412 от Paranoid
Спасибо эльф, это было бы супер!

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 10 мес. назад - 9 года 10 мес. назад #92440 от DeadElf79
Код закончен. Отдельно функция - выше. А чтобы тебе не пришлось думать, куда ее вставлять, полный код здесь: [ссылка]

Тестируй сам. Если будут проблемы - пиши сюда, разберем.
Последнее редактирование: 9 года 10 мес. назад пользователем DeadElf79.
Спасибо сказали: Paranoid

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

Больше
9 года 10 мес. назад #92446 от Paranoid
Поставил, но ума не приложу как получать id тайла. Через $game_map.data[x, y, слой] получается стандартное id.

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 10 мес. назад #92448 от DeadElf79
Пар, тебе нужен был конвертор стандартного ид в ид для тайлсвапа. Я его и сделал. Именно его ты и передаешь в функцию.

Ну хочешь, я напишу функцию, которая сама будет тебе из координат выдирать этот ид и сразу передавать в конвертор, возвращая ид для тайлсвапа?
Спасибо сказали: Paranoid

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

Больше
9 года 10 мес. назад #92449 от Paranoid
Не-не, я всем доволен, просто я понятия не имею как пользоваться этой штукой. Объясни пожалуйста)

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 10 мес. назад #92450 от DeadElf79
А, стоп, я уже итак это написал...

Короче, вот примерно так используй


Так как у меня ни демки, ни примера использования, ни времени на телепатию и/или составление самому себе более конкретного задания нет, то это все, чем я могу тебе помочь.
Спасибо сказали: Paranoid

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

Больше
9 года 10 мес. назад #92451 от Paranoid
Вах слава Эльфу все работает.

$game_system.convert_internal_tid(x, y ,layer) - получает айди тайла как в тайл свапе


Только в коде был неправильно include написан, вот исправленный кусок.
Code:
def convert_internal_tid(x, y, layer = 0) internal_tileID = $game_map.tile_id(x, y, layer) tileID = "" if internal_tileID >= 2048 # A1 - A4 tileID = "A#{((internal_tileID-2048)/48).to_i}" elsif (1536...2048).include? internal_tileID # A5 tileID = "A#{(internal_tileID-1536+128)}" else # B - E if (0...256).include? internal_tileID # B tileID = "B#{internal_tileID+1}" elsif (256...512).include? internal_tileID # C tileID = "C#{internal_tileID-256+1}" elsif (512...768).include? internal_tileID # D tileID = "D#{internal_tileID-512+1}" elsif (768...1024).include? internal_tileID # E tileID = "E#{internal_tileID-768+1}" end end end
Спасибо сказали: DeadElf79

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

Проект месяца 1 место Программист Ruby Писатель 3 место 3 место Учитель Организатор конкурсов 1 место в Готв Ветеран Проект месяца 2 место
Больше
9 года 10 мес. назад #92452 от DeadElf79
Упс! Спасибо, исправлю на пастбине. Хорошо, что заметил)
Спасибо сказали: Paranoid

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

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