Войти на сайт

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

ТЕМА: [VX Ace] Шаблонные события

[VX Ace] Шаблонные события 5 года 8 мес. назад #95211

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

Информация:
Автор: DeadElf79
Версия скрипта: 1.0
Версия мейкера: VX Ace
Список дополнений к этому скрипту: [ Нажмите, чтобы развернуть ]


Описание:
У вас есть множество совершенно одинаковых событий, которые вам надоело копировать с карты на карту? Поставьте этот скрипт, вынесите повторяющееся событие на отдельную карту и затем создавайте в нужных местах пустые ивенты, которые при запуске карты скрипт заполнит содержимым исходного события!

Установка:
1. Качаем и устанавливаем скрипт, как обычно. Настроек нет.
2. Создаем карту и называем ее "TEMPLATES" (без кавычек!)
3. Создаем на ней событие и даем ему уникальное имя (допустим, "YesIamIncrediblyUnique"), пишем туда какие-нибудь условия, ставим графику и всё такое.
4. Копируем имя этого события.
5. Идем на карту, где это событие нам нужно применять.
6. Создаем пустое событие и вставляем ему имя, скопированное на шаг 4.
7. (опционально) Берем это пустое событие и копипастой размазываем его по всей карте.
8. Запускаем игру, переходим на карту, куда мы помещали события. Все пустые ивенты стали копиями того самого события с карты TEMPLATES!

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


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


Демо:
Добавлю сюда ссылку, как только подготовлю.

Код:
#==============================================================================
# Template Events
# Version 1.1
# by DeadElf79
#
# Version history:
# ⇒ 1.1
#   → added settings module
#   → added method for addons
# ⇒ 1.0
#   → release
#==============================================================================
 
module De79TemplateEvents
  REGEXP_TEMPLATE_MAP_NAME = /templates/i
end
 
#==============================================================================
# ** Game_Event
#==============================================================================
class Game_Event < Game_Character
  def name
    @event.name
  end
 
  def pages
    @event.pages unless @event.nil?
  end
 
  def pages=(new_pages)
    @event.pages = new_pages
  end
end
 
#==============================================================================
# ** Game_Map
#==============================================================================
class Game_Map
  def setup_events_only(map_id)
    @map_id = map_id
    @map = load_data(sprintf("Data/Map%03d.rvdata2", @map_id))
    setup_events
  end
end
 
#==============================================================================
# ** Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
  attr_reader :template_map
 
  def start
    super
    SceneManager.clear
    $game_player.straighten
    $game_map.refresh
    $game_message.visible = false
 
    load_elf
 
    create_spriteset
    create_all_windows
    @menu_calling = false
  end
 
  def perform_transfer
    pre_transfer
    $game_player.perform_transfer
 
    load_elf
 
    post_transfer
  end
 
  def load_elf
    load_all_templates
    ask_every_event
    ask_every_te_addon
  end
 
  def load_all_templates
    @template_map = nil
    @infos = load_data('data/MapInfos.rvdata2')
    @infos.each do |map|
      if map[1].name=~De79TemplateEvents::REGEXP_TEMPLATE_MAP_NAME
        @template_map = Game_Map.new
        @template_map.setup_events_only(map[0])
      end
    end
    @template_map
  end
 
  def ask_every_event
    return if @template_map.nil?
    $game_map.events.values.each do |event|
      @template_map.events.values.each do |temp_event|
        if temp_event.name.downcase == event.name.downcase
          event.pages = temp_event.pages
          event.refresh
        end
      end
    end
  end
 
  def ask_every_te_addon
 
  end
end
Последнее редактирование: 5 года 7 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Paranoid, VarVarKa, Lepsion

[VX Ace] Шаблонные события 5 года 8 мес. назад #95212

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

И еще один вопрос, который мне задавали, на всякий случай тоже отвечу, мало ли кто чего не поймет: размер карты TEMPLATES ни на что не влияет. Количество событий на ней - тоже.*
*
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 5 года 8 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Amphilohiy

[VX Ace] Шаблонные события 5 года 8 мес. назад #95218

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 665
  • Программист RubyУчитель2 место ГотвОраторПобедитель Сбитой кодировки
Хмм, мой скрипт примерно так же умеет, но это немного другая история =P
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79

[VX Ace] Шаблонные события 5 года 7 мес. назад #95317

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

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

Поэтому просто оповещаю и кидаю ссылку на код аддона:
pastebin.com/WqScVpCv

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

[VX Ace] Шаблонные события 5 года 7 мес. назад #95319

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

[VX Ace] Шаблонные события 5 года 7 мес. назад #95327

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

[VX Ace] Шаблонные события 5 года 7 мес. назад #95328

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

[VX Ace] Шаблонные события 5 года 7 мес. назад #95331

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