ГлавнаяБлогКарты Warcraft 3Гайды для первой ДотыГайды для Доты 2 [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум » Картостроение в Warcraft 3 » Статьи » Как сделать свою TD карту (Для начинающих...)
Как сделать свою TD карту
Дата: Понедельник, 07.05.2012, 18:56 | Сообщение # 1
Генералиссимус
Проверенные
Сообщений: 3625
Награды: 12
Репутация: 57
Итак, многие хотят сделать что-нибудь свое в we, но не у многих это хорошо получается. Некоторые читают массы материала связанными с World Editor и создают свою карту с нуля, другие начинают в нем осваиваться редактируя другую карту. Но по моему мнению, лучшее с чего можно начать - это создание карты в стиле Tower Defence (защита башен). Не советую читать эту статью тем людям, которые планируют создать карту абы как за один час, так как на создание этой карты могут уйти дни (недели). Итак, вот пособие как ее можно сделать с нуля.
Итак, начнем.
Для начала открывайте World Editor находящийся в вашей папке с игрой. Нажмите вверху на кнопку с изображением чистого листа и задайте параметры по вашему усмотрению (но не задавайте рельеф, с надписью "нельзя строить"). Я к примеру задал так:

У вас появился рельеф с заданными вами параметрами. Для удобства работы я рекомендую зайти во вкладку вид>сетка>и выбрать параметр "нет". Также можно зайти во вкладку вид и снять галочку с параметра "тени" и "границы обзора". Теперь можно начинать. Зайдите во вкладку слой и выберите рельеф. У вас справа появилось окошко с функциями рельефа. Теперь выбирайте текстуру на которой есть пометка "нельзя строить" и проведите ваш путь по которому будут ходить крипы (то есть монстры, которых башни должны уничтожать). Вот как у меня получилось (все примеры беру из моей карты):

Где места хода крипов отмечены красными линиями, а места их спавна (т.е. появления) красными кружками (только присмотритесь, там где порталы я забыл тоже выделить как места ремпавна, пожалуйста не ругайте :) ). Вам достаточно продеать тольк то, что выделено, т.е. места появления и хода мобов (см. крипы). Потом, в каком-либо месте куда сходятся все пути, обустраиваем место для того, чтобы если до него дойдут крипы, то игроки проиграют. Вот:

Далее, мы должны расставить места появления игроков. Для этого зайдите во вкладку слой и выберите пункт войска. У вас открылась панель войск. Теперь найдите на этой панели раздел "Здания" и найдите там пиктограмму "исходная позиция" и задайте ее для каждого игрока (смотри вверху панели) в зависимости от числа играющих на вашей карте. А исходную позицию для последнего (12 игрока) это компьютер и вы должны поставить ее на том месте, где заканчивают свой путь крипы. P.S. у вас должно быть не более 11 живых игроков на карте! Вот я выделил места появления игроков синим квадратом, а компьютера (т.е. конец похода мобов) красным.

Теперь, как только вы определились с количеством играющих на вашей карте игроков, вам нужно фиксировать кланы (т.е. фиксирование игроков). Для этого зайдите во вкладку сценарий>свойства клана и манипулируя этими функциями, расставьте кланы. Также поставьте галочки над пунктами: "нестандартные кланы", "фикс. параметры игрока", и у первого клана "союзник" и "общее поле зрения". Вот как у меня получилось:

Во вкладке "слой">"декорации" можно поставить декорации по своему вкусу.

Потом заходим в редактор объектов (вверху есть кнопка или просто нажмите F6). Выбираем вкладку "войска" (по умочанию), заходим в раздел, например, "стандартные войска">альянс>сражения>здания. Выбираем, к примеру, здание "сторожевая башня" и выбираем хар-ки, как наносящей урон башни, 1 уровня. Изменяем следующие характерситики (то что написано курсивом можно изменять на свое, то что жирным обязательное) к примеру:
Бой-атака 1 анимация... - Дренейская катапульта.
Бой атака 1 базовый урон - 50
Бой атака 1 вклчено автонаведение - да
Бой атака 1 время перезарядки - 1.0
Бой атака 1 допустимые цели - враги, наземные
Бой атака 1 радиус поражения (цели) - Враги, наземные
Бой атака 1 тип оружия - Снаряд (взрыв)
Урон количество граней у кости - 2
Бой атаки - только атака 1
И.т.д.
Также нужно будет потом настроить название, улучшения и.т.п. Теперь самая нудная часть: копируем это здание, переименовываем, задаем другие зар-ки и модели, и указываем у прошлого здания, что улучшается до этого. И.т.д. (Если вам будет непоянтно, наработка моей карты будет в конце статьи, так что вы сможете разобраться).

Теперь настраиваем монстров, которых башни должны уничтожать. Но для начала сделаем главное, строителя. Выбираем строителя, и задаем ему следующие параметры:
Бой атаки - нет
Масштабирование - 2
Графика отображение тени - полет
Графика особые - ...
Базовая скорость - 522
Высота - 100
Движение тип - летающий
Технологии - Зданий построено - выбираете ваши здания
Так, строителя мы настроили, поэтому настало время создавать наших монстриков. Не выходя из WE, можете выбирать любого юнита, переименовывать его и задавать хар-ки, к примеру возьмем обычного пехотинца. И задаем его некоторые параметры, к примеру:
Бой атаки - нет
Исходная защита - 3
Тип защиты - тяжелая
Базовая скорость - 400
Физический размер - 0 (дабы избежать застреваний)
Способно сти возможности - (нету)
Название - Пехотинец1
Подсказка подробная - Пехотинец
Технологии улучшения - (нету)
Хар-ки интервал пополнения - 2
Хар-ки макс. кол-во - 10
Хар-ки максимум здоровья (базовый) - 500
Хар-ки награда за уничтожение - 12
И так можно изменять любых воинов по вашему вкусу.
Далее ставим области на которых будут поворачивать крипы. Заходим во вкладку "слой" и выбираем "области". Теперь находим ваше место появления крипов и выделяем его. Назвав например 4 Green Spawn (это мы взяли например зеленого четвертого игрока). Потом ставим область где находится следующий поворот (Очень важно! Не пропустите ни одного!) и ставим на месте поворота небольшую область назвав к примеру 4a, на следующем 4b и.т.д. И останавливаемся на том месте, где могут встречаться крипы с другого места спавна. Также выделяем те области назвав к примеру topleftgo (т.е. идти верх лево) и toprightgo (право), на другом можно поставить просто rightgo leftgo или right/left. и выделяем область на последнем повороте назвав ее, к примеру, endgo (конец пути). У меня получилось так:

(не обращайте внимание на затемненные участки, эти области связаны с другими функциями). С областями закончили. И сейчас можно приступить к самой сложной части - триггеры. В общем, все скрипты на картах пишутся на одном из языков программирования называемый JASS. А триггеры такого вида (GUI) - это понятные пользователю уже готовые функции данного скрипта. Итак заходим в редактор триггеров. Сначала мы должны настроить таблицу. Итак, начнем с настраивания таблицы с счетом игроков. Для этого понадобятся переменные, поэтому, в этом же редакторе триггеров, нажимаем сверху на оранжевый крестик, который обозначает редактор переменных. И создаем переменную с названием killsred (убивает красный) и задаем ей функцию целочисленная и сохраняем. Так проделываем с каждым из игроков, но под конец создаем еще переменную с названием leaderboard и задаем ей функцию таблица рекордов и сохраняем. Теперь выходим из редактора переменных, и в редакторе триггеров создаем категорию Leaderboard. В ней создаем триггер. Kills Red (т.е. да, настраиваем параметры для красного игрока). Создаем событие:
Боевая единица - Player-Owned Unit Event. Теперь в этом окошке, внизу щелкаем на параметры игрока и выбираем Игрок 12 коричневый(компьютер), и действие - умирает (у вас должно это быть уже по умолчанию). Теперь создаем условие, что погибший юнит это крип. Итак создаем условие выбирая Player Comparison и в тексте задаем: Owner of; killing unit равно Игрок 1 Красный. Далее создаем 2 действия. Первое - выбираем Set Variable. В тексте: Set killsred (наша переменная (т.е. задаем функцию переменная)) = killsred + (функция arithmetic) 1 (значение). Сохраняем. Теперь второе действие. Создаем: Таблица рекордов - Change Player Value for Игрок 1 красный in Leaderboard to killsred (наши переменные). У вас должен быть следующий код:

Итак, делаем так, чтобы при выходе из игры, у ливера была надпись "покинул игру". Для этого создаем триггер к примеру Quit Red и создаем событие - Игрок - leaves the game. В тексте выбираем нужного игрока. И делаем действие - Таблица рекордов change player label и выбираем нужного игрока в Leaderboard (переменная) to <покинул игру>(значение) (это к примеру). Проделываем так для каждого игрока. Напоминаю, что все эти триггеры находятся в категории "Leaderboard". Далее следует создать новую категорию с игровыми настройками. Назовем её Game. Первый триггер в этой категории будет означать, что при выходе игрока из игры, все его юниты убирались из игры. Назовем этот триггер "leave kill". Создаем событие для каждого игрока с функцией leave game (Игрок ? leaves the game) и создаем действие ( Отряд - pick every unit in Unit Group and do action). И задаем параметры, чтобы выглядело так:
Code
Отряд - pick unit in (Units in (Playable map area) owned by (Triggering player)) and do (Боевая единица - Kill (Picked Unit))

Далее создаем триггер отсчета, но для начала зададим переменную timerwindow задав ей функцию окно таймера. Теперь создаем триггер, к примеру, wavescount со следующими действиями (не буду расписывать, просто покажу триггеры):

Где время до начала матча вы можете задать самостоятельно. Также сделаем триггер запускающий эту функцию назвав start (делаем для того, чтобы если у вас будет несколько отсчетов (об этом позже), можно было задать тут): т.е.
Code
События :
Время - Elapsed game time is 0.00 seconds
Действие:
Триггер - Run wavescount <gen> (checking conditions)

Далее записываем таблицу, поэтому создаем триггер с названием make. Задаем событие: - Время - Elapsed game time is 2 seconds, потом действия, но перед этим создадим переменную с нашими шансами назвав ее chances - функция целочисленная и значение 60 (это по вашему усмотрению, сколько может пройти крипов до поражения игроков), а также переменную с названием LVL и придав ей функцию целочисленной со значением 0(по умолчанию) . Итак вот действия:

Где 1 действие - по вашему усмотрению
2 - в последнем действии в тексте прописываем вначале название вашей карты и чуть отступив слово "убийства"
4 - задаем label - текущий уровень
5-13: настраиваем таблицу
14 - показываем шансы.

Итак, настало время настроить триггер с основными настройками старта игры. Для этого изменяем стандартный триггер, который у вас был на карте. Удаляем из него все, кроме события:

Где 1 действие можно пропустить, а выключенные триггеры не берите во внимание.
3 действие - это мы откроем карту для всех игроков.
4 - добавляем начальное золото
8 - чтобы при старте появлялся наш строитель
9 - за крипов давались деньги



После того как вы это выполнили, мы должны приступить к созданию триггера, при котором крипы достигшие этой области исчезали, а шансов оставалось меньше, смотря сколько монстров прошло. Поэтому создаем триггер с названием END. Создаем событие:
Боевая единица - Unit enters region - с текстом: A unit enters END <gen>
где END - это наша конечная область движения крипов.
Потом условие, означающее, что этот юнит - это компьютер (т.е. крип). Получается:
Player comparison - (Owner of (Entering unit)) равно Игрок 12 коричневый
Ну и создаем действия:
Боевая единица - remove - Remove (entering unit) from the game
//Настраиваем переменную Set Variable - Set chances =(Chances - 1).
//Показываем это в таблице рекордов Таблица рекордов - change Unit Value - Change the value for Игрок 12 (коричневый) in Leaderboard (переменная) to chances (тоже наша переменная, не забывайте).
//Ну и надо показать это игроку, но я не буду расписывать как это сделать, вряд ли вы поймете, что я напишу, со своей то манерой объяснения :) . Посмотрите как это делать у меня на тест карте снизу.

Ну и надо сделать так, чтобы если шансов было 0 или меньше, то игрок проиграл, а если шансы не дошли до ноля, то сделать так, чтобы игрок выиграл, но этот триггер будет запускать другой триггер. О нем пойдет речь дальше. Я также не буду расписывать, как это сделать, так как он многоярусный и вы можете не сориентироваться. Просто кину триггер, а с моей мапы можете скопировать или посмотреть как это делается. Вот:
Триггер проигрыша:

Триггер выигрыша :D


С основыми настройками мы разобрались, теперь нам осталось настроить всего 2 функции в игре - это пути и волны. Итак, начнем с путей. Разберем на примере игрока зеленого. Поэтому создаем общую категорию - назвав pathing. И создаем следующий триггер с названием path (номер вашего пути с областью (т.е. номер игрока, например 4)) 4 Green Spawn. И в нем следующие триггеры:
Событие:
Боевая единица - A unit enters region - A unit enters 4 Green Spawn <gen>
//Где 4 Green Spawn - это ваша область, где появляются крипы для четвертого зеленого игрока.
Условие:
Player comparison - (Owner of (entering unit)) равно Игрок 12 (коричневый)
//Т.е. мы уточняем, что игрок вошедший в эту область - это крип.
Действия:
Боевая единица - Issue Order Targeting A Point - Order (enering unit) to Двигаться (Center of 4a <gen>)
//Т.е. входящий игрок двигается к области 4а (следующий поворот).
Все то же самое проделываем с другими игроками, не забывая доделать все пути для каждого игрока (т.е. продолжаем для, к примеру, зеленого игрока:
Code

Событие:
Боевая единица - A unit eners 4a <gen>       
Условие:
(Owner of (entering unit) равно Игрок 12 (коричневый))
Действие:
Боевая единица - Order (entering unit) to Двигаться (Center of 4b <gen>)

С общими путями проделываем то же самое.
Надеюсь суть того, как это делается вы поняли.

И вот последняя часть. Волны.
Создаем в начале переменную назвав ее Counter и задав функцию - Таймер.
Как сделали переменную, создайте новую категорию Waves и новый триггер Waves 1.
В нем создаем:
Code

Событие:
Время - Timer expires - Counter expires
//т.е. заканчивается отсчет

Пропускаем условия. СОздаем действия (буду писать только готовые функции):
Code
Обратный остчет - Destroy timerwindow (помните переменную?)
Set LVL = (LVL + 1)
//Set variable, т.е. это в настройках переменных
Таблица рекордов - Change value for Игрок 10 (светло-синий) in Leaderboard to LVL
//для 10, т.к. он у нас идет под этой строчкой. Leaderboard и LVL - это наши переменные.
Игра - Display to (All players) the text: Волна 1 из 60
//Т.е. мы уведомляем всех игроков, что пошла первая волна.
If (Игрок 7 (зеленый) slot status) равно Играет then do (Боевая единица - Create 20 Пехотинец1 for Игрок 12 (коричневый) at (Center of 4 Green Spawn <gen>) facing (Стандартная ориентация зданий degrees) else (do nothing)
//Т.е. взяли, к примеру, игрока 7 (зеленого). Создали функцию If/then/else. Выставили значения и получили следующее: Если (Игрок 7 (зеленый) играет, то Создать 20 Пехотинец1 для нашего компьютера в Середине области (Центр 4 Респавна крипов) и смотреть в стандартную ориентацию. Проделываем так для всех игроков.
Триггер - Turn of Wavstart2 <gen>
//О нем пойдет речь ниже.
Триггер - Turn of this trigger
//Этот триггер нам больше не нужен будет

Теперь создаем триггер Wavstart2. Он будет означать то, что если никого не останется в живых после 1 волны, то запустить 2 волну:
Code

События:
Время - Every 2 seconds of game time
//Т.е. проверять каждые 2 секунды игрового времени
Условие:
(Number of units in (Units in (Playable map area) owned by Игрок 12 (коричневый))) меньше или равно 0
//Кол-во игроков в подконтрольной зоне компьютера меньше или равно нолю
Действия:
Триггер - Run Waves2 <gen> (ignoring conditions)
//Запустить вторую волну
Триггер - Turn off this trigger
//Отключим этот триггер
Группа игроков - Pick every player in (All players) and do (Игрок - add 10 to (Picked player) Золото (текущ.))
//Т.е. мы даем каждому игроку определенное кол-во денег после каждой волны

Так делаем во всех волнах, только событие Counter expires больше не нужно. Удачи! И не забудьте в игровых константах время разложения всего до ноля, чтобы не лагало. Для этого заходим в Дополнительно - Игровые константы, ставим галочку над "использовать нестандартные игровые константы" - находим пункты времени разложения зданий/героев/крипов и.т.п. и ставим по нолям.
Моя карта лежит по данной ссылке. Если ссылка нерабочая сообщайте в комментариях к данной новости. [off]P.S. переделал карту Green TD, так как заново свою было лень делать <_< [/off]
:)
Прикрепления: 3335522.jpg (65.4 Kb) · 3112343.jpg (895.0 Kb) · 4418730.jpg (714.6 Kb) · 0345860.jpg (1.13 Mb) · 2263990.jpg (96.9 Kb) · 6408193.jpg (659.0 Kb) · 7377593.jpg (50.7 Kb) · 0164523.jpg (61.4 Kb) · 9935277.jpg (357.2 Kb) · 1337639.jpg (190.3 Kb)


Сообщение отредактировал diestator - Вторник, 08.05.2012, 19:56
 
Дата: Понедельник, 07.05.2012, 19:21 | Сообщение # 2
Генералиссимус
Проверенные
Сообщений: 2259
Награды: 9
Репутация: 70
А триггеры? а баланс? TD это не легко)
И автора подпиши


Тот кто владеет информацией, тот владеет миром.
 
Дата: Понедельник, 07.05.2012, 19:54 | Сообщение # 3
Генералиссимус
Проверенные
Сообщений: 3625
Награды: 12
Репутация: 57
Quote (^GREAT^MAN^)
И автора подпиши

Зачем себя подписывать :)

Добавлено (07.05.2012, 19:54)
---------------------------------------------

Quote (^GREAT^MAN^)
А триггеры? а баланс?

еще не дошел
 
Дата: Понедельник, 07.05.2012, 23:42 | Сообщение # 4
Генералиссимус
Проверенные
Сообщений: 2259
Награды: 9
Репутация: 70
Quote (diestator)
Движение тип - летающий

Quote (diestator)
Графика отображение тени - полет

Quote (diestator)
Базовая скорость - 522

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


Тот кто владеет информацией, тот владеет миром.
 
Дата: Вторник, 08.05.2012, 05:23 | Сообщение # 5
Генералиссимус
Проверенные
Сообщений: 5123
Награды: 13
Репутация: 72
Quote (^GREAT^MAN^)
Ай яй яй яй Тип - летающиий!? ты че совсем? тогда придеться ставить блокираторы путей, нужно сделать юнита парящим Скорость 522? не обязательно Тень вобще нахер не нужно

омг, возьми и напиши свою статью. Он эту не закончил, а ты уже страдаешь.

Quote (^GREAT^MAN^)
Скорость 522? не обязательно

Он всё показывает на примере. Хоть Over 9000 напишет, тебе какая разница? Это число, которое ты можешь изменить.


Телеграм @Tshkn
Мой YouTube-канал Se Squared
 
Дата: Вторник, 08.05.2012, 10:16 | Сообщение # 6
Генералиссимус
Проверенные
Сообщений: 2259
Награды: 9
Репутация: 70
Quote (DewidWill)
омг, возьми и напиши свою статью.

Зачем писать ЕЩЕ одну статью если уже эта есть?
Quote (DewidWill)
Он всё показывает на примере.

На каком еще примере?
Quote (DewidWill)
Хоть Over 9000 напишет, тебе какая разница? Это число, которое ты можешь изменить.

У меня есть вероятность того что ты не играл в TD. Всегда в тд ставят около 400 скорости примерно, а затем на уровнях понижают


Тот кто владеет информацией, тот владеет миром.
 
Дата: Вторник, 08.05.2012, 10:25 | Сообщение # 7
Генералиссимус
Проверенные
Сообщений: 5123
Награды: 13
Репутация: 72
Quote (^GREAT^MAN^)
Зачем писать ЕЩЕ одну статью если уже эта есть?

Чтобы я смог её покритиковать. Только я постараюсь сделать это ещё тупее, чем ты.

Quote (^GREAT^MAN^)
На каком еще примере?

На своём. Он создаёт ТД карту и вставляет туда свои значения, чтобы людям было проще.

Quote (^GREAT^MAN^)
У меня есть вероятность того что ты не играл в TD. Всегда в тд ставят около 400 скорости примерно, а затем на уровнях понижают

Если жанр ТД - это ещё не значит, чтобы скорость была ровно 400. Скорость может быть любой и автор в праве решать, какую выбирать.

PS
И правильно говорить не "У меня есть вероятность", а "У меня есть предположение".


Телеграм @Tshkn
Мой YouTube-канал Se Squared


Сообщение отредактировал DewidWill - Вторник, 08.05.2012, 10:26
 
Дата: Вторник, 08.05.2012, 10:35 | Сообщение # 8
Генералиссимус
Проверенные
Сообщений: 2259
Награды: 9
Репутация: 70
DewidWill, Мне парралельно, главное что бы ты понял =)

Тот кто владеет информацией, тот владеет миром.
 
Дата: Вторник, 08.05.2012, 12:50 | Сообщение # 9
Генералиссимус
Проверенные
Сообщений: 3625
Награды: 12
Репутация: 57
Quote (^GREAT^MAN^)
Ай яй яй яй
Тип - летающиий!? ты че совсем? тогда придеться ставить блокираторы путей, нужно сделать юнита парящим

Это нужно, чтобы он проходил через крипов и свои здания спокойно, а блокираторы зачем? У меня везде полого.
 
Дата: Вторник, 08.05.2012, 15:02 | Сообщение # 10
Генералиссимус
Проверенные
Сообщений: 5123
Награды: 13
Репутация: 72
Quote (^GREAT^MAN^)
DewidWill, Мне парралельно, главное что бы ты понял =)

Чтобы я понял что?

Видишь ли, ты без мотивации начинаешь критиковать чью-то статью. Ладно бы какие-то ошибки находил, но какие-то незначительные поправки... Ты как наша училка по Русскому: к мелким деталям придираешься, а своё не доказать. Тем более ты придираешься на ровном месте. Это через чур.


Телеграм @Tshkn
Мой YouTube-канал Se Squared
 
Форум » Картостроение в Warcraft 3 » Статьи » Как сделать свою TD карту (Для начинающих...)
  • Страница 1 из 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск: