Главная » Статьи » Создание карт » Триггер (GUI) Редактор Учебники

Моддинг Редактор триггеров

11-12-2016Введение

Blizzard разработала World Editor очень легко изменить. В этом уроке мы рассмотрим лишь один аспект World Editor, который можно изменить, Редактор триггеров. Я покажу вам все, что вам нужно знать, чтобы добавить ваши собственные категории триггера, события, условия, действия, функции, типы переменных, а переменная пресетов. Если вы предпочитаете графический интерфейс, но обнаружили, постоянно нуждающихся в добавить бит JASS здесь и там, это для вас.

Приступая к работе

Во-первых, создать папку с именем "пользовательский интерфейс" в главном каталоге Warcraft III. Он должен называться "пользовательский интерфейс" для World Editor признать файлы внутри нее.

Теперь вам нужно последние версии следующих файлов:
UI \ TriggerData.txt
UI \ TriggerStrings.txt
UI \ WorldEditStrings.txt

Они могут быть извлечены из War3Patch.mpq. Положите эти файлы в каталоге интерфейса вы создали.

Эти файлы читаются, когда вы загрузите World Editor, но только тогда. Так что если вы внесли изменения в любой из этих файлов, и вы Мы открыты, вы должны закрыть и перезапустить МЫ для того чтобы изменения вступили в силу.

Форматы файлов

Давайте посмотрим, какие виды информации хранится в каждом из этих файлов. Это даст вам представление о том, какие вещи, которые можно изменить в редакторе триггеров. Каждый файл разбивается на отрезки, и каждый раздел начинается с его названия в скобках. Вы не должны добавить строки вне соответствующем разделе. Например, все триггера категории должны идти после [TriggerCategories], но до [TriggerTypes]. Не просто добавить материал до конца файла. Один из трюков, чтобы знать раздел после 1, что вы хотите, чтобы добавить к. Затем сделать "Найти" для названия этого раздела, и вы будете прыгать до самого конца предыдущего раздела, где вы можете добавить вещи сразу.

Первый и самый важный файл TriggerData.txt. Здесь все функции встроенного получает файл содержит следующие разделы:

[TriggerCategories] - Категории являются способом организации действий и функций. Они появляются в виде префикса, за которым дефис, а при выборе действий, вы можете выбрать для отображения только от действия к определенной категории. Например, в "группы - Kill группы", категория "группа", и действие "Kill группы".

[TriggerTypes] - Все типы переменных определены здесь. Можно заметить, что Есть очень много других типов переменных, перечисленные здесь, чем вы видите в редакторе переменных. Это потому что вы можете определить типы Редактор триггеров можно использовать внутри страны, но не будет иметь смысл, как регулярные (глобальных) переменных. Подробнее об этом чуть позже.

[] TriggerTypeDefaults - Некоторые типы переменных инициализируются значениями по умолчанию. Так, например, целых устанавливаются в 0 по умолчанию. Некоторые виды должен быть инициализирован функцией (как правило, "Создание "____) для того, чтобы работать должным образом, так что это хорошая практика, чтобы сделать это здесь. Например, таймеры инициализируются CreateTimer () и группами инициализируются CreateGroup ().

[TriggerParams] - Они известны как "Заготовки" в Редактор триггеров. Они определяются значения переменной типа, которые можно выбрать из списка. Некоторые типы переменных, есть только эти пресеты и никакой другой цели. Для тех из вас с внешними опыт программирования, в основном это "перечисленных типов". Примером может служить список заказов, Вы можете оформить ориентации пункте ("Move", "Человек Archmage - Blizzard", "Orc Tauren Chieftain - Shockwave" и т.д.).

[Дде] - Все мероприятия определены здесь.

[TriggerConditions] - все условия определены здесь.

[TriggerActions] - Все действия, определены здесь.

[TriggerCalls] - Это так называемые "Функции" в Редактор триггеров, когда вам нужно заполнить значение в качестве параметра. Примеры: "Math - случайных чисел" и "Регион - Центр Регион".

[DefaultTriggerCategories]
[DefaultTriggers] - Всякий раз, когда новая карта будет создан, вызвать категории (для организации) и триггеры могут быть созданы по умолчанию. Единственное, перечисленные здесь знакомые вызвать инициализации категории и Melee инициализации триггера. Вы могли бы найти возможность добавлять собственные здесь, или вы можете удалить несколько записей в этом разделе, если вы устали от того, чтобы удалить Melee инициализации.

В то время как TriggerData.txt определяет функциональность и структура Редактор триггеров, а две другие файлы, TriggerStrings.txt и WorldEditStrings.txt, обеспечить весь текст, который будет отображаться для вас, когда создание и редактирование триггеров. WorldEditStrings.txt просто список строк, и используется другой части мира, а также редактор. TriggerStrings.txt строк следить специальный формат, так как вы должны сказать, что Редактор триггеров части строки можно изменять параметры (подчеркнуть).

Разделы TriggerStrings.txt заключаются в следующем:

[TriggerEventStrings] - Strings для всех событий.

[TriggerConditionStrings] - Strings для всех условиях.

[TriggerActionStrings] - Strings для всех действий.

[TriggerCallStrings] - Strings для всех функций.

[AIFunctionStrings] - Они используются редактор ИИ.

И WorldEditStrings.txt:
[WorldEditStrings] - Strings для категорий, типов переменных, переменной по умолчанию тип и пресетов в этом файле.

Обратите внимание, что WorldEditStrings.txt имеет только один раздел. Это означает, что можно добавить строки в любом месте файла. Я считаю, что проще всего просто добавить строки в конец этого файла, но это зависит от вас.

Добавление действий

Хорошо, давайте приступим к делу. Я начну здесь с простой пример добавления действия и вернуться к действиям, гораздо позже в руководстве с чуть более подробный пример.

Для простоты, давайте добавим функцию, которая объявлена в common.j, но не отображаются в редакторе триггеров. Одно дело, что многих людей, занимающихся эффективности отметить, что многие действия, GUI звонить на функции, определенные в Blizzard.j, единственной целью которой является вызов функции в родной common.j. Есть случаи, в которых это может быть оправдано, но Есть также случаи, когда это просто совершенно излишними и только добавляет накладные расходы. (Некоторые используют это как нападение помощью GUI, но, как вы видите, это очень просто обойти эту "проблему".) Одним из примеров является функция DestroyEffectBJ, который просто вызывает DestroyEffect. Тем не менее, DestroyEffectBJ, что изложено в Редактор триггеров, а не чуть-чуть более эффективной DestroyEffect. Таким образом, для первого примера, давайте добавим к DestroyEffect Редактор триггеров.

Откройте TriggerData.txt. Порядок, в котором линии появляются в TriggerData.txt напрямую влияет на порядок, в котором элементы появляются в списках в Редактор триггеров. Так что если вы хотите добавить новое действие, вам, вероятно, хотите, чтобы быть правым перед или сразу после существующих действий Влияние Destroy. Мы знаем, что DestroyEffectBJ появится в файл, так что давайте делать поиск по этому вопросу. Затем мы видим строки:

Код:
DestroyEffectBJ=0,effect
_DestroyEffectBJ_Defaults=GetLastCreatedEffectBJ
_DestroyEffectBJ_Category=TC_SPECIALEFFECT
Что означает каждая строка сказать?
Первая строка говорит, что у нас есть функция называется DestroyEffectBJ. Значение "0" означает, что функция определена в WC3: Reign Хаоса. Если функция определена только в WC3: The Frozen Throne, вы должны положить значение "1" здесь. Остальные значения переменной типа параметров. В этом случае, у нас есть "результат", специального эффекта.

Следующая строка дает по умолчанию для каких-либо параметров. В этом случае, GetLastCreatedEffectBJ ("Последний создан Специальный Effect"), функция, значение по умолчанию.

В последней строке состояния какой категории это действие дюйма Помните, что категории определяются в верхней части файла. Поскольку это действие сделок со спецэффектами, он будет помещен в TC_SPECIALEFFECT.

Итак, теперь мы хотим, чтобы добавить запись для функции DestroyEffect. Он имеет те же цели и параметры, как DestroyEffectBJ, так что в этом случае мы можем просто скопировать и вставить линий, меняя только название функции. Таким образом, мы добавить следующие строки:

Код:
DestroyEffect=0,effect
_DestroyEffect_Defaults=GetLastCreatedEffectBJ
_DestroyEffect_Category=TC_SPECIALEFFECT
И мы покончили с TriggerData.txt для этого примера.

Далее, нам необходимо добавить соответствующие строки в TriggerStrings.txt. Откройте TriggerStrings.txt, и как и прежде, делать поиск по "DestroyEffectBJ". Этот файл имеет свои записи в том же порядке, TriggerData.txt, и это, вероятно, хорошая идея, чтобы сохранить с настоящей Конвенцией. Вы увидите следующие строки:

Код:
DestroyEffectBJ = "Destroy Специальный Effect"
DestroyEffectBJ = "Destroy", ~ Специальный Влияние
DestroyEffectBJHint =
Первая линия, что вы видите при выборе действий из списка. Вторая линия, что вы видите, когда вы имеете действий в данный момент. Это также показывает, что линии, если действия является частью вашей спусковой крючок. Третья линия, "Подсказка", выводит в небольшой серый печати, если у вас есть акции выбраны. DestroyEffectBJ не намек, так что эта линия остается пустым.

Обратите пристальное внимание на второй линии. Мы должны сказать Редактор триггеров, где в строке, мы оставляем за пробелов параметров. То, как вы должны делать это за счет прекращения строку двойные кавычки ("), а затем через запятую, то тильду (~) и" имя "параметра. Вы можете поместить что-либо на это имя. Если нет по умолчанию задано для параметра, это означает, вы увидите, это имя в красный Редактор триггеров, что означает, что вам нужно параметра. Если у вас есть значение по умолчанию, вы никогда не увидите это название, так что вы можете назвать ее как угодно, .

Если нам нужно добавить к строке, мы бы поставить запятую после слова Эффект, затем двойные кавычки, чтобы показать, что мы начинаем строка снова, и если бы мы имели несколько параметров, мы должны были бы разорвать Строка снова двойных кавычек и запятых, и так далее. (Вы можете просмотреть TriggerStrings.txt примеры.)

Итак, теперь давайте строки для вступления DestroyEffect. Мы в большинстве случаев могут просто скопировать и вставить сюда снова, как прежде. Тем не менее, мы не хотим, чтобы и действия имеют одинаковые строки. Если это произойдет, мы не могли бы отличить друг от друга! Поэтому мы хотим добавить к сведению, что это "эффективный" версии. Мы можем также заполнить поле Подсказка. Мы действительно не нужно, чтобы изменить второй линии, потому что мы имеем достаточно информации, чтобы сохранить две действия друг от друга всего лишь изменения в первой строке.

Итак, мы добавить следующие строки:
Код:
DestroyEffectBJ="Destroy Special Effect"
DestroyEffectBJ="Destroy ",~Special Effect
DestroyEffectBJHint=
Сохранить и закрыть TriggerStrings.txt. Начало World Editor, откройте карту и проверьте, чтобы убедиться, что действие проявляется в Редактор триггеров. Теперь бросьте его в спусковой крючок и сохранить карту, чтобы убедиться, вы не получите ошибки компиляции. Посмотрите, как просто, что было?

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

Убедитесь, что вы выполнили все, до этого момента перед переходом.

-------------------------------------------------- ------------------------

Для этого следующем разделе, я буду ходить через Как добавить функциональность "trackables" на Редактор триггеров. Если вы не знакомы с trackables, они являются объектами, которые могут обнаружить щелчков мыши. (Обратите внимание на ссылку здесь, чтобы отслеживать действия руководство - кто-то должен написать один!) Добавление trackables редактору приведет нас на протяжении большей части остальных видов, которые мы можем добавить к GUI.

Добавление категории

Сначала нам нужно добавить категорию для нашего отслеживаются функций. Это очень просто. В TriggerData.txt, вы увидите список категорий. Выделите ближе к концу списка. Определение категории выглядит следующим образом:

Код:
TC_VISIBILITY=WESTRING_TRIGCAT_VISIBILITY,ReplaceableTextures\WorldEditUI\Actions-Visibility
Первых, это внутреннее название категории, следующая часть строки, которая отображается в Редактор триггеров, когда появляется категория (и мы видим, что она определена в WorldEditStrings.txt), а последняя часть, маленький значок, который появляется рядом Действия в спусковой крючок.

Используя ту же модель, мы сделаем за 1 trackables:

Код:
TC_TRACKABLE=WESTRING_TRIGCAT_TRACKABLE,ReplaceableTextures\WorldEditUI\Actions-Nothing
Мы не имеем значок отслеживаются действия, поэтому мы просто использовать по умолчанию Действия-Ничего.

Вы могли заметить, что некоторые категории имеют ", 1" в конце. Как вы увидите в комментариях, в верхней части файла, это означает, что имя триггера категории не будет отображаться. Мы хотим, чтобы показывать здесь, поэтому мы не будем добавлять ", 1".

Теперь мы должны определить строку WESTRING_TRIGCAT_TRACKABLE. Это идет в WorldEditStrings.txt, чтобы открыть этот файл, перейдите на дне, и добавьте строку:

Код:
WESTRING_TRIGCAT_TRACKABLE="Trackable"
При желании, вы можете найти другие категории курок и добавить его среди этого списка, но это не является необходимым.

Добавление переменной типа

Далее необходимо определить тип переменной, с тем чтобы Редактор триггеров понимает, что это контролироваться.

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

Код:
[TriggerTypes]
// Defines all trigger variable types to be used by the Script Editor
// Key: type name
// Value 0: first game version in which this type is valid
// Value 1: flag (0 or 1) indicating if this type can be a global variable
// Value 2: flag (0 or 1) indicating if this type can be used with comparison operators
// Value 3: string to display in the editor
// Value 4: base type, used only for custom types
// Value 5: import type, for strings which represent files (optional)
// Value 6: flag (0 or 1) indicating to treat this type as the base type in the editor
"Значение 2" должен сделать при определенных условиях. Если вы можете сравнить два значения типа, то это будет установлен на 1 (например, "целое" имеет это значение установлено, потому что вы можете сравнивать числа). Для типов, где она не имеет смысла сравнивать два значения, это может быть установлен в 0 (например, "gamecache" имеет этот флаг отключен, так как сравнение двух кэш игры на самом деле не имеет смысла).
"Значение 3," является строка для использования при такого рода, отображенный в редакторе (как в редакторе переменных и в качестве заголовка диалогового окна, когда вам нужно заполнить чем-то такого типа в качестве параметра).
Значения с 4 по 6 являются необязательными, и мы можем игнорировать их сейчас. Я вернусь к ним позже.

Имеет смысл добавить типы близко к смежных отраслей, но это не имеет значения, за исключением порядка типов переменных в редакторе переменных. Если вы хотите сохранить вещи по алфавиту, контролироваться должны быть добавлены в промежутке между "timerdialog" ("Timer Window") и "спусковой крючок".

Итак, давайте понять, что флаги нам нужно. Я действительно не помню, trackables определены в RoC. Я думаю, что они есть, но на всякий случай, вы всегда можете просто поставить "1" для версии. Если вы делаете карты для TFT только это не имеет значения, что вы положили здесь.

Мы определенно хотим, чтобы иметь возможность делать переменные типа контролироваться, так что давайте поставим 1 для глобального флага переменной.

Да, trackables может быть использован в операторах сравнения, мы, возможно, потребуется этой функции, чтобы определить, является ли нажал-на отслеживаются определенный 1, так что мы поставим 1 в этой области.

Наконец, мы должны добавить ссылку на строку название "контролироваться". Таким образом, наши добавил линия будет выглядеть следующим образом:

Код:
trackable=1,1,1,WESTRING_TRIGTYPE_trackable
Не забудьте добавить соответствующие строки в WorldEditStrings.txt.

Добавление Значение по умолчанию для типа

Я буду пропускать добавив типа по умолчанию. Это не является необходимым для trackables, так как мы хотим, чтобы они начинаются как нулевой. Это очень простая процедура, хотя, и я уверен, что вы можете понять это для себя. Но спасет вас, я дам вам знать, что если вы решите осуществить следующие типы данных: регион, unitpool, itempool; вам нужно будет заполнить что-то для этого раздела.

Добавление Preset

Заготовки для trackables на самом деле не имеет смысла. Однако, есть один из предустановленных значений, что имеет смысл для trackables, и все ручки производных типов: нуль. Вы видите это Редактор триггеров "Нет дня", "Нет блок" и т.д. Значение "нуль" должен быть определен отдельно для каждого типа. Мы хотим "Нет контролироваться" вариант для сравнения, чтобы проверить, если значение является пустым или нет.

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

Код:
UnitNull=0,unit,null,WESTRING_TRIGUNIT_NULL
Сначала давайте посмотрим на то, что каждая часть средств. Ключевые имя здесь только для справки, "UnitNull" не имеет смысла в JASS или в любом месте. "0" означает, что эта величина является действительным в RoC. "Единица" является тип заданного, что мы определяем. "Нулевой" это значение пресета. И вот наконец это строка, которая будет отображаться в интерфейсе, когда мы используем этот заданный (в WorldEditStrings.txt, это "нет устройства").

Мы хотим, чтобы скопировать, что для trackables. Наиболее очевидным способом просто изменить все случаи подразделение контролироваться. Мы можем установить флаг версия 1, чтобы отметить это как TFT-единственный (держа его в качестве 0 будет работать так же хорошо тоже). Опять же, не забудьте добавить строку в WorldEditStrings.txt.

Код:
TrackableNull=1,trackable,null,WESTRING_TRIGTRACKABLE_NULL

Добавление событий

Есть два события, которые относятся к trackables, определенных в common.j:

Код:
native TriggerRegisterTrackableHitEvent takes trigger whichTrigger, trackable t returns event
native TriggerRegisterTrackableTrackEvent takes trigger whichTrigger, trackable t returns event
Первым из них является "щелчком мыши", то второй является "Mouse Over" событие. Давайте добавим их обоих.

Добавление событий практически идентична добавив действий. Единственное различие в том, что вы определяете их в разделе [дде], и что вы пропустите первый параметр, который считается типа "спусковой крючок". Используя ту же модель с действиями (минус первый параметр), добавить их в нижней части раздела событий. Помните, что вы не должны задать параметры по умолчанию. И не забудьте добавить записи в TriggerStrings.txt!

Добавление Состояние

Единственное условие, кроме А и Или сравнений. Поэтому мы хотим, чтобы добавить "отслеживаются Сравнение". Разница между этой секции и события или действия, является то, что условия не являются вызовы функций, но обрабатываются внутренне Редактор триггеров. На самом деле операторы преобразуются в JASS непосредственно, используя ==,! = И т.д. Давайте посмотрим на "Trigger Сравнение":

Код:
OperatorCompareTrigger=0,trigger,EqualNotEqualOperator,trigger
_OperatorCompareTrigger_Defaults=_,OperatorEqualENE,_
_OperatorCompareTrigger_Category=TC_CONDITION
Как всегда, у нас есть вариант флага в первую очередь. Тогда мы имеем один параметр типа триггера, следующего типа EqualNotEqualOperator, и последний другого типа триггера. Есть два типа операторов, сравнение использования: EqualNotEqualOperator предлагает только варианты "равно" (==) и "не равно" (!=), а ComparisonOperator предложения "равно" (==), "не равно "(!=)," больше "(>)," больше или равно "(>=)," меньше "(<) и" меньше или равно "(<=). По умолчанию OperatorEqualENE означает, что оператор будет использовать по умолчанию "на равных". Как правило, это то, что мы хотим, так что это хороший умолчанию.

Это не имеет смысла иметь вызвать в качестве "больше чем" другого триггера, так EqualNotEqualOperator Здесь уместно. Аналогично, для trackables, мы хотим этого оператора. Поэтому, как обычным способом, мы скопировать и вставить эти строки, заменив "спусковой крючок" к "контролироваться". Если мы хотим сохранить алфавитном линий, мы хотели бы положить эти строки справа вверху тех, для OperatorCompareTrigger. Тогда мы имеем:

Код:
OperatorCompareTrackable=0,trackable,EqualNotEqualOperator,trackable
_OperatorCompareTrackable_Defaults=_,OperatorEqualENE,_
_OperatorCompareTrackable_Category=TC_CONDITION
И не забудьте добавить соответствующие строки в TriggerStrings.txt.

Добавление функции

Я пропуская очевидные действия CreateTrackable сейчас и перехода к функции разделе ([TriggerCalls]). Давайте добавим простую функцию, которая возвращает значение, так как мы не сделали это раньше. 1 мы должны о trackables является GetTriggeringTrackable. Это определяется в common.j:

Код:
constant native GetTriggeringTrackable takes nothing returns trackable
Добавим, что этот весь путь в конце секции [TriggerCalls]. Опять же, давайте посмотрим на примере, в настоящее время последняя функция:

Код:
GetLastCreatedTextTag=1,0,texttag
_GetLastCreatedTextTag_Defaults=
_GetLastCreatedTextTag_Category=TC_LAST
Конечно, первым идет имя функции, а затем вариант флага. Как вы видите, есть еще один флаг в этом разделе. Глядя на комментарии в верхней части этого раздела, говорит, что это значение указывает GUI ли эта функция может быть использована в событиях. Иногда имеет смысл для функции будет допущен к применению в мероприятиях, иногда нет. Используйте ваши решения здесь, хотя в большинстве случаев это не имеет значения. Если вы установите его в 0, и изменить свое решение, вы всегда можете установить его в 1.

Далее идет тип возвращаемого значения. Очень легко запутаться здесь, потому что обычно в этот момент у вас есть список параметров. После возвращения типа, список параметров будет дальше, но в этом случае функция не имеет параметров.

Имя_сценария полевой

Там еще один полезный поле для действий (и только действия, к сожалению): имя_сценария. Это позволяет отделить имя функции JASS от названия действия GUI. На самом деле это довольно мощный по нескольким причинам.

Одним из преимуществ является то, что вы можете дать несколько имен GUI на ту же функцию. Может быть, вы хотите один функции работы как "целое" и "unitcode". В JASS, это, конечно, выйдет, так как оба типа действительно чисел. В GUI, вам нужно два отдельных входа, но, используя имя_сценария поле, вы можете иметь два названия, которые указывают на ту же функцию.

Большие преимущества этой области является то, что она отделяет реализации GUI в связи с осуществлением JASS. Может быть, GUI думает, что вы используете одну функцию, но при сохранении карты, различные функции JASS действительно используются. Важно знать некоторые из того, что происходит, когда вы сохраните карту в World Editor, чтобы оценить, как это работает. При сохранении карты в МЫ, все триггеры и ваших триггеров структуры сохраняются в файл запускает в карты. Этот файл не имеет смысла в Warcraft III, и используется только МЫ. (Именно поэтому почти все программы, карта защитника уничтожить этот файл.) Кроме того, все ваши триггеры преобразуются в JASS и помещены в файл сценария внутри карты. Этот файл 1, что фактически используется Warcraft III, и включает в себя другой информацией, а, например, заранее размещены подразделениях и регионах, переменная инициализации, а также расположение игроков начала.

При использовании имя_сценария поле, то изменить часть JASS, скрипт файл, который создается при сохранении, а не частью интерфейса, запускает файл создается, когда вы сохраните. Это означает, что изменения в имя_сценария поля будет меняться, как карта компилируется в редакторе, не препятствуя карту от открытия в других версиях редактора.

Вот яркий пример. Давайте вновь наш первый пример действий: DestroyEffectBJ. Запись выглядит следующим образом:

Код:
DestroyEffectBJ = 0, эффект
_DestroyEffectBJ_Defaults = GetLastCreatedEffectBJ
_DestroyEffectBJ_Category = TC_SPECIALEFFECT
Теперь мы знаем, что DestroyEffectBJ является излишним и неэффективным использованием, а DestroyEffect является предпочтительным. Мы можем использовать имя_сценария поле, чтобы заменить все экземпляры DestroyEffectBJ с DestroyEffect, без необходимости править что-либо в любой карте! Мы все еще думаю, что вы используете DestroyEffectBJ так же, как и раньше, но при конвертировании триггер JASS, или сохранить на карте, DestroyEffect будет использоваться.

Код:
DestroyEffectBJ = 0, эффект
_DestroyEffectBJ_Defaults = GetLastCreatedEffectBJ
_DestroyEffectBJ_Category = TC_SPECIALEFFECT
_DestroyEffectBJ_ScriptName = DestroyEffect
Этот метод гораздо предпочтительнее, чтобы с помощью двух отдельных действий (как мы это делали в первом примере) в такой ситуации, потому что вам не нужно изменять любые карты с использованием графического интерфейса, и, когда вы используете эту функцию, ваша карта будет по-прежнему открытые в других редакторах. (Это также меньше работы, вам не нужно ничего делать в TriggerStrings.txt когда вы делаете это.) К сожалению, вы увидите, что это отличный способ является весьма ограниченным, так как параметры список две функции должны быть идентичными. Цель многих функций BJ состоит в обратном порядке параметров (для физических целей языка), поэтому они не могут быть просто изменены с помощью имя_сценария области.

Добавление собственных функций

В этом руководстве в качестве примеров встроенные функции, которые не определены в GUI. При реализации любой функции из common.j или Blizzard.j в GUI, вы ничего не нужно делать, чтобы заставить их работать, они будут работать.

Все, что вы узнали применяется для добавления собственных функций. Редактор триггеров агностик относительно того, она поддерживает функции определяются или нет. Единственное, что нужно помнить, что для любого из ваших собственных функций вы добавляете, вы должны включить эти функции в пользовательских сценариев вашей карте. Вы только должны сделать это, если вы на самом деле с помощью этих функций в вашей карте, однако. Я считаю, что проще всего держать документально список всех функций, я добавил в отдельном файле, а затем скопировать и вставить этот файл в любую карту я создаю, которые необходимо функциональность.

Распространенные ошибки

Я не хочу вдаваться в ошибки слишком много, потому что там обязательно будет ошибку я еще не получил еще, но здесь есть несколько типичных ошибок, вы можете сделать во время редактирования в спешке:

Забыв TriggerStrings.txt вступления
Забыв WorldEditStrings.txt вступления
Bad форматирования на TriggerStrings.txt въезда (двойные кавычки неуместны, неуместные запятой)
Отсутствует параметр (или с дополнительными 1) в вашем вступления TriggerStrings.txt
Подсчет тип возврата функции в качестве одного из параметрам
Использование неправильного типа параметра, либо в неправильном порядке или с неправильным их число, чем фактическая функция ожидает (World Editor не будет жаловаться, пока пытаются сохранить вашу карту, используя один из этих функций, то вы получите JASS ошибке компиляции.)
Использование действий или функций, которые требуются импортные код, но забыл, чтобы импортировать соответствующие функции в пользовательских сценариев.

Думаю, я должен отметить еще одну вещь здесь, если вы не выбрали его уже. Если вы используете какие-либо действия и т.д., которые Вы добавляете к GUI, и попытайтесь загрузить карту в неизмененном МЫ, МЫ рухнет с ошибкой сказать, что он не может найти все функции. Так что, если поделитесь своими карта имеет большое значение, будьте осторожны при использовании вещи вы добавили в GUI. Вы можете либо поделиться МЫ мод, или преобразовать обидеть триггеров JASS. Как совет, всегда положить записку, в поле Подсказка в TriggerStrings.txt функции вам сказать, что они были добавлены вами. Вы также должны положить записку о функции, которые не определены в common.j или Blizzard.j, что вам нужно, чтобы включить их. Это поможет вам сэкономить головные боли, но и призваны служить в качестве документации, если вы решите поделиться МЫ мод.

Заметки об организации

Вы, наверное, уже заметили, что вы можете высказать свои замечания в TriggerData.txt и т.п., начиная с линии "//". Так как для вопросов, и, поскольку Есть много разделов, находящихся в особо TriggerData.txt, возможно, придется изменений повсюду. Я настоятельно рекомендую, что вы поместили комментарий выше всякого изменения, внесенные в редакторе, или если вы добавили тонну функции, связанные в ряд, выше первой 1. Дайте ему "помечать" имя, так что вы можете сделать поиск на эту метку, и легко перейти к любой из ваших модификаций. Зачем это делать? Если новый Warcraft III патч выпущен, который изменяет TriggerData.txt, возможно, вы захотите обновить. Вы же не хотите потерять любые ваши изменения, так, отметь все из них, вы можете легко импортировать их в новый TriggerData.txt (и TriggerStrings.txt и WorldEditStrings.txt). Хотя в данный момент основным патч вряд ли, вы не хотите быть застигнутыми врасплох, и она просто хорошая идея другое.

Комментарии проектирования пользовательского интерфейса

Я бы не стал называть себя экспертом в области дизайна пользовательского интерфейса, но если вы работаете в крупной системы JASS, которые необходимо осуществить в GUI, вот несколько советов:

Консолидация схожую функциональность. В common.j, у вас есть SetHeroStr, SetHeroAgi, SetHeroInt. В GUI, вы должны изменить Герой атрибутов, с вариантами для сложения, вычитания, либо установить в значение. Вам понадобится дополнительная функция для обработки параметров, но это может привести к действиям, и функции, которые намного легче работать.

Определение пользовательских типов и пресеты либерально. Они не стоят ничего, кроме как на вашем жестком диске, а также добавить огромный вклад в неявной документации. Вы будете благодарить себя, когда вы пыль с карты через 1-2 лет.

Использовать наиболее конкретной переменной типа возможно. Если вы действительно хотите Группа-Type, использовать unitcode, а не целое число. Если у вас есть дополнительный код параметр, целое число от 0 до 4, не используйте целочисленный тип. Вместо этого, определить нестандартный тип, основанный на целое число, а список значений 5 в качестве предустановок.

Не добавить функцию GUI, если вы видите использовать его в рамках GUI. Подумайте, как вы пошли бы об использовании той или иной функции в контексте GUI. Возможно, вам придется пересмотреть свой подход.

Упражнения

Вот несколько способов, вы можете рассмотреть вопрос о продлении вашего Редактор триггеров:

Добавить "регион" тип переменной (в отличие от прямого) и всем его функциям.
Добавить встроенных функций, которые принимают реальные (координата) параметров, в отличие от места параметров.
Найдите другие примеры "фиктивные" BJ функций, которые могут быть заменены их родной коллегами используя только имя_сценария поля (и дайте мне знать о них!)
Добавить система, как ручки переменных KaTTaNa или CSCache Vexorian в GUI.
, а также осуществлять все функции, которые могут быть полезны для вас.
Если вы работаете в большой системе, которая опирается на JASS, добавить наиболее важных "высокого уровня" функций GUI.

Ну, вот и все, ребята. Я надеюсь, вы увидите, как легко можно настроить Редактор триггеров для ваших нужд, и если вы не видите ее все-таки я надеюсь, что вы когда-нибудь видеть, как глупый спор между GUI JASS и на самом деле.
Так что теперь пойти дальше и добавить запись для GetTriggeringTrackable. Как отзыв, это функция реакции на мероприятие, поэтому категория должна быть



Категория: Триггер (GUI) Редактор Учебники | Добавил: Адмирал (11-12-2016 в 05:11:48)
Просмотров: 4243 | Комментарии: 2 | Рейтинг: 3.3/6
Всего комментариев: 2
avatar
1
Жаль что это в переводчике переводилось ((
avatar
2
Какой дибил это написал? Удалите статью или напишите нормально.
avatar
Рейтинг@Mail.ru
Яндекс.Метрика

Copyright © 2010-2017
Вакансии :: Контакты
Мобильная версия сайта