[Урок 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 - название функции. В скобках надо перечислить в заданном порядке все принимаемые функцией аргументы. 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], я прочитал и выучил готов пройти тест прям щас
|
|
|
|
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
Блокировки:
| А понял?
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 |
|
|
|