prvm_prog_t *prog = CLVM_prog;
if(!cl.csqc_loaded)
return;
- CSQC_BEGIN
- VM_ClearTraceGlobals(prog);
- PRVM_clientglobalfloat(trace_networkentity) = 0;
- CSQC_END
+CSQC_BEGIN
+ VM_ClearTraceGlobals(prog);
+ PRVM_clientglobalfloat(trace_networkentity) = 0;
+CSQC_END
}
//[515]: these are required funcs
prvm_prog_t *prog = CLVM_prog;
CSQC_BEGIN
PRVM_clientglobalfloat(time) = cl.time;
- PRVM_clientglobalfloat(cltime) = realtime; // Spike named it that way.
+ PRVM_clientglobalfloat(cltime) = host.realtime; // Spike named it that way.
PRVM_clientglobalfloat(frametime) = frametime;
PRVM_clientglobalfloat(servercommandframe) = cls.servermovesequence;
PRVM_clientglobalfloat(clientcommandframe) = cl.movecmd[0].sequence;
if(!cl.csqc_loaded)
return false;
- CSQC_BEGIN
- if (!PRVM_clientfunction(CSQC_InputEvent))
- r = false;
- else
- {
- PRVM_clientglobalfloat(time) = cl.time;
- PRVM_clientglobaledict(self) = cl.csqc_server2csqcentitynumber[cl.playerentity];
- PRVM_G_FLOAT(OFS_PARM0) = eventtype;
- PRVM_G_FLOAT(OFS_PARM1) = x; // key or x
- PRVM_G_FLOAT(OFS_PARM2) = y; // ascii or y
- prog->ExecuteProgram(prog, PRVM_clientfunction(CSQC_InputEvent), "QC function CSQC_InputEvent is missing");
- r = CSQC_RETURNVAL != 0;
- }
- CSQC_END
+CSQC_BEGIN
+ if (!PRVM_clientfunction(CSQC_InputEvent))
+ r = false;
+ else
+ {
+ PRVM_clientglobalfloat(time) = cl.time;
+ PRVM_clientglobaledict(self) = cl.csqc_server2csqcentitynumber[cl.playerentity];
+ PRVM_G_FLOAT(OFS_PARM0) = eventtype;
+ PRVM_G_FLOAT(OFS_PARM1) = x; // key or x
+ PRVM_G_FLOAT(OFS_PARM2) = y; // ascii or y
+ prog->ExecuteProgram(prog, PRVM_clientfunction(CSQC_InputEvent), "QC function CSQC_InputEvent is missing");
+ r = CSQC_RETURNVAL != 0;
+ }
+CSQC_END
return r;
}
return true;
}
-qboolean CL_VM_ConsoleCommand (const char *cmd)
+qboolean CL_VM_ConsoleCommand (const char *text)
{
prvm_prog_t *prog = CLVM_prog;
int restorevm_tempstringsbuf_cursize;
PRVM_clientglobalfloat(time) = cl.time;
PRVM_clientglobaledict(self) = cl.csqc_server2csqcentitynumber[cl.playerentity];
restorevm_tempstringsbuf_cursize = prog->tempstringsbuf.cursize;
- PRVM_G_INT(OFS_PARM0) = PRVM_SetTempString(prog, cmd);
+ PRVM_G_INT(OFS_PARM0) = PRVM_SetTempString(prog, text);
prog->ExecuteProgram(prog, PRVM_clientfunction(CSQC_ConsoleCommand), "QC function CSQC_ConsoleCommand is missing");
prog->tempstringsbuf.cursize = restorevm_tempstringsbuf_cursize;
r = CSQC_RETURNVAL != 0;
// temporarily so that it can be set by the cvar command,
// and then reprotect it afterwards
int crcflags = csqc_progcrc.flags;
- int sizeflags = csqc_progcrc.flags;
csqc_progcrc.flags &= ~CVAR_READONLY;
csqc_progsize.flags &= ~CVAR_READONLY;
- Cmd_ExecuteString(&cmd_clientfromserver, msg, src_command, true);
- csqc_progcrc.flags = crcflags;
- csqc_progsize.flags = sizeflags;
+ Cmd_ExecuteString(&cmd_client, msg, src_command, true);
+ csqc_progcrc.flags = csqc_progsize.flags = crcflags;
return;
}
l = sizeof(buf) - 1;
strlcpy(buf, p, l + 1); // strlcpy needs a + 1 as it includes the newline!
- Cmd_ExecuteString(&cmd_clientfromserver, buf, src_command, true);
+ Cmd_ExecuteString(&cmd_client, buf, src_command, true);
p += l;
if(*p == '\n')
else
break; // end of string or overflow
}
- Cmd_ExecuteString(&cmd_clientfromserver, "curl --clear_autodownload", src_command, true); // don't inhibit CSQC loading
+ Cmd_ExecuteString(&cmd_client, "curl --clear_autodownload", src_command, true); // don't inhibit CSQC loading
return;
}
if(!cl.csqc_loaded)
{
- Cbuf_AddText(&cmd_clientfromserver, msg);
+ Cbuf_AddText(&cmd_client, msg);
return;
}
CSQC_BEGIN
prog->tempstringsbuf.cursize = restorevm_tempstringsbuf_cursize;
}
else
- Cbuf_AddText(&cmd_clientfromserver, msg);
+ Cbuf_AddText(&cmd_client, msg);
CSQC_END
}
{
prvm_prog_t *prog = CLVM_prog;
size_t i;
- if(!cl.csqc_loaded)
- {
- Con_Print(msg);
- return;
- }
CSQC_BEGIN
- if(PRVM_clientfunction(CSQC_Parse_Print))
+ if(cl.csqc_loaded && PRVM_clientfunction(CSQC_Parse_Print))
{
// FIXME: is this bugged?
i = strlen(msg)-1;
{
prvm_prog_t *prog = CLVM_prog;
int restorevm_tempstringsbuf_cursize;
- if(!cl.csqc_loaded)
- {
- SCR_CenterPrint(msg);
- return;
- }
CSQC_BEGIN
- if(PRVM_clientfunction(CSQC_Parse_CenterPrint))
+ if(cl.csqc_loaded && PRVM_clientfunction(CSQC_Parse_CenterPrint))
{
PRVM_clientglobalfloat(time) = cl.time;
PRVM_clientglobaledict(self) = cl.csqc_server2csqcentitynumber[cl.playerentity];
// link every entity except world
for (i = 1, ent = prog->edicts;i < prog->num_edicts;i++, ent++)
- if (!ent->priv.server->free)
+ if (!ent->priv.server->free && !VectorCompare(PRVM_clientedictvector(ent, absmin), PRVM_clientedictvector(ent, absmax)))
CL_LinkEdict(ent);
}
}
else
{
- Con_DPrintf("Not using buffered \"%s\" (buffered: %p, %d)\n", csprogsfn, cls.caughtcsprogsdata, (int) cls.caughtcsprogsdatasize);
+ Con_DPrintf("Not using buffered \"%s\" (buffered: %p, %d)\n", csprogsfn, (void *)cls.caughtcsprogsdata, (int) cls.caughtcsprogsdatasize);
csprogsdata = FS_LoadFile(csprogsfn, tempmempool, true, &csprogsdatasize);
}
}
{
if (cls.demoplayback)
{
- Con_Warnf("Warning: Your %s is not the same version as the demo was recorded with (CRC/size are %i/%i but should be %i/%i)\n", csqc_progname.string, csprogsdatacrc, (int)csprogsdatasize, requiredcrc, requiredsize);
+ Con_Printf(CON_WARN "Warning: Your %s is not the same version as the demo was recorded with (CRC/size are %i/%i but should be %i/%i)\n", csqc_progname.string, csprogsdatacrc, (int)csprogsdatasize, requiredcrc, requiredsize);
// Mem_Free(csprogsdata);
// return;
// We WANT to continue here, and play the demo with different csprogs!
else
{
Mem_Free(csprogsdata);
- Con_Errorf("Your %s is not the same version as the server (CRC is %i/%i but should be %i/%i)\n", csqc_progname.string, csprogsdatacrc, (int)csprogsdatasize, requiredcrc, requiredsize);
+ Con_Printf(CON_ERROR "Your %s is not the same version as the server (CRC is %i/%i but should be %i/%i)\n", csqc_progname.string, csprogsdatacrc, (int)csprogsdatasize, requiredcrc, requiredsize);
CL_Disconnect();
return;
}
if (requiredcrc >= 0)
{
if (cls.demoplayback)
- Con_Errorf("CL_VM_Init: demo requires CSQC, but \"%s\" wasn't found\n", csqc_progname.string);
+ Con_Printf(CON_ERROR "CL_VM_Init: demo requires CSQC, but \"%s\" wasn't found\n", csqc_progname.string);
else
- Con_Errorf("CL_VM_Init: server requires CSQC, but \"%s\" wasn't found\n", csqc_progname.string);
+ Con_Printf(CON_ERROR "CL_VM_Init: server requires CSQC, but \"%s\" wasn't found\n", csqc_progname.string);
CL_Disconnect();
}
return;
return;
}
- Con_DPrintf("CSQC %s ^5loaded (crc=%i, size=%i)\n", csprogsfn, csprogsdatacrc, (int)csprogsdatasize);
-
if(cls.demorecording)
{
if(cls.demo_lastcsprogssize != csprogsdatasize || cls.demo_lastcsprogscrc != csprogsdatacrc)
prog->ExecuteProgram(prog, PRVM_clientfunction(CSQC_Init), "QC function CSQC_Init is missing");
// Once CSQC_Init was called, we consider csqc code fully initialized.
- prog->inittime = realtime;
+ prog->inittime = host.realtime;
cl.csqc_loaded = true;
//Cvar_SetValueQuick(&csqc_progsize, -1);
if(!cl.csqc_loaded)
return;
- CSQC_BEGIN
- if (prog->loaded)
- {
- PRVM_clientglobalfloat(time) = cl.time;
- PRVM_clientglobaledict(self) = 0;
- if (PRVM_clientfunction(CSQC_Shutdown))
- prog->ExecuteProgram(prog, PRVM_clientfunction(CSQC_Shutdown), "QC function CSQC_Shutdown is missing");
- }
- PRVM_Prog_Reset(prog);
- CSQC_END
+CSQC_BEGIN
+ if (prog->loaded)
+ {
+ PRVM_clientglobalfloat(time) = cl.time;
+ PRVM_clientglobaledict(self) = 0;
+ if (PRVM_clientfunction(CSQC_Shutdown))
+ prog->ExecuteProgram(prog, PRVM_clientfunction(CSQC_Shutdown), "QC function CSQC_Shutdown is missing");
+ }
+ PRVM_Prog_Reset(prog);
+CSQC_END
Con_DPrint("CSQC ^1unloaded\n");
cl.csqc_loaded = false;
}