unsigned short pr_crc;
-mempool_t *progs_mempool;
-mempool_t *edictstring_mempool;
+mempool_t *serverprogs_mempool;
int type_size[8] = {1,sizeof(string_t)/4,1,3,1,1,sizeof(func_t)/4,sizeof(void *)/4};
//n = NoCrash_NUM_FOR_EDICT(PROG_TO_EDICT(val->edict));
n = val->edict;
if (n < 0 || n >= MAX_EDICTS)
- snprintf (line, sizeof (line), "entity %i (invalid!)", n);
+ dpsnprintf (line, sizeof (line), "entity %i (invalid!)", n);
else
- snprintf (line, sizeof (line), "entity %i", n);
+ dpsnprintf (line, sizeof (line), "entity %i", n);
break;
case ev_function:
f = pr_functions + val->function;
- snprintf (line, sizeof (line), "%s()", PR_GetString(f->s_name));
+ dpsnprintf (line, sizeof (line), "%s()", PR_GetString(f->s_name));
break;
case ev_field:
def = ED_FieldAtOfs ( val->_int );
- snprintf (line, sizeof (line), ".%s", PR_GetString(def->s_name));
+ dpsnprintf (line, sizeof (line), ".%s", PR_GetString(def->s_name));
break;
case ev_void:
- snprintf (line, sizeof (line), "void");
+ dpsnprintf (line, sizeof (line), "void");
break;
case ev_float:
// LordHavoc: changed from %5.1f to %10.4f
- snprintf (line, sizeof (line), "%10.4f", val->_float);
+ dpsnprintf (line, sizeof (line), "%10.4f", val->_float);
break;
case ev_vector:
// LordHavoc: changed from %5.1f to %10.4f
- snprintf (line, sizeof (line), "'%10.4f %10.4f %10.4f'", val->vector[0], val->vector[1], val->vector[2]);
+ dpsnprintf (line, sizeof (line), "'%10.4f %10.4f %10.4f'", val->vector[0], val->vector[1], val->vector[2]);
break;
case ev_pointer:
- snprintf (line, sizeof (line), "pointer");
+ dpsnprintf (line, sizeof (line), "pointer");
break;
default:
- snprintf (line, sizeof (line), "bad type %i", type);
+ dpsnprintf (line, sizeof (line), "bad type %i", type);
break;
}
line[i] = '\0';
break;
case ev_entity:
- snprintf (line, sizeof (line), "%i", NUM_FOR_EDICT(PROG_TO_EDICT(val->edict)));
+ dpsnprintf (line, sizeof (line), "%i", NUM_FOR_EDICT(PROG_TO_EDICT(val->edict)));
break;
case ev_function:
f = pr_functions + val->function;
break;
case ev_field:
def = ED_FieldAtOfs ( val->_int );
- snprintf (line, sizeof (line), ".%s", PR_GetString(def->s_name));
+ dpsnprintf (line, sizeof (line), ".%s", PR_GetString(def->s_name));
break;
case ev_void:
- snprintf (line, sizeof (line), "void");
+ dpsnprintf (line, sizeof (line), "void");
break;
case ev_float:
- snprintf (line, sizeof (line), "%f", val->_float);
+ dpsnprintf (line, sizeof (line), "%f", val->_float);
break;
case ev_vector:
- snprintf (line, sizeof (line), "%f %f %f", val->vector[0], val->vector[1], val->vector[2]);
+ dpsnprintf (line, sizeof (line), "%f %f %f", val->vector[0], val->vector[1], val->vector[2]);
break;
default:
- snprintf (line, sizeof (line), "bad type %i", type);
+ dpsnprintf (line, sizeof (line), "bad type %i", type);
break;
}
val = (void *)&pr_globals[ofs];
def = ED_GlobalAtOfs(ofs);
if (!def)
- snprintf (line, sizeof (line), "%i(?)", ofs);
+ dpsnprintf (line, sizeof (line), "%i(?)", ofs);
else
{
s = PR_ValueString (def->type, val);
- snprintf (line, sizeof (line), "%i(%s)%s", ofs, PR_GetString(def->s_name), s);
+ dpsnprintf (line, sizeof (line), "%i(%s)%s", ofs, PR_GetString(def->s_name), s);
}
i = strlen(line);
def = ED_GlobalAtOfs(ofs);
if (!def)
- snprintf (line, sizeof (line), "%i(?)", ofs);
+ dpsnprintf (line, sizeof (line), "%i(?)", ofs);
else
- snprintf (line, sizeof (line), "%i(%s)", ofs, PR_GetString(def->s_name));
+ dpsnprintf (line, sizeof (line), "%i(%s)", ofs, PR_GetString(def->s_name));
i = strlen(line);
for ( ; i<20 ; i++)
}
tempstring[0] = 0;
- snprintf (tempstring, sizeof (tempstring), "\nEDICT %i:\n", NUM_FOR_EDICT(ed));
+ dpsnprintf (tempstring, sizeof (tempstring), "\nEDICT %i:\n", NUM_FOR_EDICT(ed));
for (i=1 ; i<progs->numfielddefs ; i++)
{
d = &pr_fielddefs[i];
int i,l;
l = strlen(string) + 1;
- new = Mem_Alloc(edictstring_mempool, l);
+ new = PR_Alloc(l);
new_p = new;
for (i=0 ; i< l ; i++)
{
char temp[32];
strlcpy (temp, com_token, sizeof (temp));
- snprintf (com_token, sizeof (com_token), "0 %s 0", temp);
+ dpsnprintf (com_token, sizeof (com_token), "0 %s 0", temp);
}
if (!ED_ParseEpair(ent, key, com_token))
parsed++;
// remove things from different skill levels or deathmatch
- if (deathmatch.integer)
+ if (gamemode != GAME_TRANSFUSION) //Transfusion does this in QC
{
- if (((int)ent->v->spawnflags & SPAWNFLAG_NOT_DEATHMATCH))
+ if (deathmatch.integer)
+ {
+ if (((int)ent->v->spawnflags & SPAWNFLAG_NOT_DEATHMATCH))
+ {
+ ED_Free (ent);
+ inhibited++;
+ continue;
+ }
+ }
+ else if ((current_skill <= 0 && ((int)ent->v->spawnflags & SPAWNFLAG_NOT_EASY ))
+ || (current_skill == 1 && ((int)ent->v->spawnflags & SPAWNFLAG_NOT_MEDIUM))
+ || (current_skill >= 2 && ((int)ent->v->spawnflags & SPAWNFLAG_NOT_HARD )))
{
ED_Free (ent);
inhibited++;
continue;
}
}
- else if ((current_skill <= 0 && ((int)ent->v->spawnflags & SPAWNFLAG_NOT_EASY ))
- || (current_skill == 1 && ((int)ent->v->spawnflags & SPAWNFLAG_NOT_MEDIUM))
- || (current_skill >= 2 && ((int)ent->v->spawnflags & SPAWNFLAG_NOT_HARD )))
- {
- ED_Free (ent);
- inhibited++;
- continue;
- }
-
//
// immediately call spawn function
//
for (i=0 ; i<GEFV_CACHESIZE ; i++)
gefvCache[i].field[0] = 0;
- Mem_EmptyPool(progs_mempool);
- Mem_EmptyPool(edictstring_mempool);
+ PR_FreeAll();
- progs = (dprograms_t *)FS_LoadFile (progsname, progs_mempool, false);
+ progs = (dprograms_t *)FS_LoadFile (progsname, serverprogs_mempool, false);
if (!progs)
Host_Error ("PR_LoadProgs: couldn't load %s", progsname);
// we need to expand the fielddefs list to include all the engine fields,
// so allocate a new place for it
infielddefs = (ddef_t *)((qbyte *)progs + progs->ofs_fielddefs);
- pr_fielddefs = Mem_Alloc(progs_mempool, (progs->numfielddefs + DPFIELDS) * sizeof(ddef_t));
+ pr_fielddefs = PR_Alloc((progs->numfielddefs + DPFIELDS) * sizeof(ddef_t));
+ pr_functions = PR_Alloc(sizeof(mfunction_t) * progs->numfunctions);
pr_statements = (dstatement_t *)((qbyte *)progs + progs->ofs_statements);
pr_statements[i].c = LittleShort(pr_statements[i].c);
}
- pr_functions = Mem_Alloc(progs_mempool, sizeof(mfunction_t) * progs->numfunctions);
for (i = 0;i < progs->numfunctions;i++)
{
pr_functions[i].first_statement = LittleLong (dfunctions[i].first_statement);
strlcat (tempstring, "pointer ", sizeof (tempstring));
break;
default:
- snprintf (tempstring2, sizeof (tempstring2), "bad type %i ", d->type & ~DEF_SAVEGLOBAL);
+ dpsnprintf (tempstring2, sizeof (tempstring2), "bad type %i ", d->type & ~DEF_SAVEGLOBAL);
strlcat (tempstring, tempstring2, sizeof (tempstring));
break;
}
strcat (tempstring, name);
for (j = strlen(name);j < 25;j++)
strcat(tempstring, " ");
- snprintf (tempstring2, sizeof (tempstring2), "%5d", counts[i]);
+ dpsnprintf (tempstring2, sizeof (tempstring2), "%5d", counts[i]);
strlcat (tempstring, tempstring2, sizeof (tempstring));
strlcat (tempstring, "\n", sizeof (tempstring));
if (strlen(tempstring) >= 4096)
Cvar_RegisterVariable (&pr_boundscheck);
Cvar_RegisterVariable (&pr_traceqc);
- progs_mempool = Mem_AllocPool("progs.dat", 0, NULL);
- edictstring_mempool = Mem_AllocPool("edict strings", 0, NULL);
+ serverprogs_mempool = Mem_AllocPool("server progs", 0, NULL);
PR_Cmd_Init();
}
{
PR_Cmd_Shutdown();
- Mem_FreePool(&edictstring_mempool);
- Mem_FreePool(&progs_mempool);
+ Mem_FreePool(&serverprogs_mempool);
+}
+
+void *PR_Alloc(size_t buffersize)
+{
+ return Mem_Alloc(serverprogs_mempool, buffersize);
+}
+
+void PR_Free(void *buffer)
+{
+ Mem_Free(buffer);
+}
+
+void PR_FreeAll(void)
+{
+ progs = NULL;
+ pr_fielddefs = NULL;
+ pr_functions = NULL;
+ Mem_EmptyPool(serverprogs_mempool);
}
// LordHavoc: turned EDICT_NUM into a #define for speed reasons