float scale;
prvm_eval_t *val;
entity_render_t *entrender;
- model_t *model;
+ dp_model_t *model;
matrix4x4_t tagmatrix, matrix2;
model = CL_GetModelFromEdict(ed);
else
{
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
PRVM_G_FLOAT(OFS_PARM0) = !down; // 0 is down, 1 is up
PRVM_G_FLOAT(OFS_PARM1) = key;
PRVM_G_FLOAT(OFS_PARM2) = ascii;
CSQC_BEGIN
//VectorCopy(cl.viewangles, oldangles);
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
CSQC_SetGlobals();
// clear renderable entity and light lists to prevent crashes if the
// CSQC_UpdateView function does not call R_ClearScene as it should
if (prog->funcoffsets.CSQC_ConsoleCommand)
{
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
restorevm_tempstringsbuf_cursize = vm_tempstringsbuf.cursize;
PRVM_G_INT(OFS_PARM0) = PRVM_SetTempString(cmd);
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_ConsoleCommand, "QC function CSQC_ConsoleCommand is missing");
{
t = msg_readcount;
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Parse_TempEntity, "QC function CSQC_Parse_TempEntity is missing");
r = CSQC_RETURNVAL;
if(!r)
if(prog->funcoffsets.CSQC_Parse_StuffCmd)
{
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
restorevm_tempstringsbuf_cursize = vm_tempstringsbuf.cursize;
PRVM_G_INT(OFS_PARM0) = PRVM_SetTempString(msg);
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Parse_StuffCmd, "QC function CSQC_Parse_StuffCmd is missing");
{
int restorevm_tempstringsbuf_cursize;
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
restorevm_tempstringsbuf_cursize = vm_tempstringsbuf.cursize;
PRVM_G_INT(OFS_PARM0) = PRVM_SetTempString(msg);
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Parse_Print, "QC function CSQC_Parse_Print is missing");
int restorevm_tempstringsbuf_cursize;
if(!cl.csqc_loaded)
{
- SCR_CenterPrint((char*)msg);
+ SCR_CenterPrint(msg);
return;
}
CSQC_BEGIN
if(prog->funcoffsets.CSQC_Parse_CenterPrint)
{
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
restorevm_tempstringsbuf_cursize = vm_tempstringsbuf.cursize;
PRVM_G_INT(OFS_PARM0) = PRVM_SetTempString(msg);
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Parse_CenterPrint, "QC function CSQC_Parse_CenterPrint is missing");
vm_tempstringsbuf.cursize = restorevm_tempstringsbuf_cursize;
}
else
- SCR_CenterPrint((char*)msg);
+ SCR_CenterPrint(msg);
CSQC_END
}
if(prog->funcoffsets.CSQC_Event_Sound)
{
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
PRVM_G_FLOAT(OFS_PARM0) = ent;
PRVM_G_FLOAT(OFS_PARM1) = channel;
PRVM_G_INT(OFS_PARM2) = PRVM_SetTempString(cl.sound_name[sound_num] );
if(prog->funcoffsets.CSQC_Event)
{
prog->globals.client->time = cl.time;
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[cl.playerentity];
PRVM_G_FLOAT(OFS_PARM0) = event;
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Event, "QC function CSQC_Event is missing");
r = CSQC_RETURNVAL;
ed = PRVM_ED_Alloc();
ed->fields.client->entnum = realentnum;
prog->globals.client->self = cl.csqc_server2csqcentitynumber[realentnum] = PRVM_EDICT_TO_PROG(ed);
- PRVM_G_FLOAT(OFS_PARM0) = 1;
- PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Ent_Update, "QC function CSQC_Ent_Update is missing");
}
else
{
// make sure no one gets wrong ideas
prog->globals.client->self = 0;
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Ent_Spawn, "QC function CSQC_Ent_Spawn is missing");
- cl.csqc_server2csqcentitynumber[realentnum] = PRVM_EDICT( PRVM_G_INT( OFS_RETURN ) );
+ prog->globals.client->self = cl.csqc_server2csqcentitynumber[realentnum] = PRVM_EDICT( PRVM_G_INT( OFS_RETURN ) );
}
+ PRVM_G_FLOAT(OFS_PARM0) = 1;
+ PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Ent_Update, "QC function CSQC_Ent_Update is missing");
}
else {
PRVM_G_FLOAT(OFS_PARM0) = 0;
void CL_VM_CB_BeginIncreaseEdicts(void)
{
- int i;
- prvm_edict_t *ent;
-
// links don't survive the transition, so unlink everything
- for (i = 0, ent = prog->edicts;i < prog->max_edicts;i++, ent++)
- {
- if (!ent->priv.server->free)
- World_UnlinkEdict(prog->edicts + i);
- memset(&ent->priv.server->areagrid, 0, sizeof(ent->priv.server->areagrid));
- }
- World_Clear(&cl.world);
+ World_UnlinkAll(&cl.world);
}
void CL_VM_CB_EndIncreaseEdicts(void)
// set time
prog->globals.client->time = cl.time;
+ prog->globals.client->self = 0;
- prog->globals.client->mapname = PRVM_SetEngineString(cl.worldmodel->name);
+ prog->globals.client->mapname = cl.worldmodel ? PRVM_SetEngineString(cl.worldmodel->name) : PRVM_SetEngineString("");
prog->globals.client->player_localentnum = cl.playerentity;
// set map description (use world entity 0)
val = PRVM_EDICTFIELDVALUE(prog->edicts, prog->fieldoffsets.message);
if(val)
val->string = PRVM_SetEngineString(cl.levelname);
+ VectorCopy(cl.world.mins, prog->edicts->fields.client->mins);
+ VectorCopy(cl.world.maxs, prog->edicts->fields.client->maxs);
// call the prog init
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Init, "QC function CSQC_Init is missing");
return;
CSQC_BEGIN
prog->globals.client->time = cl.time;
+ prog->globals.client->self = 0;
if (prog->funcoffsets.CSQC_Shutdown)
PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Shutdown, "QC function CSQC_Shutdown is missing");
PRVM_ResetProg();