04-17-2014, 05:11 AM
@xoft
What is wrong with this code?
What is wrong with this code?
int Bookshelves = 0; cBlockArea Area; Area.Read(a_World, PosX - 2, PosX + 2, PosY, PosY + 1, PosZ - 2, PosZ + 2); static const struct { int m_BookX, m_BookY, m_BookZ; // Coords to check for bookcases int m_AirX, m_AirY, m_AirZ; // Coords to check for air; if not air, the bookcase won't be counted } CheckCoords[] = { { -2, 0, -2, -1, 0, -1 }, // Bookcase at {-2, 0, -2}, air at {-1, 0, -1} { -1, 0, -2, -1, 0, -1 }, // Bookcase at {-1, 0, -2}, air at {-1, 0, -1} { 0, 0, -2, 0, 0, -1 }, // Bookcase at {0, 0, -2}, air at {0, 0, -1} { 1, 0, -2, 1, 0, -1 }, // Bookcase at {1, 0, -2}, air at {1, 0, -1} { 2, 0, -2, 1, 0, -1 }, // Bookcase at {2, 0, -2}, air at {1, 0, -1} { 2, 0, -1, 1, 0, -1 }, // Bookcase at {2, 0, -1}, air at {1, 0, -1} { 2, 0, 0, 1, 0, 0 }, // Bookcase at {2, 0, 0}, air at {1, 0, 0} { 2, 0, 1, 1, 0, 1 }, // Bookcase at {2, 0, 1}, air at {1, 0, 1} { 2, 0, 2, 1, 0, 1 }, // Bookcase at {2, 0, 2}, air at {1, 0, 1} { 1, 0, 2, 1, 0, 1 }, // Bookcase at {1, 0, 2}, air at {1, 0, 1} { 0, 0, 2, 0, 0, 1 }, // Bookcase at {0, 0, 2}, air at {0, 0, 1} { -1, 0, 2, -1, 0, 1 }, // Bookcase at {-1, 0, 2}, air at {-1, 0, 1} { -2, 0, 2, -1, 0, 1 }, // Bookcase at {-2, 0, 2}, air at {-1, 0, 1} { -2, 0, 1, -1, 0, 1 }, // Bookcase at {-2, 0, 1}, air at {-1, 0, 1} { -2, 0, 0, -1, 0, 0 }, // Bookcase at {-2, 0, 0}, air at {-1, 0, 0} { -2, 0, -1, -1, 0, -1 }, // Bookcase at {-2, 0, -1}, air at {-1, 0, -1} { -2, 1, -2, -1, 1, -1 }, // Bookcase at {-2, 1, -2}, air at {-1, 1, -1} { -1, 1, -2, -1, 1, -1 }, // Bookcase at {-1, 1, -2}, air at {-1, 1, -1} { 0, 1, -2, 0, 1, -1 }, // Bookcase at {0, 1, -2}, air at {0, 1, -1} { 1, 1, -2, 1, 1, -1 }, // Bookcase at {1, 1, -2}, air at {1, 1, -1} { 2, 1, -2, 1, 1, -1 }, // Bookcase at {2, 1, -2}, air at {1, 1, -1} { 2, 1, -1, 1, 1, -1 }, // Bookcase at {2, 1, -1}, air at {1, 1, -1} { 2, 1, 0, 1, 1, 0 }, // Bookcase at {2, 1, 0}, air at {1, 1, 0} { 2, 1, 1, 1, 1, 1 }, // Bookcase at {2, 1, 1}, air at {1, 1, 1} { 2, 1, 2, 1, 1, 1 }, // Bookcase at {2, 1, 2}, air at {1, 1, 1} { 1, 1, 2, 1, 1, 1 }, // Bookcase at {1, 1, 2}, air at {1, 1, 1} { 0, 1, 2, 0, 1, 1 }, // Bookcase at {0, 1, 2}, air at {0, 1, 1} { -1, 1, 2, -1, 1, 1 }, // Bookcase at {-1, 1, 2}, air at {-1, 1, 1} { -2, 1, 2, -1, 1, 1 }, // Bookcase at {-2, 1, 2}, air at {-1, 1, 1} { -2, 1, 1, -1, 1, 1 }, // Bookcase at {-2, 1, 1}, air at {-1, 1, 1} { -2, 1, 0, -1, 1, 0 }, // Bookcase at {-2, 1, 0}, air at {-1, 1, 0} { -2, 1, -1, -1, 1, -1 } // Bookcase at {-2, 1, -1}, air at {-1, 1, -1} }; for (size_t i = 0; i < ARRAYCOUNT(CheckCoords); i++) { if ( (Area.GetRelBlockType(CheckCoords[i].m_AirX, CheckCoords[i].m_AirY, CheckCoords[i].m_AirZ) == E_BLOCK_AIR) && // There's air in the checkspot (Area.GetRelBlockType(CheckCoords[i].m_BookX, CheckCoords[i].m_BookY, CheckCoords[i].m_BookZ) == E_BLOCK_BOOKCASE) // There's bookcase in the wanted place ) { Bookshelves++; cRoot::Get()->BroadcastChat("Bookshelf"); } } // for i - CheckCoords