Осваиваем jass (0-1)

Добавлен , опубликован
Раздел:
Триггеры и объекты
Содержание:

0. Вступление

Этот цикл статей посвящен изучению языка jass (создание текстовых триггеров, так называемых скриптов). Хотя про jass уже написано достаточное число статей, но многие картостроители все равно не желают его изучать. И я их вполне понимаю – для тех, кто не занимается программированием в тех статьях, которые имеются, разобраться довольно сложно. Не хватает некоторых базовых знаний, не понятно, с чего начинать и т.д.
Любой учитель знает, что излагать предмет надо поэтапно и в определенной последовательности. Я выбрал последовательность в том порядке, в котором сам когда-то начал осваивать язык jass. Так что триггерщики, которые до сих пор не решаются приступить к изучению jass, смогут проделать тот же путь.
Эти статьи я написал для одного своего друга триггерщика. И друг вполне оправдал мои ожидания - не прошло и месяца, как он стал jass-ером.
Для удобства, я буду обращаться в статьях к читающему – «Читатель». Надеюсь, что читатель уже неплохо овладел триггерами, знает, что такое переменные, массивы и циклы.
Содержание:
  1. Вступление
  2. Что есть jass и для чего он нужен
  3. Локальные переменные
  4. Применение локальных переменных
  5. Условия, циклы в jass
  6. Функции на jass
  7. Устройство триггера с точки зрения jass
  8. Динамическое создание триггера
  9. События с малым периодом
  10. Полярные координаты (ликбез)
  11. Оптимизация: утечки памяти
  12. RETURN BUG (RB)
  13. Тип Handle
  14. Система Super Custom Value (SCV) или RB+cache
  15. Да здравствует SCV!
  16. Послесловие
  17. Приложение 1: проблемы Кеша и РБ
  18. Приложение 2: JESP стандарт
Осваиваем JASS - исправления и дополнения - также рекомендуется для ознакомления.

1. Что есть jass и для чего он нужен

Итак, Читатель, мы приступаем к освоению jass. Прежде всего, я хочу, чтобы ты понимал, что jass не является чем-то сверхъестественным и необычным. Многое, из того, что нам предстоит изучить уже будет знакомо по триггерам. И неудивительно – ведь каждое триггерное действие имеет свой аналог на jass.
Дело в том, что blizzard создали свой миниязык программирования jass. Они хотели упростить работу по программированию сценариев и их правил. Но даже такой упрощенный язык слишком сложен для многих картостроителей. Поэтому был создан редактор Trigger editor – где вместо того, чтобы набирать команды вручную, можно создавать триггеры путем выбора команд из списка. В редакторе мы работаем с триггерами, но когда игра запускает определенный сценарий, она читает не триггеры, а КОД, который создается путем перевода всех триггеров игры на язык jass.
По сути триггеры – это надстройка для языка jass упрощающая ввод команд. Но при любом упрощении происходит потеря функциональности. Т.е. возможности программирования игры триггерами в чистом виде заметно меньше, чем при программировании при помощи jass.
Итак, jass дает картостроителю новые возможности. Но стоят ли они того, чтобы их изучать? Это уже каждый картостроитель решает для себя. Jass может помочь в следующих случаях:
  1. Упростить создание сложных триггеров и триггерных систем, которые позволят полностью или почти полностью поменять правила оригинальной игры.
  2. Создавать триггерные заклинания, у которых нет аналогов в оригинальной игре.
  3. Оптимизировать карту, сделать, чтобы сложные триггеры не тормозили игру.
  4. Вставить на карту некоторые команды на jass, которые не имеют аналогов для обычных триггеров.
  5. Создавать собственные AI, более гибкие, чем в редакторе AI.
У некоторых бытует мнение, что на jass в игре можно сделать все. Конечно же, это не так. Более того, я не рекомендую писать все триггеры сценария исключительно на jass. Для многих задач редактор триггеров подойдет лучше – ведь это действительно очень удобная штука.

2
11
17 лет назад
2
Статья что надо, автор постарался - все удобненько, по полочкам, понятно вроде даже ^^.
Вообще было влом садится учить jass (времени много убить надо для того, чтобы разобраться), но увидел этот мануал - ну просто супер. Пойду читать =)
ИМХО - jass рулит, ибо там есть локалки! (Hummel'ю - джасс и есть часть редактора, он создавался специально для варки).
2
1
17 лет назад
2
2 HGL
МЛИН!!!-GetSpellTargetUnit() а WorldEdit у меня такой команды незнает
___
Мой тоже не знает( Как решить эту проблему?
1
27
17 лет назад
1
пропатчить вар...
1
0
17 лет назад
1
Эту статью можнео найти здесь:
1
2
17 лет назад
1
Сергей молодец, я тут начал изучать jass - всё доступно и понятно, я бы сказал разжёвано. Те же статьи других авторов я лично понять не совсем могу. Локальные переменные я изучил по этой статье даже с 1-ого прочтения =)
1
6
17 лет назад
1
Я вооюще ничего не понимаю в этом Jass!
1
37
17 лет назад
1
"20 раз в секунду - как раз такова частота обновления информации человеческого глаза."
о.О более 1000 обновлений в секунду, какие 20???
"Вариант устранения утечки подсказал Какодемон." - вот почему надо ник нормальный делать. Представь тип того на какойнить суперпрезентации... =)
РетурнБаг походу или исправили(в 1.21) или у мну чета с оперативой
1
1
17 лет назад
1
Имхо самая лучшая статься на этом сайте =)
2
13
17 лет назад
2
У мну вопрос. Карты же некоторые нельзя открывать это из-за чего ? Кто-нить может помочь?
И ещё как можно их открыть ? И как свои карты заблокировать также?
2
0
17 лет назад
2
Есть прога Deprotect... с ней карты некоторые открыть можно...
0
37
17 лет назад
0
"Карты же некоторые нельзя открывать это из-за чего ?" мб версия вара..
2
0
17 лет назад
2
Все карты открыть можно, но некоторые легко, а некоторые сложно)))
Из-за версий тоже зависит...
Так... Return Bug не работает, ищу ошибку и не могу найти...
Нашел ошибку в ReturnBug...
Надо просто перенести функции из триггера Handle Functions в "нестандартный код"
Извиняюсь, сказал полную хрень... Продолжаю искать...
Короче, пример про Return Bug сам сделал... Все работает... УРА!!!
2
5
16 лет назад
2
УРАА!! НАКОНЕЦ ТО Я НАШЁЛ УЧЕБНИК ПО JASS!!! ОГРОМНОЕ СПАСИБО ВАШЕМУ САЙТУ ЗА ТАКОЙ ПРОСТОЙ И ПОНЯТНЫЙ УЧЕБНИК. Щас буду осваивать. Мне вобщем то будет легко потому что я программист :) . Привык к скриптам поетому редактор триггеров не нравиццо. JASS рулезззз! ОГРОММНЕЙШЕЕ СПАСИБО! Я не мог нигде найти учебника..
2
0
16 лет назад
2
KONR, какой же из тебя программист, если ты не умеешь пользоваться поиском? (Я говорю о поиске в гугле, яндексе и т.п.)
И еще... Ты, как программист, мог бы разобрать пару скриптов на Jass, и понять что к чему, ведь все языки похожи.
З.Ы.: Jass - не "рулеззз", Си - всемогущ (это не относиться к сайтостроению, так как там всемогущ php)
2
17
16 лет назад
2
  • У меня такой вопрос, а если у меня много где использованы эффекты восстановить (сфинкс), которые не появляются, если их сразу же после их появления удалять... делать такой мелочный, но значимый эффект под перенную - глупо, а через интервал времени удалять last created special effect, ещё глупее... что мне делать? Но если они не сильно засоряют память, то я их трогать не буду...
2
2
16 лет назад
2
Тут тока голову об джасс себе сламать можно, круто конечно но я пас, никакой я не программист я просто нуп в джасее (Триггеры !!!ЗА!!!)
2
9
16 лет назад
2
Рассказали бы уже про LHV, ваш SCV с ним не сравнится
2
1
16 лет назад
2
Deviator читай внимательней "События с малым периодом" и "Локальные переменные"
всё просто создаеш ефект заносиш его в локальную, ставиш задержку, удаляеш ефект по локальной, обнуляеш локальную. Помойму проше писать cs чем на jаss.
Выглядит примерно так:
cs: local effect e
Создаеш спецефект
cs: set e = GetLastCreatedEffectBJ()
задержка
cs: call DestroyEffectBJ( e )
cs: set e = null
2
0
16 лет назад
2
А другого способа этим заниматся нету ? (
ИМХО - язык гавно причем полное LUA был бы намного предпочтительнее я бы даже на perl
согласился бы ....
Скриптики эти не компилируются ? Может есть нормальные интерпритаторы ?
А то вижу это и вспоминаю свое суровое юношество с паскалем и стареньким пьнем ...
Если бы детсво - асм то было б норм а так ...
2
8
16 лет назад
2
Самый грамматный раздел это локальные перменный. Я там болие мение понял.
1
21
16 лет назад
1
Привет могучий джасс, веди себя хорошо, и запоминай ся легко!
1
3
16 лет назад
1
Редок тут всё понятно если посидеть часик, другой а нетерпеливых не просят читать вообще.
2
0
16 лет назад
2
У мя ссылка на Magic Shield.w3x не идёт.. какие-то тексты показывает и не загружает.. кинеш plzz новую ссылку?
Короче, файлы с Magic Shield.w3x по paint.w3x неработают! Кто создавал их, прошу, перепишите, а то ничего непонятно без этих примеров... А статья просто высший класс! Я её за 2 дня прочитал, и фсё понял! Огромное пасибки создателям! Но карты с примерами...((
2
0
16 лет назад
2
Нууу! Поставте-же наконец эти примеры!! Вааще почти фсё неработает!
АААА!!!
Люди.. и ищё, скажити, ктонибудь plzz, как сделать мышь чувствительной к точке нажатия на экране (доп. инвентарь вместо 6 я хотел-бы сделать 80 слотов..)) ) Что для этого нужно? (На Jass написать ф-ции и нарисовать иконки или как??)
ДО отвтедьте -жи ме кто-нюдь!
2
0
16 лет назад
2
Рр..
Чтобы оставить комментарий, пожалуйста, войдите на сайт.