static char vm_string_temp[VM_STRINGTEMP_BUFFERS][VM_STRINGTEMP_LENGTH];
static int vm_string_tempindex = 0;
-// qc cvar
-#define MAX_QC_CVARS 128 * PRVM_MAXPROGS
-cvar_t vm_qc_cvar[MAX_QC_CVARS];
-int vm_currentqc_cvar;
-
// qc file handling
#define MAX_VMFILES 256
#define MAX_PRVMFILES MAX_VMFILES * PRVM_MAXPROGS
s = PRVM_G_STRING(OFS_PARM0);
- if(!S_GetCached(s))
+ if(!S_GetCached(s, true))
{
Con_Printf("VM_localsound: %s : %s not cached !\n", PRVM_NAME, s);
PRVM_G_FLOAT(OFS_RETURN) = -4;
return;
}
- S_LocalSound(s);
+ S_LocalSound(s, true);
PRVM_G_FLOAT(OFS_RETURN) = 1;
}
strcpy(out, cvar_string);
- PRVM_G_INT(OFS_PARM0) = PRVM_SetString(out);
+ PRVM_G_INT(OFS_RETURN) = PRVM_SetString(out);
}
/*
=========
VM_remove
-entity remove()
+remove(entity e)
=========
*/
PRVM_G_INT(OFS_RETURN) = PRVM_G_INT(OFS_PARM0);
VM_CheckEmptyString (s);
- if(S_GetCached(s))
+ if(S_GetCached(s, true))
{
Con_Printf("VM_precache_sound: %s already cached (%s)\n", s, PRVM_NAME);
return;
}
- if(!S_PrecacheSound(s,true))
- Con_Printf("VM_prache_sound: Failed to load %s for %s\n", s, PRVM_NAME);
+ if(!S_PrecacheSound(s,true, true))
+ Con_Printf("VM_precache_sound: Failed to load %s for %s\n", s, PRVM_NAME);
}
/*
void VM_WriteAngle (void)
{
- MSG_WriteAngle (VM_WriteDest(), PRVM_G_FLOAT(OFS_PARM0));
+ MSG_WriteAngle (VM_WriteDest(), PRVM_G_FLOAT(OFS_PARM0), sv.protocol);
}
void VM_WriteCoord (void)
{
- MSG_WriteDPCoord (VM_WriteDest(), PRVM_G_FLOAT(OFS_PARM0));
+ MSG_WriteCoord (VM_WriteDest(), PRVM_G_FLOAT(OFS_PARM0), sv.protocol);
}
void VM_WriteString (void)
void VM_registercvar (void)
{
char *name, *value;
- cvar_t *variable;
- int flags;
+ int flags;
VM_SAFEPARMCOUNT(3,VM_registercvar);
return;
}
- if (vm_currentqc_cvar >= MAX_QC_CVARS)
- PRVM_ERROR ("VM_registercvar: ran out of cvar slots (%i)\n", MAX_QC_CVARS);
+ Cvar_Get(name, value, 0);
-// copy the name and value
- variable = &vm_qc_cvar[vm_currentqc_cvar++];
- variable->flags = flags;
- variable->name = Z_Malloc (strlen(name)+1);
- strcpy (variable->name, name);
- variable->string = Z_Malloc (strlen(value)+1);
- strcpy (variable->string, value);
- variable->value = atof (value);
-
- Cvar_RegisterVariable(variable);
PRVM_G_FLOAT(OFS_RETURN) = 1; // success
}
return;
}
VM_FILES[filenum] = FS_Open(va("data/%s", filename), modestring, false);
+ if (VM_FILES[filenum] == NULL && mode == 0)
+ VM_FILES[filenum] = FS_Open(va("%s", filename), modestring, false);
+
if (VM_FILES[filenum] == NULL)
PRVM_G_FLOAT(OFS_RETURN) = -1;
else
c = FS_Getc(VM_FILES[filenum]);
if (developer.integer)
Con_Printf("fgets: %s: %s\n", PRVM_NAME, string);
- if (c >= 0)
+ if (c >= 0 || end)
PRVM_G_INT(OFS_RETURN) = PRVM_SetString(string);
else
PRVM_G_INT(OFS_RETURN) = 0;
for (i = 0;i < model->data_overridetagnamesforskin[(unsigned int)tagentity->v->skin].num_overridetagnames;i++)
if (!strcmp(tagname, model->data_overridetagnamesforskin[(unsigned int)tagentity->v->skin].data_overridetagnames[i].name))
v->_float = i + 1;
+ // FIXME: use a model function to get tag info (need to handle skeletal)
if (v->_float == 0 && model->alias.aliasnum_tags)
for (i = 0;i < model->alias.aliasnum_tags;i++)
if (!strcmp(tagname, model->alias.aliasdata_tags[i].name))
}
// not conform with VM_fopen
- data = FS_LoadFile(filename, false);
+ data = FS_LoadFile(filename, tempmempool, false);
if (data == NULL)
PRVM_G_FLOAT(OFS_RETURN) = -1;
void VM_Cmd_Init(void)
{
// only init the stuff for the current prog
- VM_STRINGS_MEMPOOL = Mem_AllocPool(va("vm_stringsmempool[%s]",PRVM_NAME));
+ VM_STRINGS_MEMPOOL = Mem_AllocPool(va("vm_stringsmempool[%s]",PRVM_NAME), 0, NULL);
VM_Files_Init();
VM_Search_Init();
}