if (cmd_source == src_command)
{
- if (!sv.active)
+ // if running a client, try to send over network so the client's status report parser will see the report
+ if (cls.state == ca_connected)
{
Cmd_ForwardToServer ();
return;
else
print = SV_ClientPrintf;
+ if (!sv.active)
+ return;
+
for (players = 0, j = 0;j < svs.maxclients;j++)
if (svs.clients[j].active)
players++;
}
else
hours = 0;
- print ("#%-2u %-16.16s %3i %2i:%02i:%02i\n", j+1, client->name, (int)client->edict->fields.server->frags, hours, minutes, seconds);
+ print ("#%-3u %-16.16s %3i %2i:%02i:%02i\n", j+1, client->name, (int)client->edict->fields.server->frags, hours, minutes, seconds);
print (" %s\n", client->netconnection ? client->netconnection->address : "botclient");
}
}
==================
*/
+void Host_Pings_f (void); // called by Host_Ping_f
void Host_Ping_f (void)
{
int i;
if (cmd_source == src_command)
{
- if (!sv.active)
+ // if running a client, try to send over network so the client's ping report parser will see the report
+ if (cls.state == ca_connected)
{
Cmd_ForwardToServer ();
return;
else
print = SV_ClientPrintf;
+ if (!sv.active)
+ return;
+
print("Client ping times:\n");
for (i = 0, client = svs.clients;i < svs.maxclients;i++, client++)
{
continue;
print("%4i %s\n", (int)floor(client->ping*1000+0.5), client->name);
}
+
+ // now call the Pings command also, which will send a report that contains packet loss for the scoreboard (as well as a simpler ping report)
+ Host_Pings_f();
}
/*
svs.serverflags = 0; // haven't completed an episode yet
allowcheats = sv_cheats.integer != 0;
- strcpy(level, Cmd_Argv(1));
+ strlcpy(level, Cmd_Argv(1), sizeof(level));
SV_SpawnServer(level);
if (sv.active && cls.state == ca_disconnected)
CL_EstablishConnection("local:1");
SV_SaveSpawnparms ();
SV_VM_End();
allowcheats = sv_cheats.integer != 0;
- strcpy(level, Cmd_Argv(1));
+ strlcpy(level, Cmd_Argv(1), sizeof(level));
SV_SpawnServer(level);
if (sv.active && cls.state == ca_disconnected)
CL_EstablishConnection("local:1");
key_dest = key_game;
allowcheats = sv_cheats.integer != 0;
- strcpy(mapname, sv.name);
+ strlcpy(mapname, sv.name, sizeof(mapname));
SV_SpawnServer(mapname);
if (sv.active && cls.state == ca_disconnected)
CL_EstablishConnection("local:1");
return;
}
- strcpy (filename, Cmd_Argv(1));
+ strlcpy (filename, Cmd_Argv(1), sizeof(filename));
FS_DefaultExtension (filename, ".sav", sizeof (filename));
Con_Printf("Loading game from %s...\n", filename);
// mapname
COM_ParseTokenConsole(&t);
- strcpy (mapname, com_token);
+ strlcpy (mapname, com_token, sizeof(mapname));
// time
COM_ParseTokenConsole(&t);
{
if (host_client->spawned)
SV_BroadcastPrintf("%s changed name to %s\n", host_client->old_name, host_client->name);
- strcpy(host_client->old_name, host_client->name);
+ strlcpy(host_client->old_name, host_client->name, sizeof(host_client->old_name));
// send notification to all clients
MSG_WriteByte (&sv.reliable_datagram, svc_updatename);
MSG_WriteByte (&sv.reliable_datagram, host_client - svs.clients);
PRVM_GETEDICTFIELDVALUE(host_client->edict, eval_playermodel)->string = PRVM_SetEngineString(host_client->playermodel);
if (strcmp(host_client->old_model, host_client->playermodel))
{
- strcpy(host_client->old_model, host_client->playermodel);
+ strlcpy(host_client->old_model, host_client->playermodel, sizeof(host_client->old_model));
/*// send notification to all clients
MSG_WriteByte (&sv.reliable_datagram, svc_updatepmodel);
MSG_WriteByte (&sv.reliable_datagram, host_client - svs.clients);
{
//if (host_client->spawned)
// SV_BroadcastPrintf("%s changed skin to %s\n", host_client->name, host_client->playerskin);
- strcpy(host_client->old_skin, host_client->playerskin);
+ strlcpy(host_client->old_skin, host_client->playerskin, sizeof(host_client->old_skin));
/*// send notification to all clients
MSG_WriteByte (&sv.reliable_datagram, svc_updatepskin);
MSG_WriteByte (&sv.reliable_datagram, host_client - svs.clients);