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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Урок 1] Знакомство с Jass. (Немного теории)
[Урок 1] Знакомство с Jass.
[DUОS]Дата: Пятница, 08 Апреля 2011, 08:28:21 | Сообщение # 1
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Приветствую всех учеников класса. На этом уроке, вы узнаете, что же такое Jass и основные его принципы.

JASS (англ. Just Another Scripting Syntax) — событийно-ориентированный скриптовый язык программирования, созданный компанией Blizzard Entertainment. Используется в играх, таких как Warcraft и Starcraft.
В игре Warcraft III скрипты на языке JASS используются для контроля над объектами игрового мира и компьютерными соперниками. Данная область применения даёт практически полную свободу контроля над игровым процессом (в рамках игровой вселенной) любителям модов при создании своих собственных сценариев Warcraft III.

В комплекте с игрой поставляется стандартный Редактор Мира Warcraft III (англ. Warcraft III World Editor), в который включён модуль редактирования игровых сценариев под названием «Редактор Триггеров» (англ. Trigger Editor). Данный модуль снабжён неплохим графическим пользовательским интерфейсом для языка JASS, что позволяет создавать нестандартные сценарии для карт, не требуя при этом от создателя мода знаний в области языков и принципов программирования.

На тематических веб-ресурсах сценарии, сделанные в стандартном редакторе триггеров называют коротко — GUI. Наряду с «одружеблюбленными» триггерами GUI, существуют их текстовые варианты — в виде скриптов на языке JASS, которые обладает расширенными, по сравнению со стандартными «редакторскими» триггерами, возможностями.

Официальной документации от Blizzard Entertainment к этому языку нет, однако, существует множество любительских ресурсов, посвящённых написанию скриптов для сценариев на этом языке.

Стандартный редактор снабжён только базовыми интерпретатором и редактором JASS, в котором, помимо прочего, отсутствует подсветка синтаксиса и удобная проверка синтаксиса, что делает работу с JASS в обычном редакторе достаточно неудобной и трудоёмкой. Это и является одной из основных причин нелюбви новичков модостроения Warcraft III к этому языку.

Помимо стандартного редактора, существуют специальные программы, которые упрощают работу с Jass-скриптами. К ним относится JASS Craft (бывший JASS Shop Pro). С помощью этой программы можно создавать шаблоны для триггеров, функций и оптимизировать код. Кроме того, он имеет подсветку и встроенную проверку синтаксиса, позволяющую «на лету» протестировать скрипт на наличие ошибок.

В сфере модостроителей Warcraft III с 2007 года имеет бешеную популярность масштабная любительская надстройка для редактора Warcraft III — JASS New Gen Pack. В него, помимо множества других полезных возможностей, включены подсветка и проверка синтаксиса, а также альтернативный интерпретатор языка JASS. Вкупе с другими возможностями, это сделало его практически стандартом «де-факто» в мире картостроя.

Основные понятия

Файлы скриптов JASS могут иметь расширения .j или .ai.

Язык JASS являет собой язык функций. Функции могут быть пользовательскими и нативными (от англ. native). Пользовательские функции могут быть объявлены самим картоделом(мапмейкером) и находятся непосредственно в скрипте карты. Нативные функции созданы разработчиками, объявляться пользователем не могут и перечислены в 2-ух главных файлах языка JASS — common.j и common.ai. Данные файлы находятся в архивах игры Warcraft III. (Однако существует статья, в которой описывается добавление собственных native функций в Warcraft) Имеется также созданный разработчиками набор готовых «к употреблению» пользовательских функций — blizzard.j, который является объектом критики многих картоделов за множество утечек и частую бесполезность отдельно взятых функций. Яркий пример тому — функции с простой перестановкой параметров, не имеющие смысловой нагрузки, но отнимающие время на их выполнение.

Карта Warcraft III представляет собой такой же архив формата MPQ, как и другие архивы игры и имеет расширение .w3m или .w3x. Архив карты всегда содержит файл скрипта карты — war3map.j, но может также содержать несколько файлов с расширениями .ai в том случае, если используется нестандартный искусственный интеллект компьютерных противников.

Информация в файл war3map.j записывается в момент сохранения карты в редакторе, когда интерпретатор языка конвертирует данные из файла триггеров (war3map.wtg) в конечный код JASS, который будет использован игрой.

Файл war3map.wtg в архиве карты содержит данные о GUI триггерах и является необходимым только для редактора. Без него отредактировать стандартными средствами редактора код карты будет невозможно.

Пример кода для отображения «Hello, World!» на Jass:

Code
function HelloWorld takes player p returns nothing
     call DisplayTextToPlayer(p, 0, 0, "Hello World!")
endfunction

Функция HelloWorld принимает локальный параметр типа «player» с именем «p» и ничего не возвращает(«nothing»). В теле вызывается стандартная native -функция «DisplayTextToPlayer». В этой функции указывается индекс (переменная типа integer — целочисленная) сетевого игрока, которому будет отправлено сообщение; экранные координаты (x, y; переменные типа real) — положение строки сообщения; время, через которое исчезнет сообщение.

Основные отличия JASS от редактора триггеров

  • Использование локальных переменных. Редактор триггеров даёт возможность оперировать только глобальными переменными. Глобальные переменные могут быть использованы в любой функции, а локальные — действуют только в пределах одной функции и могут быть использованы во множестве ситуаций.
  • Более компактный и удобный код. Например, редактор триггеров позволяет использовать конструкцию if then else достаточно примитивно, неоправданно раздувая конечный код. На JASS можно сделать то же самое гораздо более кратко и читаемо, а также использовать недоступный в редакторе триггеров оператор elseif.
  • Устранение утечек памяти. Код, написанный в редакторе, может оставлять за собой мусор в памяти: не удалённые объекты и утечки локальных переменных (в силу использования функций из файла blizzard.j). Чаще всего, таковыми становятся точки (location). Много раз вызываемый триггер с большим количеством утечек может очень быстро «уложить на лопатки» компьютер игрока. Со временем мощности компьютеров возрастают и эта проблема потихоньку отступает назад, но тем не менее, границы производительности по-прежнему можно перешагнуть из-за множества неоптимизированных триггеров. JASS располагает средствами для удаления таких объектов.
  • Дополнительные возможности. Так, стандартный редактор триггеров имеет достаточно ограниченное число функций и переменных. В руках JASS’ера (сленговое прозвище человека, пишущего на JASS) оказывается весь набор функций и переменных из common.j и blizzard.j. Некоторые функции из common.j попросту не имеют аналогов в редакторе. Другой пример: в редакторе циклы могут быть выполнены только определённое количество раз, в то время как на JASS они могут выполняться до тех пор, пока не будет выполнено условие выхода из них.

Взято с Википедии, там очень хорошо изложена теория.

Домашнее задание - учите теорию. Учите. Без неё вас любой более-менее нормальный кодер затроллит.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

lawsonДата: Пятница, 08 Апреля 2011, 10:32:00 | Сообщение # 2
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 08 Апреля 2011, 10:34:04
 

AUДата: Пятница, 08 Апреля 2011, 11:16:21 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
а можно "вскрыть" native-функции?

Добавлено (08-04-2011, 11:16)
---------------------------------------------

Quote (|DUОS|)
вас любой более-менее нормальный кодер затроллит.



Остаться в живых
стрелялка с мышковым управлением =)
 

lawsonДата: Пятница, 08 Апреля 2011, 11:46:22 | Сообщение # 4
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (AU)
а можно "вскрыть" native-функции?

в каком смысле,?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

pirat9629Дата: Пятница, 08 Апреля 2011, 13:17:01 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
Quote
elseif
что ето? описания..
native функций в чем отличия от стандартных и опять же какеие у них действия?




сделаю минекрафт сервер на заказ. платно
 

DreiiДата: Пятница, 08 Апреля 2011, 13:24:01 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (pirat9629)
native

Это родные ф-ии которые встроенны в вар.


 

lawsonДата: Пятница, 08 Апреля 2011, 13:40:53 | Сообщение # 7
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (pirat9629)
elseif

Это то же самое что и if тоесть простое условие но оно должно следовать только в такой последовательности
if () then
elseif () then
тоесть только после того как вы объявили уже if
elseif () then

endif
ПО РУССКИ
если () то
иначе если () то
иначе если () то
и так далее
конец условия


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 08 Апреля 2011, 13:41:02
 

skvaer09Дата: Пятница, 08 Апреля 2011, 15:07:38 | Сообщение # 8
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
А с помощью Jass функций можно сделать что угодно? wizard
 

SSrunXДата: Пятница, 08 Апреля 2011, 15:20:09 | Сообщение # 9
Пуэрывыи уровэн вуася
Группа: Ветераны
Сообщений: 1604
Награды: 3
Репутация: 1281
Блокировки:
Не понял нихрена, но буду учить.

https://vk.com/musicforubaby

Просто подрочи - само решится © BinGO
С феклой играй - себя не уважай © Рандом
Безвозмездности не существует, все люди эгоисты. © BARMAGLOT
Вот краны :gays: © Privitalik
Я бы помесил глину на твоем заднем дворе. © MrHate
 

ШтормДата: Пятница, 08 Апреля 2011, 15:23:44 | Сообщение # 10
9 уровень
Группа: Проверенные
Сообщений: 835
Награды: 0
Репутация: 165
Блокировки:
Ээ, а по триггерам уроки будут? Зачем сразу с джасса то начинать? оО
 

DreiiДата: Пятница, 08 Апреля 2011, 15:27:31 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (skvaer09)
А с помощью Jass функций можно сделать что угодно?

Если хватит знаний то да


 

skvaer09Дата: Пятница, 08 Апреля 2011, 15:38:40 | Сообщение # 12
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
2 раза прочитал .у меня мозг чуть не взорвался ! %) %)
 

SyzakyДата: Пятница, 08 Апреля 2011, 15:40:02 | Сообщение # 13
5 уровень
Группа: Проверенные
Сообщений: 104
Награды: 0
Репутация: 12
Блокировки:
тут в принципе ничего конкретного и не написано.
 

skvaer09Дата: Пятница, 08 Апреля 2011, 15:43:29 | Сообщение # 14
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
Quote (lawson)
Без неё вас любой более-менее нормальный кодер затроллит.

Сказал значит надо)
 

lawsonДата: Пятница, 08 Апреля 2011, 16:35:17 | Сообщение # 15
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
[DUОS],
Как говорит мой бригадир нах*ен твою теорию иди работай! хехехехе
Так что без практики ни как. Вообще я просто тупо начал сразу кодит методом тыка без каких либо теорий или статей, смотрел как сделано в других картах и пытался повторить пока не научился.

Добавлено (08-04-2011, 16:35)
---------------------------------------------

Quote (Шторм)
Ээ, а по триггерам уроки будут? Зачем сразу с джасса то начинать? оО

КОгда ты научишься JASS'у то тебе больше не понадобятся триггеры.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 08 Апреля 2011, 16:32:58
 

DreiiДата: Пятница, 08 Апреля 2011, 16:53:31 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Я тоже в начлае никуда не втыкал,пока мне не разжевали и заставили проглотить

Добавлено (08-04-2011, 16:53)
---------------------------------------------

Quote (|DUОS|)
Домашнее задание - учите теорию. Учите. Без неё вас любой более-менее нормальный кодер затроллит.

Раз это Д/З , то будет какой нибудь опрос или зачет по теории?)


 

Dark_ZarichДата: Пятница, 08 Апреля 2011, 16:58:19 | Сообщение # 17
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
lawson, я также триги учил ))

MAL

Все тлен...
 

SyzakyДата: Пятница, 08 Апреля 2011, 17:07:06 | Сообщение # 18
5 уровень
Группа: Проверенные
Сообщений: 104
Награды: 0
Репутация: 12
Блокировки:
Quote (Dreii)
Раз это Д/З , то будет какой нибудь опрос или зачет по теории?)

Ага открываем википедию в другом окне и пишем все на 5.)

Сообщение отредактировал Syzaky - Пятница, 08 Апреля 2011, 17:07:24
 

peinДата: Пятница, 08 Апреля 2011, 17:16:33 | Сообщение # 19
9 уровень
Группа: Проверенные
Сообщений: 1114
Награды: 1
Репутация: 272
Блокировки:
Quote (|DUОS|)
call DisplayTextToPlayer(p, 0, 0, "Hello World!")

найс не утечна=)
сча в карту вставим....
хоочу может добавить что лутше превращать надписи
Quote
Hello World!
в код так карта менше весит или что то типу такого кажись :D
 

[DUОS]Дата: Пятница, 08 Апреля 2011, 17:39:37 | Сообщение # 20
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (lawson)
КОгда ты научишься JASS'у то тебе больше не понадобятся триггеры.

Это точно.
Quote (Dreii)
Раз это Д/З , то будет какой нибудь опрос или зачет по теории?)

Будет, будет, но я не скажу, в какой форме он будет.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

DreiiДата: Пятница, 08 Апреля 2011, 18:14:05 | Сообщение # 21
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Code
call DisplayTextToPlayer(p, 0, 0, "Hello World!")

Лучше так:

Code
call DisplayTextToPlayer(p, 0., 0., "Hello World!")

бугаг)


 

Omni174Дата: Пятница, 08 Апреля 2011, 18:17:42 | Сообщение # 22
Группа: Заблокированные
Сообщений: 1274
Награды: 1
Репутация: 359
Блокировки:
Прочитал,глаза боляяят ><
Поскорей бы второй урок :)

Добавлено (08-04-2011, 18:17)
---------------------------------------------
Dreii,
Без точек лучше,меньше писать надо будет)

 

АхилДата: Пятница, 08 Апреля 2011, 18:34:01 | Сообщение # 23
9 уровень
Группа: Проверенные
Сообщений: 831
Награды: 0
Репутация: 191
Блокировки:
Ну чтож, норм. Хоть что-то доганять начал...Хотя да
Quote (Omni174)
глаза боляяят ><


 

DreiiДата: Пятница, 08 Апреля 2011, 18:49:09 | Сообщение # 24
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Omni174, Зато меньше времени для обработки вару потребуеться

Добавлено (08-04-2011, 18:49)
---------------------------------------------

Code
call DisplayTextToPlayer(p,0.,0.,"Hello World!")

так еще улчше х))


 

lawsonДата: Пятница, 08 Апреля 2011, 20:16:24 | Сообщение # 25
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Duos так что по одному уроку в день?

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 08 Апреля 2011, 20:18:10
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Урок 1] Знакомство с Jass. (Немного теории)
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

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