Сейчас 09:17:03 Четверг, 4 июля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
loop and group
DreiiДата: Понедельник, 09 Января 2012, 19:24:33 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Всем известно, что выбор юнитов таким способом - кашка:
Code
group g = CreateGroup()
unit e
GroupEnumUnitsInRange(g, x, y, 100500., null)
loop
     e = FirstOfGroup(g)
     exitwhen e == null
     //
     GroupRemoveUnit(g, e)
endloop
DestroyGroup(g)
g = null

Хочу услышать, каким способом пользуетесь вы?


 

SirNikolasДата: Понедельник, 09 Января 2012, 19:27:11 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
60-35874-1371704-16-1325852768

 

DreiiДата: Понедельник, 09 Января 2012, 19:29:58 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (ShadoW DaemoN)

Неправильно:
Code
local group Group = CreateGroup()
...
call GroupEnumUnitsInRange(Group,X,Y,120,null)
loop
set Picked = FirstOfGroup(Group)
exitwhen Secret_Pirouette_Filter(Caster,Picked) == true or Picked == null
call GroupRemoveUnit(Group,Picked)
endloop
...
call DestroyGroup(Group)
set Group = null

Правильно:
Code
// c_temp и t_temp - глобальные переменные
// gr_temp - Глобальная, всегда пустая группа, создання для переборов юнитов

// JASS
function foo takes nothing returns boolean
   if t_temp == null and SecretPirouetteFilter (c_temp, GetFilterUnit()) then
       set t_temp = GetFilterUnit()
   endif
   return false
endfunction
...
set c_temp = Caster
set t_temp = null
call GroupEnumUnitsInRange (gr_temp, x, y, 120., Condition(function Foo))

// cJass
c_temp = Caster
t_temp = null
GroupEnumUnitsInRange (gr_temp, x, y, 120., Condition(lambda boolean () {
   if (t_temp == null && SecretPirouetteFilter (c_temp, GetFilterUnit()) {
       t_temp = GetFilterUnit()   
   }
   return false      
}))


Что правильнее?




Сообщение отредактировал Dreii - Понедельник, 09 Января 2012, 19:30:14
 

SirNikolasДата: Понедельник, 09 Января 2012, 19:31:37 | Сообщение # 4
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
В зависимости от случая, я же написал.

 

DreiiДата: Понедельник, 09 Января 2012, 19:32:16 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
SirNikolas, В спеллах нам юниты не нужны => цикл?

 

SirNikolasДата: Понедельник, 09 Января 2012, 19:33:56 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
=> lambda.

Добавлено (09 Январь 2012, 19:33:56)
---------------------------------------------
Только желательно сделать фильтр глобальным, чтоб каждый раз не вызывать функцию Filter.


 

DreiiДата: Понедельник, 09 Января 2012, 19:35:38 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
SirNikolas, Тоесть в способностях лучше фильтр?
Я запутался


 

Ty3uKДата: Понедельник, 09 Января 2012, 19:43:33 | Сообщение # 8
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Юзаю фильтр + форгруп (только когда надо сделать фильтрацию еще более детальной) ибо первый способ сильно лагает на больших группах. Вот так

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

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

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