changeset 1834:cf4c15e04a89 draft

(svn r2339) - Fix: on a dedicated server, after the joining of a player, the player was set to player 0 instead of remaining OWNER_SPECTATOR. Fix this, and allow the dedicated server to execute commands (so 'patch <value>') now works and not only when a client is connected.
author Darkvater <Darkvater@openttd.org>
date Tue, 17 May 2005 18:22:59 +0000
parents 49b91393f676
children 6d9dd19450b1
files command.c network_server.c players.c
diffstat 3 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/command.c
+++ b/command.c
@@ -413,8 +413,9 @@
 	_error_message_2 = cmd >> 16;
 	_additional_cash_required = 0;
 
-	// spectator has no rights.
-	if (_current_player == OWNER_SPECTATOR) {
+	/** Spectator has no rights except for the dedicated server which
+	 * is a spectator but is the server, so can do anything */
+	if (_current_player == OWNER_SPECTATOR && !_network_dedicated) {
 		ShowErrorMessage(_error_message, _error_message_2, x, y);
 		_cmd_text = NULL;
 		return false;
--- a/network_server.c
+++ b/network_server.c
@@ -1036,12 +1036,11 @@
 			NetworkTextMessage(action, GetDrawStringPlayerColor(ci->client_playas-1), false, ci->client_name, "%s", msg);
 			if (from_index == NETWORK_SERVER_INDEX)
 				show_local = false;
-			ci_to = ci;
+			ci_to = ci_own;
 		}
 
 		/* There is no such player */
-		if (ci_to == NULL)
-			break;
+		if (ci_to == NULL) break;
 
 		// Display the message locally (so you know you have sent it)
 		if (ci != NULL && show_local) {
--- a/players.c
+++ b/players.c
@@ -674,7 +674,7 @@
 		if (p != NULL) {
 			if (_local_player == OWNER_SPECTATOR) {
 				/* Check if we do not want to be a spectator in network */
-				if (!_networking || _network_server || _network_playas != OWNER_SPECTATOR) {
+				if (!_networking ||  (_network_server && !_network_dedicated) || _network_playas != OWNER_SPECTATOR) {
 					_local_player = p->index;
 					MarkWholeScreenDirty();
 				}