Войти на сайт

Авторизация, ждите ...
×
  • Страница:
  • 1
  • 2

ТЕМА: Скрипт для сравнения тайлов

Скрипт для сравнения тайлов 8 года 5 мес. назад #92265

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

Скрипт для сравнения тайлов 8 года 5 мес. назад #92266

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранПроект месяца 1 местоУчительПроект месяца 2 местоОрганизатор конкурсовПисатель 3 место3 местоПрограммист Ruby1 место в Готв
Сравнить как изображение? В эйсе еще можно, в мв - не уверен, что жс позволит читать попиксельно.
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92267

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • Ветеран1 место в ГотвУчитель3 место3 место ГотвТестерПисатель 2 местоРазработчик
Я так понял, Параноиду надо выяснить, а находится ли в клетке 3,4 например, тайл воды?
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92268

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Ну не как изображение, а что-то типа ID тайлов. Не знаю есть ли этот ID вообще.
Просто в тайл свапе же можно поставить или удалить определенный тайл, так почему нельзя его сравнить с тем что уже есть на карте?

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

Мастер объяснять [ Нажмите, чтобы развернуть ]
Последнее редактирование: 8 года 5 мес. назад от Paranoid.
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92271

  • Naarassusi Game
  • Naarassusi Game аватар
  • Вне сайта
  • Мастер
  • Как упал ты с неба, денница, сын зари! Разбился о землю, попиравший народы.
  • Сообщений: 200
  • Спасибо получено: 296
  • РазработчикКоммерсантПроект месяца 2 местоПроект месяца 3 место
Это реализуемо,вполне. Сравнивается номер тайла на тайлмапе в конкретной клетке и с номером на тайлсете и, при желании, заменяется другим тайлом из сета.Таким образом, например, можно реализовать копательную механику террарии или крафт зе ворлд.
Последнее редактирование: 8 года 5 мес. назад от Naarassusi Game.
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92279

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1704
  • Спасибо получено: 2731
  • 3 место Готв1 место в ГотвОраторУчитель2 место Организатор конкурсовКомпозиторПобедитель конкурса
скорее всего я неправильно понял вопрос, но ведь это стандартная функция,не? :unsure:

2016-06-11_16-02-44.png
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92280

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Юр, отчасти ты прав, но с такими данными неудобно работать. Хотелось бы скрипт для упрощенной работы как это сделано в Tile Swap. Там можно самому легко определить id слоя просто посчитав.
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92281

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • Ветеран1 место в ГотвУчитель3 место3 место ГотвТестерПисатель 2 местоРазработчик
Ленивый Пара, держи. -_-'
$game_map.tile_id(x, y, z)

Где Z, судя по всему - слой.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79, Paranoid

Скрипт для сравнения тайлов 8 года 5 мес. назад #92282

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Демий, там такой набор цифр получается, что работать с ним очень не удобно. Я выше написал что именно мне бы хотелось. В прочем, это тоже пригодится.
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92309

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

Скрипт для сравнения тайлов 8 года 5 мес. назад #92362

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
В тайл свапе
Оно [ Нажмите, чтобы развернуть ]

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

Скрипт для сравнения тайлов 8 года 5 мес. назад #92410

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранПроект месяца 1 местоУчительПроект месяца 2 местоОрганизатор конкурсовПисатель 3 место3 местоПрограммист Ruby1 место в Готв
Параноид, можно попробовать. Если это не сделают до меня, я добавлю код в этот же пост.

Вот готов пока только беглый набросок для сетов от B до E, для автотайлов еще не сделал. Done!
# 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/
Последнее редактирование: 8 года 5 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Paranoid

Скрипт для сравнения тайлов 8 года 5 мес. назад #92412

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Спасибо эльф, это было бы супер!
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92440

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранПроект месяца 1 местоУчительПроект месяца 2 местоОрганизатор конкурсовПисатель 3 место3 местоПрограммист Ruby1 место в Готв
Код закончен. Отдельно функция - выше. А чтобы тебе не пришлось думать, куда ее вставлять, полный код здесь: [ссылка]

Тестируй сам. Если будут проблемы - пиши сюда, разберем.
Последнее редактирование: 8 года 5 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Paranoid

Скрипт для сравнения тайлов 8 года 5 мес. назад #92446

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Поставил, но ума не приложу как получать id тайла. Через $game_map.data[x, y, слой] получается стандартное id.
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92448

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранПроект месяца 1 местоУчительПроект месяца 2 местоОрганизатор конкурсовПисатель 3 место3 местоПрограммист Ruby1 место в Готв
Пар, тебе нужен был конвертор стандартного ид в ид для тайлсвапа. Я его и сделал. Именно его ты и передаешь в функцию.

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

Скрипт для сравнения тайлов 8 года 5 мес. назад #92449

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Не-не, я всем доволен, просто я понятия не имею как пользоваться этой штукой. Объясни пожалуйста)
Администратор запретил публиковать записи гостям.

Скрипт для сравнения тайлов 8 года 5 мес. назад #92450

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранПроект месяца 1 местоУчительПроект месяца 2 местоОрганизатор конкурсовПисатель 3 место3 местоПрограммист Ruby1 место в Готв
А, стоп, я уже итак это написал...

Короче, вот примерно так используй [ Нажмите, чтобы развернуть ]


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

Скрипт для сравнения тайлов 8 года 5 мес. назад #92451

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 683
  • Спасибо получено: 350
Вах слава Эльфу все работает.

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


Только в коде был неправильно include написан, вот исправленный кусок.
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

Скрипт для сравнения тайлов 8 года 5 мес. назад #92452

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранПроект месяца 1 местоУчительПроект месяца 2 местоОрганизатор конкурсовПисатель 3 место3 местоПрограммист Ruby1 место в Готв
Упс! Спасибо, исправлю на пастбине. Хорошо, что заметил)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Paranoid
  • Страница:
  • 1
  • 2
Модераторы: NeKotZima
Время создания страницы: 0.396 секунд