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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Jass] Введение в jass.
andrey-dotaДата: Вторник, 16 Ноября 2010, 18:11:08 | Сообщение # 1
6 уровень
Группа: Заблокированные
Сообщений: 172
Награды: 0
Репутация: 21
Блокировки:
Автор: H_A_PK
Размещено в классе В и считается, реально считается уроком.
Здравствуйте. Сегодня будет вводный урок по jass. Мы узнаем некоторые основы изучаемого нами кодинга jass.


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

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

вариант JassCraft:
[code=jass]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[/code]
вариант WorldEditor:
[code=jass]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]
И без слов понятно, что
[code=jass]function Trig_NewTrigger_Actions takes nothing returns nothing
endfunction[/code]
Функция в которой могут присутствовать наши действия как это выгледило в триггерах под блоком "Действия". Слово "function" должно присутствовать всегда перед блоком функции, на то что дальше этого слова можете не вникать на следуйщих уроках мы подробнее разберём, что к чему и с чем едят это. "gg_trg_NewTrigger" Это название нашего триггера , а точнее "NewTrigger", у вас оно может быть другое. А вот "gg_trg_" это присутствует всегда перед названием т.к. триггер наш создан путём "Создать триггер".
Думаю, то что дальше присутствует в коде выглядит непонятно и странно. Для этого давайте изучим некоторые операторы в нашем Jass'e

Существующие блоки
[code=jass]function //с этим мы уже познакомились
endfunction //обозначает конец блока функции
takes // аргументы запрашивающая функция
returns // тип переменой должный возвратится после обработки функцией
loop // цикл
endloop // конец блока цикла
if // если
then // конец строки если, внимание должна быть написано обязательно после вашего условия в той же строке через пробел
endif // конец блока условий
elseif // иначе с условием
else / просто иначе
type // тип переменной
extends // от чего наследуется
constant //наверное все не раз слышали об const это те переменые, которые принемают одно значение и никогда не миняются
native // нативная функция
globals // объявление глобальной переменной
endglobals //конец блока глобалок
[/code]
Операторы работающие в блоке
[code=jass]call // Вызов функции, напротив call нужно написать имя функции например Trig_NewTrigger_Actions() или DoNothing()
return // если функция возвращает параметр то это строка просто необхадима
set // присвоить значение переменной напротив данного оператора
exitwhen // строка обозначающая условия выхода из цикла
local // объявление локальной переменной, напротив тип и потом имя "local unit u = null"
not // знак отрицания юзается в условиях
and // логическая И
or// логическая ИЛИ
[/code]
Значение типа "пусто" , " да ", "нет".
[code=jass]null //пусто
true //да
false // нет
булевая необходимы для сравнения ;)[/code]
Дополнительные операторы и простейшии(основные) типы переменных
[code=jass]nothing // ничего
array // массив пример "local unit array u"
string // строка
integer //целочисленая вроде 32 бит
real // реальное число
code // напротив функция
boolean // логическое "пусто" , " да ", "нет".
[/code]
Остальные типы переменных с ними мы познакомимся позже
[code=jass]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
igamestate
fgamestate
playerstate
playerscore
playergameresult
unitstate
aidifficulty
eventid
gameevent
playerevent
playerunite vent
unitevent
limitop
widgetevent
dialogevent
unittype
gamespeed
gamedifficulty
gametype
mapflag
mapvisibility
mapsetting
mapdensity
mapcontrol
playerslotstate
volumegroup
camerafield
camerasetup
playercolor
placement
startlocprio
raritycontrol
blend mode
texmapflags
effect
effecttype
weathereffect
terraindeformation
fogstate
fogmodifier
dialog
button
quest
questitem
defeatcon dition
timerdialog
leaderboard
multiboard
multiboarditem
trackable
gamecache
version
itemtype
texttag
attacktype
damagetype
weap ontype
soundtype
lightning
pathingtype
image
ubersplat
playerscore[/code]
Мы с вами видем, что операторов не так уж и мало, что и вообщем-то даёт нам наши с вами способности картостроя в вакрафте ;). А теперь снова гляним на наш триггер
[code=jass]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]
Картина начинает раскрываться
"InitTrig_" Состоит перед названием функции иницилизации нашего с вами триггера. Согласно war3map.j-коду, компилируемому WE-средствами, он вызывает поочерёдную инициализацию триггеров карты, а функции-инициализаторы понимаются под приставкой InitTrig_Название
[code=jass]set gg_trg_NewTrigger = CreateTrigger()[/code]
просто присваевает глобальной переменной типа trigger её создание вот и всё.
[code=jass]call TriggerAddAction(gg_trg_NewTrigger, function Trig_NewTrigger_Actions)[/code]
Вызывает функцию добавления действия в триггер "Trig_NewTrigger_Actions".
[code=jass]endfunction[/code]
Конец блока :D
[code=jass]//================================
[/code]
Вызывает недоверие , она такая противная, поэтому я её всегда срезаю. Вообщем "//" озночает коментарий после которых можно писать, что душе угодно только в одно строчку ! Например "//Ололо Масер нуб".

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

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

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


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

H_A_PKДата: Четверг, 18 Ноября 2010, 18:16:34 | Сообщение # 2
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
чтоб ты сдох со свом долбаным чсв <_<

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

FkoFFДата: Четверг, 18 Ноября 2010, 18:21:18 | Сообщение # 3
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Замечательный "урок".

Основной смысл перехода на Jass автор решил утаить для себя.
Как впрочем и автор статьи на хгм.


 

NnoitoraДата: Понедельник, 22 Ноября 2010, 16:33:32 | Сообщение # 4
2 уровень
Группа: Проверенные
Сообщений: 36
Награды: 0
Репутация: 23
Блокировки:
А зачем собственно этот жасс нужен?триггеров мало???
 

[stebashka]Дата: Понедельник, 22 Ноября 2010, 17:55:37 | Сообщение # 5
пути и нити разными бывают
Группа: Библиотекари
Сообщений: 4719
Награды: 5
Блокировки:
Quote (Nnoitora)
А зачем собственно этот жасс нужен?триггеров мало???

а просто делать нам нечего, решили буковки да цифорки пописать.


 

lovepsoneДата: Понедельник, 22 Ноября 2010, 22:22:56 | Сообщение # 6
2 уровень
Группа: Проверенные
Сообщений: 32
Награды: 0
Репутация: 1
Блокировки:
вобщемта статья для новичка! хотя не каждый человек паймет)))
 

RoBoT1Дата: Вторник, 23 Ноября 2010, 21:09:29 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1454
Награды: 2
Репутация: 240
Блокировки:
lovepsone, не поймёт тот у кого мозга нет!
H_A_PK всё по полочкам разложил!
Статья на 5+
 

  • Страница 1 из 1
  • 1
Поиск:

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