Шаблонные события
Template Events
Информация:
Автор: DeadElf79
Версия скрипта: 1.0
Версия мейкера: VX Ace
Описание:
У вас есть множество совершенно одинаковых событий, которые вам надоело копировать с карты на карту? Поставьте этот скрипт, вынесите повторяющееся событие на отдельную карту и затем создавайте в нужных местах пустые ивенты, которые при запуске карты скрипт заполнит содержимым исходного события!
Установка:
1. Качаем и устанавливаем скрипт,
как обычно. Настроек нет.
2. Создаем карту и называем ее "TEMPLATES" (без кавычек!)
3. Создаем на ней событие и даем ему уникальное имя (допустим, "YesIamIncrediblyUnique"), пишем туда какие-нибудь условия, ставим графику и всё такое.
4. Копируем имя этого события.
5. Идем на карту, где это событие нам нужно применять.
6. Создаем пустое событие и вставляем ему имя, скопированное на шаг 4.
7. (опционально) Берем это пустое событие и копипастой размазываем его по всей карте.
8. Запускаем игру, переходим на карту, куда мы помещали события. Все пустые ивенты стали копиями того самого события с карты TEMPLATES!
ВАЖНОЕ ЗАМЕЧАНИЕ!
Скрипт влияет на порядок загрузки событий карты.
Стандартная загрузка карты происходит так:
1. Загружается файл карты
2. Загружается графоний
3. Загружаются события и сразу на исполнение ставятся те, которые имеют Trigger равный Autorun. "Условие запуска" -"Автозапуск" в русской версии (наверное, не проверял, у меня английская версия редактора).
Как происходит загрузка после установки скрипта:
1. Загружается файл карты
2. Загружается графоний
3. Копируются события с карты шаблонов
4. Загружаются события и исполняются автораны
На что это влияет, спросите вы? А я вам отвечу: вы можете создать в качестве шаблонного события даже "автораны". Мало ли зачем вам это будет нужно, главное, что вы можете это сделать.
От автора:
Да, я знаю, что Амфи сделал
фабрику событий. Мой скрипт лежал в одном заброшенном проекте неизвестно сколько времени, я просто решил его опубликовать, мало ли кому понадобится плодить ивенты с одинаковым поведением одними лишь именами безо всяких тегов и команд (как в вышеупомянутой фабрике).
Демо:
Добавлю сюда ссылку, как только подготовлю.
Код:#==============================================================================
# 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