From c948d25a9ac3ca6209934d1f8e2328a3e5a9592a Mon Sep 17 00:00:00 2001 From: Spoike Date: Mon, 23 Jul 2007 11:44:45 +0000 Subject: [PATCH] Tweeked stepheight a little, added 'cmd efpslist' git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2536 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/server/server.h | 1 + engine/server/sv_phys.c | 5 ++++- engine/server/sv_user.c | 48 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/engine/server/server.h b/engine/server/server.h index db5011b3a..df28dfeaa 100644 --- a/engine/server/server.h +++ b/engine/server/server.h @@ -289,6 +289,7 @@ typedef struct // reply double senttime; float ping_time; + int move_msecs; packet_entities_t entities; //must come last (mvd states are bigger) } client_frame_t; diff --git a/engine/server/sv_phys.c b/engine/server/sv_phys.c index a28c22893..c680494b2 100644 --- a/engine/server/sv_phys.c +++ b/engine/server/sv_phys.c @@ -2031,6 +2031,9 @@ void SV_SetMoveVars(void) movevars.friction = sv_friction.value; movevars.waterfriction = sv_waterfriction.value; movevars.entgravity = 1.0; - movevars.stepheight = pm_stepheight.value; + if (*pm_stepheight.string) + movevars.stepheight = pm_stepheight.value; + else + movevars.stepheight = PM_DEFAULTSTEPHEIGHT; } #endif diff --git a/engine/server/sv_user.c b/engine/server/sv_user.c index eb248aa59..9d7e19877 100644 --- a/engine/server/sv_user.c +++ b/engine/server/sv_user.c @@ -3288,6 +3288,49 @@ void Cmd_Observe_f (void) host_client->sendinfo = true; } +void Cmd_FPSList_f(void) +{ + client_t *cl; + int c; + int f; + double minf, maxf, this; + double ftime; + int frames; + + + for (c = 0; c < sv.allocated_client_slots; c++) + { + cl = &svs.clients[c]; + ftime = 0; + frames = 0; + + if (!cl->state) + continue; + + if (cl->frameunion.frames) + { + for (f = 0; f < UPDATE_BACKUP; f++) + { + if (cl->frameunion.frames[f].move_msecs >= 0) + { + this = 1000.0f/cl->frameunion.frames[f].move_msecs; + ftime += this; + if (minf < this) + minf = this; + if (maxf > this) + maxf = this; + frames++; + } + } + } + + if (frames) + Con_Printf("%s: %ffps (min%f max %f\n", cl->name, ftime/frames, minf, maxf); + else + Con_Printf("%s: no information available\n", cl->name); + } +} + void SV_EnableClientsCSQC(void) { #ifdef PEXT_CSQC @@ -3358,6 +3401,7 @@ ucmd_t ucmds[] = {"topten", Rank_ListTop10_f}, #endif + {"efpslist", Cmd_FPSList_f}, //don't conflict with the ktpro one {"god", Cmd_God_f}, {"give", Cmd_Give_f}, {"noclip", Cmd_Noclip_f}, @@ -4770,6 +4814,7 @@ void SV_ExecuteClientMessage (client_t *cl) { //split screen doesn't always have frames. cl->frameunion.frames[cl->netchan.outgoing_sequence & UPDATE_MASK].senttime = realtime; cl->frameunion.frames[cl->netchan.outgoing_sequence & UPDATE_MASK].ping_time = -1; + cl->frameunion.frames[cl->netchan.outgoing_sequence & UPDATE_MASK].move_msecs = -1; } host_client = cl; @@ -4831,6 +4876,9 @@ haveannothergo: MSG_ReadDeltaUsercmd (&oldest, &oldcmd); MSG_ReadDeltaUsercmd (&oldcmd, &newcmd); + if (cl->frameunion.frames) + cl->frameunion.frames[cl->netchan.outgoing_sequence&UPDATE_MASK].move_msecs = newcmd.msec; + if ( cl->state == cs_spawned ) { if (split == cl)