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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Урок 2] Базовая структура триггера
[Урок 2] Базовая структура триггера
[DUОS]Дата: Воскресенье, 10 Апреля 2011, 11:38:06 | Сообщение # 1
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Итак, теперь приступим к изучению непосредственно Jass.
Для начала нужно открыть Редактор триггеров. Удалим там всё и создадим новый триггер. Назовём его Probe.
Есть такая опция в триггерах под названием Конвертировать в текст. Это сконвертирует триггер Probe в Jass. Давайте это сделаем, нажав Правка -> Конвертировать в текст.
Откроем JassCraft. Создадим в нём новый документ. Скопируем в него текст из триггера Probe. Получим это:

Code
function Trig_Probe_Actions takes nothing returns nothing
endfunction

//===========================================================================
function InitTrig_Probe takes nothing returns nothing
     set gg_trg_Probe = CreateTrigger(  )
     call TriggerAddAction( gg_trg_Probe, function Trig_Probe_Actions )
endfunction

Разберу этот код по частям.
Мы уже говорили о том, что функции бывают native и BJ, Приблизительно 92% функций, используемых GUI - именно BJ, поэтому лучше писать код на Jass.

Code
function InitTrig_Probe takes nothing returns nothing

function объявляет функцию.
InitTrig_Probe - название функции.
takes - аргументы, которые функция принимает. Перечисляются через запятую. Если функция не принимает ничего, то после takes пишется nothing. Заметьте, что после последнего аргумента запятую ставить не надо.
returns - аргумент, который функция возвращает. Такой аргумент может быть только один! При этом не надо указывать название аргумента, только его тип. Если функция не возвращает ничего, то после returns пишется nothing.

Code
set gg_trg_Probe = CreateTrigger(  )

set - оператор-аналог действия "Задать переменную" в триггерах на Jass. Синтаксис: set переменная = значение. Отсюда вывод, что название переменной - gg_trg_Probe, а её значение - CreateTrigger(), т.е. новый триггер (функции мы разберём подробнее позднее).
P.S.: Пробелы в скобках - пережиток триггеров, лучше их убирать.
Code
call TriggerAddAction( gg_trg_Probe, function Trig_Probe_Actions )

А это наглядный пример того, как надо вызывать функцию.
call - оператор, служащий для вызова функции.
TriggerAddAction - название функции. В скобках надо перечислить в заданном порядке все принимаемые функцией аргументы.

Code
endfunction

endfunction - оператор, определяющий конец функции.

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

// - специальные символы, после которых пишется комментарий. Он не влияет на работу триггера и не проходит проверку парсером.

Code
function Trig_Probe_Actions takes nothing returns nothing
endfunction

Эта функция предназначена для действий триггера. У нас действий нет, поэтому она будет пустой.
Домашнее задание остаётся то же самое - учите эту теорию.


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


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

SyzakyДата: Воскресенье, 10 Апреля 2011, 12:09:04 | Сообщение # 2
5 уровень
Группа: Проверенные
Сообщений: 104
Награды: 0
Репутация: 12
Блокировки:
Я вижу Duos бодреньким проснулся)
 

Dark_ZarichДата: Воскресенье, 10 Апреля 2011, 12:10:30 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
[DUОS], я прочитал и выучил готов пройти тест прям щас

MAL

Все тлен...
 

lawsonДата: Воскресенье, 10 Апреля 2011, 12:38:10 | Сообщение # 4
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (|DUОS|)
Домашнее задание остаётся то же самое - учите эту теорию.


Quote (Syzaky)
Я вижу Duos бодреньким проснулся)

Главное чтоб и уроки также выходили.
Quote (|DUОS|)
Эта функция предназначена для действий триггера

А почему не расказал про функцию условий?


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


Сообщение отредактировал lawson - Воскресенье, 10 Апреля 2011, 12:43:52
 

SyzakyДата: Воскресенье, 10 Апреля 2011, 12:47:44 | Сообщение # 5
5 уровень
Группа: Проверенные
Сообщений: 104
Награды: 0
Репутация: 12
Блокировки:
Я попробовал конвертировать тригер в текст и получилась какаято херня, может это быть связано с тем что у меня русские тригеры?
 

lawsonДата: Воскресенье, 10 Апреля 2011, 12:49:05 | Сообщение # 6
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Syzaky)
получилась какаято херня

Что именно? ты пустой триггер конвертировал?


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

SyzakyДата: Воскресенье, 10 Апреля 2011, 12:50:29 | Сообщение # 7
5 уровень
Группа: Проверенные
Сообщений: 104
Награды: 0
Репутация: 12
Блокировки:
нет, получилось вот что
Безымянный триггер 001
События
Боевая единица - Событие Атакован
Условия
((Атакованный юнит) типа Герой) равно Да
Действия
Боевая единица - Взорвать (Атакующий юнит)

копировал в jassCraft

Сообщение отредактировал Syzaky - Воскресенье, 10 Апреля 2011, 12:50:49
 

lawsonДата: Воскресенье, 10 Апреля 2011, 12:51:44 | Сообщение # 8
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Syzaky,
Ого впервые такое вижу наверное да изза рус триггеров. А возможно тебе надо в настройках посмотреть настройки текста.


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

DreiiДата: Воскресенье, 10 Апреля 2011, 12:58:04 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Воот,вот это уже веселее. ДУмаю отвечу на 5. х)

 

lawsonДата: Воскресенье, 10 Апреля 2011, 13:04:07 | Сообщение # 10
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Dreii)
ДУмаю отвечу на 5

Та я вообще ни че не знаю что такое JASS что такое function. :)


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

[DUОS]Дата: Воскресенье, 10 Апреля 2011, 13:06:14 | Сообщение # 11
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (lawson)
А почему не расказал про функцию условий?

lawson,
Это слишком большая нагрузка была бы вам. Это были бы уже и азы оптимизации.


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


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

lawsonДата: Воскресенье, 10 Апреля 2011, 13:06:43 | Сообщение # 12
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (|DUОS|)
Это были бы уже и азы оптимизации.

а ну да.


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

skvaer09Дата: Воскресенье, 10 Апреля 2011, 13:07:05 | Сообщение # 13
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
Это не из за русских триггеров
 

lawsonДата: Воскресенье, 10 Апреля 2011, 13:08:21 | Сообщение # 14
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
[DUОS],
Ну что дальше по плану? Опять экзамен или урок?


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


Сообщение отредактировал lawson - Воскресенье, 10 Апреля 2011, 13:08:33
 

skvaer09Дата: Воскресенье, 10 Апреля 2011, 13:10:38 | Сообщение # 15
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
takes я что то не понял это
 

lawsonДата: Воскресенье, 10 Апреля 2011, 13:13:49 | Сообщение # 16
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (skvaer09)
takes я что то не понял это

Это отвечает за импорт данных в функцию. так понятней?
тоесть если перевести на рус - переводиться как принять или взятие.

Добавлено (10-04-2011, 13:13)
---------------------------------------------
ПРимер.
function Probe takes unit u returns nothing
takes unit u -когда эту функцию (Probe) будут использовать это означает что функция принимает значение только юнит.
endfuntcion


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


Сообщение отредактировал lawson - Воскресенье, 10 Апреля 2011, 13:15:48
 

skvaer09Дата: Воскресенье, 10 Апреля 2011, 13:20:32 | Сообщение # 17
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
lawson, Во понятно))

Добавлено (10-04-2011, 13:20)
---------------------------------------------
И вот это доже не понятно "call "и "TriggerAddAction "

 

lawsonДата: Воскресенье, 10 Апреля 2011, 13:21:52 | Сообщение # 18
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
skvaer09,
А returns наоборот
returns unit -когда эту функцию (Probe) будут использовать это означает что функция отдает(возвращает) значение только юнит.
Но тогда в этой функции должен быть сам return.

Добавлено (10-04-2011, 13:21)
---------------------------------------------

Quote (skvaer09)
И вот это доже не понятно "call "и "TriggerAddAction "

call - это вызов функции
TriggerAddAction - это сама функция
тоесть
call вызов функции TriggerAddAction() - функция
call TriggerAddAction()


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


Сообщение отредактировал lawson - Воскресенье, 10 Апреля 2011, 13:35:00
 

skvaer09Дата: Воскресенье, 10 Апреля 2011, 13:24:34 | Сообщение # 19
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
Как понять ? вызов функции
 

lawsonДата: Воскресенье, 10 Апреля 2011, 13:26:55 | Сообщение # 20
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (skvaer09)
вызов функции

ну чтобы любая функция заработала ее надо вызвать а call отвечает за это.
тоесть если ты хочешь вызвать любую функцию то пишешь перед ней call
call UnitAddAbility()
call TriggerAddAction()
call KillUnit()


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


Сообщение отредактировал lawson - Воскресенье, 10 Апреля 2011, 13:39:12
 

skvaer09Дата: Воскресенье, 10 Апреля 2011, 13:29:05 | Сообщение # 21
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
lawson, во спс
 

shift2501Дата: Воскресенье, 10 Апреля 2011, 13:39:55 | Сообщение # 22
4 уровень
Группа: Проверенные
Сообщений: 91
Награды: 0
Репутация: 11
Блокировки:
Выучил)


Сделать юзербар как у меня не просите!
Делаю флеш шапки и баннеры на заказ
 

lawsonДата: Воскресенье, 10 Апреля 2011, 13:40:24 | Сообщение # 23
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (shift2501)
Выучил)

А понял?


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

SyzakyДата: Воскресенье, 10 Апреля 2011, 13:41:30 | Сообщение # 24
5 уровень
Группа: Проверенные
Сообщений: 104
Награды: 0
Репутация: 12
Блокировки:
можно подробнее про returns, что конкретно возвращает функция, желательно с примером,что конкретно возвращает (и что нам или тригеру это дает)
Привер: return false
return true
 

lawsonДата: Воскресенье, 10 Апреля 2011, 13:46:37 | Сообщение # 25
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Syzaky)
можно подробнее про returns

returns отвечает за возвращение значений из функции по сравнению с takes returns сложней освоить.
Пример
function Probe takes nothing returns integer
returns integer - это обозначает что функция когда ее будут использовать то она будет возвращаеть значение перменной целоисчислительная.
самое главно в таких функциях не забывать ставить сам return который отвечает что именно вернуть функциии в значение integer.
return 0 - это означает что функция будет возвращать в значение Integer целое число 0.
так же можно поставить 1, 2, ... даже можно вставлять id способностей или юнитов но это вам потом дуос обяснит.
endfunction


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


Сообщение отредактировал lawson - Воскресенье, 10 Апреля 2011, 13:50:05
 

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

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