"TENEBRAE_GFX_DLIGHTS "
"TW_SV_STEPCONTROL "
"ZQ_PAUSE "
+"DP_RM_CLIPGROUP "
//"EXT_CSQC " // not ready yet
;
{
prvm_edict_t *e;
- VM_SAFEPARMCOUNT(2, VM_setorigin);
+ VM_SAFEPARMCOUNT(2, VM_SV_setorigin);
e = PRVM_G_EDICT(OFS_PARM0);
if (e == prog->edicts)
prvm_edict_t *e;
vec3_t mins, maxs;
- VM_SAFEPARMCOUNT(3, VM_setsize);
+ VM_SAFEPARMCOUNT(3, VM_SV_setsize);
e = PRVM_G_EDICT(OFS_PARM0);
if (e == prog->edicts)
dp_model_t *mod;
int i;
- VM_SAFEPARMCOUNT(2, VM_setmodel);
+ VM_SAFEPARMCOUNT(2, VM_SV_setmodel);
e = PRVM_G_EDICT(OFS_PARM0);
if (e == prog->edicts)
old = host_client;
host_client = svs.clients + entnum-1;
- Host_ClientCommands ("%s", string);
+ SV_ClientCommands ("%s", string);
host_client = old;
}
void VM_CustomStats_Clear (void)
{
- if(vm_customstats)
- {
- memset(vm_customstats, 0, sizeof(vm_customstats));
- vm_customstats_last = -1;
- }
+ memset(vm_customstats, 0, sizeof(vm_customstats));
+ vm_customstats_last = -1;
}
void VM_SV_UpdateCustomStats (client_t *client, prvm_edict_t *ent, sizebuf_t *msg, int *stats)
}
}
+extern cvar_t sv_gameplayfix_customstats;
+
// void(float index, float type, .void field) SV_AddStat = #232;
// Set up an auto-sent player stat.
// Client's get thier own fields sent to them. Index may not be less than 32.
if (i >= MAX_CL_STATS)
{
- VM_Warning(prog, "PF_SV_AddStat: index (%i) >= MAX_CL_STATS (%i), not supported by protocol, and AddStat beyond MAX_VM_STAT conflicts with engine MOVEVARS\n", i, MAX_CL_STATS, MAX_VM_STAT);
+ VM_Warning(prog, "PF_SV_AddStat: index (%i) >= MAX_CL_STATS (%i), not supported by protocol, and AddStat beyond MAX_VM_STAT (%i) conflicts with engine MOVEVARS\n", i, MAX_CL_STATS, MAX_VM_STAT);
return;
}
if (i > (MAX_CL_STATS - 4) && type == 1)
{
- VM_Warning(prog, "PF_SV_AddStat: index (%i) > (MAX_CL_STATS-4) with string type won't fit in the protocol, and AddStat beyond MAX_VM_STAT conflicts with engine MOVEVARS\n", i, MAX_CL_STATS);
+ VM_Warning(prog, "PF_SV_AddStat: index (%i) > (MAX_CL_STATS (%i) - 4) with string type won't fit in the protocol, and AddStat beyond MAX_VM_STAT conflicts with engine MOVEVARS\n", i, MAX_CL_STATS);
return;
}
// these are hazardous to override but sort of allowed if one wants to be adventurous... and enjoys warnings.
if (i < MIN_VM_STAT)
VM_Warning(prog, "PF_SV_AddStat: index (%i) < MIN_VM_STAT (%i) may conflict with engine stats - allowed, but this may break things\n", i, MIN_VM_STAT);
- else if (i >= MAX_VM_STAT)
+ else if (i >= MAX_VM_STAT && !sv_gameplayfix_customstats.integer)
VM_Warning(prog, "PF_SV_AddStat: index (%i) >= MAX_VM_STAT (%i) conflicts with engine stats - allowed, but this may break slowmo and stuff\n", i, MAX_VM_STAT);
- else if (i > (MAX_VM_STAT - 4) && type == 1)
+ else if (i > (MAX_VM_STAT - 4) && type == 1 && !sv_gameplayfix_customstats.integer)
VM_Warning(prog, "PF_SV_AddStat: index (%i) >= MAX_VM_STAT (%i) - 4 with string type won't fit within MAX_VM_STAT, thus conflicting with engine stats - allowed, but this may break slowmo and stuff\n", i, MAX_VM_STAT);
vm_customstats[i].type = type;
return;
}
memcpy(out->fields.fp, in->fields.fp, prog->entityfields * sizeof(prvm_vec_t));
+ if (VectorCompare(PRVM_serveredictvector(out, absmin), PRVM_serveredictvector(out, absmax)))
+ return;
SV_LinkEdict(out);
}
pauseValue = (int)PRVM_G_FLOAT(OFS_PARM0);
if (pauseValue != 0) { //pause the game
sv.paused = 1;
- sv.pausedstart = realtime;
+ sv.pausedstart = host.realtime;
} else { //disable pause, in case it was enabled
if (sv.paused != 0) {
sv.paused = 0;