You can try the same principle as you did with the sprite box to limit player movement. Only instead of BBoxTop, BBoxLeft etc. use coordinates of this tile edges. It will be a bit trickier though.
You can use PositionToTileX(player.x) and PositionToTileY(player.x) to get tile coordinate.
Then add event Compare Tile State to see if this tile is "unlocked" and player can move inside it.
Are you sure you want the player to move freely inside the tiles with 8-behavior?
If you only allow movement from one tile center to another (like in most grid-based games), this will be much easier to do:
Player presses Left button, you check if the sprite on the left is unlocked and use MoveTo behavior to move player sprite there.