diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-10-03 21:32:02 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-10-03 21:32:02 +0000 |
| commit | a67738e9801a4485cfaf68012279cd5042dc2ab9 (patch) | |
| tree | 5a4fa1db378b9b889b73b66ff9ac974fdc141dca /src/engine/server/server.c | |
| parent | 30a7246f2fd5e2141de2c37f01b491abe374f3f9 (diff) | |
| download | zcatch-a67738e9801a4485cfaf68012279cd5042dc2ab9.tar.gz zcatch-a67738e9801a4485cfaf68012279cd5042dc2ab9.zip | |
general fixes. fixed scoreboard
Diffstat (limited to 'src/engine/server/server.c')
| -rw-r--r-- | src/engine/server/server.c | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/src/engine/server/server.c b/src/engine/server/server.c index 3bcb79dd..59074699 100644 --- a/src/engine/server/server.c +++ b/src/engine/server/server.c @@ -284,7 +284,7 @@ static void server_do_snap() int input_predtick = -1; int64 timeleft = 0; - for(k = 0; k < 200; k++) // TODO: do this better + for(k = 0; k < 200; k++) /* TODO: do this better */ { if(clients[i].inputs[k].game_tick == current_tick) { @@ -460,7 +460,6 @@ static void server_process_client_packet(NETPACKET *packet) for(i = 0; i < size/4; i++) input->data[i] = msg_unpack_int(); - //time_get() clients[cid].current_input++; clients[cid].current_input %= 200; } @@ -489,13 +488,10 @@ static void server_process_client_packet(NETPACKET *packet) static void server_send_serverinfo(NETADDR4 *addr) { NETPACKET packet; - PACKER p; - packer_reset(&p); - packer_add_raw(&p, SERVERBROWSE_INFO, sizeof(SERVERBROWSE_INFO)); - packer_add_string(&p, config.sv_name, 128); - packer_add_string(&p, config.sv_map, 32); - packer_add_int(&p, netserver_max_clients(net)); /* max_players */ + char buf[128]; + + /* count the players */ int c = 0; int i; for(i = 0; i < MAX_CLIENTS; i++) @@ -503,7 +499,27 @@ static void server_send_serverinfo(NETADDR4 *addr) if(!clients[i].state != SRVCLIENT_STATE_EMPTY) c++; } - packer_add_int(&p, c); /* num_players */ + + packer_reset(&p); + packer_add_string(&p, mods_net_version(), 32); + packer_add_string(&p, config.sv_name, 64); + packer_add_string(&p, config.sv_map, 32); + packer_add_string(&p, "0", 2); /* gametype */ + packer_add_string(&p, "0", 2); /* flags */ + packer_add_string(&p, "0", 4); /* progression */ + + sprintf(buf, "%d", c); packer_add_string(&p, buf, 3); /* num players */ + sprintf(buf, "%d", netserver_max_clients(net)); packer_add_string(&p, buf, 3); /* max players */ + + for(i = 0; i < MAX_CLIENTS; i++) + { + if(!clients[i].state != SRVCLIENT_STATE_EMPTY) + { + packer_add_string(&p, clients[i].name, 48); /* player name */ + packer_add_string(&p, "0", 6); /* score */ + } + } + packet.client_id = -1; packet.address = *addr; |