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

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

Закрытая тема
 
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Как определить, пройдет ли Б/е и точку?
Есть ли функция, определяющая, пойдет юнит в указанную точку или нет? Или придется при помощи дамми-юнита проверять?

Отредактировано Линкольн 6 Эхо, 15.11.2008 в 07:37.
Старый 15.11.2008, 07:21
adic3x

offline
Опыт: 108,439
Активность:
что вы понимаете под понятием "пройдет"? карту путей или траекторию его пути при отдаче приказа?
Старый 15.11.2008, 09:08
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
ADOLF. Карту путей.
Скажем, есть юнит, впереди от него находится обьект (Уклон, декорация, что угодно). Нужно узнать, может ли юнит пройти через этот обьект.

Отредактировано Линкольн 6 Эхо, 15.11.2008 в 10:06.
Старый 15.11.2008, 10:00
J
expert
offline
Опыт: 48,447
Активность:
Старый 15.11.2008, 10:28
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Финаменально! Благодарю.
Старый 15.11.2008, 11:18
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
При попытке сохранить карту, функция выдает ошибку.
Symbol IsTerrainPathable multiply defined
Код:
native IsTerrainPathable takes real x, real y, pathingtype t returns boolean
Старый 15.11.2008, 16:21
J
expert
offline
Опыт: 48,447
Активность:
Код:
native IsTerrainPathable takes real x, real y, pathingtype t returns boolean
я надеюсь ты эту строчку в коде не размещал?
Старый 15.11.2008, 16:23
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Никогда с подобными функциями не работал. Может и протупил. Я использовал строку.
Код:
local boolean ltp = IsTerrainPathable(GetUnitX(Unit), GetUnitY(Unit), PATHING_TYPE_WALKABILITY)

Я так понимаю, функция native IsTerrainPathable takes real x, real y, pathingtype t returns boolean есть в common.j и использовать её в коде не правильно. Или нет?
Старый 15.11.2008, 16:59
Aspid

offline
Опыт: 8,361
Активность:
Линкольн 6 Эхо ты еще мог обозвать собственную переменную или функцию именем IsTerrainPathable, проверься.
Нативка IsTerrainPathable работает только с рельефом, а тебе еще нужно проверить наличие в точке разрушаемых и убиваемых объектов.
AMAI использует дамми. Хорошей альтернотивой может стать запихивание в код проанализированной карты путей (граф путей).
Старый 15.11.2008, 17:13
J
expert
offline
Опыт: 48,447
Активность:
ну строчка пральная, если и есть ошибки то не сдесь
Старый 15.11.2008, 17:15
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Хорошо. Буду искать. Прошу пока тему не закрывать. Хмм, стихи.
Старый 15.11.2008, 17:23
agentex

offline
Опыт: 34,834
Активность:
кстати IsTerrainPathable не подходит в некоторых случаях - например если координаты попадут между внешним контуром текстуры пути реки и самой водой, функция вернет что там волкабилити
Старый 15.11.2008, 17:37
Aspid

offline
Опыт: 8,361
Активность:
agentex, рельеф описывается квадратиками 128Х128 с одинаковым типом проходимости во всем квадрате. Проверять эти квадратики на границах нет никакого резона.
Любая точка принадлежит только одному такому квадрату. Напр. (0,0) из квадрата (0,0)-(127.999,127.999).

Отредактировано Avatar, 15.11.2008 в 18:39.
Старый 15.11.2008, 18:04
agentex

offline
Опыт: 34,834
Активность:
Avatar, я просто заметил, что такое может случиться.. значит в этих квадратиках почемуто тип проходимости walkable
Старый 15.11.2008, 18:19
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Avatar. Что, или кто это - AMAI?

Линкольн 6 Эхо добавил:
Цитата:
AMAI использует дамми. Хорошей альтернотивой может стать запихивание в код проанализированной карты путей (граф путей).

Правельно ли это - использовать дамми? Есть ли другие способы, помимо IsTerrainPathable?
Опиши пожалуйста подробнее способ запихивания в код проанализированной карты путей.
Старый 15.11.2008, 20:41
Aspid

offline
Опыт: 8,361
Активность:
AMAI - искусственный интеллект для melee карт. В подобных скриптах действуют несколько иные правила. Например, нет доступа к разрушаемым объектам. Приходится извращаться. В war3map.j на маленькой карте лучше проверять точки на проходимость.
Цитата:
Сообщение от Линкольн 6 Эхо
способ запихивания

Это чистый креатив. Выбираешь важнейшие точки, находишь расстояния между ними, находишь тонкие стены из деревьев, которые могут быть уничтожены в игре и заносишь все в цепочку if где и как алгоритм требует.
Старый 15.11.2008, 22:25
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
/me юзает дамми - перемещает его в проверяемое место, а потом сверяет координаты с нужными
Старый 15.11.2008, 22:26
Aspid

offline
Опыт: 8,361
Активность:
А потом ставит в проверяемую точку второго дамми и еще раз создает первого и проверяет его координаты. Дело в том, что если в квадрате -2000 +2000 нет возможности разместить юнита в свободной проходимой точке, то юнит размещается в указанной точке, не смотря ни на что.
Я не помню результат тестирования, разница в быстродействии при исп 2 дамми и IsTerrainPathable + EnumUnits получилась маленькой.
Старый 15.11.2008, 23:23
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Даже если это так - для меня не актуально ибо используется для проверки при кастом движении юнита, а ситуации, описанные тобой, в этом случае недостижимы. Имхо эта ситуация вообще достижима достаточно редко.
Старый 15.11.2008, 23:33
Линкольн
Barg Ent.
offline
Опыт: 4,812
Активность:
Спасибо, дальше я сам разберусь. Тема больше не понадобится.

Линкольн 6 Эхо добавил:
Поспешил.
Напоследок, скажите пожалуйста, что делает функция
Код:
function H2I takes handle h returns integer
    return h
    return 0
endfunction
Старый 16.11.2008, 18:14
Закрытая тема

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

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

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

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



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