[Вопрос] Работа с отрядами юнитов
|
|
FeRiT | Дата: Среда, 08 Февраля 2012, 11:32:15 | Сообщение # 1 |
1 уровень
Группа: Пользователи
Сообщений: 19
Награды: 0
Репутация: 2
Блокировки:
| Есть одна функция:
Code function тяпляп takes nothing returns nothing ........ call ForGroup( отряд юнитов, function Func1 ) ....... endfunction
И вот тут загвоздка, все действия над отрядом юнитов, делаются в отдельной функции (Func1), от туда нужно взять пару переменных и туда тоже нужно отдать пару переменных, но как это сделать кроме как глобальными переменными не пойму. Есть ли какой метод объявления переменных которые будут работать не только в одной функции, но и во всем тригере?
|
|
|
|
lawson | Дата: Среда, 08 Февраля 2012, 12:10:16 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (FeRiT) Есть ли какой метод объявления переменных которые будут работать не только в одной функции, но и во всем тригере? Сохраняй переменные в хеш, или через структуры передавай.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
SirNikolas | Дата: Среда, 08 Февраля 2012, 12:33:03 | Сообщение # 3 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FeRiT) Есть ли какой метод объявления переменных которые будут работать не только в одной функции, но и во всем тригере? Глобальные переменные же. Ctrl+B.
Если юниты не должны остаться в группе после этих действий, можно воспользоваться вот такой конструкцией.
|
|
|
|
FeRiT | Дата: Среда, 08 Февраля 2012, 12:55:12 | Сообщение # 4 |
1 уровень
Группа: Пользователи
Сообщений: 19
Награды: 0
Репутация: 2
Блокировки:
| Глобальные это не выход, как и хеш, допустим, я беру группу юнитов и создаю на каждом юните по спецэффекту, через 10 секунд мне эти спецэффекты нужно удалить, так вот если записать это дело в к глобальную или хеш, то все удалиться, если использовать эту функцию 1 раз, а если за эти 10 секунд эта функция проходит раз 5, то удаляться только эффекты с последнего раза. С хешем конечно можно этого избежать, но это дополнительный геморой SirNikolas, спасибо за ссылку, что хотел узнал
|
|
|
|
SirNikolas | Дата: Среда, 08 Февраля 2012, 13:04:52 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (FeRiT) С хэшем конечно можно этого избежать, но это дополнительный геморой Именно через хэш и таймеры это и надо делать.
|
|
|
|
FeRiT | Дата: Среда, 08 Февраля 2012, 13:25:50 | Сообщение # 6 |
1 уровень
Группа: Пользователи
Сообщений: 19
Награды: 0
Репутация: 2
Блокировки:
| Зачем? если в той ссылке, что ты привел, написан хороший метод GroupLoop за счет которого это можно сделать в теле одной функции все просто и красиво
|
|
|
|
SirNikolas | Дата: Среда, 08 Февраля 2012, 13:55:23 | Сообщение # 7 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Хорошо, создаешь эффекты ты через GroupLoop, но что ты сделаешь с ними потом? Хэш ведь все равно надо использовать, дабы отсрочить удаление.
|
|
|
|
FeRiT | Дата: Среда, 08 Февраля 2012, 14:14:27 | Сообщение # 8 |
1 уровень
Группа: Пользователи
Сообщений: 19
Награды: 0
Репутация: 2
Блокировки:
| Дык ведь есть функция TriggerSleepAction, вставил её на какое нужно время, а после в этом же тригере и удалил эффекты после нее.
|
|
|
|
Dreii | Дата: Среда, 08 Февраля 2012, 14:23:59 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| FeRiT, слип в теле лупа - смерть. Никогда так не используй. Таймеры и точка.
|
|
|
|
FeRiT | Дата: Среда, 08 Февраля 2012, 14:37:22 | Сообщение # 10 |
1 уровень
Группа: Пользователи
Сообщений: 19
Награды: 0
Репутация: 2
Блокировки:
| так ведь не в теле лупа, а просто в теле тригера, что то в этом духе: loop создание массива спецэффектов endloop TriggerSleepAction loop удаление массива спецэффектов endloop
Не смертельно же Кстати, а что такого если слип использовать в лупе? Я использовал пару раз, правда на маленькое время ~0.5с. и ничего ужасного не случалось
|
|
|
|
Dreii | Дата: Среда, 08 Февраля 2012, 14:42:46 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| FeRiT, Найди инфу о вейтах узнаешь.
|
|
|
|
SirNikolas | Дата: Среда, 08 Февраля 2012, 15:42:24 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Сколько раз обсуждалось - TriggerSleepAction очень часто вешает поток. Это означает, что после этого действия никакие другие в пределах данного запуска триггера не выполнятся.
|
|
|
|
FeRiT | Дата: Среда, 08 Февраля 2012, 16:47:17 | Сообщение # 13 |
1 уровень
Группа: Пользователи
Сообщений: 19
Награды: 0
Репутация: 2
Блокировки:
| Может быть вы это и обсуждали сколько то раз, а я не разу, так как проблем с этим не возникало, следовательно и не искал ничего на эту тему, а в закрепленных статьях, что находятся выше, об этом не сказано не слова.
Ответ получен, тему можно закрывать.
|
|
|
|