From: Rudolf Polzer Date: Mon, 14 Nov 2011 08:13:22 +0000 (+0100) Subject: add a cvar sv_use_csqc_players to toggle csqc player networking at runtime X-Git-Tag: xonotic-v0.6.0~74^2~100^2~78 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=4cd7458ff18cf4957fc85bfae54055d404ebd332;p=xonotic%2Fxonotic-data.pk3dir.git add a cvar sv_use_csqc_players to toggle csqc player networking at runtime --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 69b97a9c8..2003d80d8 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -1878,6 +1878,7 @@ set developer_shtest 0 "experimental speedhack detection" set waypoint_benchmark 0 "quit after waypoint loading to benchmark bot navigation code" set g_debug_bot_commands 0 "print scripted bot commands before executing" set g_debug_defaultsounds 0 "always use default sounds" +set sv_use_csqc_players 0 "set to 1 to network players to CSQC" // debug cvars for keyhunt attaching set _angles "0 0 0" diff --git a/qcsrc/client/miscfunctions.qc b/qcsrc/client/miscfunctions.qc index 26bed80f2..ce779634c 100644 --- a/qcsrc/client/miscfunctions.qc +++ b/qcsrc/client/miscfunctions.qc @@ -579,6 +579,12 @@ vector getplayerorigin(float pl) if(e) return e.origin; +#ifndef NO_LEGACY_NETWORKING + s = getplayerkey(pl, "TEMPHACK_origin"); + if(s != "") + return stov(s); +#endif + e = entcs_receiver[pl]; if(e) return e.origin; diff --git a/qcsrc/csqcmodel/sv_model.qc b/qcsrc/csqcmodel/sv_model.qc index 010258b10..42339b759 100644 --- a/qcsrc/csqcmodel/sv_model.qc +++ b/qcsrc/csqcmodel/sv_model.qc @@ -71,5 +71,11 @@ void CSQCModel_CheckUpdate() void CSQCModel_LinkEntity() { - Net_LinkEntity(self, TRUE, 0, CSQCModel_Send); + e.SendEntity = CSQCModel_Send; + e.SendFlags = 0xFFFFFF; +} + +void CSQCModel_UnlinkEntity() +{ + e.SendEntity = func_null; } diff --git a/qcsrc/csqcmodel/sv_model.qh b/qcsrc/csqcmodel/sv_model.qh index bb45a74b4..40d1dc6c7 100644 --- a/qcsrc/csqcmodel/sv_model.qh +++ b/qcsrc/csqcmodel/sv_model.qh @@ -24,3 +24,4 @@ void CSQCModel_CheckUpdate(); void CSQCModel_LinkEntity(); +void CSQCModel_UnlinkEntity(); diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 3b64b1b63..86521da8e 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -1203,3 +1203,6 @@ float autocvar_sv_gameplayfix_gravityunaffectedbyticrate; float autocvar_g_trueaim_minrange; float autocvar_g_debug_defaultsounds; float autocvar_g_loituma; +#ifndef NO_LEGACY_NETWORKING +float autocvar_sv_use_csqc_players; +#endif diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 352be7210..3ed4699b3 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1534,6 +1534,10 @@ float PlayerInIDList(entity p, string idlist) return 0; } +#ifndef NO_LEGACY_NETWORKING +.float iscsqcmodel; +#endif + /* ============= ClientConnect @@ -1796,7 +1800,15 @@ void ClientConnect (void) if(!autocvar_g_campaign) Send_CSQC_Centerprint_Generic(self, CPID_MOTD, getwelcomemessage(), autocvar_welcome_message_time, 0); +#ifndef NO_LEGACY_NETWORKING + if(autocvar_sv_use_csqc_players) + { + CSQCModel_LinkEntity(); + self.iscsqcmodel = 1; + } +#else CSQCModel_LinkEntity(); +#endif } /* @@ -3265,5 +3277,22 @@ void PlayerPostThink (void) dprint(sprintf("%f %.6f\n", time, race_GetFractionalLapCount(self))); */ +#ifndef NO_LEGACY_NETWORKING + if(autocvar_sv_use_csqc_players && !self.iscsqcmodel) + { + CSQCModel_LinkEntity(); + self.iscsqcmodel = 1; + } + + if(!autocvar_sv_use_csqc_players && self.iscsqcmodel) + { + CSQCModel_UnlinkEntity(); + self.iscsqcmodel = 0; + } + + if(self.iscsqcplayer) + CSQCModel_CheckUpdate(); +#else CSQCModel_CheckUpdate(); +#endif }