Добавлен
в чём ошибка?
нужно найти ближайшего юнита к позиции даммика
real x = GetUnitX(d)
real y = GetUnitY(d)
if (time < 1) && GetWidgetLife(d) > 0.405
{
time = time + 0.03
GroupEnumUnitsInRange(temp_group,x,y,75,null)
loop
{
c = FirstOfGroup(temp_group)
exitwhen (c == null)
if GetWidgetLife(c) > 0.405 && IsUnitEnemy(c,GetOwningPlayer(d))
{
if (FIRST == null)
{
FIRST = c
BJDebugMsg("123")
else
x0 = GetUnitX(c)
y0 = GetUnitY(c)
x1 = GetUnitX(FIRST)
y1 = GetUnitY(FIRST)
x3=(x0-x)*(x0-x)
x4=(y0-y)*(y0-y)
y3=(x1-x)*(x1-x)
y4=(y1-y)*(y1-y)
if (SquareRoot(x3+x4)<SquareRoot(y3+y4))
{
FIRST = c
BJDebugMsg("321")
}
BJDebugMsg("321")
}
RemoveUnit(d)
BJDebugMsg("123")
}
GroupRemoveUnit(temp_group,c)
}
о самой проблеме. В самой проверке ((if (FIRST == null))в то и иначе) никакие действия не работают
и после самой проверки тоже действия не работают в плоть до закрытия цикла
текст вообще не показывает
текст вообще не показывает

расстояние до найденного ближайшего лучше не пересчитывать каждый раз, а хранить в переменной; еще можно обойтись без корня, а сравнивать сразу квадраты расстояний
возможно проблема в сравнении неинициализированной (например int i вместо int i = 1) переменной (unit FIRST == null)
вместо этого юзай boolean флаг или проверку на сохраненное расстояние до ближайшего, например что оно больше -1
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Чтобы было норм читать, надо хотя бы выделять содержимое каждого блока (типа function/endfunction, if/endif, loop/endloop) табуляцией. Если блок внутри блока, то двойная табуляция, и т. д.
В vJASS и cJASS не стоит использовать одновременно C-подобный и Turing-подобный (стандартный JASS) синтаксис.
А если ты неправильно поставишь пробелы, запятые или кавычки, тебе об этом скажет парсер =)
ответ
Во-первых, что есть "локальный таймер" ? Это таймер записанный в локальную переменную?
Во-вторых, зачем тебе точка, если ты используешь XY ? Работай с ними
В-третьих, да. Использование в течении всей игры одной заранее созданной точки вызывает меньше нагрузки чем постоянно создание и удаление новых (кто-то там доказывал на примере и цифрами что от ремувнутых точке всё равно остаётся шлак в памяти...)
ответ
Там до +50 не хватает скобки
ответ
Skolz:
дайте мне уж чёткий ответ. То что я устанавливаю z1 = 0 каждые 0.03 сек это плохо или норм?
внизу идёт цикл z1 от 1 до z (по гуишному)
Ладно, ничего в этом страшного нет, если оно работает.
Так что всё в порядке, если тебя это успокоит.

22
расстояние до найденного ближайшего лучше не пересчитывать каждый раз, а хранить в переменной; еще можно обойтись без корня, а сравнивать сразу квадраты расстояний
возможно проблема в сравнении неинициализированной (например int i вместо int i = 1) переменной (unit FIRST == null)
вместо этого юзай boolean флаг или проверку на сохраненное расстояние до ближайшего, например что оно больше -1
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.