diff options
Diffstat (limited to 'src/engine/client/client.cpp')
| -rw-r--r-- | src/engine/client/client.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 1d3b7d2b..dd7e895d 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -232,6 +232,7 @@ enum }; static netaddr4 server_address; +static const char *server_spam_address=0; static int state; static int get_state() { return state; } @@ -319,6 +320,7 @@ void client::send_input() void client::disconnect() { send_error("disconnected"); + net.disconnect("disconnected"); set_state(STATE_OFFLINE); map_unload(); } @@ -462,6 +464,9 @@ void client::run(const char *direct_connect_server) // send input if(get_state() == STATE_ONLINE) { + if(server_spam_address) + disconnect(); + if(input_is_changed || time_get() > last_input+time_freq()) { send_input(); @@ -470,6 +475,9 @@ void client::run(const char *direct_connect_server) } } + if(get_state() == STATE_OFFLINE && server_spam_address) + client_connect(server_spam_address); + // update input inp_update(); @@ -500,7 +508,7 @@ void client::run(const char *direct_connect_server) break; // be nice - //thread_sleep(1); + thread_sleep(1); if(reporttime < time_get()) { @@ -844,6 +852,12 @@ int main(int argc, char **argv) i++; direct_connect_server = argv[i]; } + else if(argv[i][0] == '-' && argv[i][1] == 's' && argv[i][2] == 0 && argc - i > 1) + { + // -s SERVER:PORT + i++; + server_spam_address = argv[i]; + } else if(argv[i][0] == '-' && argv[i][1] == 'n' && argv[i][2] == 0 && argc - i > 1) { // -n NAME @@ -855,6 +869,7 @@ int main(int argc, char **argv) // -w config.fullscreen = 0; } + else if(argv[i][0] == '-' && argv[i][1] == 'e' && argv[i][2] == 0) { editor = true; |