vec3_t pos;
int channel, ent;
int sound_num;
- int volume;
+ int nvolume;
int field_mask;
float attenuation;
float speed;
channel = MSG_ReadShort(&cl_message);
if (channel & (1<<15))
- volume = MSG_ReadByte(&cl_message);
+ nvolume = MSG_ReadByte(&cl_message);
else
- volume = DEFAULT_SOUND_PACKET_VOLUME;
+ nvolume = DEFAULT_SOUND_PACKET_VOLUME;
if (channel & (1<<14))
attenuation = MSG_ReadByte(&cl_message) / 64.0;
else
attenuation = DEFAULT_SOUND_PACKET_ATTENUATION;
-
+
speed = 1.0f;
ent = (channel>>3)&1023;
field_mask = MSG_ReadByte(&cl_message);
if (field_mask & SND_VOLUME)
- volume = MSG_ReadByte(&cl_message);
+ nvolume = MSG_ReadByte(&cl_message);
else
- volume = DEFAULT_SOUND_PACKET_VOLUME;
+ nvolume = DEFAULT_SOUND_PACKET_VOLUME;
if (field_mask & SND_ATTENUATION)
attenuation = MSG_ReadByte(&cl_message) / 64.0;
MSG_ReadVector(&cl_message, pos, cls.protocol);
- if (sound_num >= MAX_SOUNDS)
+ if (sound_num < 0 || sound_num >= MAX_SOUNDS)
{
Con_Printf("CL_ParseStartSoundPacket: sound_num (%i) >= MAX_SOUNDS (%i)\n", sound_num, MAX_SOUNDS);
return;
if (ent >= cl.max_entities)
CL_ExpandEntities(ent);
- if( !CL_VM_Event_Sound(sound_num, volume / 255.0f, channel, attenuation, ent, pos, fflags, speed) )
- S_StartSound_StartPosition_Flags (ent, channel, cl.sound_precache[sound_num], pos, volume/255.0f, attenuation, 0, fflags, speed);
+ if( !CL_VM_Event_Sound(sound_num, nvolume / 255.0f, channel, attenuation, ent, pos, fflags, speed) )
+ S_StartSound_StartPosition_Flags (ent, channel, cl.sound_precache[sound_num], pos, nvolume/255.0f, attenuation, 0, fflags, speed);
}
/*
void CL_ParseEntityLump(char *entdata)
{
+ qboolean loadedsky = false;
const char *data;
char key[128], value[MAX_INPUTLINE];
FOG_clear(); // LordHavoc: no fog until set
return; // error
strlcpy (value, com_token, sizeof (value));
if (!strcmp("sky", key))
+ {
+ loadedsky = true;
R_SetSkyBox(value);
+ }
else if (!strcmp("skyname", key)) // non-standard, introduced by QuakeForge... sigh.
+ {
+ loadedsky = true;
R_SetSkyBox(value);
+ }
else if (!strcmp("qlsky", key)) // non-standard, introduced by QuakeLives (EEK)
+ {
+ loadedsky = true;
R_SetSkyBox(value);
+ }
else if (!strcmp("fog", key))
{
FOG_clear(); // so missing values get good defaults
r_refdef.fog_height_texturename[63] = 0;
}
}
+
+ if (!loadedsky && cl.worldmodel->brush.isq2bsp)
+ R_SetSkyBox("unit1_");
}
static const vec3_t defaultmins = {-4096, -4096, -4096};
// clear name of file that just finished
cls.qw_downloadname[0] = 0;
+ // skip the download fragment if playing a demo
+ if (!cls.netcon)
+ {
+ return;
+ }
+
switch (cls.qw_downloadtype)
{
case dl_single:
{
for (j = 0;j < 6;j++)
bits[j] = MSG_ReadByte(&cl_message);
- if (cl.qw_num_nails > 255)
+ if (cl.qw_num_nails >= 255)
continue;
v = cl.qw_nails[cl.qw_num_nails++];
v[0] = ( ( bits[0] + ((bits[1]&15)<<8) ) <<1) - 4096;
sound_num = (unsigned short) MSG_ReadShort(&cl_message);
else
sound_num = MSG_ReadByte(&cl_message);
+
+ if (sound_num < 0 || sound_num >= MAX_SOUNDS)
+ {
+ Con_Printf("CL_ParseStaticSound: sound_num(%i) >= MAX_SOUNDS (%i)\n", sound_num, MAX_SOUNDS);
+ return;
+ }
+
vol = MSG_ReadByte(&cl_message);
atten = MSG_ReadByte(&cl_message);
CL_FindNonSolidLocation(pos, pos, 10);
colorStart = MSG_ReadByte(&cl_message);
colorLength = MSG_ReadByte(&cl_message);
+ if (colorLength == 0)
+ colorLength = 1;
CL_ParticleExplosion2(pos, colorStart, colorLength);
tempcolor = palette_rgb[(rand()%colorLength) + colorStart];
color[0] = tempcolor[0] * (2.0f / 255.0f);
if (!cmdlogname[cmdindex])
{
// LordHavoc: fix for bizarre problem in MSVC that I do not understand (if I assign the string pointer directly it ends up storing a NULL pointer)
- temp = "<unknown>";
- cmdlogname[cmdindex] = temp;
+ const char *d = "<unknown>";
+ cmdlogname[cmdindex] = d;
}
// other commands
{
default:
{
- char description[32*64], temp[64];
+ char description[32*64], logtemp[64];
int count;
strlcpy(description, "packet dump: ", sizeof(description));
i = cmdcount - 32;
i &= 31;
while(count > 0)
{
- dpsnprintf(temp, sizeof(temp), "%3i:%s ", cmdlog[i], cmdlogname[i]);
- strlcat(description, temp, sizeof(description));
+ dpsnprintf(logtemp, sizeof(logtemp), "%3i:%s ", cmdlog[i], cmdlogname[i]);
+ strlcat(description, logtemp, sizeof(description));
count--;
i++;
i &= 31;
if (!cmdlogname[cmdindex])
{
// LordHavoc: fix for bizarre problem in MSVC that I do not understand (if I assign the string pointer directly it ends up storing a NULL pointer)
- temp = "<unknown>";
- cmdlogname[cmdindex] = temp;
+ const char *d = "<unknown>";
+ cmdlogname[cmdindex] = d;
}
// other commands
{
default:
{
- char description[32*64], temp[64];
+ char description[32*64], tempdesc[64];
int count;
strlcpy (description, "packet dump: ", sizeof(description));
i = cmdcount - 32;
i &= 31;
while(count > 0)
{
- dpsnprintf (temp, sizeof (temp), "%3i:%s ", cmdlog[i], cmdlogname[i]);
- strlcat (description, temp, sizeof (description));
+ dpsnprintf (tempdesc, sizeof (tempdesc), "%3i:%s ", cmdlog[i], cmdlogname[i]);
+ strlcat (description, tempdesc, sizeof (description));
count--;
i++;
i &= 31;
}
else
{
- int i = (unsigned short)MSG_ReadShort(&cl_message);
- char *s = MSG_ReadString(&cl_message, cl_readstring, sizeof(cl_readstring));
+ char *s;
+ i = (unsigned short)MSG_ReadShort(&cl_message);
+ s = MSG_ReadString(&cl_message, cl_readstring, sizeof(cl_readstring));
if (i < 32768)
{
if (i >= 1 && i < MAX_MODELS)