Skip to content

Commit d06435a

Browse files
authored
Merge pull request #202 from AruMoon/fix-spec_goto-crash
Fix spec_goto old crash
2 parents 6a8da70 + 6e7915b commit d06435a

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

game/server/player.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2607,10 +2607,22 @@ void CBasePlayer::ObserverUse( bool bIsPressed )
26072607

26082608
void CBasePlayer::JumptoPosition(const Vector &origin, const QAngle &angles)
26092609
{
2610-
SetAbsOrigin( origin );
2611-
SetAbsVelocity( vec3_origin ); // stop movement
2612-
SetLocalAngles( angles );
2613-
SnapEyeAngles( angles );
2610+
Vector neworigin;
2611+
QAngle newangles;
2612+
2613+
// Clamp the position and angles to prevent crashes
2614+
neworigin.x = clamp( origin.x, MIN_COORD_FLOAT, MAX_COORD_FLOAT );
2615+
neworigin.y = clamp( origin.y, MIN_COORD_FLOAT, MAX_COORD_FLOAT );
2616+
neworigin.z = clamp( origin.z, MIN_COORD_FLOAT, MAX_COORD_FLOAT );
2617+
2618+
newangles.x = clamp( newangles.x, MIN_COORD_FLOAT, MAX_COORD_FLOAT );
2619+
newangles.y = clamp( newangles.y, MIN_COORD_FLOAT, MAX_COORD_FLOAT );
2620+
newangles.z = clamp( newangles.z, MIN_COORD_FLOAT, MAX_COORD_FLOAT ); // not clamped in original valve's code, idk why
2621+
2622+
SetAbsOrigin( neworigin );
2623+
SetAbsVelocity( vec3_origin ); // stop movement
2624+
SetLocalAngles( newangles );
2625+
SnapEyeAngles( newangles );
26142626
}
26152627

26162628
bool CBasePlayer::SetObserverTarget(CBaseEntity *target)

0 commit comments

Comments
 (0)