Добавлен Skolz
в чём ошибка?
нужно найти ближайшего юнита к позиции даммика
нужно найти ближайшего юнита к позиции даммика
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)
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")
{
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)
}
GroupRemoveUnit(temp_group,c)
}
о самой проблеме. В самой проверке ((if (FIRST == null))в то и иначе) никакие действия не работают
и после самой проверки тоже действия не работают в плоть до закрытия цикла
текст вообще не показывает
текст вообще не показывает
и после самой проверки тоже действия не работают в плоть до закрытия цикла
текст вообще не показывает
текст вообще не показывает
Принятый ответ
расстояние до найденного ближайшего лучше не пересчитывать каждый раз, а хранить в переменной; еще можно обойтись без корня, а сравнивать сразу квадраты расстояний
возможно проблема в сравнении неинициализированной (например int i вместо int i = 1) переменной (unit FIRST == null)
вместо этого юзай boolean флаг или проверку на сохраненное расстояние до ближайшего, например что оно больше -1
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. biridius