dpvsnprintf(msg,sizeof(msg),fmt,argptr);
va_end(argptr);
- Con_Warn(msg);
+ Con_Printf(CON_WARN "%s", msg);
// TODO: either add a cvar/cmd to control the state dumping or replace some of the calls with Con_Printf [9/13/2006 Black]
- if(prvm_backtraceforwarnings.integer && recursive != realtime) // NOTE: this compares to the time, just in case if PRVM_PrintState causes a Host_Error and keeps recursive set
+ if(prvm_backtraceforwarnings.integer && recursive != host.realtime) // NOTE: this compares to the time, just in case if PRVM_PrintState causes a Host_Error and keeps recursive set
{
- recursive = realtime;
+ recursive = host.realtime;
PRVM_PrintState(prog, 0);
recursive = -1;
}
return;
}
- nolerp = (model->type == mod_sprite) ? !r_lerpsprites.integer : !r_lerpmodels.integer;
+ nolerp = ((model->type == mod_sprite) ? !r_lerpsprites.integer : !r_lerpmodels.integer) || (model->nolerp == true);
numframes = model->numframes;
for (k = 0, g = framegroupblend;k < MAX_FRAMEGROUPBLENDS;k++, g++)
{
// kind of helper function
static qboolean checkextension(prvm_prog_t *prog, const char *name)
{
- int len;
- const char *e, *start;
- len = (int)strlen(name);
+ const char **e;
for (e = prog->extensionstring;*e;e++)
{
- while (*e == ' ')
- e++;
- if (!*e)
- break;
- start = e;
- while (*e && *e != ' ')
- e++;
- if ((e - start) == len && !strncasecmp(start, name, len))
+ if(!strcasecmp(*e, name))
{
#ifdef USEODE
// special sheck for ODE
char string[VM_STRINGTEMP_LENGTH];
VM_VarString(prog, 0, string, sizeof(string));
- Con_Errorf("======%s ERROR in %s:\n%s\n", prog->name, PRVM_GetString(prog, prog->xfunction->s_name), string);
+ Con_Printf(CON_ERROR "======%s ERROR in %s:\n%s\n", prog->name, PRVM_GetString(prog, prog->xfunction->s_name), string);
ed = PRVM_PROG_TO_EDICT(PRVM_allglobaledict(self));
PRVM_ED_Print(prog, ed, NULL);
char string[VM_STRINGTEMP_LENGTH];
VM_VarString(prog, 0, string, sizeof(string));
- Con_Errorf("======OBJECT ERROR======\n"); // , prog->name, PRVM_GetString(prog->xfunction->s_name), string); // or include them? FIXME
+ Con_Printf(CON_ERROR "======OBJECT ERROR======\n"); // , prog->name, PRVM_GetString(prog->xfunction->s_name), string); // or include them? FIXME
ed = PRVM_PROG_TO_EDICT(PRVM_allglobaledict(self));
PRVM_ED_Print(prog, ed, NULL);
PRVM_ED_Free (prog, ed);
- Con_Errorf("%s OBJECT ERROR in %s:\n%s\nTip: read above for entity information\n", prog->name, PRVM_GetString(prog, prog->xfunction->s_name), string);
+ Con_Printf(CON_ERROR "%s OBJECT ERROR in %s:\n%s\nTip: read above for entity information\n", prog->name, PRVM_GetString(prog, prog->xfunction->s_name), string);
}
/*
void VM_localcmd_client(prvm_prog_t *prog)
{
char string[VM_STRINGTEMP_LENGTH];
- VM_SAFEPARMCOUNTRANGE(1, 8, VM_localcmd);
+ VM_SAFEPARMCOUNTRANGE(1, 8, VM_localcmd_client);
VM_VarString(prog, 0, string, sizeof(string));
Cbuf_AddText(&cmd_client, string);
}
void VM_localcmd_server(prvm_prog_t *prog)
{
char string[VM_STRINGTEMP_LENGTH];
- VM_SAFEPARMCOUNTRANGE(1, 8, VM_localcmd);
+ VM_SAFEPARMCOUNTRANGE(1, 8, VM_localcmd_server);
VM_VarString(prog, 0, string, sizeof(string));
Cbuf_AddText(&cmd_server, string);
}
cvar_t *cvar;
int ret;
- VM_SAFEPARMCOUNTRANGE(1,8,VM_cvar);
+ VM_SAFEPARMCOUNTRANGE(1, 8, VM_cvar_type);
VM_VarString(prog, 0, string, sizeof(string));
VM_CheckEmptyString(prog, string);
cvar = Cvar_FindVar(prog->console_cmd->cvars, string, prog->console_cmd->cvars_flagsmask);
{
int e;
int f;
- float s;
+ prvm_vec_t s;
prvm_edict_t *ed;
VM_SAFEPARMCOUNT(3,VM_findfloat);
{
int i;
int f;
- float s;
+ prvm_vec_t s;
prvm_edict_t *ent, *chain;
int chainfield;
char string[VM_STRINGTEMP_LENGTH];
int search_len, replace_len, subject_len;
- VM_SAFEPARMCOUNT(3,VM_strreplace);
+ VM_SAFEPARMCOUNT(3, VM_strireplace);
search = PRVM_G_STRING(OFS_PARM0);
replace = PRVM_G_STRING(OFS_PARM1);
{
const char *p;
- VM_SAFEPARMCOUNT(1,VM_tokenize);
+ VM_SAFEPARMCOUNT(1, VM_tokenize_console);
strlcpy(tokenize_string, PRVM_G_STRING(OFS_PARM0), sizeof(tokenize_string));
p = tokenize_string;
*/
void VM_isserver(prvm_prog_t *prog)
{
- VM_SAFEPARMCOUNT(0,VM_serverstate);
+ VM_SAFEPARMCOUNT(0, VM_isserver);
PRVM_G_FLOAT(OFS_RETURN) = sv.active;
}
if(prog->argc == 0)
{
- PRVM_G_FLOAT(OFS_RETURN) = (prvm_vec_t) realtime;
+ PRVM_G_FLOAT(OFS_RETURN) = (prvm_vec_t) host.realtime;
}
else
{
switch(timer_index)
{
case 0: // GETTIME_FRAMESTART
- PRVM_G_FLOAT(OFS_RETURN) = realtime;
+ PRVM_G_FLOAT(OFS_RETURN) = host.realtime;
break;
case 1: // GETTIME_REALTIME
PRVM_G_FLOAT(OFS_RETURN) = Sys_DirtyTime();
break;
case 2: // GETTIME_HIRES
- PRVM_G_FLOAT(OFS_RETURN) = (Sys_DirtyTime() - host_dirtytime);
+ PRVM_G_FLOAT(OFS_RETURN) = (Sys_DirtyTime() - host.dirtytime);
break;
case 3: // GETTIME_UPTIME
- PRVM_G_FLOAT(OFS_RETURN) = realtime;
+ PRVM_G_FLOAT(OFS_RETURN) = host.realtime;
break;
case 4: // GETTIME_CDTRACK
PRVM_G_FLOAT(OFS_RETURN) = CDAudio_GetPosition();
break;
default:
VM_Warning(prog, "VM_gettime: %s: unsupported timer specified, returning realtime\n", prog->name);
- PRVM_G_FLOAT(OFS_RETURN) = realtime;
+ PRVM_G_FLOAT(OFS_RETURN) = host.realtime;
break;
}
}
*/
void VM_loadfromdata(prvm_prog_t *prog)
{
- VM_SAFEPARMCOUNT(1,VM_loadentsfromfile);
+ VM_SAFEPARMCOUNT(1, VM_loadfromdata);
PRVM_ED_LoadFromFile(prog, PRVM_G_STRING(OFS_PARM0));
}
void VM_modulo(prvm_prog_t *prog)
{
prvm_int_t val, m;
- VM_SAFEPARMCOUNT(2,VM_module);
+ VM_SAFEPARMCOUNT(2, VM_modulo);
val = (prvm_int_t) PRVM_G_FLOAT(OFS_PARM0);
m = (prvm_int_t) PRVM_G_FLOAT(OFS_PARM1);
=========
VM_search_begin
-float search_begin(string pattern, float caseinsensitive, float quiet)
+float search_begin(string pattern, float caseinsensitive, float quiet[, string packfile])
=========
*/
void VM_search_begin(prvm_prog_t *prog)
{
int handle;
- const char *pattern;
+ const char *packfile = NULL, *pattern;
int caseinsens, quiet;
- VM_SAFEPARMCOUNT(3, VM_search_begin);
+ VM_SAFEPARMCOUNTRANGE(3, 4, VM_search_begin);
pattern = PRVM_G_STRING(OFS_PARM0);
caseinsens = (int)PRVM_G_FLOAT(OFS_PARM1);
quiet = (int)PRVM_G_FLOAT(OFS_PARM2);
+ // optional packfile parameter (DP_QC_FS_SEARCH_PACKFILE)
+ if(prog->argc >= 4)
+ packfile = PRVM_G_STRING(OFS_PARM3);
+
for(handle = 0; handle < PRVM_MAX_OPENSEARCHES; handle++)
if(!prog->opensearches[handle])
break;
return;
}
- if(!(prog->opensearches[handle] = FS_Search(pattern,caseinsens, quiet)))
+ if(!(prog->opensearches[handle] = FS_Search(pattern,caseinsens, quiet, packfile)))
PRVM_G_FLOAT(OFS_RETURN) = -1;
else
{
void VM_search_getsize(prvm_prog_t *prog)
{
int handle;
- VM_SAFEPARMCOUNT(1, VM_M_search_getsize);
+ VM_SAFEPARMCOUNT(1, VM_search_getsize);
handle = (int)PRVM_G_FLOAT(OFS_PARM0);
int colors;
float sx, sy;
size_t maxlen = 0;
- VM_SAFEPARMCOUNTRANGE(2,3,VM_drawstring);
+ VM_SAFEPARMCOUNTRANGE(2, 3, VM_stringwidth);
getdrawfontscale(prog, &sx, &sy);
if(prog->argc == 3)
*/
void VM_stringtokeynum (prvm_prog_t *prog)
{
- VM_SAFEPARMCOUNT( 1, VM_keynumtostring );
+ VM_SAFEPARMCOUNT( 1, VM_stringtokeynum );
PRVM_G_FLOAT(OFS_RETURN) = Key_StringToKeynum(PRVM_G_STRING(OFS_PARM0));
}
void VM_getkeybind (prvm_prog_t *prog)
{
int bindmap;
- VM_SAFEPARMCOUNTRANGE(1, 2, VM_CL_getkeybind);
+ VM_SAFEPARMCOUNTRANGE(1, 2, VM_getkeybind);
if(prog->argc == 2)
bindmap = bound(-1, PRVM_G_FLOAT(OFS_PARM1), MAX_BINDMAPS-1);
else
void VM_setkeybind (prvm_prog_t *prog)
{
int bindmap;
- VM_SAFEPARMCOUNTRANGE(2, 3, VM_CL_setkeybind);
+ VM_SAFEPARMCOUNTRANGE(2, 3, VM_setkeybind);
if(prog->argc == 3)
bindmap = bound(-1, PRVM_G_FLOAT(OFS_PARM2), MAX_BINDMAPS-1);
else
void VM_getbindmaps (prvm_prog_t *prog)
{
int fg, bg;
- VM_SAFEPARMCOUNT(0, VM_CL_getbindmap);
+ VM_SAFEPARMCOUNT(0, VM_getbindmaps);
Key_GetBindMap(&fg, &bg);
PRVM_G_VECTOR(OFS_RETURN)[0] = fg;
PRVM_G_VECTOR(OFS_RETURN)[1] = bg;
*/
void VM_setbindmaps (prvm_prog_t *prog)
{
- VM_SAFEPARMCOUNT(1, VM_CL_setbindmap);
+ VM_SAFEPARMCOUNT(1, VM_setbindmaps);
PRVM_G_FLOAT(OFS_RETURN) = 0;
if(PRVM_G_VECTOR(OFS_PARM0)[2] == 0)
if(Key_SetBindMap((int)PRVM_G_VECTOR(OFS_PARM0)[0], (int)PRVM_G_VECTOR(OFS_PARM0)[1]))
clvideostate_t state;
clvideo_t *video;
- VM_SAFEPARMCOUNT( 2, VM_cin_netstate );
+ VM_SAFEPARMCOUNT( 2, VM_cin_setstate );
name = PRVM_G_STRING( OFS_PARM0 );
VM_CheckEmptyString(prog, name );
{
prvm_stringbuffer_t *stringbuffer;
int i;
-
+
VM_SAFEPARMCOUNTRANGE(0, 2, VM_buf_create);
-
+
// VorteX: optional parm1 (buffer format) is unfinished, to keep intact with future databuffers extension must be set to "string"
if(prog->argc >= 1 && strcmp(PRVM_G_STRING(OFS_PARM0), "string"))
{
func = PRVM_ED_FindFunction(prog, s);
if(!func)
- prog->error_cmd("VM_callfunciton: function %s not found !", s);
+ prog->error_cmd("VM_callfunction: function %s not found !", s);
else if (func->first_statement < 0)
{
// negative statements are built in functions
int attributetype;
vec3_t result;
- VM_SAFEPARMCOUNT(4, VM_getsurfacepoint);
+ VM_SAFEPARMCOUNT(4, VM_getsurfacepointattribute);
VectorClear(PRVM_G_VECTOR(OFS_RETURN));
ed = PRVM_G_EDICT(OFS_PARM0);
if (!(model = getmodel(prog, ed)) || !(surface = getsurface(model, (int)PRVM_G_FLOAT(OFS_PARM1))))
dp_model_t *model;
msurface_t *surface;
vec3_t p, out, inp;
- VM_SAFEPARMCOUNT(3, VM_te_getsurfaceclippedpoint);
+ VM_SAFEPARMCOUNT(3, VM_getsurfaceclippedpoint);
VectorClear(PRVM_G_VECTOR(OFS_RETURN));
ed = PRVM_G_EDICT(OFS_PARM0);
if (!(model = getmodel(prog, ed)) || !(surface = getsurface(model, (int)PRVM_G_FLOAT(OFS_PARM1))))
{
dp_model_t *model;
msurface_t *surface;
- VM_SAFEPARMCOUNT(2, VM_SV_getsurfacenumtriangles);
+ VM_SAFEPARMCOUNT(2, VM_getsurfacenumtriangles);
// return 0 if no such surface
if (!(model = getmodel(prog, PRVM_G_EDICT(OFS_PARM0))) || !(surface = getsurface(model, (int)PRVM_G_FLOAT(OFS_PARM1))))
{
dp_model_t *model;
msurface_t *surface;
int trinum;
- VM_SAFEPARMCOUNT(3, VM_SV_getsurfacetriangle);
+ VM_SAFEPARMCOUNT(3, VM_getsurfacetriangle);
VectorClear(PRVM_G_VECTOR(OFS_RETURN));
ed = PRVM_G_EDICT(OFS_PARM0);
if (!(model = getmodel(prog, ed)) || !(surface = getsurface(model, (int)PRVM_G_FLOAT(OFS_PARM1))))