(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.
This commit is contained in:
		
							
								
								
									
										10
									
								
								command.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								command.c
									
									
									
									
									
								
							@@ -476,10 +476,16 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef ENABLE_NETWORK
 | 
					#ifdef ENABLE_NETWORK
 | 
				
			||||||
	// If we are in network, and the command is not from the network
 | 
						/** If we are in network, and the command is not from the network
 | 
				
			||||||
	//   send it to the command-queue and abort execution
 | 
						 * 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 (_networking && !(cmd & CMD_NETWORK_COMMAND)) {
 | 
				
			||||||
 | 
							if (_network_dedicated) _local_player = 0;
 | 
				
			||||||
		NetworkSend_Command(tile, p1, p2, cmd, callback);
 | 
							NetworkSend_Command(tile, p1, p2, cmd, callback);
 | 
				
			||||||
 | 
							if (_network_dedicated) _local_player = OWNER_SPECTATOR;
 | 
				
			||||||
		_docommand_recursive = 0;
 | 
							_docommand_recursive = 0;
 | 
				
			||||||
		_cmd_text = NULL;
 | 
							_cmd_text = NULL;
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user