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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Условие с параметрами
TohaAKAДата: Вторник, 25 Декабря 2012, 21:20:47 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 45
Блокировки:
Как запустить условие с нужными параметрами?
Проблемные строчки:
Код
local group gr = GetUnitsInRangeOfLocMatching(200.00, point, Condition(function Cond(caster)))

Код
function Cond takes unit u returns boolean
     return ( IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(u)) == true )
endfunction

caster глобальной делать нежелательно, совсем.


 

[SeKtOR]Дата: Вторник, 25 Декабря 2012, 22:20:04 | Сообщение # 2
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
Код
function SomeTrigger_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local group g = CreateGroup()
local unit f = null
local player p = GetOwningPlayer(u)
call GroupEnumUnitsInRange(g, GetWidgetX(u), GetWidgetY(u), 200., null)
loop
set f = FirstOfGroup(g)
exitwhen f == null
if(IsUnitEnemy(f, p) and GetWidgetLife(f) > .405) then
// Юнит враг делаем че-то...
endif
call GroupRemoveUnit(g, f)
endloop
call DestroyGroup(g)
set u = null
set g = null
set f = null
set p = null
endfunction

Вот тебе самый оптимизированный и быстродействующий вариант. В твоем случае у тебя утекает boolexpr и ты используеш точки вместо координат


 

SmartarosДата: Вторник, 25 Декабря 2012, 22:59:07 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
>= .405

Добавлено (25 Декабря 2012, 22:59:07)
---------------------------------------------
и вобще, желательно для всех пиканий юнитов брать глобальную группу

 

SirNikolasДата: Среда, 26 Декабря 2012, 10:45:39 | Сообщение # 4
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Цитата (TohaAKA)
caster глобальной делать нежелательно, совсем.
Именно так и надо, если хочешь через фильтр. Никакого одновременного выполнения не будет, переменная не перезапишется, пока будет выполняться цикл.
Либо через grouploop, Сообщение # 2. Только группу лучше глобальную взять.
Цитата (Smartaros)
>= .405
Нет, просто больше.
Цитата (|SeKtOR|)
set f = null
Зачем? На выходе из цикла она уже обнулена.


 

SmartarosДата: Четверг, 27 Декабря 2012, 00:42:02 | Сообщение # 5
9 уровень
Группа: Проверенные
Сообщений: 810
Награды: 0
Репутация: 135
Блокировки:
ты мне сам давно кидал код, где было больше равно
 

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

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