Нашёл описание как убрать утечку полярных координат. Через Custom Script определяются переменные (которые Я определил без Custom Script-а), и опытным путём (менял на стандартную функцию) удалось установить что главная строчка не работает, всё остальное работает и это не нужно здесь приводить. Копирую вам прямо из Custom Script-а, как есть:
call MoveLocation(udg_GlobalCurrentPoint1, GetLocationX(udg_GlobalCurrentPoint1) + udg_GlobalCurrentReal1 * CosBJ(udg_GlobalCurrentAngle), GetLocationY(udg_GlobalCurrentPoint1) + udg_GlobalCurrentReal1 * SinBJ(udg_GlobalCurrentAngle))

Сделал так. Использую только MoveLocation..., можно даже вообще не удалять переменную точки а лишь двигать её, как курсор мыши, и указывать молниеносно и невидимо для всех триггеров одной точкой что и куда им делать. Все стрелы полетели как надо, в россыпь. Хотя когда Я делаю удаление точки в конце, это не отражается на следующем вызове триггера, так что можно и удалять, главное не удалять когда она ещё нужна до завершения триггера. Проверил на Хендлах, один Хендл создаётся один раз, чтобы объявить эту точку, а то что двигаю в цикле никак не прибавляет Хендлы. Получилась точка-указатель, как курсор мыши, и одной хватает, ведь Warcraft однопоточный. Оставлю ещё вопрос открытым на несколько часов, может Я не прав и кто-то меня поправит.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
32
Там не просто косинус угла, а косинус угла в радианах.
И вот правда стоило так извращаться?
18
Учи координаты, в них намного проще всё получается. Я сам так же "извращался", пока не изучил действия через координаты.
7
quq_CCCP, Maniac_91, ребята, вот вам ещё одна подсказка. В другом заклинании эта функция работает замечательно! Если Я что либо меняю, то юниты бегут не туда, но бегут, если оставить как есть, все бегут туда куда надо, и вроде бы всё правильно, но в этом заклинании не работает! Если ставлю обычную функцию Set Variable = Polar Coordinate..., а эту строчку убираю, то всё работает, но естественно с утечкой. Я уже голову сломал, всё просто как пень, а увидеть не могу!
32
Dagger667, угол на bj_degtorad умножь, угол нужен в радианах, а у тебя градусы ( RandomAngle)
7
quq_CCCP, вот это ты гад! ))))) У меня случается крах и всё закрывается! Причём два раза так пробовал!
Короче. Вот как у меня это было в том заклинании где работало:
set udg_GlobalCurrentAngle = AngleBetweenPoints(udg_GlobalCurrentPoint1, udg_GlobalCurrentPoint2)
Это угол между двумя точками. Потом эта переменная шла как здесь Random Angle.
Я сделал через GUI сейчас, всё заработало. Использовал стандартную функцию Преобразование - Convert Coordinates To Point, а остальное так же. Будут так утечки или нет? Только честно!
quq_CCCP, Проверил сейчас и то и то заклинание, всё работает. В одном Random Angle, в другом функция AngleBetweenPoints, но разницы никакой, работает чёрт возьми! Значит логически ты уже не прав. Причём когда работало с утечками, были заметные торможения, а теперь всё гладко, без лагов. Крутил камеру прямо на ходу, всё норм. Но по счётчику Хендлов сейчас сказать трудно, там и другие утечки идут... Думаю решено.
7
Hate, так приятель, давай докапываться до истины! Загрузил чистую карту, удалил сценарии инициализации, оставил только счётчик Хендлов. Показывает 91 хендл - это абсолютно чистая карта, на сколько возможно. Далее, загрузил все необходимые переменные и функцию, запустил проверку, счётчик показал 93 уже. Отключил стандартную функцию Преобразование координат, но оставил всё остальное, что обслуживало её, это объявление трёх переменных и три строчки в конце их обнуления. Счётчик показал 93. То есть так же. Вывод практический - 0 хендлов, что включена она, что выключена, разницы никакой.
Теперь чисто теоретически. Как эта функция может создавать точку если она берёт чистые координаты по X и Y (цифры), и получившаяся точка записывается в переменную, которую потом можно благополучно удалить. Вывод теоретический, процесс контролируем, лишних точек она не создаёт. Докажи обратное если Я не прав! бубубуб не засчитывается!
Hate, Сорри, допустил маленькую ошибочку, 1 хендл прибавляется!
Финальный разбор показал. Функция Преобразование координат = 1 хендл, функция Полярный координат = 1 хендл, функция MoveLocation = 0 хендлов. Ну что ж, придётся признать что хендлы всё таки делаются, что ж тут поделать. Сегодня Я устал, завтра продолжу...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.