vJass для новичков
Эта статья расскажет о том, что такое vJass и с чем его едят. Стоп! Если у вас не стоит
Jass New Gen Pack, даже не начинайте читать статью.
В данной статье описаны такие вещи: - Области
- Библиотеки
- Текстовые макросы
- Структуры
- Методы
Глобальные переменные
Теперь вы можете ставить блок глобальных переменных в любой части кода.
И их можно писать без уродливой приставки «udg_».
Библиотеки
Библиотека – это группа функций, которые будут вставлены в код карты перед Custom script’ом и после объявления глобальных переменных. Полезно если у нас есть функция, которую много раз вызывают в разных триггерах.
Синтаксис: Пример: Функция
libfunc() будет загружена перед любыми другими функциями.
Требования библиотек
Иногда функции в пределах библиотеки используют данные из других библиотек. В этом случае, мы используем параметр "requires". Библиотека, чьё имя указано после параметра, будет размещена выше данной библиотеки.
Пример: Но учтите, что две библиотеки не могут требовать друг друга. Инициализация библиотек
В случаях, где нам надо, чтобы перед использованием библиотеки выполнялась какая-либо функция, будет использован параметр "initializer". Эта функция не должна ничего брать.
Пример: Эти функции могут находиться и внутри библиотек. Частные библиотеки
Функции в пределах библиотек могут быть помечены как "
private". Функции, которые объявлены как «
private»могут быть использованы только в пределах этой библиотеки. Функции за пределами библиотеки могут иметь то же имя что и частная функция. Полезно при импорте нескольких наработок в карту, где имена функций могут повторяться.
Только функции этой библиотеки могут вызывать данную функцию.
Для того, чтобы функция стала частной, поставьте оператор «
private» перед именем функции.
Пример:
Области
Области похожи на библиотеки, но они размещаются на своих реальных местах в коде
(также области не могут инициализироваться и использовать другие области). Полезно когда функция должна использоваться только в определённом участке кода, но не обязана объявляться вверху кода сценария.
Синтаксис: Пример: Частные области
Так же, как и с библиотеками.
Текстовые макросы
Это создано для ленивых людей ;-). Текстовые макросы позволяют вам делать аналогичные копии других функций.
Синтаксис: На заметку: "//!" не комментарий, а обозначение конструкции. Текстовый макрос заменит
$ANYTHINGS$ независимо от того, какие значение вы придаёте ему, запуская макрос. Это немного трудно понять, так что взглянем на пример:
Пример: Этот текстовый макрос создаст две функции:
Параметры, которые берёт этот текстовый макрос -
FUNC и
INSTANCE. Перед
$INSTANCE$обязательно должно быть «
do» . Это необходимо, так как если вы не поставите это, то создадутся 2 функции с одинаковыми именами.
Вот другой пример:
В этом примере вы не должны заново переписывать функцию, просто написать «//! runtextmacro chat("*число*")».
Структуры
Благодаря структурам Jass стает более похожим на другие объекто-ориентировочные языки программирования, такие как C и C++. В PHP и C++ структуры называют классами.
Пример: Эта функция отобразит «
Hello!».
Синтаксис: Создание структуры: Удаление структуры: Для того, чтобы обратиться к переменной, которая находиться в пределах структуры используется данное действие:
Вот другой пример: Вышеуказанная функция отобразит «
6».
Учтите, что вам не надо обнулять переменные внутри структур. При каждом создании структуры создается отдельная копия, так что можно иметь несколько структур с одинаковыми именами в один момент.
Методы
Методы – это функции, которые находятся в пределах структур.
Пример: Чтобы вызывать метод: Обратите внимание на то, что внутри метода «
sayit». Я использовал «
this.msg». Для того, чтобы использовать переменную из этой же структуры используйте "
this.".
Не используйте
GetTriggeringTrigger() или функции «
PolledWait» и «
TriggerSleepAction» в методах.
Вы можете использовать структуры, чтобы заменять хеш-таблицы.
Данное заклинание телепортирует юнита в его начальную позицию через случайное количество секунд. Этот триггер использует хеш-таблицы только один раз, и этот триггер намного быстрей, чем, если сделать полностью с хеш-таблицами, так как структуры быстрей хеша.
Автор: 1337D00D Перевёл: Сорнемус Источник