Суть в том, что для каждого из игроков создаются стартовые юниты. После этого перебором находится ближайшая шахта и заменяется. А вот на моменте замены рудника для эльфов и нежити происходит какая-то дичь: их шахты удаляются, но новые создаются не там, где надо, а в другой точке (причем одной и той же!). Не могу понять, почему так.
Фрагмент кода
                if rnd == 3 or rnd == 4 then
                    local u = nil
                    local dist = -1
                    local x = 0
                    local y = 0
                    ForGroup(mines, function()
                        local tmp = GetEnumUnit()
                        x = GetUnitX(tmp)
                        y = GetUnitY(tmp)
                        print(x,y)
                        local dist2 = Distance(startX,startY,x,y)
                        if dist == -1 or dist2 < dist then
                            dist = dist2
                            u = tmp
                        end
                        tmp = nil
                    end)
                    GroupRemoveUnit(mines, u)
                    RemoveUnit(u)
                    if rnd == 3 then
                        CreateUnit(p, Rawcode("ugol"), x, y, 270)
                    elseif rnd == 4 then
                        CreateUnit(p, Rawcode("egol"), x, y, 270)
                    end
                end
                StartMeleeAI(p, race[rnd][6])
            end
mines - группа со всеми рудниками
rnd - номер выбранной расы (3 - нежить, 4 - эльфы)
Distance - функция DistanceBetween
Как оно выглядит в игре:

Принятый ответ

А ничего что ты координаты где собираешся создавать перезаписываеш постоянно при переборе? Вместо того чтобы взять их прямо перед удалением...
Соответственно, в x y при текущей реализации всегда будут координаты последнего рудника, а не того который был удален...
Логичней было бы не отдавать наружу из перебора координаты вобще, а использовать их только внутри перебора, а потом отдельно брать координаты рудника перед удалением в другие локалки.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
24
5 лет назад
2
А ничего что ты координаты где собираешся создавать перезаписываеш постоянно при переборе? Вместо того чтобы взять их прямо перед удалением...
Соответственно, в x y при текущей реализации всегда будут координаты последнего рудника, а не того который был удален...
Логичней было бы не отдавать наружу из перебора координаты вобще, а использовать их только внутри перебора, а потом отдельно брать координаты рудника перед удалением в другие локалки.
Принятый ответ
0
7
5 лет назад
0
prog, действительно, очередная глупая ошибка, спасибо)
0
26
5 лет назад
Отредактирован Extremator
0
Рудники эльфов не удаляются, там приказ на мгновенное оплетение
Чтобы оставить комментарий, пожалуйста, войдите на сайт.