[Вопрос] scope
|
|
abidin | Дата: Вторник, 28 Апреля 2015, 08:22:53 | Сообщение # 1 |
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
| Вот допустим создали мы обычный триггер B,который расположен выше триггера A.После компиляции все функции в триггере B будут выше A?И можно ли вызывать функции из того триггера? Если заключить наши функции в триггере B в область,то где будет распологаться наша область,так же как я описал выше или по другому принципу?
|
|
|
|
Bibo | Дата: Вторник, 28 Апреля 2015, 10:13:25 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Чтобы код из триггера А был доступен в триггере В, нужно создать триггер В раньше триггера А. Код внутри областей (scope/edscope) располагается в том же месте где и объявлен. Для твоей задачи используются библиотеки. Код library A uses B //... endlibrary
library B //... endlibrary В таком случае не важно, что где объявлено, парсер перенесет весь код библиотеки B выше библиотеки A. Вместо слова uses можно использовать needs и requires. Если библиотека A использует несколько библиотек, их можно перечислить через запятую Код library A uses B, C, D //... endlibrary Что касательно механики, то весь код всех библиотек будет расположен сразу после объявления переменных, выше CustomScript карты.
|
|
|
|
abidin | Дата: Вторник, 28 Апреля 2015, 10:24:15 | Сообщение # 3 |
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
| Bibo, спасибо,мне было интересно только про scope. Не знал что они распологаются в том порядке,как обьявили.А триггеры тоже распологаются по порядку объявления?Или там смотрится не вызывает ли один триггер другой?
|
|
|
|
Bibo | Дата: Вторник, 28 Апреля 2015, 10:38:02 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Нет, в триггерах не такая продуманная система. Что раньше создано то и выше.
Добавлено (28 Апреля 2015, 10:38:02) --------------------------------------------- Если без использования областей, то можно запустить действия одного триггера из другого, посредством функции TriggerExecute, тогда тоже не имеет значения что выше, что ниже. Тогда нельзя передать параметры, как в случае вызова обычной функции, но можно будет использовать такие как GetTriggerUnit, GetTriggerPlayer и т.д.
Сообщение отредактировал Bibo - Вторник, 28 Апреля 2015, 10:38:37 |
|
|
|
SirNikolas | Дата: Вторник, 28 Апреля 2015, 13:02:23 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Если требуется дать доступ всему коду к каким-либо функциям/etc, их либо помещают в каком-нибудь триггере в библиотеку (library, рекомендуемый подход), либо пишут в custom code (иконка свитка в дереве триггеров).
|
|
|
|
abidin | Дата: Вторник, 28 Апреля 2015, 13:39:31 | Сообщение # 6 |
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
| SirNikolas, это я все знаю,мне именно хотелось узнать как распологается scope.Просто было написано,что scope распологается в том месте,где и создан,а где именно я не знал.
|
|
|
|