Осваиваем 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. Для многих задач редактор триггеров подойдет лучше – ведь это действительно очень удобная штука.


Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
3
35
7 лет назад
3
Singularity, это было бы полезно, но делать это нужно в связке с nvc123, который знает многие тонкости и имеет необходимые доступы. Напишешь ему?
3
4
7 лет назад
Отредактирован Singularity
3
AlexSan:
Звучит больше как придирки, особенно пункты №1, 2, 4 и 6.
А вот со словариком я согласен, в свое время меня это немного сбивало с толку.
Знал, что буду так воспринят, поэтому заранее попросил прощения за расхождение в наших мировоззрениях. Меня учили думать, прежде чем делать.
Насчёт пунктов, воспринятых придирками:
  1. Лично Вам как было бы понятнее, если бы вы не знали смысла: ToEFL, toefl, TOEFL? Последнее больше подсознательно воспринимается как аббревиатура. И это просто личное наблюдение. Простите за граммар-нацизм, но искоренять это - моя обязанность.
  2. А разве плохо дать читателю знать, с чем он имеет дело? На разных ресурсах есть любители раздела Trivia (на русский язык переводится как "Это интересно"). Расшифровка аббревиатуры JASS относится именно к нему.
  1. Если бы Вы сдавали экзамен и Вам дали бы заполнять тест двойного объёма от обычного, неужели Вы не сказали бы, что совершена ошибка?
  1. Литературный и разговорный язык всё-таки вещи разные, согласитесь.
ZlaYa1000:
Singularity, это было бы полезно, но делать это нужно в связке с nvc123, который знает многие тонкости и имеет необходимые доступы. Напишешь ему?
Сначала нужно немножко освоиться в разделе, почитать и вывести сильные и слабые стороны статей. Так будет продуктивнее и будет меньше наслоений.
Singularity, 16.06.2017
0
15
7 лет назад
0
Singularity:
AlexSan:
  1. Лично Вам как было бы понятнее, если бы вы не знали смысла: ToEFL, toefl, TOEFL? Последнее больше подсознательно воспринимается как аббревиатура. И это просто личное наблюдение. Простите за граммар-нацизм, но искоренять это - моя обязанность.
В случае который ты привел тут, лучше последний вариант (все в верхнем регистре). Но в случае с jass'ом, как мне кажется лучше все таки использовать нижний регистр, так как расшифровка не несет особой нагрузки.
  1. А разве плохо дать читателю знать, с чем он имеет дело? На разных ресурсах есть любители раздела Trivia (на русский язык переводится как "Это интересно"). Расшифровка аббревиатуры JASS относится именно к нему.
Мне просто всегда казалось что на эту статью человек приходит с мыслью "Нужно подучить jass", но не с мыслью "Хммм, а что это такое".
Вот в какой-то статье типа "Осваиваем редактор карт. Возможности и общее знакомство." такая инфа была бы очень даже к месту.
  1. Если бы Вы сдавали экзамен и Вам дали бы заполнять тест двойного объёма от обычного, неужели Вы не сказали бы, что совершена ошибка?
Кривая аналогия. Тем более что тут первое содержание играет роль навигации и присутствует во всех статьях цикла, а второе лишь как оглавление и показывает читателю, который уже начал читать и вошел в поток, что вообще ему может этот цикл статей дать.
  1. Литературный и разговорный язык всё-таки вещи разные, согласитесь.
Да, разный. Но разговорный все таки менее формален, и, как мне кажется, воспринимать новый материал в неформальной подаче в духе "вот давай я тебя сейчас все объясню" гораздо легче чем в форме статьи с википедии.
Да и в конце концов статья написана от лица автора, а не как абстрактная энциклопедическая статья.
2
4
7 лет назад
Отредактирован Singularity
2
AlexSan:
Предлагаю не разводить флуд (тем более, флейм) на эту тему, такой спор может длиться вечно и истина в нём вряд ли родится. А вот оставить оба наших мнения здесь будет хорошо: тот, кто прочитает их, будет иметь более разносторонний взгляд на эту статейку.
В случае который ты привел тут, лучше последний вариант (все в верхнем регистре). Но в случае с jass'ом, как мне кажется лучше все таки использовать нижний регистр, так как расшифровка не несет особой нагрузки.
Несёт. Она показывает, что это Scripting Syntax, хоть он и Just Another. Смысл в себе несёт всякая аббревиатура, но не все его замечают.
Мне просто всегда казалось что на эту статью человек приходит с мыслью "Нужно подучить jass", но не с мыслью "Хммм, а что это такое".
Вот в какой-то статье типа "Осваиваем редактор карт. Возможности и общее знакомство." такая инфа была бы очень даже к месту.
Как бы так сказать... JASS - это JASS, это отдельная часть редактора карт. Общее знакомство не скажет о нём ничего больше общего обзорного определения, а затем предложит прочитать данный цикл статей по JASS.
Сам пришёл на эту статью с мыслью "Что же это такое по мнению автора? Может, есть, чему научиться?"
Кривая аналогия. Тем более что тут первое содержание играет роль навигации и присутствует во всех статьях цикла, а второе лишь как оглавление и показывает читателю, который уже начал читать и вошел в поток, что вообще ему может этот цикл статей дать.
Первое, по большому счёту, объединяет в себе оба вышеуказанных смысла. Не лучше ли будет тогда написать в "теле" статьи что-то вроде: "Прочитав этот цикл статей, вы освоите то-то, то-то, то-то и то-то"?
Да, разный. Но разговорный все таки менее формален, и, как мне кажется, воспринимать новый материал в неформальной подаче в духе "вот давай я тебя сейчас все объясню" гораздо легче чем в форме статьи с википедии.
Да и в конце концов статья написана от лица автора, а не как абстрактная энциклопедическая статья.
На самом деле, на вкус и цвет. Вы тоже правы по-своему, однако, следовать общим правилам гораздо лучше, потому что они охватывают больший процент читателей, давая правильное понимание описываемого. Вам ближе неформальная подача материала, мне ближе чёткий энциклопедический стиль. Оба стиля имеют право на жизнь, если верно излагают материал.
С уважением,
Singularity, 16.06.2017
0
22
7 лет назад
Отредактирован Bornikkeny
0
Больная тема, нужно переписать эту статью. Я бы помог, да вот не считаю себя JASS-гуру :(
P.S. Всегда писал JASS в верхнем регистре. Смерти желаю тем кто называет JASS - jass'ом.
3
4
7 лет назад
3
Bornikkeny:
Больная тема, нужно переписать эту статью. Я бы помог, да вот не считаю себя JASS-гуру :(
P.S. Всегда писал JASS в верхнем регистре. Смерти желаю тем кто называет JASS - jass'ом.
Все мы далеки от совершенства. Важно лишь то, что конкретно мы делаем для того, чтобы стать на шаг или два ближе к нему.
Небольшой постскриптум
Не стоит желать смерти людям, которые пишут JASS в нижнем регистре. Лучше пожелать им просветления. Ни Вы, ни я не можем знать наверняка - сегодня какой-нибудь человек пишет JASS в нижнем регистре, а завтра он изобретёт решение проблемы в JASS, которую никто до него не мог решить.
А всё потому, что Вы пожелали ему просветления, а не смерти. Всё ведь начинается с малого. :)
С уважением,
Singularity, 16.06.2017
0
32
7 лет назад
0
Надо будет еще расписать про мемхак, хештаблицу и прочее.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.