This is never ever done in MMO's. Only one (the server) can control states.
You should try to think about clients as dummy views of the current server state.
Clients can request actions but not decide about them.
e.g.
1. the player clicks somewhere on the map.
2. the client requests a "move to" but is not changing the local player sprites position nor adding any other state
3. the server receives the "move to", stores the players requests, calculates a movement vector and updates the players state
4. on each turn the server iterates all players, gets their "states" and calculates actions: for "moveto" state calc the movement depending on dt, check if already there and reset state to "stop", check if the movement is legal (could change between turns), calculate the new position, check if overrun (its further than requested) and correct, store new position in a "send to client" queue
6. check who is in the players zone of visibility and store a "player N moved to x,y" message in queues for all such clients
5. Once the turn is done send all messages to clients
Thats a very oversimplified version!
You can check in my
Borg Server Project how this is handled, there are both diagrams and source (c#). Check the demo MoveManager in the \trunk\Source\Servers\WorldExtension\Movement (the SF source links can be found on the site).
Also it is common that the client tries to help the server by calculating as many things as possible on the client. e.g.
1. player clicks somewhere
2. client calculates path finding, notifies the player that the destination is not reachable without ever sending a request to the server
...or if reachable splits the path into nav points and sends a "moveto" request only for the first nav point, once reached path finding is recalculated (maybe something has changed and blocking the way) etc.
3. still the server receives requests and calculates movements while checking for invalid conditions
This is a very huge topic and MMO's (if done right) are absolute the toughest beasts to program one can only imagine :-)
HTH