I have a 3D Perlin noise generator, and I decided to make a script that will generate 3D perlin noise around the player based of where they walk. But I encountered an error that I can't fix. At line 53 it errors, And tells me "Attempt to index a nil value". Here is the script:
local chunks = {}
local function chunkExists(chunkX, chunkZ, chunkY) -- Check's if a chunk exists
spawn(function()
local isNil = false
-- if not chunks[chunkX] then
-- chunks[chunkX] = {}
-- end
if not chunks[chunkX] then
chunks[chunkX] = {}
-- return false
end
if not chunks[chunkX][chunkZ] then
chunks[chunkX][chunkZ] = {}
-- return false
end
if not chunks[chunkX][chunkZ][chunkY] then
chunks[chunkX][chunkZ][chunkY] = {}
--return false
end
-- if isNil == false then
return chunks[chunkX][chunkZ][chunkY]
-- end
end)
end
local function roundTo(number, roundToNumber) -- Give it a value and it'll round it to the target's multiple, e.g 12 goes to 8, 17 goes to 16.
return number - (number % roundToNumber)
end
local function CheckPos(X, Z, Y)
spawn(function() -- We use spawn function because if we don't then every time this function is called then the (all) the client(s) that are running the game will freeze
local RoundedX = roundTo(X, 32)
local RoundedZ = roundTo(Z, 32)
local RoundedY = roundTo(Y, 32)
--print(" X: "..RoundedX.." Z: "..RoundedZ.." Y: "..RoundedY)
--print(RoundedZ)
--print(RoundedY)
for x = -32, 32 do
for z = -32, 32 do
for y = -32, 32 do
local cx = RoundedX + x
local cz = RoundedZ + z
local cy = RoundedY + y
if not chunkExists(cx, cz, cy) == true then
--print("x: "..cx.." z: "..cz.." y: "..cy)
chunks[cx][cz][cy] = true
end
end
end
end
end)
end
spawn(function()
while true do
wait(1)
--print("hh")
for i, v in pairs(game:GetService("Players"):GetChildren()) do
local C = nil
local HRP = nil
pcall(function()
if v.Character then
C = v.Character
else
C = nil
end
end)
if C ~= nil then
pcall(function()
if C:FindFirstChild("HumanoidRootPart") then
HRP = C:FindFirstChild("HumanoidRootPart")
else
HRP = nil
end
end)
end
if HRP ~= nil then
CheckPos(HRP.Position.X, HRP.Position.Z, HRP.Position.Y)
end
end
end
end)
