XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
I.Todd

offline
Опыт: 12,046
Активность:
Юнит игрока в зоне
ну в общем ситуация следующая.
все выходные ломал голову, получил несколько вариантов нужный функции, но все были настолько корявы, что показывать я их тут не буду.
нужна функция
Код:
function UnitInRect takes player pl, integer unitId, rect zone return boolen

Функция должна возвращать истину, если в указанной области есть юнит заданного типа принадлежащий заданному игроку.
какие есть мнения по ее реализации?
Старый 20.10.2008, 09:26
J
expert
offline
Опыт: 48,447
Активность:
Код:
globals
    group GG = CreateGroup()
    player PlayerForGroup  
    integer IntegerForGroup
    //
    filterfunc FilterUnitInRect
endglobals

function UnitInRect_Filter takes nothing returns boolean
    return GetUnitTypeId(GetFilterUnit()) == IntegerForGroup and GetOwningPlayer(GetFilterUnit()) == PlayerForGroup
endfunction

function UnitInRect takes player pl, integer unitId, rect zone returns boolean
    set PlayerForGroup = pl
    set IntegerForGroup = unitId
    call GroupEnumUnitsInRect(GG, zone, FilterUnitInRect)
    return FirstOfGroup(GG) != null
endfunction

function Init takes nothing returns nothing
    set FilterUnitInRect = Filter(function UnitInRect_Filter)
endfunction
Старый 20.10.2008, 09:54
I.Todd

offline
Опыт: 12,046
Активность:
собственно идея понятно, но у меня возник вопрос, как эта функция будет себя вести если несколько копий такой функции будет опрашиваться одновременно?
Старый 20.10.2008, 13:18
J
expert
offline
Опыт: 48,447
Активность:
I.Todd если одновремено, то будут проблемы ^^
но в варе тако невозможно, такчто все будет нормально
Старый 20.10.2008, 13:20
I.Todd

offline
Опыт: 12,046
Активность:
у меня несколько тригеров, которые должны пользовать эту функцию. и вызываться она будет по событиям достаточно часто... раз 50-80 в секунду.
Старый 20.10.2008, 13:23
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
Сообщение от Jon
такчто все будет нормально
Старый 20.10.2008, 13:24
I.Todd

offline
Опыт: 12,046
Активность:
в общем то потому и задал вопрос, что не был уверен, что будет работать с глобалками. (

I.Todd добавил:
Ок, Спасибо, вечером попробую ))
Старый 20.10.2008, 13:24
J
expert
offline
Опыт: 48,447
Активность:
кстате, а зачем тебе ее вызывпьб 50-80 раз в секунду да еще в нескольких триггерах?
т.е. что там будет происходить? такие функции лучше запускать поменьше в зависимости от области конешно, мне кажется что там будет достаточно одного раза в полсекунды, но ты скажи зачем...
Старый 20.10.2008, 13:29
I.Todd

offline
Опыт: 12,046
Активность:
эта функция будет использована для написания АИ на джасс. собственно мне нужно проверить наличие 5 различных боевых единицы в одной из 25 зонн для каждого игрока.. и делать это нужно не реже чем раз в 2 секунды.
Старый 20.10.2008, 14:43
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
не реже чем раз в 2 секунды

лучше так и делай, а то 50-80 для аи это не целесобразно

Отредактировано Jon, 20.10.2008 в 14:51.
Старый 20.10.2008, 14:45
I.Todd

offline
Опыт: 12,046
Активность:
ну дык раз в 2 секунды для каждого игрока по 5 раз.. уже 60 вызовов идет )
хотя 60 в 2 сек это не 80 в сек. ))
Старый 20.10.2008, 15:25
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
мне нужно проверить наличие 5 различных боевых единицы в одной из 25 зонн для каждого игрока..


а событие входа выхода/выхода в/из региона? или просто пробить коордитаны? если юниты определенны то пикать ВСЕХ нестоит имхо...
Старый 20.10.2008, 20:26
I.Todd

offline
Опыт: 12,046
Активность:
Ни юниты ни зоны не определены.. Зоны, в переменных, а Юниты по типам.
Старый 20.10.2008, 20:55
adic3x

offline
Опыт: 108,439
Активность:
тогда делать пиком юнитов в регионе/радиусе
Старый 21.10.2008, 19:00
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 07:03.