Jass - Что это?
|
|
| Дата: Понедельник, 25.06.2012, 01:10 | Сообщение # 1 |
Генералиссимус
Сообщений: 2259
|
Jass - это событийно-ориентированный скриптовый язык программирования, созданный компанией Blizzard Entertainment. Используется в играх, таких как Warcraft и Starcraft. Язык функций, функции из common.j и blizzard.j , а точнее на нативки и бж.
Все действия в нём проводятся именно в функции. Какое бы не было оно должно проводится именно под блоком
Наверное вы конвертировали текст GUI в JASS? Давайте попробуем заново и посмотрим что же это за зверь!
Создадим новый триггер и назовем его New Trigger Далее конвертируем его в текст(правка/конвертировать в текст) И в итоге мы видим это:
function Trig_New_Trigger_Actions takes nothing returns nothing endfunction
//=========================================================================== function InitTrig_New_Trigger takes nothing returns nothing set gg_trg_New_Trigger = CreateTrigger() call TriggerAddAction( gg_trg_New_Trigger, function Trig_New_Trigger_Actions ) endfunction. И так. Что такое Trig_New_Trigger_Actions.
это Функция в которой могут присутствовать наши действия как это выглядело в триггерах под блоком "Действия". Слово function должно присутствовать всегда перед блоком функции, на то что дальше этого слова можете не вникать на следующих уроках мы подробнее разберём, что к чему и с чем едят это. gg_trg_New_Trigger Это название нашего триггера , а точнее "New_Trigger", у вас оно может быть другое. А вот "gg_trg_" это присутствует всегда перед названием т.к. триггер наш создан путём "Создать триггер". Думаю, то что дальше присутствует в коде выглядит непонятно и странно. Для этого давайте изучим некоторые операторы в нашем Jass'e
function //с этим мы уже познакомились endfunction //обозначает конец блока функции takes// аргументы запрашивающая функция returns// тип переменой должный возвратится после обработки функцией loop// цикл endloop// конец блока цикла if// если then// конец строки если, внимание должна быть написано обязательно после вашего условия в той же строке через пробел endif// конец блока условий elseif// иначе с условием else[color] // просто иначе type // тип переменной extends // от чего наследуется constant //наверное все не раз слышали об const это те переменые, которые принимают одно значение и никогда не меняются native// нативная функция globals // объявление глобальной переменной endglobals//конец блока глобалок Далее изучим операторов работающих в блоке: call // Вызов функции, напротив call нужно написать имя функции например Trig_NewTrigger_Actions() или DoNothing() return // если функция возращает параметр то это строка просто необходима set// присвоить значение переменной напротив данного оператора exitwhen// строка обозначающая условия выхода из цикла local// объявление локальной переменной, напротив тип и потом имя "local unit u = null" not// знак отрицания юзается в условиях and// логическая И or// логическая ИЛИ Значение типа "пусто" , " да ", "нет".
null //пусто true//да false// нет Булевая необходимы для сравнения Дополнительные операторы и простейшии(основные) типы переменных
nothing// ничего // массив пример "local unit array u" string // строка integer//целочисленая вроде 32 бит real// реальное число jass// напротив функция boolean// логическое "пусто" , " да ", "нет". Остальные типы переменных, с ними мы познакомимся позже:
[cut=Смотреть]hashtable handle event player widget unit destructable item ability buff force group trigger triggercondition triggeraction timer location region rect boolexpr sound conditionfunc filterfunc unitpool itempool race alliancetype racepreference gamestate igamestate fgamestate playerstate playerscore playergameresult unitstate aidifficulty eventid gameevent playerevent playerunitevent unitevent limitop widgetevent dialogevent unittype gamespeed gamedifficulty gametype mapflag mapvisibility mapsetting mapdensity mapcontrol playerslotstate volumegroup camerafield camerasetup playercolor placement startlocprio raritycontrol blendmode texmapflags effect effecttype weathereffect terraindeformation fogstate fogmodifier dialog button quest questitem defeatcondition timerdialog leaderboard multiboard multiboarditem trackable gamecache version itemtype texttag attacktype damagetype weapontyp e soundtype lightning pathingtype image ubersplat playerscore[/cut] Мы с вами видим, что операторов не так уж и мало, что и вообщем-то даёт нам наши с вами способности картостроя в вакрафте =) . А теперь снова гляним на наш триггер function Trig_New_Trigger_Actions takes nothing returns nothing endfunction
//=========================================================================== function InitTrig_New_Trigger takes nothing returns nothing set gg_trg_New_Trigger = CreateTrigger() call TriggerAddAction( gg_trg_New_Trigger, function Trig_New_Trigger_Actions ) endfunction Картина начинает раскрываться "InitTrig_" Состоит перед названием функции иницилизации нашего с вами триггера. Согласно war3map.j-коду, компилируемому WE-средствами, он вызывает поочерёдную инициализацию триггеров карты, а функции-инициализаторы понимаются под приставкой InitTrig_Название set gg_trg_New_Trigger = CreateTrigger() просто присваевает глобальной переменной типа trigger её создание вот и всё. сall TriggerAddAction(gg_trg_New_Trigger, function Trig_New_Trigger_Actions) Вызывает функцию добавления действия в триггер "Trig_New_Trigger_Actions". endfunction Конец блока //================================ Означает коментарий после которых можно писать, что душе угодно только в одно строчку ! Например "//Ололо Мастер нуб". Но коментарий может быть прописан только в одну строку, во вторую нужно будет еще раз прописать //
Ну думаю на этот урок достаточно
Тот кто владеет информацией, тот владеет миром.
Сообщение отредактировал ^GREAT^MAN^ - Понедельник, 25.06.2012, 01:36 |
|
|
|
| Дата: Понедельник, 25.06.2012, 01:15 | Сообщение # 2 |
Генералиссимус
Сообщений: 2259
|
Ну воть, обсуждаем =)
Тот кто владеет информацией, тот владеет миром.
|
|
|
|
| Дата: Понедельник, 25.06.2012, 01:30 | Сообщение # 3 |
Генералиссимус
Сообщений: 12997
|
Супер огромный поток информации, без каких либо примеров и объяснений (комментарии в два слова не в счёт)... После 20ой строчки я уже тупо листал вниз... Если бы захотел выучить джас, не стал бы использовать это как самоучитель... Нет, как справочник конечно пойдёт, но он бесполезен для новичка. Нужны примеры и чем конкретнее и разнообразнее они будут, тем полезнее будет эта тема. Вообще советую сделать тебе как Дон с блогом. Т.е. одна тема чисто инфа(при условии, что ты продолжишь этим заниматься), другая тема с обсуждением. Желательно сюда пихнуть модера, который бы твои посты совмешал, просматривал и т.д. и т.п. Мне всё таки хочется знать это типа пособие для начинающих(самоучитель) или это справочник? Будут ли примеры?
В целом конечно молодец, выучил сам, помог другим) Инфа в целом ценная, но не для того, кто первый раз видит этот джас) Тут реально ОЧЕНЬ много непонятно для первого раза)))
Возьми какую то не хитрую функцию, разбери её по частям. Желательно расшифровывая всё, что только попадается, что бы не было вопросов. И коль ты этим занялся, запомни, что те, кто это будут читать ни фига не понимают что ты пишешь. И такая штука как "да это же элементарно" или "Тут и так всё понятно" совсем не катят. Первый раз всегда разбираешь всё, оочень дотошно. До буквы и запятой. Второй раз и все последующие ссылаешься на разобранное ранее, а потом уже можно использовать и "да тут и так всё понятно, т.к. разобрали ранее и повторили 100503 раза"
Фух, как то так))) Вкратце вроде всё написал)
это Ксопик!
|
|
|
|
| Дата: Понедельник, 25.06.2012, 01:43 | Сообщение # 4 |
Генералиссимус
Сообщений: 2259
|
XOPYC, Ну пусть меня спрашивают что надо)) Я и скажу)) Скоро сделаю статейку по локальным переменным, даже завтра уже может она будет) Ну блин вроде как дотошно написал)) Это для GUIшников с англ триггерами будет все ясно
Тот кто владеет информацией, тот владеет миром.
|
|
|
|
| Дата: Понедельник, 25.06.2012, 01:52 | Сообщение # 5 |
Генералиссимус
Сообщений: 3625
|
Норм, почитаю как высплюсь
|
|
|
|
| Дата: Понедельник, 25.06.2012, 01:57 | Сообщение # 6 |
Генералиссимус
Сообщений: 2259
|
diestator, ))ок
Тот кто владеет информацией, тот владеет миром.
|
|
|
|
| Дата: Понедельник, 25.06.2012, 02:12 | Сообщение # 7 |
Генералиссимус
Сообщений: 2584
|
XOPYC, а мне, как программисту (ок, начинаюшему) нравится. Но я думаю, это не его целевая аудитория((
|
|
|
|
| Дата: Понедельник, 25.06.2012, 05:52 | Сообщение # 8 |
Генералиссимус
Сообщений: 5123
|
Quote (^GREAT^MAN^) И в итоге мы видим это: function Trig_New_Trigger_Actions takes nothing returns nothing endfunction а мне понравилось
Телеграм @Tshkn Мой YouTube-канал Se Squared
|
|
|
|
| Дата: Понедельник, 25.06.2012, 05:57 | Сообщение # 9 |
Генералиссимус
Сообщений: 2259
|
Quote (DewidWill) а мне понравилось я старалсо
Тот кто владеет информацией, тот владеет миром.
|
|
|
|
| Дата: Понедельник, 25.06.2012, 08:29 | Сообщение # 10 |
Генералиссимус
Сообщений: 5123
|
видно
Телеграм @Tshkn Мой YouTube-канал Se Squared
|
|
|
|