Раздел:
Триггеры и объекты

От переводчика

На форуме с периодической частотой всплывают вопросы о том как можно осуществить переход с карты на карту, как было реализовано в Кампании за Орду (дополнение). Самый вежливый ответ который получают пользователи - это скачать кампанию и там посмотреть. Обычно всем лень разбираться, как дизайнеры Blizzard это реализовали. На мой взгляд все это выглядит достаточно непонятно. Поэтому я решил найти способ попроще. На русскоязычных сайтах картостроя по WC3 если и информация где-то присутствует, то запрятана она или очень глубоко, или разбросана хаотично по нескольким постам. Другое дело наши англоязычные коллеги. Я наткнулся на очень хорошую статью, перевод которой и хочу Вам предложить.

Transitions Among Campaign Maps

В этом руководстве будет рассказано об использовании триггеров 'Save Game and Load Game' и 'Save Game and Change Level', которые были впервые продемонстрированы BLIZZARD в Кампании Орды (дополнение Frozen Throne), и позже данные функции стали доступны для игростроя в патче 1.13.
Данное руководство предполагает, что у Вас уже есть опыт и хорошее понимание WCIII World Editor, а также некоторый опыт работы с триггерами. Если Вы новичок в WE, я рекомендую Вам потратить некоторое время на изучение World Editor, создавая карты, читая другие обучающие статьи. Руководство также предполагает, что Вы знаете, как использовать редактор кампаний и знакомы с игровым КЭШем. Если Вы не знаете что это такое….то «You are not prepared!» :)
Также я хочу поблагодарить BLIZZARD за реализацию Save/Load триггеров для комьюнити, поскольку это добавляет новый уровень для творческой деятельности и расширяет возможности WE как никогда ранее. Я выражаю благодарность Adins Bejoty за его Save/Load руководство, размещенное на сайте ранее. Это было первое руководство, выпущенное на подобную тематику. Тем не менее, мое руководство отличается двумя особенностями.
Во-первых, его руководство ссылается непосредственно на триггеры BLIZZARD из Кампании Орды (дополнение). Я изучил базовую основу его системы и создал, как мне кажется, более простой метод для реализации переходов. Во-вторых, что важнее, в этом руководстве будет показано, как можно создать переходы между всеми картами кампании, а не по принципу «Главная карта => придаточные карты» ("Overmap" structure). В Кампании Орды это выглядело примерно так:
Полагаю, таким образом, дизайнеры BLIZZARD реализовали в Кампании Орды принцип «Главной карты». На мой взгляд, это поставило ограничения на переходы от региона к региону (от карты к карте). В данном руководстве демонстрируется система без «Главной карты». Выглядит это примерно так:
Другими словами, Вы можете создать систему переходов позволяющую путешествовать в любую карту из любой карты. Это позволит сделать некоторые вещи намного интереснее. После того, как Вы поймете принцип работы системы, будет достаточно легко создавать любые комбинации полностью и/или частично соединенных карт для Вашей кампании. Я настоятельно рекомендую Вам создать свою первую кампанию, читая это руководство и параллельно создавая триггеры, вместо того, чтобы просто скопировать их из примера. В этом случае у Вас будет более полное представление, когда Вы захотите использовать систему для других проектов. Вы сможете создать кампанию из 4 карт, 5 карт, или даже более крупные обладающие неограниченными возможностями перехода.

On with the show

Начинаем…
Откройте редактор кампаний, создайте новую кампанию. Назовите ее, например, «Transitions Tutorial» (назовите ее лучше просто test – прим. перев.). Затем создайте 3 пустые карты и назовите их, например, «Map1», «Map2», и «Map3». Сохраните, а затем импортируйте в Вашу кампанию. Не забудьте во вкладке «Экран загрузки» добавить кнопку для каждой карты (редактор кампаний – вкладка «Экран загрузки» – правая кнопка мыши – «Добавить кнопку») для того чтобы с картами можно было работать. После того, как Вы сделали это и сохранили файл кампании, закройте карты в WE. С этого момента, Вы должны редактировать карты в «Менеджере кампании» в окне вкладки «Общие» (выбираете карту – нажимаете правую кнопку мыши – «Редактировать карту»). Таким образом, при сохранении изменений в картах, они сохраняются в файле кампании напрямую, и Вам не придется беспокоиться о повторном импорте карт.
Прежде чем мы продолжим дальше, я должен предупредить Вас о неприятных багах в системе триггеров Save/Load.

Ограничение в 43-строковых символа

При создании руководства я старался объяснить и задокументировать каждый аспект системы. Обратите внимание на комментарии в «Map1» (авт. карты и комментарии отсутствуют – прим. перев.). Один из багов, с которым мне пришлось столкнуться, произошел, когда я думал, как назвать свою кампанию, карты, и директорию, в которую их следует сохранять. Это был один из самых странных багов, которые я только видел в WE. Я обнаружил, что триггерное действие сохранить – загрузить (Load Saved Game action) имеет предел на то, как много символов эта функция может прочитать при указании пути на сохранение файла карты. Мне потребовалось несколько недель для того чтобы понять это. Попробую объяснить подробнее.
Одной из ключевых особенностей системы триггеров Save/Load, которую BLIZZARD реализовала в патче 1.13, является то, что ранее сохраненную игру Вы можете при помощи триггера Save/Load загрузить и продолжить играть. По умолчанию путь сохранения выглядит так:
C:\Program Files\WarcraftIII\save\Profile1\CustomSaves\(name of your campaign)\(custom save folder, optional)\(map name).w3z
Путь установки может варьировать, начиная от буквы диска и заканчивая тем какую папку Вы выбрали для установки игры. Но это не имеет отношения к проблеме. Вас должно беспокоить то, какой путь начинается с \CustomSaves\... . Для того чтобы использовать систему триггеров Save\Load ваши карты должны быть скопированы в кампанию и Вы должны запускать игру с экрана «Дополнительные кампании». Вы не можете тестировать карты просто нажимая «Проверка карты» в WE. Переходы между картами не будут работать, если Вы будете пытаться так сделать. В руководстве я использовал пользовательскую папку по-умолчанию для сохранения карт, но делать так не обязательно. Суммарная длина символов в пути:
(name of your campaign)\(custom save folder, optional)\(map name)
или
(name of your campaign)\(map name)
не должна превышать 43 символа, включая обратные слеши (но сюда не входит расширение файла). Если это произойдет, игра не сможет найти сохраненную карту, и Вас выбросит на загрузочный экран. Например:
Transition Tutorial\Saves\TransTutorialMap1.w3z
Это путь к картам кампании. Длина пути составляет 43 символа, включая пробелы и слеши, но не включая расширение .w3z. Это работает, но может вызвать некоторые неудобства в будущем. Если бы я использовал такой путь:
Transition Tutorial\Saves\Trans Tutorial Map1.w3z
Этот путь длиннее, в нем есть два дополнительных символ – пробелы, и он не будет работать. Надеюсь, что на этих примерах я объяснил суть проблемы. Главное запомните, что названия для Вашей кампании и карт должны быть достаточно короткими для работы системы триггеров Save/Load. (Если у Вас будет работать ПЕРЕХОД на карту, но будет выкидывать на экран кампании при ВОЗВРАТЕ в ранее посещенную карту, знайте, что проблема как раз в длине пути, попробуйте уменьшить количество символов в названии кампании, карт, чем меньше, тем лучше – прим. перев.)

Back to the show...

Продолжим…
Когда будете создавать Ваши три карты, я рекомендую Вам использовать различные наборы тайлов (покрытий), так Вам будет удобнее ориентироваться, когда созданный герой будет путешествовать между картами. Вы можете использовать стандартного героя или создать своего, как поступил я в примере. Если Вы используете своего героя, не забудьте скопировать его в другие карты или создать непосредственно в «Редакторе кампаний», для того чтобы он был доступен для кампании. Теперь, чтобы создать полную сеть переходов, Вам необходимы области для соединения с каждой другой картой в кампании.
Если Вы используете 3 карты, как в руководстве, Вам потребуется две области перехода, по одной на каждую карту. Для 4 карт потребуется три области, для 5 карт – четыре и т. д. Области можно расположить у входа в пещеру, в лесной прогалине, возле зданий или где угодно: согласно Вашим целям. Идея состоит в том, чтобы место перехода было заметно для игрока. В примере я использовал пещеры.
Я рекомендую Вам поместить героя, стандартного или созданного, на «Map1». Позже Вы можете по-своему расставить юнитов и привязать их к триггерам, но для удобства лучше сделать так, как сказано выше. Отредактируйте ландшафт и расставьте декорации на картах. Неплохой идеей будет расположить несколько враждебных юнитов для битвы, и несколько предметов, которые можно подобрать. Таким образом, Вы сможете отслеживать, какие изменения Ваш герой производит, переходя от карты к карте.
После того как Вы отдекорируете карты и расположите героя, последней задачей будет создание в каждом месте перехода по второй области, располагающейся недалеко от первой. Вам потребуется «ВХОД в карту X», и «ВЫХОД из карты X» для каждого места перехода. Так в карте «Map1» для возможности перехода в «Map2» потребуется области «ВХОД в Map2» и «ВЫХОД из Map2». Для перехода в «Map3» также потребуются области «ВХОД» и «ВЫХОД», соответственно. Убедитесь, чтобы регионы НЕ ПЕРЕСЕКАЛИСЬ, иначе могут возникнуть проблемы. Поместите регионы «ВХОД» непосредственно вблизи места перехода (вход в пещеру, дверь таверны, и т.д.), а регионы «ВЫХОД» чуть подальше. Это необходимо для того чтобы Ваш юнит мог спокойно уйти от точки прибытия не пересекая область «ВХОД». Иначе это может вызвать бесконечные перемещения!

Теперь суть системы!

Стандартные триггеры: Не трогайте триггер «Инициализация» (не удаляйте его ни сейчас, ни когда-либо потом, просто удалите все действия из триггера – прим. перев.). Вы можете удалить или переместить все действия «Melee Game actions» (режим сражения), кроме триггера «Melee Game - Enforce victory/defeat conditions (for all players)», его требуется удалить со всех карт. В дополнение триггеру «Инициализация» Вам потребуется создать ещё 4 триггера для всех карт. Создайте эти триггеры сейчас. Мы добавим события и действия позже. В «Map1» вам потребуется создать следующие триггеры:
Initialization
Subsequent Starts
Go to Map 2
Go to Map 3
Load
Карты «Map2» и «Map3» будут иметь аналогичные триггеры за исключением названий и переходов в другие области. Так «Map2» будет использовать 'Go to Map 1' и 'Go to Map 3', а «Map3» 'Go to Map 1' и 'Go to Map 2'.

ТРИГГЕРЫ

Переменные
NameTypeInitial Value
CommonCacheGame CacheNone
LeftFromMapInteger0
LoadingFromRegionArray[2]None
Map2NewGameBooleanTrue
Map3NewGameBooleanTrue
CommonCache – Вы можете использовать несколько КЭШей для отслеживания различных данных, но проще использовать один КЭШ с разными заголовками для разных данных.
LeftFromMap – целоисчисленная(Integer), в ней содержится номер карты, которую Вы только что покинули. Она говорит игре какую область «ВЫХОД» использовать чтобы расположить в ней вашего юнита при загрузки следующей карты.
LoadingFrom – используется для присваивания целоисчисленной переменной LeftFromMap определенной области.
Map2NewGame – эта переменная – важная составляющая системы переходов. Игра всегда должна знать, когда происходит перемещение на новый уровень (карта ещё не была посещена) или происходит повторная загрузка карты. Вам необходимо создать по одной переменной на каждую карту Вашей кампании, но она не требуется для карты «Map1». Поскольку кампания начинается на «Map1», Вы всегда будете загружать карту (т.е. возвращаться сюда), а не начинать новую.

Map 1 Triggers

Initialization
Events
	Map initialization
Conditions
	(None)
Actions
	Game Cache - Create a game cache from CommonCache.w3v
	Set CommonCache = (Last created game cache)
	Set LoadingFrom[2] = From Map 2
	Set LoadingFrom[3] = From Map 3
	Trigger - Turn off (This trigger)
- Триггеры в этом тексте были сведены к минимуму, достаточному для работы карты. Возможно, Вы заметили, что я добавил к некоторым из них, в своей кампании из примера, комментарии по их использованию. Кроме того, во избежание путаницы, обратите внимание, что я комментировал триггеры, в кампании из примера, до основных действий с триггерами, но в этом тексте комментарии идут после.
- Для экономии пространства лучше создать игровой КЭШ заранее.
- Создание отдельной переменной для игрового КЭШа позволит Вам использовать его не прибегая к действию 'Last Created Cache'. Это поможет избежать возможные проблемы, если несколько триггеров начнут одновременно делать запросы к КЭШу.
- Вы должны присвоить переменной значения областей, чтобы игровой КЭШ мог определить в каком месте Ваш герой должен вернуться на карту.
- На самом деле я не уверен, что есть необходимость в отключении этого триггера, но сделал это на всякий случай.
Subsequent Starts
Events
	Game - A saved game is loaded
Conditions
	(None)
Actions
	Game Cache - Create a game cache from CommonCache.w3v
	Set CommonCache = (Last created game cache)
	Trigger - Run Load (ignoring conditions)
- Пересоздание игрового КЭШа в данном триггере абсолютно необходимо для работы системы. Мне потребовалось несколько дней чтобы понять это.
- На карте «Map1», КЭШ будет загружен только после загрузки сохраненной игры. Я полагаю, Вы могли бы сделать здесь все действия триггера «Load» , но я создал отдельный триггер для поддержания структуры с другими картами, и для удобного способа отладки, если возникнут проблемы.
Go to Map 2
Events
	Unit - A unit enters To Map 2      
Conditions
	((Entering unit) is A Hero) Equal to True      
Actions
	Set LeftFromMap = 1
	Game Cache - Clear all labels of Units in CommonCache
	Game Cache - Store (Entering unit) as Hero of Units in CommonCache
	Game Cache - Store (Life of (Entering unit)) as HeroLife of Units in CommonCache
	Game Cache - Store (Mana of (Entering unit)) as HeroMana of Units in CommonCache
	Game Cache - Store LeftFromMap as LeftFromMap of Variables in CommonCache
	Game Cache - Store Map2NewGame as Map2NewGame of Variables in CommonCache
	Game Cache - Store Map3NewGame as Map3NewGame of Variables in CommonCache
	Game Cache - Save CommonCache
	Unit - Remove (Entering unit) from the game
	If (All Conditions are True) then do (Then Actions) else do (Else Actions)
		If - Conditions
			Map2NewGame Equal to True
		Then - Actions
			Game - Save game as Saves\Map1.w3z and change level to Map2.w3x (Skip scores)
		Else - Actions
			Game - Save game as Saves\Map1.w3z and load Saves\Map2.w3z (Skip scores)
- Конечно, можно задать любые условия в триггере (определенный герой, юнит принадлежит Игроку 1, и т.д.), но у Вас обязательно должна быть какая-нибудь проверка здесь, чтобы избежать случайностей (вроде бродячих крипов), которые могут вызвать запуск триггера.
- Store говорит игровому КЭШу куда Вы поместили героя, так что игра будет знать откуда можно достать героя в следующей карте.
- Вы должны очищать category юнитов каждый раз при переходе, иначе Вы не сможете получать последние данные, предметы и т.п. для вашего героя на следующей карте. Обратите внимание, что мы создали переменную для игрового КЭШа, но не создали их для category и labels. Далее Вы должны будете ввести эти значения вручную в соответствующие поля, как на экране. Использование переменных для category и labels может привести к непонятным эффектам. Однако Вы можете использовать переменную для имени КЭШа.
- Теперь Вы сохранили всю необходимую информацию в КЭШе.
- Map2NewGame, является ключом, который говорит игре загрузить новую карту или сохраненную игру. В редакторе переменных по умолчанию им присвоено значение «Истина»(True). Обратите внимание, Вы не должны сохранять статус «Map1». Вы начали здесь, так что всегда будет возвращаться к сохраненной игре.
- Последняя часть очень важна. Если Вы еще не посещали следующую карту, игра запустит «Map2». Если Вы были на «Map2» ранее, игра загружает сохраненный файл «Map2». Обратите внимание, что «Map1» сохраняется в папку пользовательских сохранённых игр. Это не является необходимым, но если у Вас возникли проблемы с игрой и Вас выбрасывает на загрузочный экран, попробуйте добавить действие в триггерах «Инициализация», которые удаляют эту папку с сохранениями (или же удалить вручную – прим. перев.). Вы также можете добавить условия, которые проверяют наличие сохраненной игры, но я нахожу использование логической переменной для теста проще (обратите внимание ещё на два момента. Первое: автор помещал свои сохранения в подпапку Saves, я так делать не стал, это все тоже увеличение длины пути. Второе: я называл свои сохранения по-другому, можете называть их, как и карты. Просто данный прием допускается – прим. перев.).
Go to Map 3
Events
	Unit - A unit enters To Map 3      
Conditions
	((Entering unit) is A Hero) Equal to True     
Actions
	Set LeftFromMap = 1
	Game Cache - Clear all labels of Units in CommonCache
	Game Cache - Store (Entering unit) as Hero of Units in CommonCache
	Game Cache - Store (Life of (Entering unit)) as HeroLife of Units in CommonCache
	Game Cache - Store (Mana of (Entering unit)) as HeroMana of Units in CommonCache
	Game Cache - Store LeftFromMap as LeftFromMap of Variables in CommonCache
	Game Cache - Store Map2NewGame as Map2NewGame of Variables in CommonCache
	Game Cache - Store Map3NewGame as Map3NewGame of Variables in CommonCache
	Game Cache - Save CommonCache
	Unit - Remove (Entering unit) from the game
	If (All Conditions are True) then do (Then Actions) else do (Else Actions)
		If - Conditions
			Map3NewGame Equal to True
	Then - Actions
			Game - Save game as Saves\Map1.w3z and change level to Map3.w3x (Skip scores)
	Else - Actions
			Game - Save game as Saves\Map1.w3z and load Saves\Map3.w3z (Skip scores)
- Здесь почти то же самое, как и в предыдущем триггере, за исключением того, что это переход на «Map3». Пожалуйста, смотрите комментарии выше.
Load
Events
	(None)      
Conditions
	(None)      
Actions
	Game Cache - Reload all game cache data from disk
	Set LeftFromMap = (Load LeftFromMap of Variables from CommonCache)
	Set Map2NewGame = (Load Map2NewGame of Variables from CommonCache)
	Set Map3NewGame = (Load Map3NewGame of Variables from CommonCache)
	Game Cache - Restore Hero of Units from CommonCache for Player 1 (Red) at (Center of LoadingFrom[LeftFromMap]) facing (Center of (Playable map area))
	Unit - Set life of (Last restored unit) to (Load HeroLife of Units from CommonCache)
	Unit - Set mana of (Last restored unit) to (Load HeroMana of Units from CommonCache)
- Здесь игра получает последние данные.
- Переменная LeftFromMap сообщает игре, в какой области должны появиться юниты. Они должны появиться в том месте перехода связанного с картой, из которой Вы только что вышли.
- Вы должны отслеживать статус каждой карты, куда Вы заходили ранее. Поэтому в «Map1» Вам необходимо отслеживать каждую карту из кампании. Это все также необходимо для того чтобы игра знала какие карты были посещены.
- Ваш герой появляется на выходе из пещеры (или где-нибудь ещё), все готово для дальнейшего приключения.

Map 2 Triggers

Initialization
Events
	Map initialization      
Conditions
	(None)      
Actions
	Game Cache - Create a game cache from CommonCache.w3v
	Set CommonCache = (Last created game cache)
	Set LoadingFrom[1] = From Map 1
	Set LoadingFrom[3] = From Map 3
	Set Map2NewGame = False
	Trigger - Turn off (This trigger)
	Trigger - Run Load (ignoring conditions)
- Вы должны присвоить регионам переменные, чтобы КЭШ знал, куда выгрузить героя при возвращении на эту карту. Обратите внимание, что настройки областных переменных соответствуют других картам из кампании. Присваивать какое-либо значение переменной LoadingFromMap2, когда Вы находитесь на карте «Map2» нет необходимости.
- Здесь ещё один важный момент. Если Вы попадаете на карту «Map2» в первый раз, Вы устанавливаете переменной Map2NewGame значение «ЛОЖЬ».
- Поскольку Вы будете попадать в эту карту из другой карты, требуется загрузить КЭШ.
Subsequent Starts
Events
	Game - A saved game is loaded      
Conditions
	(None)      
Actions
	Game Cache - Create a game cache from CommonCache.w3v
	Set CommonCache = (Last created game cache)
	Trigger - Run Load  (ignoring conditions)
Go to Map 1
Events
	Unit - A unit enters To Map 1      
Conditions
	((Entering unit) is A Hero) Equal to True      
Actions
	Set LeftFromMap = 2
	Game Cache - Clear all labels of Units in CommonCache
	Game Cache - Store (Entering unit) as Hero of Units in CommonCache
	Game Cache - Store (Life of (Entering unit)) as HeroLife of Units in CommonCache
	Game Cache - Store (Mana of (Entering unit)) as HeroMana of Units in CommonCache
	Game Cache - Store LeftFromMap as LeftFromMap of Variables in CommonCache
	Game Cache - Store Map2NewGame as Map2NewGame of Variables in CommonCache
	Game Cache - Save CommonCache
	Unit - Remove (Entering unit) from the game
	Game - Save game as Saves\Map2.w3z and load Saves\Map1.w3z (Skip scores)
- Одно отличие от триггеров из карты «Map1». Карта «Map1» всегда будет загружаться из сохранения, когда мы будем возвращаться туда. Поэтому нет нужды в проверке статуса карты «Map1». Вы просто переходите туда, как и указано выше.
Go to Map 3
Events
	Unit - A unit enters To Map 3
Conditions
	((Entering unit) is A Hero) Equal to True     
Actions
	Set LeftFromMap = 2
	Game Cache - Clear all labels of Units in CommonCache
	Game Cache - Store (Entering unit) as Hero of Units in CommonCache
	Game Cache - Store (Life of (Entering unit)) as HeroLife of Units in CommonCache
	Game Cache - Store (Mana of (Entering unit)) as HeroMana of Units in CommonCache
	Game Cache - Store LeftFromMap as LeftFromMap of Variables in CommonCache
	Game Cache - Store Map2NewGame as Map2NewGame of Variables in CommonCache
	Game Cache - Save CommonCache
	Unit - Remove (Entering unit) from the game
	If (All Conditions are True) then do (Then Actions) else do (Else Actions)
		If - Conditions
			Map3NewGame Equal to True
		Then - Actions
			Game - Save game as Saves\Map2.w3z and change level to Map3.w3x (Skip scores)
		Else - Actions
			Game - Save game as Saves\Map2.w3z and load Saves\Map3.w3z (Skip scores)

Load
Events
	(None)
Conditions
	(None)      
Actions
	Game Cache - Reload all game cache data from disk
	Set LeftFromMap = (Load LeftFromMap of Variables from CommonCache)
	Set Map3NewGame = (Load Map3NewGame of Variables from CommonCache)
	Game Cache - Restore Hero of Units from CommonCache for Player 1 (Red) at
	(Center of LoadingFrom[LeftFromMap]) facing (Center of (Playable map area))
	Unit - Set life of (Last restored unit) to (Load HeroLife of Units from CommonCache)
	Unit - Set mana of (Last restored unit) to (Load HeroMana of Units from CommonCache)

Map 3 Triggers

Initialization
Events
	Map initialization 
Conditions
	(None)      
Actions
	Game Cache - Create a game cache from CommonCache.w3v
	Set CommonCache = (Last created game cache)
	Set LoadingFrom[1] = From Map 1
	Set LoadingFrom[2] = From Map 2
	Set Map3NewGame = False
	Trigger - Turn off (This trigger)
	Trigger - Run Load  (ignoring conditions)
- Триггеры карты «Map3» практически идентичны карте «Map2». Я оставил их здесь, так что Вы можете сравнить их с картой «Map2», отметив незначительные отличия.
Subsequent Starts
Events
	Game - A saved game is loaded      
Conditions
	(None)      
Actions
	Game Cache - Create a game cache from CommonCache.w3v
	Set CommonCache = (Last created game cache)
	Trigger - Run Load  (ignoring conditions)

Go to Map 1
Events
	Unit - A unit enters To Map 1      
Conditions
	((Entering unit) is A Hero) Equal to True     
Actions
	Set LeftFromMap = 3
	Game Cache - Clear all labels of Units in CommonCache
	Game Cache - Store (Entering unit) as Hero of Units in CommonCache
	Game Cache - Store (Life of (Entering unit)) as HeroLife of Units in CommonCache
	Game Cache - Store (Mana of (Entering unit)) as HeroMana of Units in CommonCache
	Game Cache - Store LeftFromMap as LeftFromMap of Variables in CommonCache
	Game Cache - Store Map3NewGame as Map3NewGame of Variables in CommonCache
	Game Cache - Save CommonCache
	Unit - Remove (Entering unit) from the game 
	Game - Save game as Saves\Map3.w3z and load Saves\Map1.w3z (Skip scores)

Go to Map 2
Events
	Unit - A unit enters To Map 2 
Conditions
	((Entering unit) is A Hero) Equal to True     
Actions
	Set LeftFromMap = 3
	Game Cache - Clear all labels of Units in CommonCache
	Game Cache - Store (Entering unit) as Hero of Units in CommonCache
	Game Cache - Store (Life of (Entering unit)) as HeroLife of Units in CommonCache
	Game Cache - Store (Mana of (Entering unit)) as HeroMana of Units in CommonCache
	Game Cache - Store LeftFromMap as LeftFromMap of Variables in CommonCache
	Game Cache - Store Map3NewGame as Map3NewGame of Variables in CommonCache
	Game Cache - Save CommonCache
	Unit - Remove (Entering unit) from the game
	If (All Conditions are True) then do (Then Actions) else do (Else Actions)
		If - Conditions
			Map2NewGame Equal to True
		Then - Actions
			Game - Save game as Saves\Map3.w3z and change level to Map2.w3x (Skip scores)
		Else - Actions
			Game - Save game as Saves\Map3.w3z and load Saves\Map2.w3z (Skip scores)

Load
Events
	(None) 
Conditions
	(None)      
Actions
	Game Cache - Reload all game cache data from disk
	Set LeftFromMap = (Load LeftFromMap of Variables from CommonCache)
	Set Map2NewGame = (Load Map2NewGame of Variables from CommonCache)
	Game Cache - Restore Hero of Units from CommonCache for Player 1 (Red) at (Center of
	LoadingFrom[LeftFromMap]) facing (Center of (Playable map area))
	Unit - Set life of (Last restored unit) to (Load HeroLife of Units from CommonCache)
	Unit - Set mana of (Last restored unit) to (Load HeroMana of Units from CommonCache)
Вот и все. Это все триггеры, для создания кампании из 3 карт, в ней у Вас есть полная свобода передвижения в любую кару и из любой карты.
Удачи и Good Mapping!
Спасибо за прочтение! Надеюсь мой труд поможет Вам создавать ещё более потрясающие миры.
Очень жду Ваши оценки и замечания по качеству перевода.
Оригинал доступен здесь:
classic.battle.net/mod/tutorials/TransitionsTutorial.xml
С уважением,
Gelion
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
5
22
8 лет назад
5
K P A C U B O
Раньше бы таких ресурсов :)
3
20
8 лет назад
3
Я много лет пытался сделать подобную систему. И наконец, когда почти всё уже забросил, я сделал это. Спасибо огромное за пояснения)
0
1
8 лет назад
0
Да очень помогло
1
5
7 лет назад
1
У меня вопрос, данная система будет работать только в кампании или есть возможность сделать на обычных картах.
1
23
7 лет назад
1
Lp666, Только в кампаниях.
1
7
6 лет назад
1
Araders:
Lp666, Только в кампаниях.
А может всё таки есть возможность сделать на обычных картах)????
0
10
6 лет назад
Отредактирован AMark
0
Verschlinger, возможность есть. Используя сэйв-лоад системы. Но выглядеть будет так - игроки сыграли на карте, договорились о следующей карте. Сохраняемся, выходим, создаем нужную карту, собираем тех же игроков, начинаем. Загружаем данные. Есть большое ограничение - вся база данных о Героях, Способностях, Предметах должна быть в точности индентичной.
На хайве кто-то выпускал серию карт по ВоВ, где все работало по вышеописанной схеме. Такое требует титанических работ, т.к. все предметы и прочее должны быть описаны до создания карты, иначе придется обновлять все карты одновременно.
0
7
6 лет назад
0
AMark:
Verschlinger, возможность есть. Используя сэйв-лоад системы. Но выглядеть будет так - игроки сыграли на карте, договорились о следующей карте. Сохраняемся, выходим, создаем нужную карту, собираем тех же игроков, начинаем. Загружаем данные. Есть большое ограничение - вся база данных о Героях, Способностях, Предметах должна быть в точности индентичной.
На хайве кто-то выпускал серию карт по ВоВ, где все работало по вышеописанной схеме. Такое требует титанических работ, т.к. все предметы и прочее должны быть описаны до создания карты, иначе придется обновлять все карты одновременно.
0.0
Я воссоздал вышеописанную систему без кампании и немного модернизировал её... И по идее она должна работать и без "договора о следующей карте"... Но есть 2 проблемы:
  1. Игроков выбрасывает н**** во всех смыслах, но не из игры.
  2. Кеш Игры не находится...
  3. И ещё непонятные вещи связанные с загруженной картой...
0
10
6 лет назад
0
Verschlinger, кеш игры подходит для соло-игр, при сетевой игре он очищается (местные завсегдатаи расскажут во всех подробностях)
По идее реально подстроить только сэйв-лоад через загрузочный код
1
3
1
Либо я такой тупой ,либо что то не так - у меня в переменных нет вкладки game cache . Может у меня редактор не тот? Каким пользовались вы?
так, ладно, game cache я нашел. а дальше?Когда я выбераюю переменные Game Cache - Create a game cache from хочу выбрать переменную а мне указывает что не создано ни одной переменной этого типа
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.