Fix up internal client/spec counters so servers don't incorrectly enter idle modes.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6276 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2022-06-26 08:08:36 +00:00
parent d3276ec658
commit dae4ad6ed6

View file

@ -5559,13 +5559,14 @@ void Cmd_Join_f (void)
if (!host_client->spectator) if (!host_client->spectator)
continue; continue;
SV_DespawnClient(host_client);
SV_SetUpClientEdict (host_client, host_client->edict);
// turn the spectator into a player // turn the spectator into a player
host_client->spectator = false; host_client->spectator = false;
InfoBuf_RemoveKey (&host_client->userinfo, "*spectator"); InfoBuf_RemoveKey (&host_client->userinfo, "*spectator");
if (!host_client->spawned)
continue;
//need to respawn them now.
SV_DespawnClient(host_client);
SV_SetUpClientEdict (host_client, host_client->edict);
// FIXME, bump the client's userid? // FIXME, bump the client's userid?
@ -5596,6 +5597,7 @@ void Cmd_Join_f (void)
pr_global_struct->self = EDICT_TO_PROG(svprogfuncs, sv_player); pr_global_struct->self = EDICT_TO_PROG(svprogfuncs, sv_player);
PR_ExecuteProgram (svprogfuncs, pr_global_struct->PutClientInServer); PR_ExecuteProgram (svprogfuncs, pr_global_struct->PutClientInServer);
} }
host_client->spawned = true;
sv.spawned_client_slots++; sv.spawned_client_slots++;
// send notification to all clients // send notification to all clients
@ -5683,14 +5685,14 @@ void Cmd_Observe_f (void)
if (host_client->spectator) if (host_client->spectator)
continue; continue;
SV_DespawnClient(host_client);
SV_SetUpClientEdict (host_client, host_client->edict);
// turn the player into a spectator // turn the player into a spectator
host_client->spectator = true; host_client->spectator = true;
InfoBuf_SetValueForStarKey (&host_client->userinfo, "*spectator", "1"); InfoBuf_SetValueForStarKey (&host_client->userinfo, "*spectator", "1");
if (!host_client->spawned)
continue;
//need to respawn them now.
SV_DespawnClient(host_client);
SV_SetUpClientEdict (host_client, host_client->edict);
// FIXME, bump the client's userid? // FIXME, bump the client's userid?
@ -5726,6 +5728,7 @@ void Cmd_Observe_f (void)
sv_player->v->modelindex = 0; sv_player->v->modelindex = 0;
} }
} }
host_client->spawned = true;
sv.spawned_observer_slots++; sv.spawned_observer_slots++;
// send notification to all clients // send notification to all clients