]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_main.c
fix the overflow checks :(
[xonotic/darkplaces.git] / sv_main.c
index a45dfc7a0683239f7636a304fa77da672e502127..6def900a2e31a7b7ba9d43a475865c8b48fc2dad 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -823,7 +823,7 @@ void SV_SendServerinfo (client_t *client)
 
        SZ_Clear (&client->netconnection->message);
        MSG_WriteByte (&client->netconnection->message, svc_print);
-       dpsnprintf (message, sizeof (message), "\nServer: %s build %s (progs %i crc)", gamename, buildstring, prog->filecrc);
+       dpsnprintf (message, sizeof (message), "\nServer: %s build %s (progs %i crc)\n", gamename, buildstring, prog->filecrc);
        MSG_WriteString (&client->netconnection->message,message);
 
        SV_StopDemoRecording(client); // to split up demos into different files
@@ -938,6 +938,8 @@ void SV_SendServerinfo (client_t *client)
        // clear movement info until client enters the new level properly
        memset(&client->cmd, 0, sizeof(client->cmd));
        client->movesequence = 0;
+       client->movement_highestsequence_seen = 0;
+       memset(&client->movement_count, 0, sizeof(client->movement_count));
 #ifdef NUM_PING_TIMES
        for (i = 0;i < NUM_PING_TIMES;i++)
                client->ping_times[i] = 0;
@@ -2440,8 +2442,8 @@ static void SV_Download_f(void)
        extension = FS_FileExtension(host_client->download_name);
 
        // host_client is asking to download a specified file
-       if (developer.integer >= 100)
-               Con_Printf("Download request for %s by %s\n", host_client->download_name, host_client->name);
+       if (developer_extra.integer)
+               Con_DPrintf("Download request for %s by %s\n", host_client->download_name, host_client->name);
 
        if(is_csqc)
        {
@@ -2695,19 +2697,29 @@ SV_ParticleEffectIndex
 int SV_ParticleEffectIndex(const char *name)
 {
        int i, argc, linenumber, effectnameindex;
+       int filepass;
        fs_offset_t filesize;
        unsigned char *filedata;
        const char *text, *textstart, *textend;
        char argv[16][1024];
+       char filename[MAX_QPATH];
        if (!sv.particleeffectnamesloaded)
        {
                sv.particleeffectnamesloaded = true;
                memset(sv.particleeffectname, 0, sizeof(sv.particleeffectname));
                for (i = 0;i < EFFECT_TOTAL;i++)
                        strlcpy(sv.particleeffectname[i], standardeffectnames[i], sizeof(sv.particleeffectname[i]));
-               filedata = FS_LoadFile("effectinfo.txt", tempmempool, true, &filesize);
-               if (filedata)
+               for (filepass = 0;;filepass++)
                {
+                       if (filepass == 0)
+                               dpsnprintf(filename, sizeof(filename), "effectinfo.txt");
+                       else if (filepass == 1)
+                               dpsnprintf(filename, sizeof(filename), "maps/%s_effectinfo.txt", sv.name);
+                       else
+                               break;
+                       filedata = FS_LoadFile(filename, tempmempool, true, &filesize);
+                       if (!filedata)
+                               continue;
                        textstart = (const char *)filedata;
                        textend = (const char *)filedata + filesize;
                        text = textstart;
@@ -2748,7 +2760,7 @@ int SV_ParticleEffectIndex(const char *name)
                                                // if we run out of names, abort
                                                if (effectnameindex == SV_MAX_PARTICLEEFFECTNAME)
                                                {
-                                                       Con_Printf("effectinfo.txt:%i: too many effects!\n", linenumber);
+                                                       Con_Printf("%s:%i: too many effects!\n", filename, linenumber);
                                                        break;
                                                }
                                        }
@@ -2883,31 +2895,29 @@ void SV_Prepare_CSQC(void)
        svs.csqc_progdata = NULL;
        svs.csqc_progdata_deflated = NULL;
        
-       Con_Print("Loading csprogs.dat\n");
-
        sv.csqc_progname[0] = 0;
        svs.csqc_progdata = FS_LoadFile(csqc_progname.string, sv_mempool, false, &progsize);
 
        if(progsize > 0)
        {
                size_t deflated_size;
-               
+
                sv.csqc_progsize = (int)progsize;
                sv.csqc_progcrc = CRC_Block(svs.csqc_progdata, progsize);
                strlcpy(sv.csqc_progname, csqc_progname.string, sizeof(sv.csqc_progname));
-               Con_Printf("server detected csqc progs file \"%s\" with size %i and crc %i\n", sv.csqc_progname, sv.csqc_progsize, sv.csqc_progcrc);
+               Con_DPrintf("server detected csqc progs file \"%s\" with size %i and crc %i\n", sv.csqc_progname, sv.csqc_progsize, sv.csqc_progcrc);
 
-               Con_Print("Compressing csprogs.dat\n");
+               Con_DPrint("Compressing csprogs.dat\n");
                //unsigned char *FS_Deflate(const unsigned char *data, size_t size, size_t *deflated_size, int level, mempool_t *mempool);
                svs.csqc_progdata_deflated = FS_Deflate(svs.csqc_progdata, progsize, &deflated_size, -1, sv_mempool);
                svs.csqc_progsize_deflated = (int)deflated_size;
                if(svs.csqc_progdata_deflated)
                {
-                       Con_Printf("Deflated: %g%%\n", 100.0 - 100.0 * (deflated_size / (float)progsize));
+                       Con_DPrintf("Deflated: %g%%\n", 100.0 - 100.0 * (deflated_size / (float)progsize));
                        Con_DPrintf("Uncompressed: %u\nCompressed:   %u\n", (unsigned)sv.csqc_progsize, (unsigned)svs.csqc_progsize_deflated);
                }
                else
-                       Con_Printf("Cannot compress - need zlib for this. Using uncompressed progs only.\n");
+                       Con_DPrintf("Cannot compress - need zlib for this. Using uncompressed progs only.\n");
        }
 }