int sound_num, field_mask, i, ent;
if (volume < 0 || volume > 255)
- Host_Error ("SV_StartSound: volume = %i", volume);
+ {
+ Con_Printf ("SV_StartSound: volume = %i", volume);
+ return;
+ }
if (attenuation < 0 || attenuation > 4)
- Host_Error ("SV_StartSound: attenuation = %f", attenuation);
+ {
+ Con_Printf ("SV_StartSound: attenuation = %f", attenuation);
+ return;
+ }
if (channel < 0 || channel > 7)
- Host_Error ("SV_StartSound: channel = %i", channel);
+ {
+ Con_Printf ("SV_StartSound: channel = %i", channel);
+ return;
+ }
if (sv.datagram.cursize > MAX_PACKETFRAGMENT-21)
return;
else
{
// call the progs to get default spawn parms for the new client
+ // set self to world to intentionally cause errors with broken SetNewParms code in some mods
+ prog->globals.server->self = 0;
PRVM_ExecuteProgram (prog->globals.server->SetNewParms, "QC function SetNewParms is missing");
for (i=0 ; i<NUM_SPAWN_PARMS ; i++)
client->spawn_parms[i] = (&prog->globals.server->parm1)[i];
//prog->num_edicts = svs.maxclients+1;
sv.state = ss_loading;
+ prog->allowworldwrites = true;
sv.paused = false;
*prog->time = sv.time = 1.0;
// all setup is completed, any further precache statements are errors
sv.state = ss_active;
+ prog->allowworldwrites = false;
// run two frames to allow everything to settle
for (i = 0;i < 2;i++)
prog->load_edict = SV_VM_CB_LoadEdict;
prog->init_cmd = VM_SV_Cmd_Init;
prog->reset_cmd = VM_SV_Cmd_Reset;
- prog->error_cmd = NULL; // change this
+ prog->error_cmd = Host_Error;
// TODO: add a requiredfuncs list (ask LH if this is necessary at all)
PRVM_LoadProgs( sv_progs.string, 0, NULL, REQFIELDS, reqfields );