char *vm_sv_extensions =
+"DP_CON_EXPANDCVAR "
+"DP_CON_ALIASPARAMETERS "
"DP_BUTTONCHAT "
"DP_BUTTONUSE "
"DP_CL_LOADSKY "
"DP_EF_RED "
"DP_EF_STARDUST "
"DP_ENT_ALPHA "
+"DP_ENT_COLORMOD "
"DP_ENT_CUSTOMCOLORMAP "
"DP_ENT_EXTERIORMODELTOCLIENT "
"DP_ENT_GLOW "
"DP_SV_NODRAWTOCLIENT "
"DP_SV_PING "
"DP_SV_PLAYERPHYSICS "
+"DP_SV_PRECACHEANYTIME "
"DP_SV_PUNCHVECTOR "
"DP_SV_ROTATINGBMODEL "
"DP_SV_SETCOLOR "
"DP_SV_SLOWMO "
+"DP_SV_WRITEUNTERMINATEDSTRING "
"DP_TE_BLOOD "
"DP_TE_BLOODSHOWER "
"DP_TE_CUSTOMFLASH "
"TENEBRAE_GFX_DLIGHTS "
"TW_SV_STEPCONTROL "
"NEXUIZ_PLAYERMODEL "
-"NEXUIZ_PLAYERSKIN "
;
/*
VM_RETURN_EDICT(chain);
}
-// LordHavoc: search for flags in float fields
-void PF_findflags (void)
-{
- int e;
- int f;
- int s;
- prvm_edict_t *ed;
-
- e = PRVM_G_EDICTNUM(OFS_PARM0);
- f = PRVM_G_INT(OFS_PARM1);
- s = (int)PRVM_G_FLOAT(OFS_PARM2);
-
- for (e++ ; e < prog->num_edicts ; e++)
- {
- prog->xfunction->builtinsprofile++;
- ed = PRVM_EDICT_NUM(e);
- if (ed->priv.server->free)
- continue;
- if ((int)PRVM_E_FLOAT(ed,f) & s)
- {
- VM_RETURN_EDICT(ed);
- return;
- }
- }
-
- VM_RETURN_EDICT(prog->edicts);
-}
-
-// LordHavoc: chained search for flags in float fields
-void PF_findchainflags (void)
-{
- int i;
- int f;
- int s;
- prvm_edict_t *ent, *chain;
-
- chain = (prvm_edict_t *)prog->edicts;
-
- f = PRVM_G_INT(OFS_PARM0);
- s = (int)PRVM_G_FLOAT(OFS_PARM1);
-
- ent = PRVM_NEXT_EDICT(prog->edicts);
- for (i = 1;i < prog->num_edicts;i++, ent = PRVM_NEXT_EDICT(ent))
- {
- prog->xfunction->builtinsprofile++;
- if (ent->priv.server->free)
- continue;
- if (!((int)PRVM_E_FLOAT(ent,f) & s))
- continue;
-
- ent->fields.server->chain = PRVM_EDICT_TO_PROG(chain);
- chain = ent;
- }
-
- VM_RETURN_EDICT(chain);
-}
-
void PF_precache_file (void)
{ // precache_file is only used to copy files with qcc, it does nothing
PRVM_G_INT(OFS_RETURN) = PRVM_G_INT(OFS_PARM0);
style = PRVM_G_FLOAT(OFS_PARM0);
val = PRVM_G_STRING(OFS_PARM1);
+ if( (unsigned) style >= MAX_LIGHTSTYLES ) {
+ PRVM_ERROR( "PF_lightstyle: style: %i >= 64", style );
+ }
+
// change the string in sv
strlcpy(sv.lightstyles[style], val, sizeof(sv.lightstyles[style]));
ent = PRVM_PROG_TO_EDICT(prog->globals.server->msg_entity);
entnum = PRVM_NUM_FOR_EDICT(ent);
if (entnum < 1 || entnum > svs.maxclients || !svs.clients[entnum-1].active)
- Host_Error("WriteDest: tried to write to non-client\n");
- return &svs.clients[entnum-1].message;
+ {
+ Con_Printf ("WriteDest: tried to write to non-client\n");
+ return &sv.reliable_datagram;
+ }
+ else
+ return &svs.clients[entnum-1].message;
+ default:
+ Con_Printf ("WriteDest: bad destination");
case MSG_ALL:
return &sv.reliable_datagram;
case MSG_INIT:
return &sv.signon;
-
- default:
- Host_Error("WriteDest: bad destination");
- break;
}
return NULL;
MSG_WriteString (WriteDest(), PRVM_G_STRING(OFS_PARM1));
}
+void PF_WriteUnterminatedString (void)
+{
+ MSG_WriteUnterminatedString (WriteDest(), PRVM_G_STRING(OFS_PARM1));
+}
+
void PF_WriteEntity (void)
{
MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM0)[2], sv.protocol);
}
+void PF_te_flamejet (void)
+{
+ MSG_WriteByte(&sv.datagram, svc_temp_entity);
+ MSG_WriteByte(&sv.datagram, TE_FLAMEJET);
+ // org
+ MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM0)[0], sv.protocol);
+ MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM0)[1], sv.protocol);
+ MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM0)[2], sv.protocol);
+ // vel
+ MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM1)[0], sv.protocol);
+ MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM1)[1], sv.protocol);
+ MSG_WriteCoord(&sv.datagram, PRVM_G_VECTOR(OFS_PARM1)[2], sv.protocol);
+ // count
+ MSG_WriteByte(&sv.datagram, PRVM_G_FLOAT(OFS_PARM2));
+}
+
static void clippointtosurface(msurface_t *surface, vec3_t p, vec3_t out)
{
int i, j, k;
VM_search_getsize, // #446 float(float handle) search_getsize (DP_FS_SEARCH)
VM_search_getfilename, // #447 string(float handle, float num) search_getfilename (DP_FS_SEARCH)
VM_cvar_string, // #448 string(string s) cvar_string (DP_QC_CVAR_STRING)
-PF_findflags, // #449 entity(entity start, .float fld, float match) findflags (DP_QC_FINDFLAGS)
-PF_findchainflags, // #450 entity(.float fld, float match) findchainflags (DP_QC_FINDCHAINFLAGS)
+VM_findflags, // #449 entity(entity start, .float fld, float match) findflags (DP_QC_FINDFLAGS)
+VM_findchainflags, // #450 entity(.float fld, float match) findchainflags (DP_QC_FINDCHAINFLAGS)
PF_gettagindex, // #451 float(entity ent, string tagname) gettagindex (DP_QC_GETTAGINFO)
PF_gettaginfo, // #452 vector(entity ent, float tagindex) gettaginfo (DP_QC_GETTAGINFO)
PF_dropclient, // #453 void(entity clent) dropclient (DP_SV_DROPCLIENT)
PF_spawnclient, // #454 entity() spawnclient (DP_SV_BOTCLIENT)
PF_clienttype, // #455 float(entity clent) clienttype (DP_SV_BOTCLIENT)
-NULL, // #456
-NULL, // #457
+PF_WriteUnterminatedString, // #456 void(float to, string s) WriteUnterminatedString (DP_SV_WRITEUNTERMINATEDSTRING)
+PF_te_flamejet, // #457 void(vector org, vector vel, float howmany) te_flamejet = #457 (DP_TE_FLAMEJET)
NULL, // #458
NULL, // #459
e10, e10, e10, e10 // #460-499 (LordHavoc)