Сейчас 02:56:15 Четверг, 25 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Bru  
Форум о Warcraft 3 » Прочее » Отвал » [Jass] Введение в jass. (Урок первый)
[Jass] Введение в jass.
H_A_PKДата: Вторник, 16 Ноября 2010, 16:44:49 | Сообщение # 1
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Здравствуйте. Сегодня будет вводный урок по jass. Мы узнаем некоторые основы изучаемого нами кодинга jass.


И вообще что такое Jass ?
Жасс - это событийно-ориентированный скриптовый язык программирования, созданный компанией Blizzard Entertainment. Используется в играх, таких как Warcraft и Starcraft. Язык функций, функции из common.j и blizzard.j , а точнее на нативки и бж. Все действия в нём проводятся именно в функции
какое бы не было оно должно проводится именно под блоком функции.

Вот вы когда-нибудь ковенвертировали тригер в жасс, не ? Чтож давайте попробуем!
Редактор триггеров создоём триггер. Далее правка/конвентировать в текс.
Тот у кого JassCraft, да пажалуйста, File/New/Templates/New Tigger.
Мы должны увидеть это:

вариант JassCraft:

Code
function Trig_NewTrigger_Conditions takes nothing returns boolean
              
         return      
endfunction

function Trig_NewTrigger_Actions takes nothing returns nothing
              
endfunction

//==== Init Trigger NewTrigger ====
function InitTrig_NewTrigger takes nothing returns nothing
         set gg_trg_NewTrigger = CreateTrigger()
         //call TriggerRegister__(gg_trg_NewTrigger, )
         call TriggerAddCondition(gg_trg_NewTrigger, Condition(function Trig_NewTrigger_Conditions))
         call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)
endfunction

вариант WorldEditor:

Code
function Trig_NewTrigger_Actions takes nothing returns nothing
endfunction

//================================
function InitTrig_NewTrigger takes nothing returns nothing
         set gg_trg_NewTrigger = CreateTrigger()
         call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)
endfunction

И без слов понятно, что

Code

function Trig_NewTrigger_Actions takes nothing returns nothing         
endfunction

Функция в которой могут присутствовать наши действия как это выгледило в триггерах под блоком "Действия". Слово "function" должно присутствовать всегда перед блоком функции, на то что дальше этого слова можете не вникать на следуйщих уроках мы подробнее разберём, что к чему и с чем едят это. "gg_trg_NewTrigger" Это название нашего триггера , а точнее "NewTrigger", у вас оно может быть другое. А вот "gg_trg_" это присутствует всегда перед названием т.к. триггер наш создан путём "Создать триггер".
Думаю, то что дальше присутствует в коде выглядит непонятно и странно. Для этого давайте изучим некоторые операторы в нашем Jass'e

Существующие блоки

Code
function //с этим мы уже познакомились
endfunction //обозначает конец блока функции
takes // аргументы запрашивающая функция
returns // тип переменой должный возвратится после обработки функцией
loop // цикл
endloop // конец блока цикла
if // если
then // конец строки если, внимание должна быть написано обязательно после вашего условия в той же строке через пробел
endif // конец блока условий
elseif // иначе с условием
else / просто иначе
type // тип переменной
extends // от чего наследуется
constant //наверное все не раз слышали об const это те переменые, которые принемают одно значение и никогда не миняются
native // нативная функция
globals // объявление глобальной переменной
endglobals //конец блока глобалок

Операторы работающие в блоке

Code
call // Вызов функции, напротив call нужно написать имя функции например Trig_NewTrigger_Actions() или DoNothing()
return // если функция возвращает параметр то это строка просто необхадима
set // присвоить значение переменной напротив данного оператора
exitwhen // строка обозначающая условия выхода из цикла
local // объявление локальной переменной, напротив тип и потом имя "local unit u = null"
not // знак отрицания юзается в условиях
and // логическая И
or  // логическая ИЛИ

Значение типа "пусто" , " да ", "нет".

Code
null //пусто
true //да
false // нет
булевая необходимы для сравнения ;)

Дополнительные операторы и простейшии(основные) типы переменных

Code
nothing // ничего
array // массив пример "local unit array u"
string // строка
integer //целочисленая вроде 32 бит
real // реальное число
code // напротив функция
boolean // логическое "пусто" , " да ", "нет".

Остальные типы переменных с ними мы познакомимся позже

Code
hashtable
handle
event
player
widget
unit
destructable
item
ability
buff
force
group
trigger
triggercondition
triggeraction
t     imer
location
region
rect
boolexpr
sound
conditionfunc
filterfunc
unitpool
itempool
race
alliancetype
racepreference
gamest a t e
i  gamestate
fgamestate
playerstate
playerscore
playergameresult
unitstate
aidifficulty
eventid
gameevent
playerevent
playeruni   tevent       
unitevent
limitop
widgetevent
dialogevent
unittype
gamespeed
gamedifficulty
gametype
mapflag
mapvisibility
mapsett ing   
m apdens it y
mapcontrol
playerslotstate
volumegroup
camerafield
camerasetup
playercolor
placement
startlocprio
raritycontrol
blendmode
texma     pflags
effect
effecttype
weathereffect
terraindeformation
fogstate
fogmodifier
dialog
button
quest
questitem
defeatcondition
t   im  erdialog
leaderboard
multiboard
multiboarditem
trackable
gamecache
version
itemtype
texttag
attacktype
damagetype
weapontyp e
s  ou  ndtype
lightning
pathingtype
image
ubersplat
playerscore

Мы с вами видем, что операторов не так уж и мало, что и вообщем-то даёт нам наши с вами способности картостроя в вакрафте ;). А теперь снова гляним на наш триггер

Code
function Trig_NewTrigger_Actions takes nothing returns nothing         
endfunction

//================================
function InitTrig_NewTrigger takes nothing returns nothing
set gg_trg_NewTrigger = CreateTrigger()
call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)
endfunction

Картина начинает раскрываться
"InitTrig_" Состоит перед названием функции иницилизации нашего с вами триггера. Согласно war3map.j-коду, компилируемому WE-средствами, он вызывает поочерёдную инициализацию триггеров карты, а функции-инициализаторы понимаются под приставкой InitTrig_Название

Code
    set gg_trg_NewTrigger = CreateTrigger()

просто присваевает глобальной переменной типа trigger её создание вот и всё.
Code
    call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)

Вызывает функцию добавления действия в триггер "Trig_NewTrigger_Actions".
Code
    endfunction

Конец блока :D

Code
    //================================

Вызывает недоверие , она такая противная, поэтому я её всегда срезаю. Вообщем "//" озночает коментарий после которых можно писать, что душе угодно только в одно строчку ! Например "//Ололо Масер нуб".

Ну-с думаю на этот урок достаточно.
Д/з (Домашняя работа) Конвертируйте какой-нибудь толстый триггер в jass и попытайтесь откоментировать каждое действие используя конечно же "//", чтобы было всё поэтапно, где что делается, и заключительный вывод того, что делает ваш триггера вообще. Говорю сразу, не суйте мне триггер с одним или двумя действиями как минимум 7 действий, 3 присваивания, а чтоб всё было круто то можно блок условий и цикл.

Вы наверное спросите "Зачем такое тупое д/з", хороший кодер просто должен уметь дать коментарии своим кодам/системам/нароботкам, чтобы это было ясно другим (офк если всё это выложено в народ).

На следующем уроке мы рассмотрим два вида переменных в Jass.
Можете задовать свои вопросы мне или [DUOS]y.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Вторник, 16 Ноября 2010, 17:03:34
 

andrey-dotaДата: Вторник, 16 Ноября 2010, 17:58:41 | Сообщение # 2
6 уровень
Группа: Заблокированные
Сообщений: 172
Награды: 0
Репутация: 21
Блокировки:
Да ты правду наркоман.

Увидели в игре ГМа и думаете застали за работой? Неа, он из-за лагов вылетел с инвиза и игры
На мне пятикратный взлом админсотава этова сайта. Ты возражаешь? Я тебя не замечаю.
 

H_A_PKДата: Вторник, 16 Ноября 2010, 18:08:24 | Сообщение # 3
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Нееее исключено. Но вот с чего такие подтверждения ? Постоянный стёб ?

проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

andrey-dotaДата: Вторник, 16 Ноября 2010, 18:15:30 | Сообщение # 4
6 уровень
Группа: Заблокированные
Сообщений: 172
Награды: 0
Репутация: 21
Блокировки:
Quote (H_A_PK)
Язык функций, функции из common.j и blizzard.j , а точнее на нативки и бж

Где тута сказуемое? Твои предложения не читаются на русском языке, иначе я бы подверг их нездоровой критике.


Увидели в игре ГМа и думаете застали за работой? Неа, он из-за лагов вылетел с инвиза и игры
На мне пятикратный взлом админсотава этова сайта. Ты возражаешь? Я тебя не замечаю.
 

[DUОS]Дата: Вторник, 16 Ноября 2010, 18:16:55 | Сообщение # 5
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (offtop)
Элис, ты вот мне скажи, почему наркоман? Не, ну рли. Твои статьи по жассу читал, оценил. Разжевала функции - это плюс.


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


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

H_A_PKДата: Вторник, 16 Ноября 2010, 18:23:00 | Сообщение # 6
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (andrey-dota)

Где тута сказуемое? Твои предложения не читаются на русском языке, иначе я бы подверг их нездоровой критике.

Я не совсем грамотен, извини.


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

[DUОS]Дата: Вторник, 16 Ноября 2010, 18:23:52 | Сообщение # 7
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
andrey-dota,
Похоже, что уроки писать надо мне :\


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


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

Форум о Warcraft 3 » Прочее » Отвал » [Jass] Введение в jass. (Урок первый)
  • Страница 1 из 1
  • 1
Поиск:

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