From: Rudolf Polzer Date: Thu, 28 Apr 2011 20:51:05 +0000 (+0200) Subject: fix warpzone prediction X-Git-Tag: xonotic-v0.5.0~264^2~9 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=89ce88af678f7f6b1e8f8727648a50c6278d3477;p=xonotic%2Fxonotic-data.pk3dir.git fix warpzone prediction --- diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index a01ca4edc..b3d326264 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -2629,6 +2629,8 @@ void() nexball_setstatus; .float items_added; void PlayerPreThink (void) { + WarpZone_PlayerPhysics_FixVAngle(); + self.stat_game_starttime = game_starttime; self.stat_allow_oldnexbeam = autocvar_g_allow_oldnexbeam; self.stat_leadlimit = autocvar_leadlimit; diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index defbb04e4..08368676d 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -667,6 +667,8 @@ void SV_PlayerPhysics() float buttons_prev; float not_allowed_to_move; string c; + + WarpZone_PlayerPhysics_FixVAngle(); maxspd_mod = 1; if(g_minstagib && (self.items & IT_INVINCIBLE)) @@ -884,8 +886,6 @@ void SV_PlayerPhysics() if (self.deadflag) goto end; - WarpZoneLib_PlayerPhysics_FixVAngle(); - if (!self.fixangle && !g_bugrigs) { self.angles_x = 0; diff --git a/qcsrc/warpzonelib/server.qc b/qcsrc/warpzonelib/server.qc index bf2cca7e5..ed0682472 100644 --- a/qcsrc/warpzonelib/server.qc +++ b/qcsrc/warpzonelib/server.qc @@ -1,5 +1,6 @@ .vector warpzone_oldorigin, warpzone_oldvelocity, warpzone_oldangles; .float warpzone_teleport_time; +.entity warpzone_teleport_zone; void WarpZone_StoreProjectileData(entity e) { @@ -89,7 +90,7 @@ float WarpZone_Teleport(entity player) WarpZone_RefSys_Add(player, self); WarpZone_TeleportPlayer(self, player, o1 - player.view_ofs, a1, v1); WarpZone_StoreProjectileData(player); - player.warpzone_teleport_time = servertime; + player.warpzone_teleport_time = time; player.warpzone_teleport_zone = self; return 1; @@ -689,6 +690,13 @@ void spawnfunc_target_warpzone_reconnect() void WarpZone_PlayerPhysics_FixVAngle(void) { - if(time < self.warpzone_teleport_time) +#ifdef WARPZONE_FIX_VANGLE + if(self.v_angle_z <= 360) + if(clienttype(self) == CLIENTTYPE_REAL) + if(time - self.ping * 0.001 < self.warpzone_teleport_time) + { self.v_angle = WarpZone_TransformVAngles(self.warpzone_teleport_zone, self.v_angle); + self.v_angle_z += 720; // mark as adjusted + } +#endif }