I think the first problem can be solved by encrypting non-visible data on the server site before sending it to the client. When it become visible server just can send a key to the client.
Second problem can be solved on the server site by allowing client to disapear for the couple of seconds or possibility to ask a server to produce a large number of triangles covering player. It will makes this auto-targering much more difficult to implement.
Server can also produce more dynamic environment (moving walls, doors, elevators and so on...) plus do not give client enouth information about objects in the shadow preventing from possibility to distinguish monsters, human friends and human enemies.
I think the first problem can be solved by encrypting non-visible data on the server site before sending it to the client. When it become visible server just can send a key to the client.
Second problem can be solved on the server site by allowing client to disapear for the couple of seconds or possibility to ask a server to produce a large number of triangles covering player. It will makes this auto-targering much more difficult to implement.
Server can also produce more dynamic environment (moving walls, doors, elevators and so on...) plus do not give client enouth information about objects in the shadow preventing from possibility to distinguish monsters, human friends and human enemies.