ГлавнаяБлогКарты Warcraft 3Гайды для первой ДотыГайды для Доты 2 [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 11
  • 1
  • 2
  • 3
  • 10
  • 11
  • »
Форум » Картостроение в Warcraft 3 » Статьи » Jass - Что это? (Основы Jass. Урок 1)
Jass - Что это?
Дата: Понедельник, 25.06.2012, 01:10 | Сообщение # 1
Генералиссимус
Проверенные
Сообщений: 2259
Награды: 9
Репутация: 70
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
Награды: 9
Репутация: 70
Ну воть, обсуждаем =)

Тот кто владеет информацией, тот владеет миром.
 
Дата: Понедельник, 25.06.2012, 01:30 | Сообщение # 3
Генералиссимус
Модераторы
Сообщений: 12774
Награды: 22
Репутация: 142
Супер огромный поток информации, без каких либо примеров и объяснений (комментарии в два слова не в счёт)... После 20ой строчки я уже тупо листал вниз... Если бы захотел выучить джас, не стал бы использовать это как самоучитель...
Нет, как справочник конечно пойдёт, но он бесполезен для новичка.
Нужны примеры и чем конкретнее и разнообразнее они будут, тем полезнее будет эта тема. Вообще советую сделать тебе как Дон с блогом. Т.е. одна тема чисто инфа(при условии, что ты продолжишь этим заниматься), другая тема с обсуждением. Желательно сюда пихнуть модера, который бы твои посты совмешал, просматривал и т.д. и т.п.
Мне всё таки хочется знать это типа пособие для начинающих(самоучитель) или это справочник?
Будут ли примеры?

В целом конечно молодец, выучил сам, помог другим) Инфа в целом ценная, но не для того, кто первый раз видит этот джас) Тут реально ОЧЕНЬ много непонятно для первого раза)))

Возьми какую то не хитрую функцию, разбери её по частям. Желательно расшифровывая всё, что только попадается, что бы не было вопросов.
И коль ты этим занялся, запомни, что те, кто это будут читать ни фига не понимают что ты пишешь. И такая штука как "да это же элементарно" или "Тут и так всё понятно" совсем не катят.
Первый раз всегда разбираешь всё, оочень дотошно. До буквы и запятой. Второй раз и все последующие ссылаешься на разобранное ранее, а потом уже можно использовать и "да тут и так всё понятно, т.к. разобрали ранее и повторили 100503 раза"

Фух, как то так))) Вкратце вроде всё написал)


это Ксопик!
 
Дата: Понедельник, 25.06.2012, 01:43 | Сообщение # 4
Генералиссимус
Проверенные
Сообщений: 2259
Награды: 9
Репутация: 70
XOPYC, Ну пусть меня спрашивают что надо)) Я и скажу)) Скоро сделаю статейку по локальным переменным, даже завтра уже может она будет) Ну блин вроде как дотошно написал)) Это для GUIшников с англ триггерами будет все ясно

Тот кто владеет информацией, тот владеет миром.
 
Дата: Понедельник, 25.06.2012, 01:52 | Сообщение # 5
Генералиссимус
Проверенные
Сообщений: 3625
Награды: 12
Репутация: 57
Норм, почитаю как высплюсь :)
 
Дата: Понедельник, 25.06.2012, 01:57 | Сообщение # 6
Генералиссимус
Проверенные
Сообщений: 2259
Награды: 9
Репутация: 70
diestator, ))ок

Тот кто владеет информацией, тот владеет миром.
 
Дата: Понедельник, 25.06.2012, 02:12 | Сообщение # 7
Генералиссимус
Проверенные
Сообщений: 2584
Награды: 6
Репутация: 58
XOPYC, а мне, как программисту (ок, начинаюшему) нравится. Но я думаю, это не его целевая аудитория((
 
Дата: Понедельник, 25.06.2012, 05:52 | Сообщение # 8
Генералиссимус
Проверенные
Сообщений: 5123
Награды: 13
Репутация: 72
Quote (^GREAT^MAN^)
И в итоге мы видим это: function Trig_New_Trigger_Actions takes nothing returns nothing endfunction
:D
а мне понравилось


Телеграм @Tshkn
Мой YouTube-канал Se Squared
 
Дата: Понедельник, 25.06.2012, 05:57 | Сообщение # 9
Генералиссимус
Проверенные
Сообщений: 2259
Награды: 9
Репутация: 70
Quote (DewidWill)
а мне понравилось

я старалсо


Тот кто владеет информацией, тот владеет миром.
 
Дата: Понедельник, 25.06.2012, 08:29 | Сообщение # 10
Генералиссимус
Проверенные
Сообщений: 5123
Награды: 13
Репутация: 72
видно

Телеграм @Tshkn
Мой YouTube-канал Se Squared
 
Форум » Картостроение в Warcraft 3 » Статьи » Jass - Что это? (Основы Jass. Урок 1)
  • Страница 1 из 11
  • 1
  • 2
  • 3
  • 10
  • 11
  • »
Поиск: