If you wish to undertake this problem yourself, you will need to use a tool with a straight edge such as a spirit level, to identify discrepancies. For cement floors, use an internal and external self leveller. Just pour it on and let it dry. ColorTile offers a range of floor levellers that you can use. For timber, sand the area and screw (instead of nailing) the moving boards, to prevent squeaking.
For tiling over timber and other substrates where cement sheeting is required, laying sheeting over your floors will help spread the load and level the space. Cement sheeting or tile underlay should be used.
Before you begin tiling, ensure the surface is clean and prepped. Any lumps under the tiles will produce a bump in the surface and cannot be sanded down once laid.