Эта статья расскажет о том, что такое vJass и с чем его едят. Стоп! Если у вас не стоит Jass New Gen Pack, даже не начинайте читать статью. В данной статье описаны такие вещи: Области Библиотеки Текстовые макросы Структуры Методы Глобальные переменные Теперь вы можете ставить блок глобальных переменных в любой части кода. ![](http://wctft.ucoz.ru/PhotoProg/527bf2e15581.jpg)
И их можно писать без уродливой приставки «udg_». Библиотеки Библиотека – это группа функций, которые будут вставлены в код карты перед Custom script’ом и после объявления глобальных переменных. Полезно если у нас есть функция, которую много раз вызывают в разных триггерах. Синтаксис: ![](http://wctft.ucoz.ru/PhotoProg/c0acd39c1a39.jpg)
Пример: ![](http://wctft.ucoz.ru/PhotoProg/e9942475ef79.jpg)
Функция libfunc() будет загружена перед любыми другими функциями. Требования библиотек Иногда функции в пределах библиотеки используют данные из других библиотек. В этом случае, мы используем параметр "requires". Библиотека, чьё имя указано после параметра, будет размещена выше данной библиотеки. Пример: ![](http://wctft.ucoz.ru/PhotoProg/5a6c2ccc7117.jpg)
Но учтите, что две библиотеки не могут требовать друг друга. Инициализация библиотек В случаях, где нам надо, чтобы перед использованием библиотеки выполнялась какая-либо функция, будет использован параметр "initializer". Эта функция не должна ничего брать. Пример: ![](http://wctft.ucoz.ru/PhotoProg/0384e8fb624b.jpg)
Эти функции могут находиться и внутри библиотек. Частные библиотеки Функции в пределах библиотек могут быть помечены как "private". Функции, которые объявлены как «private»могут быть использованы только в пределах этой библиотеки. Функции за пределами библиотеки могут иметь то же имя что и частная функция. Полезно при импорте нескольких наработок в карту, где имена функций могут повторяться. Только функции этой библиотеки могут вызывать данную функцию. Для того, чтобы функция стала частной, поставьте оператор «private» перед именем функции. Пример: ![](http://wctft.ucoz.ru/PhotoProg/2c3dbc661f0e.jpg)
Области Области похожи на библиотеки, но они размещаются на своих реальных местах в коде (также области не могут инициализироваться и использовать другие области). Полезно когда функция должна использоваться только в определённом участке кода, но не обязана объявляться вверху кода сценария. Синтаксис: ![](http://wctft.ucoz.ru/PhotoProg/63e41bb6556f.jpg)
Пример: ![](http://wctft.ucoz.ru/PhotoProg/eb8a610622b6.jpg)
Частные области Так же, как и с библиотеками. Текстовые макросы Это создано для ленивых людей ;-). Текстовые макросы позволяют вам делать аналогичные копии других функций. Синтаксис: ![](http://wctft.ucoz.ru/PhotoProg/42c131f569c6.jpg)
На заметку: "//!" не комментарий, а обозначение конструкции. Текстовый макрос заменит $ANYTHINGS$ независимо от того, какие значение вы придаёте ему, запуская макрос. Это немного трудно понять, так что взглянем на пример: Пример: ![](http://wctft.ucoz.ru/PhotoProg/d4e6f37b19fa.jpg)
Этот текстовый макрос создаст две функции: Параметры, которые берёт этот текстовый макрос - FUNC и INSTANCE. Перед $INSTANCE$обязательно должно быть «do» . Это необходимо, так как если вы не поставите это, то создадутся 2 функции с одинаковыми именами. Вот другой пример: ![](http://wctft.ucoz.ru/PhotoProg/96b135409a89.jpg)
В этом примере вы не должны заново переписывать функцию, просто написать «//! runtextmacro chat("*число*")». Структуры Благодаря структурам Jass стает более похожим на другие объекто-ориентировочные языки программирования, такие как C и C++. В PHP и C++ структуры называют классами. Пример: ![](http://wctft.ucoz.ru/PhotoProg/4e43759b33f4.jpg)
Эта функция отобразит «Hello!». Синтаксис: ![](http://wctft.ucoz.ru/PhotoProg/1cb266288989.jpg)
Создание структуры: ![](http://wctft.ucoz.ru/PhotoProg/e529ec36834c.jpg)
Удаление структуры: ![](http://wctft.ucoz.ru/PhotoProg/b25e2ff2ffd3.jpg)
Для того, чтобы обратиться к переменной, которая находиться в пределах структуры используется данное действие: ![](http://wctft.ucoz.ru/PhotoProg/27c0b30ef70a.jpg)
Вот другой пример: ![](http://wctft.ucoz.ru/PhotoProg/c4b7a2027c24.jpg)
Вышеуказанная функция отобразит «6». Учтите, что вам не надо обнулять переменные внутри структур. При каждом создании структуры создается отдельная копия, так что можно иметь несколько структур с одинаковыми именами в один момент. Методы Методы – это функции, которые находятся в пределах структур. Пример: ![](http://wctft.ucoz.ru/PhotoProg/07be0edcff16.jpg)
Чтобы вызывать метод: ![](http://wctft.ucoz.ru/PhotoProg/3ede13c80230.jpg)
Обратите внимание на то, что внутри метода «sayit». Я использовал «this.msg». Для того, чтобы использовать переменную из этой же структуры используйте "this.". Не используйте GetTriggeringTrigger() или функции «PolledWait» и «TriggerSleepAction» в методах. Вы можете использовать структуры, чтобы заменять хеш-таблицы. ![](http://wctft.ucoz.ru/PhotoProg/5e52cf8940c8.jpg)
Данное заклинание телепортирует юнита в его начальную позицию через случайное количество секунд. Этот триггер использует хеш-таблицы только один раз, и этот триггер намного быстрей, чем, если сделать полностью с хеш-таблицами, так как структуры быстрей хеша.
|