X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=cl_parse.c;h=271d29af0a25d22901f272fd6285ebeb854b8431;hb=0e936f973c3dcb7f74691912db3ad85e8805ccf1;hp=4f509d7cc4a4b9e015c918e98cfcd1b84b6e9e4d;hpb=5bdc0879026939f551a3ff217064732d59731be2;p=xonotic%2Fdarkplaces.git diff --git a/cl_parse.c b/cl_parse.c index 4f509d7c..271d29af 100644 --- a/cl_parse.c +++ b/cl_parse.c @@ -287,6 +287,16 @@ Con_DPrintf("CL_SignonReply: %i\n", cls.signon); MSG_WriteByte (&cls.message, clc_stringcmd); MSG_WriteString (&cls.message, va("pmodel %i\n", cl_pmodel.integer)); } + if (*cl_playermodel.string) + { + MSG_WriteByte (&cls.message, clc_stringcmd); + MSG_WriteString (&cls.message, va("playermodel %s\n", cl_playermodel.string)); + } + if (*cl_playerskin.string) + { + MSG_WriteByte (&cls.message, clc_stringcmd); + MSG_WriteString (&cls.message, va("playerskin %s\n", cl_playerskin.string)); + } MSG_WriteByte (&cls.message, clc_stringcmd); MSG_WriteString (&cls.message, va("rate %i\n", cl_rate.integer)); @@ -344,7 +354,7 @@ void CL_ParseServerInfo (void) cl.maxclients = MSG_ReadByte (); if (cl.maxclients < 1 || cl.maxclients > MAX_SCOREBOARD) { - Con_Printf("Bad maxclients (%u) from server\n", cl.maxclients); + Host_Error("Bad maxclients (%u) from server\n", cl.maxclients); return; } Mem_EmptyPool(cl_scores_mempool); @@ -364,6 +374,11 @@ void CL_ParseServerInfo (void) // check memory integrity Mem_CheckSentinelsGlobal(); + S_StopAllSounds(); + // if server is active, we already began a loading plaque + if (!sv.active) + SCR_BeginLoadingPlaque(); + // disable until we get textures for it R_ResetSkyBox(); @@ -1263,8 +1278,7 @@ void CL_ParseTempEntity(void) MSG_ReadVector(pos, cl.protocol); MSG_ReadVector(pos2, cl.protocol); MSG_ReadVector(dir, cl.protocol); - CL_BeamParticle(pos, pos2, 12, 1, 0.3, 0.1, 1, 1); - CL_BeamParticle(pos, pos2, 5, 1, 0.9, 0.3, 1, 1); + CL_BeamParticle(pos, pos2, 8, 1, 1, 1, 1, 1); break; case TE_TEI_SMOKE: @@ -1396,7 +1410,7 @@ void CL_ParseServerMessage(void) i &= 31; while(count > 0) { - snprintf (temp, sizeof (temp), "%3i:%s ", cmdlog[i], cmdlogname[i]); + dpsnprintf (temp, sizeof (temp), "%3i:%s ", cmdlog[i], cmdlogname[i]); strlcat (description, temp, sizeof (description)); count--; i++; @@ -1516,7 +1530,7 @@ void CL_ParseServerMessage(void) if (i >= 1 && i < MAX_SOUNDS) { sfx_t *sfx = S_PrecacheSound (s, true, false); - if (!sfx) + if (!sfx && snd_initialized.integer) Con_Printf("svc_precache: S_PrecacheSound(\"%s\") failed\n", s); cl.sound_precache[i] = sfx; } @@ -1597,7 +1611,9 @@ void CL_ParseServerMessage(void) case svc_signonnum: i = MSG_ReadByte (); - if (i <= cls.signon) + // LordHavoc: it's rude to kick off the client if they missed the + // reconnect somehow, so allow signon 1 even if at signon 1 + if (i <= cls.signon && i != 1) Host_Error ("Received signon %i when at %i", i, cls.signon); cls.signon = i; CL_SignonReply (); @@ -1748,3 +1764,8 @@ void CL_Parse_Init(void) Cvar_SetValue("demo_nehahra", 1); Cvar_RegisterVariable(&developer_networkentities); } + +void CL_Parse_Shutdown(void) +{ + Mem_FreePool (&cl_scores_mempool); +}