Alex-elf
#1Участвовать могут все желающие.
[marquee]Век живи,век учись! [/marquee]
Война Эльфов(AoS)
Лига героев(тренировочный лагерь)
Одинокий орк(Ролик)
Форум Warcraft III Триггеры и Jass Уроки по триггерам |
Уроки по триггерам |
Alex-elf#1Здесь я буду обьяснять триггеры,давать задания,проверять и указывать на ошибки.
Участвовать могут все желающие. [marquee]Век живи,век учись! [/marquee] Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
Alex-elf#2УРОК 1
Начнем с простой функции Pick every unit.Эта функция позволяет выбрать и выполнить действие сразу с несколькими воинами(Отрядом),но хочу заметить что эта функция не применима к воинам со способностью "москиты".При выборе этой функции требуеться выбрать отряд над которым будет производиться действие. (Last created unit group) - используеться для выбора последней созданой группы с помощью триггеров. (Random 4 units from (Units in (Playable map area)))- используеться для выбора определеного числа воинов в области,группе,типа и т.д.(Когда требуеться поделить отряд,наложить случайно заклинание и т.д.) (Units in (Playable map area))- используеться для выбора всех воинов в определённой области. (Units in (Playable map area) owned by Игрок 1 (Красный)) - используеться для выбора всех воинов одного игрока в определённой области. (Units in (Playable map area) matching (Condition) - используеться для более точного(конкретного) выбора воинов в определённой области.При использовании условий обязательно надо указывать не Triggering Unit, а Matching Unit. (Units within 512.00 of (Center of (Playable map area))) - используеться для выбора всех воинов в радиусе от точки(По кругу). (Units within 512.00 of (Center of (Playable map area))) matching (Condition) - используеться для более точного(конкретного) выбора воинов в радиусе от точки(По кругу).При использовании условий обязательно надо указывать не Triggering Unit, а Matching Unit. (Units owned by Игрок 1 (Красный))- используеться для выбора всех воинов одного игрока по всей карте. (Units owned by Игрок 1 (Красный) of type Воин) - используеться для выбора воинов определённого типа одного игрока по всей карте. (Units owned by Игрок 1 (Красный) matching (Condition) - используеться для более точного(конкретного) выбора воинов одного игрока по всей карте.При использовании условий обязательно надо указывать не Triggering Unit, а Matching Unit (Units of type Воин) - используеться для выбора воинов определённого типа по всей карте (Units currently selected by Игрок 1 (Красный))- используеться для выбора воинов которые в даный момент выбраны определёным игроком. Задание:Сделать карту с 9 областями например так и в одной области поставить по 2-3 воина каждого вида наземных войск Альянса(Без героев только воины) Используя только функцию Pick every unit (События на ваше усмотрение(например chat message)) №1.Разделите всех воинов по типу в каждую область №2.Сделайте чтобы в каждой области небыло 2 одинаковых воина Прикрепления:
1519053.jpg
(2.5 Kb)
Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
Alex-elf#3УРОК 2
Каждый кто хочет сделать компанию должен уметь пользоваться буфером игры.Функции управляющие буфером игры позволяют сохранять данные и использовать их в другой карте или в этойже карте в нужный для нас момент. Create a game cache from Карта1.w3х- используеться для создания нового буфера игры(куда все данные будут сохроняться). Save (Last created game cache) - используеться для сохранения внесеных данных в буфер игры. Store (Воин) as (Название файла для сохранения) of (Название категории для сохранения) in (Last created game cache) - используеться для сохранения воина со всеми параметрами(Опыт,предметы,магии и т.д.). Store (Реальное число) as (Название файла для сохранения) of (Название категории для сохранения) in (Last created game cache) - используеться для сохранения реальных числовых параметров(Здоровье,мана и т.д). Store (Целое число) as (Название файла для сохранения) of (Название категории для сохранения) in (Last created game cache) - используеться для сохранения целых числовых параметров(Уровень,золото,дерево и т.д.). Store (Условия(Да,Нет)) as (Название файла для сохранения) of (Название категории для сохранения) in (Last created game cache) - используеться для сохранения определеного условия(Фора,союз,владение чем-то и т.д.). Store (Строка) as (Название файла для сохранения) of (Название категории для сохранения) in (Last created game cache) - используеться для сохранения тестовых параметров(Имя воина,введеная строка и т.д.). Restore (Название файла в которой был сохранен воин) of (Название категории в которой был сохранен воин) from (Last created game cache) for Игрок 1 (красный) at (Center of (Playable map area)) facing 0.00- используеться для загрузки ранее сохраненого воина для определенного игрока в определенной области повернутым на определенный градус. Store (Строка) as (Название файла для сохранения) of (Название категории для сохранения) in (Last created game cache) - используеться для сохранения тестовых параметров(Имя воина,введеная строка и т.д.). Restore (Название файла в которой был сохранен воин) of (Название категории в которой был сохранен воин) from (Last created game cache) for Игрок 1 (красный) at (Center of (Playable map area)) facing (Position of (Triggering unit))- используеться для загрузки ранее сохраненого воина для определенного игрока в определенной области повернутым лицом к определенной точке. Reload all game cache data from disk- используеться для перезагрузки всех буферов игры на диске. Clear (Last created game cache) - используеться для очистки всего буфера игры. Clear all labels of Category in (Last created game cache) - используеться для очистки определеной категории буфера игры. Важно: Для того чтобы использовать данные в другой карте необходимо в Карте1 создать новый буфер игры(с названием самой карты(Карта1.w3х)),с помощью функций Store сохраняем все что нам необходимо,затем сохраняем сам буфер Save.В Карте2 создаём новый буфер игры(с названием прошлой карты(Карта1.w3х)) и всё.Теперь все данные кроме воина можно загружать в условиях,переменных и т.д.(Воин с помощью Restore). Задание:Сделать 2 карты Карта1 с 1 героем 1 лавкой и кучей (штук 10-15) разбросаных предметов,Карта2 пустая с удаленными триггерами сражения. Используя функции Буфера игры (События на ваше усмотрение(например chat message)) №1.Сохраните героя (Вначале подняв часть предметов) и загрузите его в Карте2 №2.Сохраните золто (Вначале продавв часть предметов) и загрузите его в Карте2 Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
VLADb†KA#4Кому нужны русские триггеры просто скопируйте этот TXT в корневую папку с игрой.
Прикрепления:
TriggerStrings.txt
(283.5 Kb)
|
Alex-elf#5УРОК 3
Если вы хотите сделать RPG вам точно не обойтись без заданий,да и в других картах тоже не повредит. Display to (All players) the Задание изменилось message: (Сообщение) - используеться для вывода сообщения о задании для игрока или группы игроков Create a Основной quest titled (Название задания) with the description (Описание Задания) using icon path (Иконка залания) - используеться для создания нового задания Destroy (Last created quest) - используеться для удаления задания Заблокировать (Last created quest) - используеться для открытия(Закрытия) задания чтобы игрок смог его увидеть(Иначе будет просто ?(Задание не получено)) Mark (Last created quest) as Выполнено - используеться для метки задания(Выполнено,не выполнено) Mark (Last created quest) as Неудачно - используеться для метки задания(Удачно,Неудачно) Mark (Last created quest) as Получено - используеться для метки задания(Получено,Не получено)) Change the title of (Last created quest) to (Название задания) - используеться для смены названия задания Change the description of (Last created quest) to (Описание задания) - используеться для смены описания задания Create a quest requirement for (Last created quest) with the description (Описание) - используеться для создания требования к заданию Mark (Last created quest requirement) as Выполнено - используеться для метки требования(Выпонено,не выполнено) Change the description of (Last created quest requirement) to (Описание требования) - используеться для смены описания требования Create a defeat condition with the description (Описание условия поражения) - Используеться для установки условия поражения(Кто-то не должен умереть и т.д.) Destroy (Last created defeat condition) - Используеться для удаления условия поражения Change the description of (Last created defeat condition) to (Описание условия поражения) - Используеться для изменения описания условия поражения Flash the quest dialog button - ипользуеться для анимирования кнопки задания(Эфект типа авто каста) Задание:Поставить на карте 3 воина(Вражеских) и 1 героя (Себе) №1.Задание ваш герой(????)не должен умереть №2.После запуска карты -"задание изменилось - убейте 3 воинов" с условием скольео воинов осталось убить Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
Alex-elf#6УРОК 4
Если вы хотите сделать не сложную "Мили"(Карта сражения(Обычная)) вам не нужно волноваться о триггерах ведь для режима сражения они сразу создаються при открытии новой карты,но если вы хотите чтобы ваша карта отличалась от других "Мили" то они вам могут пригодиться.Да и в картах других жанров они тоже могут пригодиться. Use melee time of day (for all players) - Устанавливает стандартное время дня для всех игроков(Тоесть стандартное(Установленое) значение длительности дня в настоящих секундах) Limit Heroes to 1 per Hero-type (for all players) - Используеться для ограничения тренировки героев(Тоесть не должно быть одинаковых героев) Give trained Heroes a Scroll of Town Portal (for all players) - Используеться для того чтобы когда герой закончил подготовку(Тренеровку) он получил 1 свиток телепорта Set starting resources (for all players) - Дает в начале игры всем игрокам золото и древесину(Стандартное кол-во) Remove creeps and critters from used start locations (for all players) - Используеться для удаления всех монстров со стартовой позиции игрока Create starting units (for all players) - Создает каждому игроку несколько рабочих Run melee AI scripts (for computer players) - Используеться для запуска работы стандартного ИИ(Если это действие не включить,то компьютер ничего не будет делать) Enforce victory/defeat conditions (for all players) - Устанавливает стандартные условия победы и поражения Create (Расса) starting units for Игрок 1 (Красный) at (Игрок 1 (Красный) start location) (Включить Heroes) - Создает определёному игроку несколько рабочих выбраной рассы и 1 героя(Если включить) Задание: №1.Удалить триггеры сражения из вашей новой карты если она не "Мили" Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
Alex-elf#7УРОК 5
Я думаю вы часто задумывались как выводить какое-нибудь сообщение не сбоку экрана,а непосредствено в игре возле воина,здания,области и т.д.Если вы хотите сделать такой текст то вам понадобяться функции "Плавающий текст". Create floating text that reads (Текст) at (Область) with Z offset (Сдвиг вверх по оси Z), using font size (Размер текста), color ((Красный), (Зеленый), (Синий)), and (Прозрачность) transparency - Используеться для создания плавающего текста в области. Create floating text that reads (Текст) above (Юнит) with Z offset (Сдвиг вверх по оси Z), using font size (Размер текста), color ((Красный), (Зеленый), (Синий)), and (Прозрачность) transparency - Используеться для создания плавающего текста над юнитом. Destroy (Плавающий текст) - Используеться для удаления плавающего текста. Показать (Плавающий текст) for (Игрок) - Используеться для показывания/скрытия плавающего текста для игрока. Set the velocity of (Плавающий текст) to (Дистанция) towards (Градус) degrees - Используеться для того чтобы текст не стоял на месте а смещался в сторону. Change the color of (Плавающий текст) to ((Красный), (Зеленый), (Синий)), and (Прозрачность) transparency - Используеться для изменеия цвета плавающего текста. Change the position of (Плавающий текст) to (Область) with Z offset (Сдвиг вверх по оси Z) - Используеться для перемещения плавающего текста в другую точку. Change the position of (Плавающий текст) to (Юнит) with Z offset (Сдвиг вверх по оси Z) - Используеться для перемещения плавающего текста в другому юниту. Change text of (Плавающий текст) to (Текст) using font size (Размер текста) - Используеться для изменения текста в плавающем тексте. Change (Плавающий текст): Заблокировать suspend state - Используеться для остановки/запуска всех действий плавающего текста(вроде паузы). Change (Плавающий текст): Заблокировать permanence - Используеться для остановки/запуска затухания(Плавного исчезновения)плавающего текста. Change the lifespan of (Плавающий текст) to (Время) seconds - Используеться для установки времени жизни плавающего текста(Через сколько он удалиться) Change the fading age of (Плавающий текст) to (Время) seconds - Используеться для установки периода исчезания плавающего текста. Change the age of (Плавающий текст) to (Время) seconds - Используеться для установки периода плавающего текста(Сколько времени его видно). Важно: lifespan,fading и Age не дадут эфекта вместе с permanent. Задание: №1.Создать желтый плавающий текст возле юнита который сдвигаеться вверх и в середине пути сменил цвет на фиолетовый Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
Litedragon#8а можно пример для третьего урока?? у меня просто русские тригеры поэтому неочень понятно
[url=http://nick-name.ru/sertificates/658129/][img]http://nick-name.ru/forum/Litedragon.gif[/img][/url]
http://www.seosprint.net/?ref=1829401 |
Qupad#9Litedragon, вот пример, думаю розберешся ели нет то пиши
Добавлено (05.09.10, 12:04) Прикрепления:
Quest_helper.w3x
(20.5 Kb)
|
Alex-elf#10Блейд-Мастер, Вот подробное задание 1 урока.Я не такой поэт как ты,но всеже я надеюсь поймеш.
Для того чтобы выполнить это задание для начала естествено нужно запустить редактор и создать новую карту(надеюсь это вы умеете),затем нужно создать 9 областей,ну и можно обвести ваши области травой как на рисунке.В самой нижней области(Красной на рисунке) ставите так сказать "каждой твари по паре" тоесть 2-3 пехотинца,2-3 волшебницы и т.д. Когда вы это все закончили переходим непосредствено к самим триггерам. 1.Создаем новый триггер называем его допустим "Type" создаем в нем новое событие после которого они все разойдуться кто куда(так сказать мальчики налево,девочки на право) например: Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
Pro100Killer#11расскажи о работе с переменными.
Мафия бессмертна!
Тестерирую на досуге мапы,без фанатизма) nikikin -Человек с очень завышеным ЧСВ и слабой нервной системой. Это многое объясняет) Весь мир это иллюзия бред больного ума и охреневшего сознания |
Alex-elf#12УРОК 6
Что такое переменная?Каждая переменная это что-то вроде бумаги, на который вы записываете информацию,чтобы не забыть ее.Можно рассматривать переменную как объект,свойства которого — название и тип данных,которые можно в нее записать и значение, аписанное в переменную. Действия, которые можно производить с переменными – создать,присвоить новое значение,прочитать значение переменной. Переменные используються с определенными игровыми объектами(Юниты,декорации,цифры и т.д.). Во многих случаях можно обойтись и без переменных,но при умении пользоваться переменными можно многое упростить да и некоторые задачи – такие как работа со спецэффектами, диалогами,таблицами записей,мультибоардами и др. – по нормальному просто невозможна без переменных. Лутше использовать много переменных чтоб не получить кашу в триггерах! Большинство людей составлять карту из "кусков" — наработок/разработок. И это отличный пример использования переменных ради удобства. Гораздо удобнее настраивать наработку с помощью переменных(хотя не всегда настройка делаются именно с помощью переменных),чем лезть в её код, хотя в обоих случаях будет один и тот же результат (зато разные временные затраты и количество потраченных нервов).Еще это может сэкономить количество функций в триггере, если в паре с переменными массивами использовать циклы.Но об этом позже. Сейчас же запомните, что не следует бояться переменных, пусть их даже будет много, хотя, конечно, не стоит создавать их тоннами (очень на многом можно сэкономить).Но у всего есть своя цена — будет глупо, если вместо того, чтобы воспользоваться одной переменной, мы напишем 100 строк кода, только для того, чтобы не вводить новую переменную. У переменных есть типы, соответствующие разным видам данных.Ведь число и тип юнита разные вещи.Нельзя же сделать с числом то, что можем сделать с воином(например,отдать приказ числу).Поэтому и появилась необходимость в типах, чтобы не возникало ошибок.Вот список часто используемых типов переменных(Остальные используют ооочень редко). Но далеко не обязательно,чтобы значение переменной было конкретным значением,вроде i = 4.Переменной можно присвоить выражение,то есть,i = 2 * 2запишет в переменную то же самое (конечно,я пишу это не в виде триггеров,но в общем,надеюсь, понятно).Можно дать значение какой-нибудь переменной в зависимости от другой переменной тип такого i = j * 5.В результате в i будет записано значение,"полученное" от j * 5.Такое выражение возвращает какое-то значение. Возвращаться могут не только цифры, а любые объекты (но только те, у которых есть свой тип переменных юниты, строки, игроки и т.д)Не сразу может быть понятно со словом возвращает. Никто ни у кого ничего не брал в долг.Более подробно это можно описать следующим образом: вместо самого выражения будет подставлен результат его выполнения(Тоесть ответ). Также бывают массивы переменных. Теперь рассмотрим понятие функций и возвращаемых ими значений. Функция что вроде "куска" кода,который можно "вызывать".Это как выражение,только гораздо более расширенное и с его помощью можно получить количество юнитов в группе,количество жизней или маны у юнита и т. д.Она точно так же "возвращает" значения. Выражения могут быть использованы в паре с функциями что чаще всего и делается. Чтобы создать переменную надо находиться в редакторе триггеров.Нажмите переменные или просто нажмите кнопку с иксом.Здесь Вы сможете создавать переменные или изменять уже созданные.Редактор переменных можно запустить прямо во время создания некоторых триггеров, нажав на кнопку изменить. Кроме функций бывают еще операторы.Все математические действия и сравнения(сложение, вычитание,умножение,равенство,больше,меньше и т. д.) — операторы. Оператор присваивания с его помощью переменной присваивается значение. Тут все довольно просто: выбираем переменную, выбираем значение. Короче если вам надо что-то использовать не в первую секунду триггера то заносите это в переменнную Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
enomousbright#13я по поводу урока 5(плавающтй текст).
Создаю плавающий текст,устанаюливаю Velocity (припустим 64 и кут 90)и потом он не ищезает.Я уже пробовал и Lifespan(1c.) и Fading Age и просто Age,но текст все равно не ищезал. Добавлено (26.09.10, 13:42) |
Alex-elf#14enomousbright, Просто плавающий текст не всегда может удалиться через Last created floating text(Если например ты содаеш текст над Picked unit текс удалиться только над 1 воином над остальными он будет висеть) Поэтому занеси его в переменную и он будет работать как надо
Вот пример текста на 1 сек. над всеми воинами красного игрока Прикрепления:
9381967.jpg
(28.9 Kb)
Скромные люди живут тихо и стреляют из пистолета с глушителем.
Война Эльфов(AoS) Лига героев(тренировочный лагерь) Одинокий орк(Ролик) |
|
| |||