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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Локальный триггер (vs Глобальный триггер)
[Вопрос] Локальный триггер
FatalBladeДата: Четверг, 01 Декабря 2011, 21:48:55 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Code
function InitTrig_Explode_Corpses takes nothing returns nothing
      local trigger trig = CreateTrigger()
      local integer i = 0
      loop
          call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
          exitwhen i == 11
          set i = i + 1
      endloop
      call TriggerAddCondition(trig, Filter(function Trig_Explode_Corpses_Conditions))
      call TriggerAddAction(trig, function Trig_Explode_Corpses_Actions)
      set trig = null
endfunction


Тут создаётся локальный триггер. В чём разница между локальным триггером и глобальным триггером?
Code
    set gg_trg_Vengeance = CreateTrigger(  )


 

lawsonДата: Четверг, 01 Декабря 2011, 22:18:12 | Сообщение # 2
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
В чём разница между локальным триггером и глобальным триггером?

Такая же как и глобальная группа и локальная + глобалный триггер автоматически прописываеться CreateTrigger() если ты создал его в Редакторе триггеров.


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

FatalBladeДата: Четверг, 01 Декабря 2011, 22:30:32 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Так лучше локальный юзать для быстродействия/производительности?

 

Ty3uKДата: Четверг, 01 Декабря 2011, 22:35:14 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Глобальный триггер все равно будет висеть в карте. Так зачем создавать еще и локалку, если уже есть глобальная переменная?

Добавлено (01 Декабрь 2011, 22:35:14)
---------------------------------------------
Разницы в производительности не будет. Локалку еще и обнулить надо будет


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

FatalBladeДата: Четверг, 01 Декабря 2011, 22:42:49 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Просто я часто замечал что многие джассеры делают именно локальные триггеры. Почему бы это?

 

lawsonДата: Четверг, 01 Декабря 2011, 22:43:55 | Сообщение # 6
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (FatalBlade)
Просто я часто замечал что многие джассеры делают именно локальные триггеры.

Возможно они просто не создают глобальных, а прописывают локальные в инициализации.


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


Сообщение отредактировал lawson - Четверг, 01 Декабря 2011, 22:44:50
 

[DUОS]Дата: Четверг, 01 Декабря 2011, 23:33:43 | Сообщение # 7
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Локалтригги в большом количестве - нереальное зло... Они полностью очищены из памяти быть не могут.

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


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

SirNikolasДата: Пятница, 02 Декабря 2011, 13:40:55 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (|DUОS|)
Локалтригги в большом количестве - нереальное зло... Они полностью очищены из памяти быть не могут.
Если они периодически создаются во время игры, а не при ините. А так - практически все равно.
Quote (FatalBlade)
Просто я часто замечал, что многие джассеры делают именно локальные триггеры. Почему бы это?
Чтобы выкинуть глобалку триггера из блока globals.


 

[DUОS]Дата: Пятница, 02 Декабря 2011, 15:03:22 | Сообщение # 9
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (SirNikolas)
Если они периодически создаются во время игры

SirNikolas,
Это ты верно. Я же и говорю - в большом количестве.
Quote (SirNikolas)
Чтобы выкинуть глобалку триггера из блока globals.

А смысл? Ты же не сможешь обратиться тогда к нему из другого тригга.


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


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

SirNikolasДата: Пятница, 02 Декабря 2011, 15:13:45 | Сообщение # 10
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
В большинстве случаев это и не нужно. А зачем нужна глобалка, которая не используется?

Добавлено (02 Декабрь 2011, 15:13:45)
---------------------------------------------



 

FatalBladeДата: Пятница, 02 Декабря 2011, 15:15:28 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Если они периодически создаются во время игры, а не при ините. А так - практически все равно.

Если я создаю локальный триггер в ините триггера, тоесть под полосой //=================
Вот так например:
Code
     local trigger trig = CreateTrigger()
      local integer i = 0
      loop
          call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
          exitwhen i == 11
          set i = i + 1
      endloop
      call TriggerAddCondition(trig, Filter(function Trig_Explode_Corpses_Conditions))
      call TriggerAddAction(trig, function Trig_Explode_Corpses_Actions)
      set trig = null

Это ведь создаёт локальный триггер всего 1 раз, не так ли?

Quote (SirNikolas)
Чтобы выкинуть глобалку триггера из блока globals.

Quote (|DUОS|)
А смысл? Ты же не сможешь обратиться тогда к нему из другого тригга.

Добавлено (02 Декабрь 2011, 15:15:28)
---------------------------------------------

Quote (SirNikolas)
Что-то знакомое :)

То был твой код))) Я использовал его как шаблон для многих других триггеров )))


 

SirNikolasДата: Пятница, 02 Декабря 2011, 15:15:53 | Сообщение # 12
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (FatalBlade)
Это ведь создаёт локальный триггер всего 1 раз, не так ли?
Да-да.
P. S. Filter замени на Condition. Я перепутал.


 

FatalBladeДата: Пятница, 02 Декабря 2011, 15:17:13 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
Quote (SirNikolas)
Filter замени на Condition.

Какая разница? Оно ведь то же самое. Тоже работает.




Сообщение отредактировал FatalBlade - Пятница, 02 Декабря 2011, 15:17:29
 

HexingДата: Пятница, 02 Декабря 2011, 15:18:29 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
FatalBlade, да 1 раз

 

SirNikolasДата: Пятница, 02 Декабря 2011, 15:21:49 | Сообщение # 15
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Твоя же тема.



Сообщение отредактировал SirNikolas - Пятница, 02 Декабря 2011, 15:23:18
 

YaNeZnauJassДата: Пятница, 02 Декабря 2011, 15:24:26 | Сообщение # 16
1 уровень
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 15
Блокировки:
однозначно глобальный

Добавлено (02 Декабрь 2011, 15:24:26)
---------------------------------------------
ну можно офк юзать в глобальном триггере локальные но имхо изврат

 

[DUОS]Дата: Пятница, 02 Декабря 2011, 18:10:49 | Сообщение # 17
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (SirNikolas)
В большинстве случаев это и не нужно. А зачем нужна глобалка, которая не используется?

SirNikolas,
Ставлю ситуацию. Тебе нужно массово регнуть юнитов на событие дамага, причём если появляется новый юнит, то его должно тоже регать. Твои хвалёные локалтригги с этим не справятся.


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


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

HexingДата: Пятница, 02 Декабря 2011, 18:24:37 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
[DUОS], можно сохранить локальный триггер в хэш и обращаться по одному индексу типа 0 и 0 fffuuu
лично я все триггеры делаю глобальными - меньше гемороя


 

Ty3uKДата: Пятница, 02 Декабря 2011, 21:09:04 | Сообщение # 19
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Офк меньше. Сейвать тригги в хэш, конечно, выход, но какова гарантия того, что ты сам не забудешь, куда ты его сохранил? Я так однажды переписывал интегер и гадал, почему он принимает левые значения

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

[DUОS]Дата: Пятница, 02 Декабря 2011, 21:27:10 | Сообщение # 20
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (Hexing)
можно сохранить локальный триггер в хэш

А без?


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


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

HexingДата: Суббота, 03 Декабря 2011, 07:26:13 | Сообщение # 21
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
[DUОS], глобальный массив триггеров со значениями локальных триггеров vinsent
или завести глобалку типа триггер сделать ей set = этот ваш локальный триггер и в другой функе использовать эту глобалку


 

Ty3uKДата: Суббота, 03 Декабря 2011, 08:14:14 | Сообщение # 22
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
И зачем лишнее действие? Создать локальный триггер (это занять ячейку памяти), приравнять его к глобальному (лишнее действие), чтобы потом банально обнулить локальный. Зачем? Игра не стоит свеч, Холмс.

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

HexingДата: Суббота, 03 Декабря 2011, 08:29:48 | Сообщение # 23
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (Hexing)
лично я все триггеры делаю глобальными - меньше гемороя

я лишь отвечал на
Quote (|DUОS|)
А без?

многоуважаемый Ватсон...


 

Ty3uKДата: Суббота, 03 Декабря 2011, 09:25:19 | Сообщение # 24
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Я знаю, а я просто говорил, что это гемморой, ибо тред по этому вопросу и создавался, Холмс ^_^

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

HexingДата: Суббота, 03 Декабря 2011, 10:35:56 | Сообщение # 25
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Ty3uK, поооняяятноооо...

 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Локальный триггер (vs Глобальный триггер)
  • Страница 1 из 1
  • 1
Поиск:

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