Войти на сайт

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

ТЕМА: [xp]Copy map

[xp]Copy map 10 года 8 мес. назад #63794

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2650
  • ВетеранПисатель 3 место3 местоПроект месяца 2 местоУчительПрограммист Ruby1 место в ГотвПроект месяца 1 местоОрганизатор конкурсов
Название: Copy Map
Автор: DeadElf79
Версия: 1.0 (от 15.05.2013)
Возможности:
+Позволяет скопировать часть карты или всю карту в выбранное место
+Позволяет копировать из других карт в нужную
+Результат сохраняется и будет виден в редакторе
Недостатки:
-Необходимо перезагружать карту после применения, чтобы увидеть результат
-На картах с разными тайлсетами сработает убого
Инструкция:
Вызываем скрипт с такими параметрами:
Copy_Map.new(src_map_id,dest_map_id,src_rect,dest_x,dest_y)
где src_map_id - номер той карты, из которой мы копируем,
dest_map_id - номер той карты, в которую мы вставляем,
src_rect - прямоугольник карты,
dest_x - координата X, куда вставляем,
dest_y - координата Y, куда вставляем.

Пример вызова:
Copy_Map.new(2,2,Rect.new(0,0,5,8),12,0)
Скрипт:
#=============================================================================
#                          COPY MAP or part of these
# Author: DeadElf79
# Version: 1.0
# Date: 15.05.2013
#=============================================================================
class Scene_Map
  attr_accessor :spriteset
end
 
class Copy_Map
  def initialize(src_map_id,dest_map_id,src_rect,dest_x,dest_y)
    @src_map=load_data(sprintf("Data/Map%03d.rxdata", src_map_id))
    @dest_map=load_data(sprintf("Data/Map%03d.rxdata", dest_map_id))
    @id=dest_map_id
    @src_rect = src_rect
    @x,@y = dest_x,dest_y
    start_copy
    save_result
    refresh
  end
 
  def start_copy
    for i in @src_rect.x..@src_rect.x+@src_rect.width
      for j in @src_rect.y..@src_rect.y+@src_rect.height
        for k in 0..3
          @dest_map.data[@x+i,@y+j,k]=@src_map.data[i,j,k]
        end
      end
    end
  end
 
  def save_result
    save_data(@dest_map,sprintf("Data/Map%03d.rxdata", @id))
  end
 
  def refresh
    if $scene.is_a?(Scene_Map) then
      Graphics.freeze
      $game_map.refresh
      Graphics.transition
    end
  end
end
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer

[xp]Copy map 10 года 8 мес. назад #63797

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

[xp]Copy map 10 года 8 мес. назад #63828

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

[xp]Copy map 10 года 8 мес. назад #63835

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

[xp]Copy map 10 года 8 мес. назад #63838

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

[xp]Copy map 10 года 8 мес. назад #63839

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

[xp]Copy map 10 года 8 мес. назад #63840

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

[xp]Copy map 10 года 8 мес. назад #63841

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

[xp]Copy map 10 года 8 мес. назад #63842

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