Index: src/network/network_client.cpp =================================================================== --- src/network/network_client.cpp (revision 12594) +++ src/network/network_client.cpp (working copy) @@ -521,7 +521,12 @@ if (MY_CLIENT->has_quit) return NETWORK_RECV_STATUS_MALFORMED_PACKET; case NETWORK_GAME_PASSWORD: - ShowNetworkNeedPassword(type); + if (_login_pw == NULL) { + ShowNetworkNeedPassword(type); + } else { + SEND_COMMAND(PACKET_CLIENT_PASSWORD)(type, _login_pw); + _login_pw = NULL; + } return NETWORK_RECV_STATUS_OKAY; default: return NETWORK_RECV_STATUS_MALFORMED_PACKET; Index: src/network/network_internal.h =================================================================== --- src/network/network_internal.h (revision 12594) +++ src/network/network_internal.h (working copy) @@ -192,6 +192,8 @@ VARDEF Year _network_restart_game_year; // If this year is reached, the server automaticly restarts VARDEF uint8 _network_min_players; // Minimum number of players for game to unpause +VARDEF char *_login_pw; ///< login password from -p argument + void NetworkTCPQueryServer(const char* host, unsigned short port); byte NetworkSpectatorCount(); Index: src/openttd.cpp =================================================================== --- src/openttd.cpp (revision 12594) +++ src/openttd.cpp (working copy) @@ -151,6 +151,7 @@ " -G seed = Set random seed\n" #if defined(ENABLE_NETWORK) " -n [ip:port#player] = Start networkgame\n" + " -p password = Join password\n" " -D [ip][:port] = Start dedicated server\n" " -l ip[:port] = Redirect DEBUG()\n" #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32) @@ -359,7 +360,7 @@ * a letter means: it accepts that param (e.g.: -h) * a ':' behind it means: it need a param (e.g.: -m) * a '::' behind it means: it can optional have a param (e.g.: -d) */ - optformat = "m:s:v:b:hD::n::eit:d::r:g::G:c:xl:" + optformat = "m:s:v:b:hD::n::eit:d::r:g::G:c:xl:p:" #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32) "f" #endif @@ -398,6 +399,9 @@ case 'l': debuglog_conn = mgo.opt; break; + case 'p': + _login_pw = mgo.opt; + break; #endif /* ENABLE_NETWORK */ case 'r': ParseResolution(resolution, mgo.opt); break; case 't': startyear = atoi(mgo.opt); break;