Please don’t get mad at me for creating a similar topic, but I had an issue with a script a while back that got solved, but I discovered another issue which I have been trying to solve for god knows how long. And I am dying to get this issue fixed, so I can move on.
Here it is:
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 -- This is where I am getting the error at :/
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)
The error is at line 53 “Attempt to index a nil value”. There is nothing nil there. I am trying to set a value that is ‘nil’ to true. The error might lie in the “ChunkExists” function, but I am not entirely sure.
This is where the error is at:
chunks[cx][cz][cy] = true -- This is where I am getting the error at >:(
I am not indexing a ‘nil’ value. chunks
which is a table and is not nil, cx, cz, cy
, are not nil either. What can I do to fix this?
For those who are wondering what I am trying to accomplish, is I created a 3D Perlin noise script a while back, and I want to use it in a game, where terrain generates based of the player’s position, while I was in the middle of writing this script I found this error, including another one (which got fixed in a different topic).