Может кто напишет целиком готовое, но не сейчас )
Вот тебе фрагменты кода, если разберёшься - всё получится
Либо делать проверку по таймеру, либо, возможно, получится через хук (Не проверял)
SDKHook(iClient, SDKHook_GroundEntChangedPost, Hook_GroundEntChangedPost);
// Переменные
int m_hGroundEntity;
m_hGroundEntity = FindSendPropInfo("CBasePlayer", "m_hGroundEntity");
// Проверка
int pEntityBelow = GetEntDataEnt2(iClient, m_hGroundEntity);
if(pEntityBelow > 0 && pEntityBelow <= MaxClients && IsClientInGame(pEntityBelow))
{
// Valid player
}