Главная » Статьи » warcraft

FAQ по World Editor и GUI
---------------------------------------------------------------Вступление-------------------------------------------------------
И так, если вы впервые открыли World Editor – эта статья для вас.
GUI – это набор команд набираемых в Редакторе триггеров и совпадающих логически, проще говоря – триггер. приступим…
------------------------------------------------------------------Импорт--------------------------------------------------------------
Импорт любого файла удается если в пути файла удалить war3imported, но если это не поможет то для каждого типа файлов есть определенный способ их импортирования
--------------------------------------------------------------Импорт модели-----------------------------------------------------
Для импорта модели нужно прописать тот путь который указан в RedMe, а так же удалить war3imported у всех текстур (blp) вложенных с моделью. Аналогичный способ прописать моделям в пути Models вместо war3imported а текстурам Textures вместо war3imported.
---------------------------------------------------------------Импорт иконок-------------------------------------------------------
DISBTN. Система иконок достаточно проста. Все название иконок должны быть вида
BTNxxx -- Активная иконка. Огранена серой рамкой.
DISBTNxxx -- Активная недоступная иконка. Слегка затемнена. Без огранения.
PASBTNxxx -- Активная иконка без рамки.
ACBTNxxx -- Активная иконка с желтой рамкой.
1. Самой простой комбинацией иконок является пара BTN+DISBTN. DISBTN иконки появляются при недоступности предмета или боевой единицы. Если же иконка импортирована неправильно, то вместо нее будет отображаться зеленый фон, что очень раздражает;
2. Импортируете иконки в карту. Иконке под именем BTNIkonka пути можно не менять. Пути иконки DISBTN должны быть вида "ReplaceableTextures\CommandButtonsDisabled\DISBTNIkonka.blp". Иконки пассива идут под любые пути. Иконки автокаста также идут под любую директорию;
3. Теперь любой боевой единице, предмету, способности мы можем поставить новую иконку. Достаточно в графе "Графика -- Пиктограмма" поставить новую иконку.
4. Если все правильно, то все будет отображаться корректно, без зеленого экрана.
--------------------------------------------------------------Триггеры----------------------------------------------------------------
Триггеры состоят из События, Условия, Действия, рассмотрим все по порядку:
Событие – при исполнении события срабатывает весь триггер, если событий несколько то при исполнении одного из них срабатывает действие
Условие – если при исполнении события условие не верно то его действие не начнется
Действие – это основная часть триггера, с помощью действий можно управлять юнитами, создавать объекты, менять ход игры и т.д.
Пример простейшего триггера:
Событие:
Игрок 1 (красный) пропускает анимацию
Условие:
Юнит u не равно нет боевой единицы
Юнит u (переменная) в зоне Region равно да
Действие:
Добавить игроку 1 (красный) 100 золота

Если игрок красный нажемает Esc и в это время юнит занесенный в переменную u находится в регионе Region то красному игроку дадут 100 золота
-----------------------------------------------------------------FAQ--------------------------------------------------------------------
1.1 Как сделать так, чтобы в начале игры на стартовой локации не появлялся городской центр и рабочие?
Откройте окно Trigger Editor и и триггере Melee Initialization удалите действие Melee Game - Create starting units (for all players)
Если Вы делаете не Melee карту, то есть не на "расстройку", тогда рекомендуется удалить весь триггер.

1.2 Как сделать скрещивание предметов? Как сделать складывание зарядов в предметах?
Самый простой вариант: создаем в редакторе объекта все части предмета и скрещенный предмет и создаем триггер:
Код:
Скрещивание:

Событие:
Боевая единица - A unit Acquires an item
Условие:
((Hero manipulating item) has (Часть 1)) Equal to True*
((Hero manipulating item) has (Часть 2)) Equal to True*
Действие:
Предмет - Remove (Item carried by (Hero manipulating item) of type Часть 1)
Предмет - Remove (Item carried by (Hero manipulating item) of type Часть 2)
Hero - Create Скрещенный предмет and give it to (Hero manipulating item)

*Boolean Compastion

Складывание зарядов:

Событие:
Боевая единица - A unit Acquires an item
Условие:
Or - any (Condition) are true
Условия:
(Item type of(Item begin manipulated)) равно <тип предмета1>*
(Item type of(Item begin manipulated)) равно <тип предмета2>*
(Item type of(Item begin manipulated)) равно <тип предмета3>*
Действия:
Set it**=(Item type of(item begin manipulated))
For each (Integer A) from 1 to 6 do (Actions)
Цикл - Действия
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Если - Условия
(Item type of(Item carried by (Triggering unit) in slot (Integer A))) равно it
(Item carried by (Triggering unit) in slot (Integer A)) не равно (Item begin manipulated)
То - действия
Предмет - Set charges remaining in (Item carried by (Triggering unit) in slot (Integer A)) to ((Charges remaining in (Item carried by (Triggering unit) in slot (Integer A)) + (Charges remaining in (Item begin manipulated)))
Предмет - Remove (Item begin manipulated)
Иначе - действия

*Тип предмета, данный триггер универсален, и может складывать заряды всех типов предметов, указанных в условии
**Переменная типа "Тип предмета"

1.3 Как сделать так, чтобы при взятии определенного предмета, например меча, он появлялся у юнита в руке?
Необходимо взять способность (Ability) Сфера Молний и поменять ей модель на нужную, при этом указав в параметре «Графика: особый объект воздействия» нужную точку приложения эффекта.
overhead - над головой, не прикрепляется к анимации
head - голова, прикрепляется к анимации
chest - туловище
origin - обычно у ног юнита
hand - рука (может быть left и right)
foot - ноги
weapon (Для героев) - оружие
sprite, medium, large - для зданий

Однако помните, что далеко не у всех моделей есть все эти точки, они описываются именно в моделях.

1.4 Как сделать юнита неуязвимым или невыбираемым?
Дать юниту способность «Неуязвимый (нейтральный»), либо использовать действие: Боевая единица – Make Invulnerable/Vulnerable.
Для невозможности выбора юнита - дать ему способность "Москиты" (Locust), но не геройскую, а именно способность самих москитов. Также эта способность сделает юнита неуязвимым.

1.5 Почему лидерборды\мультиборды\диалоги не хотят создаваться при запуске карты?
Некоторые функции не могут выполняться сразу после запуска карты. Поставьте перед ними действие Wait 0.01 seconds или перенесите действие в триггер с событием Timer - Elapsed time is 0.01 seconds. Второе предпочтительнее.

1.6 Как создать в карте свои квесты?
Нужно использовать действие: Quest - Create Quest – используется для создания новых квестов, также могут понадобиться эти действия:
Код:
Задание - Mark Quest as Completed – Квест выполнен
Задание - Mark Quest as Failed – Квест провален

И уже в зависимости от произошедших событий вызывать их.

1.7 Как триггерами проиграть звук?
Для того что бы триггером проиграть звук нужно сначала добавить его в список. Чтобы это сделать откройте Редактор Звука, в списке слева найдите нужный звук и нажав кнопку Use As Sound добавьте его в список.

1.8 Я сделал декорацию с моделью башни, но она почему то все время меняет анимацию.
В левой стороне, в окне предпросмотра файла модели найдите вашу башню и посмотрите там название нужной анимации. Потом создайте триггер:
Код:
Событие:
Map initialization
Действие:
Декорация - Play (ваша башня)'s (нужная анимация) animation

1.9 Можно ли сделать так, чтобы при покупке в магазине предмета или юнита, он исчезал совсем? Т.е. не перезаряжался и со временем снова появлялся, а совсем исчезал: купил - и всё, он твой, и ни у кого другого его не будет.
Да, есть целый набор триггеров для этих целей:
Код:
Нейтральное здание - remove item-type (*) убирает предмет
Нейтральное здание - add item-type (*) добавляет предмет
Нейтральное здание - remove unit-type (*) убирает юнита
Нейтральное здание - add unit-type (*) добавляет юнита

*в скобках там написано:
(from marketplace) из одного магазина
(from all marketplace) из всех магазинов.
Есть некоторые особенности устройства механизма продажи - чтобы свободно манипулировать юнитами/предметами - добавлять или убирать их по желанию во время игры, необходимо выполнить ряд действий-требований:
• Магазину, в котором будут размещаться предметы, необходимо добавить способность "Продажа предметов" (она находится в редакторе способностей, в папке Особые\Войска\... ; её равкод - 'Asid' а иконка похожа на шахматную доску с зелеными клетками вместо белых)
• Все предметы, которые вы будете убирать во время игры, должны быть добавлены в магазин триггерно, действием описанным выше. Таким образом, изначально в редакторе объектов имеет смысл оставлять только те предметы, которые будут все время неизменно присутствовать в магазине на протяжении всей игры.
Аналогично нужно поступить и с продаваемыми войсками, с той лишь разницей, что добавлять нужно способность "Продажа войск", она расположена рядом со способностью "Продажа предметов".

1.10 Как сделать декорацию с моделькой "мертвого" юнита?
Создаём разрушаемый объект (например на базе бочонка) и даём ему модель юнита, труп которого требуется поставить. Далее ставим эту декорацию на карту, выбираем и нажимаем Enter. В появившемся окне указываем количество жизней 0.

1.11 Что такое триггерная магия?
Это нестандартные способности, часть действий которых выполняется с помощью триггеров. Как правило, триггер запускается с событие A unit начинает применять способность (для активных спелов) и A unit приобретает способность (для пассивных магий). Далее уже в условиях стоит отловить то, с какой именно способность было произведено действие (условия из разделов Abilty comparison и Hero Skill comparison). Также в триггерной магии часто используется даммикаст.
Помните, что создание триггерной магии на JASS куда более качественное.

1.12 Что такое "даммикаст"?
Дамми каст это по сути говоря триггерное наложение заклинания. Юнит-кастер имеет способность москиты (что делает его не уязвимым и невыбираемым), не имеет атаки и файл модели заданный под шифром ".mdl" (что делает его невидимым). Далее данному юниту дается приказ кастовать способность. Вот простой пример даммикаста:
Код:
Боевая единица - Create 1 DummyCaster for Игрок 1 (красный) at (Position of (Triggering unit)) facing Стандартная ориентация зданий degrees
Боевая единица - Add Молот бурь* to (Last created unit)
Боевая единица - Add a x.xx** second Общий Expiration timer to (Last created unit)
Боевая еденица - Order (Last created unit) to Горный Король (Альянс) - Молот бурь TargetUnit

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

1.13 Что такое JASS?
Внутренний язык программирования, используемый в WarCraft. Возможности написания скриптов на JASS куда более полноценны, чем на редакторе триггеров. По сути триггеры являются надстройкой для JASS.

1.14 У меня проблема: Я сделал триггер, в котором каждые 5 секунд генерируются случайное число, но каждый раз, когда я запускаю карту, последовательность этих чисел всегда одинаковая. Например: 78,62,29,6... Как сделать, чтобы каждый раз генерировались разные числа?
Файл=> Параметры=> Проверка карты=> Фиксировать случайный разброс - уберите галочку напротив данного параметра.

1.15 Если я копирую много триггеров из другой карты мне нужно создавать все переменные вручную?
Нет. Они создаются автоматически если поставить галочку в пункте меню Файл=> Параметры=> Общие=> напротив "Автом. Создавать неизв. переменные во время вставки триггеров". После этого просто копируем триггеры - переменные создадутся автоматически.

2.16 Я видел, как в роликах у юнитов поворачивалась голова, как это сделать?
Нужно использовать действие: Анимация - Lock body-part facing, также может понадобиться действие: Анимация - Reset body-part facing чтобы отменить поворот головы.

1.17 Как отменить ролик по нажатию Esc?
Создать переменную типа Boolean и дать ей значение нет (False), в триггере самого ролика перед действием поставить Wait, и если наша переменная равна True - пропустить все действия. Потом вызвать триггер, который сделает все пост роликовые действия. Затем создать триггер:
Код:
Событие:
Player skips cinematic
Действие:
set (наша переменная) = Да (true)
Триггер - Turn off (This Trigger)
Триггер - Run (Построликовый триггер) (Ignoring Conditions)

1.18 Как в редакторе объектов ставить отрицательные значения?
Файл=> Параметры=> Общие=> поставить галочку напротив "Разрешить использование в редакторе объектов отрицательных значений".
Выбрать необходимое поле, зажать Shift и нажать Enter (или двойной клик мышкой). Теперь можно вводить отрицательное значение.
На основе этого возможно сделать ауру, отнимающую броню, отрицательную регенерацию здоровья и многое другое=)

1.19 Что такое custom script (custom code) карты?
Чтобы увидеть Custom script карты нужно щелкнуть по самой верхней строке в списке триггеров, на месте где находятся обычно отображается сам триггер, в большинстве случаев будет пустое поле - это и есть поле "своего кода", весь JASS код в нем выполняется до инициализации триггеров и после объявления глобальных переменных. Часто именно в него требуется вписать код многих наработок.

1.20 Как реализован выбор каких-то параметров игры, через выводящиеся на экран кнопки (как при нажатии F10)?
Чтобы это сделать нужно создать переменную типа Диалог, после чего заполнить диалог кнопками, действием: Диалог - Create Dialog Button и обязательно поместить наши кнопки в переменные - без этого они будут бесполезными.
После использовать действие: Диалог - Show/Hide. Также следует создать триггер с событием Dialog Button Click в условие которого с помощью Dialog Button Comparison отлавливать какая именно кнопка была нажата и запускать соответствующие действия.

1.21 Как из обычного здания сделать Таверну или Магазин, чтоб на карте обозначалось "домиком"?
Характеристики=> Нейтральное здание: пиктограмма показана на миникарте - поставить Да (True).

1.22 Я сделал герою способность, чтобы он проглатывал врагов, но когда я загружаю карту, и выбираю эту способность, то игра вылетает и появляется ошибка. Почему?
Необходимо так же давать способности "пассажир" и "еда". Рекомендую посмотреть к примеру как это сделано у кодоя.

1.23 Как изменить по ходу игры дистанцию атаки?
Два вариант: добавить юниту улучшение "Длинноствольные мушкеты" или поставить в Редакторе объектов юниту большую дистанцию атаки, и ограничить ее дистанцией получения приказа (дистанция атаки не может быть больше последней). Тригерно устанавливать дистанцию получения приказа: Боевая единица - Set Asquisition Range.

1.24 Как вывести текст не в левом нижнем углу экрана?
Это возможно только с использованием JASS.
Код:
function DisplayTimedTextToPlayer takes takes player toPlayer, real x, real y, real duration, string message returns nothing
где x и y координаты текста относительно экрана

1.25 Я не понимаю, где менять физический размер декораций?
Размера у них нет, есть только "текстура пути". pathing texture - определяет где по этой модели можно ходить, а где нет, где можно летать над ней, а где нет, где можно плавать, а где нет. Pathing Texture представляет собой изображение, в котором каждый пиксель отвечает за игровую клетку. Однако при использование нового формата карт место tga файла в архив помещается txt файл, содержащий информацию про проходимость - war3map.wpm
Тем не менее в редакторе сохранилось обозначение цветов для наглядности работы с путями. Текстуры могут закрашиваться следующими цветами:




  1.26 Как отключить коды в одиночной игре?
Это невозможно так как при вводе строки - чита тригер с событием, отлавливающем ввод строки просто не срабатывает. Однако существует возможность отловить следствие кода, к примеру проверяя не стала ли какая либо местность видна игроку, проверяя ресурсы игрока и т.д.

1.27 Что такое равкод (ID объекта) ?
Уникальный идентификатор типа объекта (не порядковый, а именно типа, например: тип-пехотинец представлен в виде 'hfoo', глобальные переменные, сгенерированные редактором тоже включают в себя равкод объекта, и его порядковый номер на карте, например gg_unit_hfoo_0013), представлен 4-мя символами. В триггерах и JASS может быть передан как целочисленное значение, обозначающее тип объекта, например local integer BuffId = 'B000'
Что бы узнать его нужно нажать Ctrl+D в редакторе объектов или в меню "Вид" поставить галочку напротив пункта "Показать названия переменных".
Категория: warcraft | Добавил: Ihsan (28.04.2011)
Просмотров: 3910 | Комментарии: 6 | Теги: FAQ, World editor, триггеры | Рейтинг: 5.0/2
Всего комментариев: 6
6 sheff4  
0
Romalei, подсказка тебе нажми сюда

5 Romalei  
0
Народ помогите плз я сделал триггер на продажу здания в точности как тут, но у меня почему то за здание дают просто 100голд, в чём дело?

4 sheff4  
0
я если честно вопроса не понял задай на форуме его тут: Вопросы по картостроению.

3 nursyaka  
0
как сделать не выбераемого героя выбераемым??? скажите пожалуйста

2 Ihsan  
0
Отредактировал статью

1 sheff4  
0
норм

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]