Сейчас 13:16:56 Четверг, 28 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[СТАТЬЯ] vJass для новичков
СорнемусДата: Суббота, 12 Декабря 2009, 20:49:52 | Сообщение # 1
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
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
Перевёл: Сорнемус
Источник

Сообщение отредактировал Сорнемус - Понедельник, 14 Декабря 2009, 22:18:02
 

DragoNДата: Воскресенье, 13 Декабря 2009, 13:34:22 | Сообщение # 2
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Нафиг это,если есть переведённый мануал для jasshelper`a,где там всё есть?О_о

El Psy Congroo
 

ЭллесарДата: Воскресенье, 13 Декабря 2009, 23:06:53 | Сообщение # 3
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Даже не хочу эту фигню коментировать... не хочу но прокоментрирую...

Quote (Сорнемус)
так как есть предел в 8190 существующих структур одновременно

Бред, настраивается.

Quote (Сорнемус)
Также структуры не могут содержать массивы.

Ещё как могут !

Функция - GetHandleInt и SaveHandleInt даже на них глядеть не хочу ! но посмотрю.

function GetHandleInt takes handle h,string s returns integer
returns LoadInteger(ht,GetHandleId(h),GetHash(s))
endfunction

то что это было - индуйский код, не делайте так !


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

СорнемусДата: Понедельник, 14 Декабря 2009, 22:16:26 | Сообщение # 4
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
Эллесар, спасибо за замечания, исправлю. ;)
Quote (Dragon93)
Нафиг это,если есть переведённый мануал для jasshelper`a,где там всё есть?О_о

Мне он показался, мягко говоря, невразумительным. Мало объяснений. Имхо, конечно.
 

4K^SumrackДата: Среда, 16 Декабря 2009, 08:59:16 | Сообщение # 5
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 1
Блокировки:
Сорнемус, Ты мне обьясни - зачем добавлять статью для новичков если там ничего не обьясняется? Обьясняется, но команды - нет libfunc() requires это что такое? :D я вот JASS Вообще не учил, и пока не собераюсь - получается я новичек, но тут для новичков не обьясняется что эти 2 команды делают :)

The MatriX v1.01b:
Триггеры: 72% - Дел многовато еще... Стараемся побыстрее!
Герои: 66% - Почти готовы, еще парочку для первой версии.
Предметы: 82% - Остался 1 магазин, убрать баги в предметах.
Общая готовность: IIIIIIIIIIIIIIIIIIII - 75%
 

СорнемусДата: Среда, 16 Декабря 2009, 15:40:46 | Сообщение # 6
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
4K^Sumrack, новичок не всегда значит полнейший нуб, который впервые открыл WE. В данной статье новичок примерно знает Jass и собрался изучать vJass.
Quote (4K^Sumrack)
libfunc()

Это пустая функция. Внутри неё можно поставить что-угодно своё.
Quote (4K^Sumrack)
requires

В статье описано.
Quote (4K^Sumrack)
Сорнемус, Ты мне обьясни - зачем добавлять статью для новичков если там ничего не обьясняется?

Т_т
 

ЭллесарДата: Среда, 16 Декабря 2009, 18:06:18 | Сообщение # 7
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Сорнемус, Опиши операторы, модули, интерфейсы.

база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

СорнемусДата: Среда, 16 Декабря 2009, 18:18:47 | Сообщение # 8
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
Эллесар, по интерфейсам будет отдельная статья.
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz