prog->max_edicts = min(prog->max_edicts,prog->limit_edicts);
// edictprivate_size has to be min as big prvm_edict_private_t
- prog->edictprivate_size = max(prog->edictprivate_size,sizeof(prvm_edict_private_t));
+ prog->edictprivate_size = max(prog->edictprivate_size,(int)sizeof(prvm_edict_private_t));
// alloc edicts
prog->edicts = Mem_Alloc(prog->edicts_mempool,prog->limit_edicts * sizeof(prvm_edict_t));
// the client qc dont need maxclients
// thus it doesnt need to use svs.maxclients
- // AK: changed i=svs.maxclients+1
- for (i = 0;i < prog->num_edicts;i++)
+ // AK: changed i=svs.maxclients+1
+ // AK: changed so the edict 0 wont spawned -> used as reserved/world entity
+ // although the menu/client has no world
+ for (i = 1;i < prog->num_edicts;i++)
{
e = PRVM_EDICT_NUM(i);
// the first couple seconds of server time can involve a lot of
char *s;
ddef_t *def;
mfunction_t *f;
-
+
type &= ~DEF_SAVEGLOBAL;
-
+
switch (type)
{
case ev_string:
// Parse the string a bit to turn special characters
// (like newline, specifically) into escape codes,
// this fixes saving games from various mods
- sprintf (line, "%s", PRVM_GetString(val->string));
+ s = PRVM_GetString (val->string);
for (i = 0;i < (int)sizeof(line) - 2 && *s;)
{
if (*s == '\n')
s++;
}
line[i] = '\0';
-
break;
case ev_entity:
- sprintf (line, "%i", PRVM_NUM_FOR_EDICT(PRVM_PROG_TO_EDICT(val->edict)));
+ snprintf (line, sizeof (line), "%i", PRVM_NUM_FOR_EDICT(PRVM_PROG_TO_EDICT(val->edict)));
break;
case ev_function:
f = pr_functions + val->function;
- sprintf (line, "%s", PRVM_GetString(f->s_name));
+ snprintf (line, sizeof (line), "%s", PRVM_GetString(f->s_name));
break;
case ev_field:
def = PRVM_ED_FieldAtOfs ( val->_int );
- s = PRVM_GetString(def->s_name);
+ snprintf (line, sizeof (line), ".%s", PRVM_GetString(def->s_name));
break;
case ev_void:
- sprintf (line, "void");
+ snprintf (line, sizeof (line), "void");
break;
case ev_float:
- sprintf (line, "%f", val->_float);
+ snprintf (line, sizeof (line), "%f", val->_float);
break;
case ev_vector:
- sprintf (line, "%f %f %f", val->vector[0], val->vector[1], val->vector[2]);
+ snprintf (line, sizeof (line), "%f %f %f", val->vector[0], val->vector[1], val->vector[2]);
break;
default:
- sprintf (line, "bad type %i", type);
+ snprintf (line, sizeof (line), "bad type %i", type);
break;
}
-
+
return line;
}
prog->edictstring_mempool = t2;
prog->edicts_mempool = t3;
- PRVM_GCALL(reset_cmd);
+ PRVM_GCALL(reset_cmd)();
}
/*
if(PRVM_ED_FindGlobal("time"))
prog->flag |= PRVM_GE_TIME;
- if(PRVM_ED_FindFieldOffset ("classname"))
+ if(PRVM_ED_FindField ("chain"))
+ prog->flag |= PRVM_FE_CHAIN;
+
+ if(PRVM_ED_FindField ("classname"))
prog->flag |= PRVM_FE_CLASSNAME;
- if(PRVM_ED_FindFieldOffset ("nextthink") && PRVM_ED_FindFieldOffset("frame") && PRVM_ED_FindFieldOffset("think")
+ if(PRVM_ED_FindField ("nextthink") && PRVM_ED_FindField ("frame") && PRVM_ED_FindField ("think")
&& prog->flag & PRVM_GE_TIME && prog->self)
prog->flag |= PRVM_OP_STATE;