Я работаю над пониманием того как разместить все элементы карты максимально математический точно. Значит, есть вот такой тестовый код:
Суть проста, размещаю двух юнитов на карте с иксом равным 0, а Y = Максимальная координата играбельной зоны/2 (то есть центр верхней части карты или центр нижней половины если координата отрицательная) + смещение на некое значение.
На выходе проверяю дистанцию от центра 0,0 до размещённых юнитов. Но всё равно имею погрешность. Как так ?
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
37
4 года назад
1
0
28
4 года назад
Отредактирован PT153
0
  1. Функция SquareRoot даёт такие значения. Убери её вызов и корень считай на калькуляторе Windows.
  2. Смещение у тебя такое себе. Делишь на 100, умножаешь на 22. Такое число вполне себе может не иметь точного представления в типе float, зависит от значений максимальных координат.

И хватит использовать BJDebugMsg. Используйте это, рассинхрона не будет.
function DebugMsg takes string s returns nothing
    call DisplayTimedTextToPlayer(GetLocalPlayer(), 0., 0., 5., s)
endfunction
0
15
4 года назад
0
NazarPunk:
Воот оно как, познавательно. Спс
Bergi_Bear:
Ого у тебя монитор широкий (2560 x 1080),варик весьма странно выглядит, каким то пустым
Потому что на карте ничего нет ) А так, это лучшее разрешение для работы и игр и фильмов )

PT153:
  1. Функция SquareRoot даёт такие значения. Убери её вызов и корень считай на калькуляторе Windows.
  2. Смещение у тебя такое себе. Делишь на 100, умножаешь на 22. Такое число вполне себе может не иметь точного представления в типе float, зависит от значений максимальных координат.

И хватит использовать BJDebugMsg. Используйте это, рассинхрона не будет.
function DebugMsg takes string s returns nothing
    call DisplayTimedTextToPlayer(GetLocalPlayer(), 0., 0., 5., s)
endfunction
Понимаю, спасибо.
1
16
4 года назад
Отредактирован DracoL1ch
1
показ текстов через GetLocalPlayer() не отображается в реплее или работает через раз, поэтому используй только если любишь боль. Ничего лучше bjdebug не придумали, и страшного в нём тоже ничего нет

юниты спавнятся на свободных точках, а не строго там, где ты им сказал. юзай SetUnitX/Y после создания, чтобы поставить на нужную точку
0
28
4 года назад
Отредактирован PT153
0
работает через раз
Сколько юзал, всегда работало.
DracoL1ch:
не отображается в реплее
Отображается. Вот карта. Реплей пишется для текущего хоста, а у хоста это сообщение есть, потому нет причин для отсутствия сообщения.
DracoL1ch:
страшного в нём тоже ничего нет
Ага, особенно когда эта функция используется в цикле на грани лимита потока, или несколько вызовов дебагов подряд. Крайне неразумно использовать цикл на 12 или даже 24 игрока, когда 90% тестов проводятся в синглплеере.
Загруженные файлы
0
16
4 года назад
0
а у меня есть дота и лод, где я это испытывал еще несколько лет назад, и мессаги, отправленные в общий чат через GetLocalPlayer() не отображались. потому что в реплее очень специфично определяется локал плеер. в моем случае надежность бждебага неоспорима, а про оплимит я давным давно забыл, и вам советую
0
28
4 года назад
0
В любом случае я не советовал использовать это для обычных сообщений, а только для дебага. Жду тест-карту, где данная проблема проявляется.
0
15
4 года назад
0
DracoL1ch:
показ текстов через GetLocalPlayer() не отображается в реплее или работает через раз, поэтому используй только если любишь боль. Ничего лучше bjdebug не придумали, и страшного в нём тоже ничего нет

юниты спавнятся на свободных точках, а не строго там, где ты им сказал. юзай SetUnitX/Y после создания, чтобы поставить на нужную точку
В точку, я создал их в нулевых координатах. И уже после переопределил их позиции согласно условиям и дистанция совпала. Спасибо!
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.