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

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

Закрытая тема
 
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
EnumDestructablesInRect()
  1. Как я понял, единственный способ посчитать разрушалки в радиусе от цели - взять рект и фильтр с радиусом?
  2. Как вычислить что EnumDestructable==Tree? Если точно нельзя, посоветуйте как увеличить точность.
  3. Можно ли сделать, чтобы
native EnumDestructablesInRect takes rect r, boolexpr filter, code actionFunc returns nothing
actionFunc брала integer?
avatarDr добавил:
Какими-нибудь окольными путями.
Старый 24.01.2010, 13:21
DioD

offline
Опыт: 45,134
Активность:
  1. Берём и создаём РЕКТ с радиусом равным радиусу круга наведения.
  2. Деструктаблы берутся в квадрате, и те что за пределами круга, будут иметь дистанцию до центра выше радиуса, их мы игнорируем, как считать дистанцию сами должны знать.
  3. GetDestructableTypeId() + список деревьев или применять Eeat и смотреть проходил ли приказ.
4)
code to integer takes I returns code
if I == 1 then
return function a
elseif I == 2 then
return function b
Старый 24.01.2010, 14:00
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
DioD, у ректа нет радиуса. Но как посчитать я знаю, у близзов посмотрел.
В твоём способе будет I функций, что не есть гуд. У меня функция считает деревья в радиусе 10 юнитов (Т.е. вызывает Enum). Я не знаю, как приаттачить integer count к integer unit.
Старый 24.01.2010, 14:27
DioD

offline
Опыт: 45,134
Активность:
хештаблицы
Старый 24.01.2010, 14:57
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
А к чему привязать?
Старый 24.01.2010, 15:40
DioD

offline
Опыт: 45,134
Активность:
приаттачить integer count к integer unit.
Старый 24.01.2010, 15:43
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
function Enum_Action takes nothing returns nothing
	set Count[INDEX]=Count[INDEX]+1
endfunction
function Timer takes nothing returns nothing
    local integer INDEX=GetTimerId(GetExpiredTimer())
    local real x=GetUnitX(Unit[INDEX])
    local real y=GetUnitY(Unit[INDEX])
    local rect r=Rect(x-125,y-125,x+125,y+125)
    call EnumDestructablesInRect(r,null,function Enum_Action)
endfunction
Как мне получить нужный INDEX в функции Enum_Action?
avatarDr добавил:
Я в курсе, что рект остаётся. Это сейчас не важно.
Старый 24.01.2010, 16:00
DioD

offline
Опыт: 45,134
Активность:
глобалку используй и всё, неужели сложно?
Старый 24.01.2010, 16:02
avatarDr
Neophyte
offline
Опыт: 6,474
Активность:
Ты гений. Я как бы её и использую. А вот нужный индекс как ты найдёшь?
Кстати, я уже решил эту проблему.
Старый 24.01.2010, 23:54
Закрытая тема

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

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

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

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



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