mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 09:34:19 +00:00
fixed so that the server reports gametype, progression and password protection correctly
This commit is contained in:
parent
8fa8485a3a
commit
59f0a07555
|
@ -761,7 +761,8 @@ const char *mods_net_version();
|
|||
int server_getclientinfo(int client_id, CLIENT_INFO *info);
|
||||
const char *server_clientname(int client_id);
|
||||
void server_setclientname(int client_id, const char *name);
|
||||
void server_setprogression(int v);
|
||||
|
||||
void server_setbrowseinfo(int game_type, int progression);
|
||||
|
||||
int server_tick();
|
||||
int server_tickspeed();
|
||||
|
|
|
@ -25,6 +25,9 @@ static SNAPBUILD builder;
|
|||
static int64 game_start_time;
|
||||
static int current_tick = 0;
|
||||
|
||||
static int browseinfo_gametype = -1;
|
||||
static int browseinfo_progression = -1;
|
||||
|
||||
static int64 lastheartbeat;
|
||||
static NETADDR4 master_server;
|
||||
|
||||
|
@ -176,6 +179,12 @@ void server_setclientname(int client_id, const char *name)
|
|||
strncpy(clients[client_id].name, name, MAX_NAME_LENGTH);
|
||||
}
|
||||
|
||||
void server_setbrowseinfo(int game_type, int progression)
|
||||
{
|
||||
browseinfo_gametype = game_type;
|
||||
browseinfo_progression = progression;
|
||||
}
|
||||
|
||||
int server_tick()
|
||||
{
|
||||
return current_tick;
|
||||
|
@ -534,9 +543,21 @@ static void server_send_serverinfo(NETADDR4 *addr)
|
|||
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 */
|
||||
|
||||
/* gametype */
|
||||
sprintf(buf, "%d", browseinfo_gametype);
|
||||
packer_add_string(&p, buf, 2);
|
||||
|
||||
/* flags */
|
||||
i = 0;
|
||||
if(strlen(config.password))
|
||||
i |= 1;
|
||||
sprintf(buf, "%d", i);
|
||||
packer_add_string(&p, buf, 2);
|
||||
|
||||
/* progression */
|
||||
sprintf(buf, "%d", browseinfo_progression);
|
||||
packer_add_string(&p, buf, 4);
|
||||
|
||||
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 */
|
||||
|
|
|
@ -111,8 +111,6 @@ void gameobject::post_reset()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void gameobject::on_player_info_change(class player *p)
|
||||
{
|
||||
const int team_colors[2] = {65387, 10223467};
|
||||
|
@ -165,6 +163,34 @@ void gameobject::tick()
|
|||
startround();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// update browse info
|
||||
int prog = -1;
|
||||
if(config.timelimit > 0)
|
||||
prog = max(prog, (server_tick()-round_start_tick) * 100 / (config.timelimit*server_tickspeed()*60));
|
||||
|
||||
if(config.scorelimit)
|
||||
{
|
||||
if(is_teamplay)
|
||||
{
|
||||
prog = max(prog, (teamscore[0]*100)/config.scorelimit);
|
||||
prog = max(prog, (teamscore[1]*100)/config.scorelimit);
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int i = 0; i < MAX_CLIENTS; i++)
|
||||
{
|
||||
if(players[i].client_id != -1)
|
||||
prog = max(prog, (players[i].score*100)/config.scorelimit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(warmup)
|
||||
prog = -1;
|
||||
|
||||
server_setbrowseinfo(gametype, prog);
|
||||
}
|
||||
|
||||
void gameobject::snap(int snapping_client)
|
||||
|
|
Loading…
Reference in a new issue