X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=csprogs.c;h=4bacb5632e8a595d00d98ed5962766a128b7a67a;hp=f74a206b09e1df120e153d436d3049c8668cae82;hb=0303750a7b40951618dca290c172a7afa60e9aa8;hpb=66ec69f1c020739371ac074baa7bb652834ecece diff --git a/csprogs.c b/csprogs.c index f74a206b..4bacb563 100644 --- a/csprogs.c +++ b/csprogs.c @@ -906,8 +906,10 @@ static void CLVM_free_edict(prvm_prog_t *prog, prvm_edict_t *ed) World_UnlinkEdict(ed); memset(ed->fields.fp, 0, prog->entityfields * sizeof(prvm_vec_t)); VM_RemoveEdictSkeleton(prog, ed); +#ifdef USEODE World_Physics_RemoveFromEntity(&cl.world, ed); World_Physics_RemoveJointFromEntity(&cl.world, ed); +#endif } static void CLVM_count_edicts(prvm_prog_t *prog) @@ -1041,8 +1043,7 @@ void CL_VM_Init (void) else { Mem_Free(csprogsdata); - 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(); + CL_DisconnectEx(false, "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); return; } } @@ -1050,13 +1051,7 @@ void CL_VM_Init (void) else { if (requiredcrc >= 0) - { - if (cls.demoplayback) - Con_Printf(CON_ERROR "CL_VM_Init: demo requires CSQC, but \"%s\" wasn't found\n", csqc_progname.string); - else - Con_Printf(CON_ERROR "CL_VM_Init: server requires CSQC, but \"%s\" wasn't found\n", csqc_progname.string); - CL_Disconnect(); - } + CL_DisconnectEx(false, CON_ERROR "CL_VM_Init: %s requires CSQC, but \"%s\" wasn't found\n", cls.demoplayback ? "demo" : "server", csqc_progname.string); return; } @@ -1092,11 +1087,8 @@ void CL_VM_Init (void) if (!prog->loaded) { - Host_Error("CSQC %s failed to load\n", csprogsfn); - if(!sv.active) - CL_Disconnect(); Mem_Free(csprogsdata); - return; + Host_Error("CSQC %s failed to load\n", csprogsfn); } if(cls.demorecording)