changeset 1838:925fb6fd2fb5 draft

(svn r2343) - Fix (regression): dedicated server caused desyncs with its commands, because the player sent over the network is OWNER_SPECTATOR as well, which on clients cannot execute anything. So *hack*hack* it into temporarily player 0.
author Darkvater <Darkvater@openttd.org>
date Tue, 17 May 2005 20:52:52 +0000
parents 15dc26825b55
children 0543ca650f6c
files command.c
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/command.c
+++ b/command.c
@@ -476,10 +476,16 @@
 	}
 
 #ifdef ENABLE_NETWORK
-	// If we are in network, and the command is not from the network
-	//   send it to the command-queue and abort execution
+	/** If we are in network, and the command is not from the network
+	 * send it to the command-queue and abort execution
+	 * If we are a dedicated server temporarily switch local player, otherwise
+	 * the other parties won't be able to execute our command and will desync.
+	 * @todo Rewrite dedicated server to something more than a dirty hack!
+	 */
 	if (_networking && !(cmd & CMD_NETWORK_COMMAND)) {
+		if (_network_dedicated) _local_player = 0;
 		NetworkSend_Command(tile, p1, p2, cmd, callback);
+		if (_network_dedicated) _local_player = OWNER_SPECTATOR;
 		_docommand_recursive = 0;
 		_cmd_text = NULL;
 		return true;