For some reason, my inventory system acts as if there is something in the cell that it is checking when there isn't and it is blocking the player/looting system from placing it there, and on other occasions, it acts as if there isn't an item where one is
function logic:CheckCell(pos, index)
for i, v in pairs(data.Inventory) do
if i ~= index then
if v.Position.X == pos.X or v.Position.Y == pos.Y then
return false
end
for _, v in pairs(v.OtherCells) do
if v.X == pos.X or v.Y == pos.Y then
return false
end
end
end
end
return true
end
function logic:CheckItemRoom(pos)
for i, v in pairs(data.Inventory) do
if v.Position.X == pos.X or v.Position.Y == pos.Y then
return false
end
for _, v in pairs(v.OtherCells) do
if v.X == pos.X or v.Y == pos.Y then
return false
end
end
end
return true
end
function logic:LootItem(item)
local canloot = false
print(item.Name)
local itemData = require(replicatedStorage.ItemModules:FindFirstChild(item.Name))
local posX,posY
for x = 0,9-itemData.Size.X do
for y = 0,9-itemData.Size.Y do
local blocked = false
print("Checking "..x..","..y)
for ix = x,x+itemData.Size.X do
for iy = y,y+itemData.Size.Y do
if logic:CheckItemRoom(Vector2.new(ix,iy)) then
if blocked == false then
canloot = true
end
--print(ix..","..iy.." Is Clear")
else
--print(ix..","..iy.." Is Not Clear")
canloot = false
blocked = true
end
end
end
print(blocked)
if not blocked then
break
end
end
end
if canloot then
print("Chosen "..posX..","..posY)
local othercells = {}
for x = posX,posX+(itemData.Size.X) do
for y = posY,posY+(itemData.Size.Y) do
table.insert(othercells, Vector2.new(x,y))
end
end
local specialdata = {}
if itemData.Type == "Gun" then
specialdata.Rounds = item.Rounds
end
network:send('l'..'o'..'o'..'t'..'e'..'d', input.player, input.player, item.Part)
table.insert(data.Inventory, {Name=item.Name,Position=Vector2.new(posX,posY), OtherCells=othercells, unpack(specialdata)})
hud:updateInventory(data.Inventory)
end
end
