radius = 10
grid = {}
while true do
for i = -radius,radius do
grid[i] = {}
-- ^ This line here!
for j = -radius,radius do
if math.sqrt(math.pow(i,2)+math.pow(j,2))<radius and (not grid[i][j] or grid[i][j] == 0) then
print("Placing..")
else
part:Destroy()
grid[i][j] = 0
end
end
end
end
Ваш код сбрасывает сетку, потому что именно это вы и говорите.Каждый раз, когда вы перебираете внешнюю таблицу, вы сбрасываете каждое из ее значений в новую (пустую) таблицу.
Я предполагаю, что вы хотите добавить новую таблицу только в том случае, если ее еще нет;это может быть достигнуто с помощью
grid[i] = grid[i] or {}
Другими словами, «установите для grid [i] значение grid [i], если оно имеет значение, или {} в противном случае».Первый ничего не делает, а второй создает новую строку, только если он еще не существует.Это довольно распространенная идиома Lua.
Следует отметить, что этот код имеет большой потенциал для оптимизации. Здесь PDF-файл, подробно описывающий наиболее распространенные способы повышения скорости кода Lua, а здесь - более удобный для начинающих список, если вы не хотите читать всю статью целиком.по теме:)