But there is a SHAKE_STOP definition probably this will do the job
here is a snipped from the smlib
#define SHAKE_START 0 // Starts the screen shake for all players within the radius.
#define SHAKE_STOP 1 // Stops the screen shake for all players within the radius.
#define SHAKE_AMPLITUDE 2 // Modifies the amplitude of an active screen shake for all players within the radius.
#define SHAKE_FREQUENCY 3 // Modifies the frequency of an active screen shake for all players within the radius.
#define SHAKE_START_RUMBLEONLY 4 // Starts a shake effect that only rumbles the controller, no screen effect.
#define SHAKE_START_NORUMBLE 5 // Starts a shake that does NOT rumble the controller.
/**
* Shakes a client's screen with the specified amptitude,
* frequency & duration.
*
* @param client Client Index.
* @param command Shake Mode, use one of the SHAKE_ definitions.
* @param amplitude Shake magnitude/amplitude.
* @param frequency Shake noise frequency.
* @param duration Shake lasts this long.
* @return True on success, false otherwise.
*/
stock bool:Client_Shake(client, command=SHAKE_START, Float:amplitude=50.0, Float:frequency=150.0, Float:duration=3.0)
{
new Handle:userMessage = StartMessageOne("Shake", client);
if (userMessage == INVALID_HANDLE) {
return false;
}
if (command == SHAKE_STOP) {
amplitude = 0.0;
}
else if (amplitude <= 0.0) {
return false;
}
BfWriteByte(userMessage, command); // Shake Command
BfWriteFloat(userMessage, amplitude); // shake magnitude/amplitude
BfWriteFloat(userMessage, frequency); // shake noise frequency
BfWriteFloat(userMessage, duration); // shake lasts this long
EndMessage();
return true;
}