Btw you never set a value for "g_iShoveMinPenalty" so it will always be "0"
I usually listen and track which weapon the client is using on "WeaponSwitchPost" because on OnPlayerRunCmd fires too many times in a second. (basically every frame if the client is pressing some button)