char *PF_VarString (int first)
{
int i;
- static char out[256];
+ static char out[4096]; // FIXME: buffer overflow potential
out[0] = 0;
- for (i=first ; i<pr_argc ; i++)
- {
+ for (i = first;i < pr_argc;i++)
strcat (out, G_STRING((OFS_PARM0+i*3)));
- }
return out;
}
-char *ENGINE_EXTENSIONS = "\
-DP_ENT_ALPHA \
-DP_ENT_COLORMOD \
-DP_ENT_DELTACOMPRESS \
-DP_ENT_GLOW \
-DP_ENT_SCALE \
-DP_ENT_VIEWMODEL \
-DP_GFX_FOG \
-DP_HALFLIFE_MAP \
-DP_INPUTBUTTONS \
-DP_MONSTERWALK \
-DP_MOVETYPEFOLLOW \
-DP_SOLIDCORPSE \
-DP_REGISTERCVAR \
-DP_SPRITE32 \
-DP_SV_DRAWONLYTOCLIENT \
-DP_SV_NODRAWTOCLIENT \
-DP_SV_EXTERIORMODELTOCLIENT \
-DP_SV_SETCOLOR \
-DP_SV_EFFECT \
-DP_TE_BLOOD \
-DP_TE_BLOODSHOWER \
-DP_TE_EXPLOSIONRGB \
-DP_TE_PARTICLECUBE \
-DP_TE_PARTICLERAIN \
-DP_TE_PARTICLESNOW \
-DP_TE_SPARK \
-DP_QC_CHANGEPITCH \
-DP_QC_COPYENTITY \
-DP_QC_ETOS \
-DP_QC_FINDFLOAT \
-DP_QC_FINDCHAIN \
-DP_QC_FINDCHAINFLOAT \
-DP_QC_GETLIGHT \
-DP_QC_SINCOSSQRTPOW \
-DP_QC_MINMAXBOUND \
-DP_QC_RANDOMVEC \
-DP_QC_TRACEBOX \
-DP_QC_TRACETOSS \
-DP_QUAKE2_MODEL \
-NEH_CMD_PLAY2 \
-";
+char *ENGINE_EXTENSIONS =
+"DP_ENT_ALPHA "
+"DP_ENT_CUSTOMCOLORMAP "
+"DP_ENT_EXTERIORMODELTOCLIENT "
+"DP_ENT_LOWPRECISION "
+"DP_ENT_GLOW "
+"DP_ENT_SCALE "
+"DP_ENT_VIEWMODEL "
+"DP_GFX_FOG "
+"DP_HALFLIFE_MAP "
+"DP_INPUTBUTTONS "
+"DP_MONSTERWALK "
+"DP_MOVETYPEFOLLOW "
+"DP_QC_CHANGEPITCH "
+"DP_QC_COPYENTITY "
+"DP_QC_ETOS "
+"DP_QC_FINDCHAIN "
+"DP_QC_FINDCHAINFLOAT "
+"DP_QC_FINDFLOAT "
+"DP_QC_GETLIGHT "
+"DP_QC_MINMAXBOUND "
+"DP_QC_RANDOMVEC "
+"DP_QC_SINCOSSQRTPOW "
+"DP_QC_TRACEBOX "
+"DP_QC_TRACETOSS "
+"DP_QC_VECTORVECTORS "
+"DP_QUAKE2_MODEL "
+"DP_REGISTERCVAR "
+"DP_SOLIDCORPSE "
+"DP_SPRITE32 "
+"DP_SV_DRAWONLYTOCLIENT "
+"DP_SV_EFFECT "
+"DP_SV_EXTERIORMODELTOCLIENT "
+"DP_SV_NODRAWTOCLIENT "
+"DP_SV_PLAYERPHYSICS "
+"DP_SV_SETCOLOR "
+"DP_SV_SLOWMO "
+"DP_TE_BLOOD "
+"DP_TE_BLOODSHOWER "
+"DP_TE_EXPLOSIONRGB "
+"DP_TE_PARTICLECUBE "
+"DP_TE_PARTICLERAIN "
+"DP_TE_PARTICLESNOW "
+"DP_TE_SPARK "
+"NEH_CMD_PLAY2 "
+"NEH_RESTOREGAME "
+"TW_SV_STEPCONTROL "
+;
qboolean checkextension(char *name)
{
ed = PROG_TO_EDICT(pr_global_struct->self);
ED_Print (ed);
ED_Free (ed);
-
-// LordHavoc: bug fix - no longer kills server
-// Host_Error ("Program error");
}
-
/*
==============
PF_makevectors
void SetMinMaxSize (edict_t *e, float *min, float *max, qboolean rotate)
{
- /*
- float *angles;
- vec3_t rmin, rmax;
- float bounds[2][3];
- float xvector[2], yvector[2];
- float a;
- vec3_t base, transformed;
- int i, j, k, l;
- */
int i;
for (i=0 ; i<3 ; i++)
if (min[i] > max[i])
PR_RunError ("backwards mins/maxs");
- /*
- rotate = false; // FIXME: implement rotation properly again
-
- if (!rotate)
- {
- VectorCopy (min, rmin);
- VectorCopy (max, rmax);
- }
- else
- {
- // find min / max for rotations
- angles = e->v.angles;
-
- a = angles[1]/180 * M_PI;
-
- xvector[0] = cos(a);
- xvector[1] = sin(a);
- yvector[0] = -sin(a);
- yvector[1] = cos(a);
-
- VectorCopy (min, bounds[0]);
- VectorCopy (max, bounds[1]);
-
- rmin[0] = rmin[1] = rmin[2] = 9999;
- rmax[0] = rmax[1] = rmax[2] = -9999;
-
- for (i=0 ; i<= 1 ; i++)
- {
- base[0] = bounds[i][0];
- for (j=0 ; j<= 1 ; j++)
- {
- base[1] = bounds[j][1];
- for (k=0 ; k<= 1 ; k++)
- {
- base[2] = bounds[k][2];
-
- // transform the point
- transformed[0] = xvector[0]*base[0] + yvector[0]*base[1];
- transformed[1] = xvector[1]*base[0] + yvector[1]*base[1];
- transformed[2] = base[2];
-
- for (l=0 ; l<3 ; l++)
- {
- if (transformed[l] < rmin[l])
- rmin[l] = transformed[l];
- if (transformed[l] > rmax[l])
- rmax[l] = transformed[l];
- }
- }
- }
- }
- }
-
-// set derived values
- VectorCopy (rmin, e->v.mins);
- VectorCopy (rmax, e->v.maxs);
- VectorSubtract (max, min, e->v.size);
- */
-
// set derived values
VectorCopy (min, e->v.mins);
VectorCopy (max, e->v.maxs);
e->v.model = m - pr_strings;
- e->v.modelindex = i; //SV_ModelIndex (m);
+ e->v.modelindex = i;
- mod = sv.models[ (int)e->v.modelindex]; // Mod_ForName (m, true);
+ mod = sv.models[ (int)e->v.modelindex];
if (mod)
- /*
- { // LordHavoc: corrected model bounding box, but for compatibility that means I have to break it here
- vec3_t min, max;
- if (mod->type == ALIASTYPE_MDL)
- {
- min[0] = min[1] = min[2] = -16;
- max[0] = max[1] = max[2] = 16;
- SetMinMaxSize (e, min, max, true);
- }
- else
- SetMinMaxSize (e, mod->mins, mod->maxs, true);
- }
- */
SetMinMaxSize (e, mod->normalmins, mod->normalmaxs, true);
else
SetMinMaxSize (e, vec3_origin, vec3_origin, true);
*/
void PF_break (void)
{
-// Con_Printf ("break statement\n");
-// *(int *)-4 = 0; // dump to debugger
PR_RunError ("break statement");
}
v = G_FLOAT(OFS_PARM0);
s = PR_GetTempString();
- /*
- if (v == (int)v)
- sprintf (s, "%d",(int)v);
- else
- sprintf (s, "%5.1f",v);
- */
// LordHavoc: ftos improvement
sprintf (s, "%g", v);
G_INT(OFS_RETURN) = s - pr_strings;
*/
void PF_pointcontents (void)
{
- G_FLOAT(OFS_RETURN) = SV_PointContents (G_VECTOR(OFS_PARM0));
+ G_FLOAT(OFS_RETURN) = Mod_PointInLeaf(G_VECTOR(OFS_PARM0), sv.worldmodel)->contents;
}
/*
void PF_registercvar (void)
{
- char *name, *value;
- cvar_t *variable;
+ char *name, *value;
+ cvar_t *variable;
name = G_STRING(OFS_PARM0);
value = G_STRING(OFS_PARM1);
G_FLOAT(OFS_RETURN) = 0;
strcpy (variable->string, value);
variable->value = atof (value);
-// link the variable in
- variable->next = cvar_vars;
- cvar_vars = variable;
+ Cvar_RegisterVariable(variable);
G_FLOAT(OFS_RETURN) = 1; // success
}
builtin_t *pr_builtins = pr_builtin;
int pr_numbuiltins = sizeof(pr_builtin)/sizeof(pr_builtin[0]);
+