Сейчас 09:32:11 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Работа с отрядами юнитов
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с. и ничего ужасного не случалось B)
 

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
Блокировки:
Может быть вы это и обсуждали сколько то раз, а я не разу, так как проблем с этим не возникало, следовательно и не искал ничего на эту тему, а в закрепленных статьях, что находятся выше, об этом не сказано не слова.

Ответ получен, тему можно закрывать.
 

  • Страница 1 из 1
  • 1
Поиск:

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