diff options
Diffstat (limited to 'mp/src/game/server/player.cpp')
| -rw-r--r-- | mp/src/game/server/player.cpp | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/mp/src/game/server/player.cpp b/mp/src/game/server/player.cpp index a44ee551..e0e7ccd2 100644 --- a/mp/src/game/server/player.cpp +++ b/mp/src/game/server/player.cpp @@ -585,7 +585,9 @@ CBasePlayer::CBasePlayer( ) m_bForceOrigin = false; m_hVehicle = NULL; m_pCurrentCommand = NULL; - + m_iLockViewanglesTickNumber = 0; + m_qangLockViewangles.Init(); + // Setup our default FOV m_iDefaultFOV = g_pGameRules->DefaultFOV(); @@ -976,7 +978,7 @@ void CBasePlayer::DamageEffect(float flDamage, int fDamageType) } else if (fDamageType & DMG_DROWN) { - //Red damage indicator + //Blue damage indicator color32 blue = {0,0,128,128}; UTIL_ScreenFade( this, blue, 1.0f, 0.1f, FFADE_IN ); } @@ -2325,6 +2327,7 @@ bool CBasePlayer::SetObserverMode(int mode ) break; case OBS_MODE_CHASE : + case OBS_MODE_POI: // PASSTIME case OBS_MODE_IN_EYE : // udpate FOV and viewmodels SetObserverTarget( m_hObserverTarget ); @@ -2420,8 +2423,7 @@ void CBasePlayer::CheckObserverSettings() } // check if our spectating target is still a valid one - - if ( m_iObserverMode == OBS_MODE_IN_EYE || m_iObserverMode == OBS_MODE_CHASE || m_iObserverMode == OBS_MODE_FIXED ) + if ( m_iObserverMode == OBS_MODE_IN_EYE || m_iObserverMode == OBS_MODE_CHASE || m_iObserverMode == OBS_MODE_FIXED || m_iObserverMode == OBS_MODE_POI ) { ValidateCurrentObserverTarget(); @@ -2633,7 +2635,10 @@ bool CBasePlayer::SetObserverTarget(CBaseEntity *target) Vector dir, end; Vector start = target->EyePosition(); - AngleVectors( target->EyeAngles(), &dir ); + QAngle ang = target->EyeAngles(); + ang.z = 0; // PASSTIME no view roll when spectating ball + + AngleVectors( ang, &dir ); VectorNormalize( dir ); VectorMA( start, -64.0f, dir, end ); @@ -2643,7 +2648,7 @@ bool CBasePlayer::SetObserverTarget(CBaseEntity *target) trace_t tr; UTIL_TraceRay( ray, MASK_PLAYERSOLID, target, COLLISION_GROUP_PLAYER_MOVEMENT, &tr ); - JumptoPosition( tr.endpos, target->EyeAngles() ); + JumptoPosition( tr.endpos, ang ); } return true; @@ -3411,6 +3416,8 @@ void CBasePlayer::ForceSimulation() m_nSimulationTick = -1; } +ConVar sv_usercmd_custom_random_seed( "sv_usercmd_custom_random_seed", "1", FCVAR_CHEAT, "When enabled server will populate an additional random seed independent of the client" ); + //----------------------------------------------------------------------------- // Purpose: // Input : *buf - @@ -3437,6 +3444,16 @@ void CBasePlayer::ProcessUsercmds( CUserCmd *cmds, int numcmds, int totalcmds, pCmd->MakeInert(); } + if ( sv_usercmd_custom_random_seed.GetBool() ) + { + float fltTimeNow = float( Plat_FloatTime() * 1000.0 ); + pCmd->server_random_seed = *reinterpret_cast<int*>( (char*)&fltTimeNow ); + } + else + { + pCmd->server_random_seed = pCmd->random_seed; + } + ctx->cmds.AddToTail( *pCmd ); } ctx->numcmds = numcmds; @@ -7875,7 +7892,7 @@ void CMovementSpeedMod::InputSpeedMod(inputdata_t &data) // Bring the weapon back if ( HasSpawnFlags( SF_SPEED_MOD_SUPPRESS_WEAPONS ) && pPlayer->GetActiveWeapon() == NULL ) { - pPlayer->SetActiveWeapon( pPlayer->Weapon_GetLast() ); + pPlayer->SetActiveWeapon( pPlayer->GetLastWeapon() ); if ( pPlayer->GetActiveWeapon() ) { pPlayer->GetActiveWeapon()->Deploy(); @@ -8857,8 +8874,6 @@ void CBasePlayer::SetPlayerName( const char *name ) Assert( strlen(name) > 0 ); Q_strncpy( m_szNetname, name, sizeof(m_szNetname) ); - // Be extra thorough - Q_RemoveAllEvilCharacters( m_szNetname ); } } @@ -9386,4 +9401,4 @@ uint64 CBasePlayer::GetSteamIDAsUInt64( void ) return steamIDForPlayer.ConvertToUint64(); return 0; } -#endif // NO_STEAM
\ No newline at end of file +#endif // NO_STEAM |